PAINT (Phylogenetic Annotation and INference Tool)
PAINT is a Java software application for supporting inference of ancestral as well as present-day characters (represented by ontology terms) in the context of a phylogenetic tree. PAINT is currently being used in the GO Reference Genome Annotation Project to support inference of GO function terms (molecular function, cellular component and biological process) by homology.
Principles underlying PAINT
Annotation of a gene's function by homology is often referred to as "transitive annotation", in which an experimentally-characterized function of one gene is "transferred" to another gene because of their similarity in sequence. This pairwise transfer paradigm derives from the success of sequence searching algorithms such as BLAST and Smith-Waterman. Of course, pairwise conservation of function is really due to descent from a common ancestor (homology). In other words, two sequences of sufficient length are similar because they share a common ancestor, and the reason they have a common function is most likely that they inherited that function from their common ancestor. This process can be explicitly captured using a phylogenetic model.
Rather than a pairwise paradigm, PAINT uses this more accurate phylogenetic model to infer gene function by homology. PAINT annotation is intended to capture actual inferences about the evolution of gene function within a gene family: the gain, inheritance, modification and loss of function over evolutionary time. Inference is a two-step process, and involves directly annotating a phylogenetic tree. In the first step, experimental GO annotations for extant sequences are used to make inferences about when a given function may have first evolved. In PAINT, this is referred to as "up-propagation", in which ancestral genes are annotated based on information about extant sequences. In the second step, "down-propagation", ancestral annotations are used to make inferences about unannotated extant sequences, based on the principle of inheritance from the common ancestor, and allowing for modification and even loss of function during evolution.
PAINT is currently being implemented in Java 1.6, as a joint project between Paul Thomas's group (USC) and Suzanna Lewis's group (LBL). Development of PAINT has being funded by grant GM081084 from the U.S. National Institutes of Health, and the GO Consortium grant 5U41HG002273.
Touch Up (automates updates of phylogenetic annotation files)
- check on whether each term has been obsoleted
- if obsolete, replace if only one replacement term, otherwise report in log
- check on validity of each annotation
- is_pruned? does the annotation occur on a branch that was pruned (removed) from the tree?
- is_valid_term? does the term appear on the DO NOT USE FOR ANNOTATION list?
- is_redundant? is the term more general (an is_a or part_of ancestor) than a more specific annotated term?
- has_evidence? is there at least one descendant leaf node with experimental evidence for the annotated term?
- violates_taxon_constraint? does the ancestral node violate a taxon constraint?
- propagation non-redundancy
PAINT is freely available for download on GitHub.
Installing and using PAINT
See the PAINT User Guide for more information.
Standard operating procedures for GO annotation using PAINT
The GO Reference Genome Project is annotating trees generated for PANTHER version 11.
Annotation of GO terms using PAINT requires an understanding of the semantics of annotations, and is governed by a set of SOPs (see the PAINT SOP). An annotation of an ancestral node means that a gene function is inferred to have first arisen somewhere along the branch of the tree immediately preceding that node. Loss of a function "X" is annotated using the GO "NOT" qualifier, and means that a given function was inferred to have been lost along the branch immediately preceding the annotated node. Only experimental GO annotations (as represented by the evidence code) can be used as a basis for annotation of ancestral genes. NOT annotations can be supported by either an experimental GO annotation, absence of specific residues in the sequences, or generally accelerated evolutionary rate.