Eukaryotic Genome Annotation Guide Annotation¶
Genome Workbench and table2asn (the replacement of tbl2asn) use a simple five-column tab-delimited table of feature locations and qualifiers in order to generate annotation.
The format of this feature table allows different kinds of features (e.g. gene, coding region, tRNA, repeat_region) and qualifiers (e.g. /product, /note) to be indicated. The validator will check for errors such as internal stops in coding regions.
Prepare annotation table¶
The features must be in a simple five-column tab-delimited table, called the feature table. The feature table specifies the location and type of each feature for table2asn (previously tbl2asn) or Genome Workbench to include in the GenBank submission that is created. The first line of the table contains the following basic information:
The SeqID
must be the same as the sequence's SeqID
in the FASTA file.
The table_name
is optional.
Subsequent lines of the table list the features.
Columns are separated by tabs.
- Column 1: Start location of feature
- Column 2: Stop location of feature
- Column 3: Feature key
- Column 4: Qualifier key
- Column 5: Qualifier value
Figure 2 shows a sample feature table and illustrates a number of points about the feature table format. The GenBank flatfile corresponding to this table is shown in Figure 3. The allowed features and their qualifiers are listed in the Feature Table documentation.
Features that are on the complementary strand, such as the genes Ngs_3038
and Ngs_11232
and their corresponding features shown in Figure 2 , are indicated by reversing the interval locations.
Please avoid unnecessary capitalization in all text entered in your table.
Additional requirements, as well as suggestions for various types of annotation, are included in the following sections.
Gene features¶
Gene features are always a single interval, and their location should cover the intervals of all the relevant features such as promoters and polyA binding sites.
Gene names should follow the standard nomenclature rules of the particular organism. For example, mouse gene names begin with an uppercase letter, and the remaining letters are lowercase.
Coding regions (CDS) and RNAs, such as tRNAs and rRNAs, must have a corresponding gene feature.
However, other features such as repeat_regions
and misc_features
do not have a corresponding gene or locus_tag
.
locus_tag
¶
All genes should be assigned a systematic gene identifier which should receive the locus_tag
qualifier on the gene feature in the table. Genes may also have functional names as assigned in the scientific literature.
In this example, KCS_0001
is the systematic gene identifier, while Abc5
is the functional gene name.
Table view of gene with both biological name and locus_tag:
Flatfile view:
Table view of gene with only locus_tag:
Flatfile view:
For consistency the same locus_tag
prefix must be used throughout the entire genome.
Therefore, all the chromosomes of a genome should have the same locus_tag
prefix.
To improve the use of locus_tags
we are now requiring that all locus_tag
prefixes be registered and that they be unique.
We recommend having the BioProject registration process auto-assign a locus_tag
prefix, as they are not meant to convey meaning.
The locus_tag
prefix should be 3-12 alphanumeric characters and the first character may not be a digit.
The locus_tag
prefix is followed by an underscore and then an alphanumeric identification number that is unique within the given genome.
Other than the single underscore used to separate the prefix from the identification number, no special characters can be used in the locus_tag
.
The chromosome number can be embedded in the locus_tag, if desired, in the format Prefix_#g#####
, where the first #
is the chromosome number and ###
is the unique number of the gene.
For example, Ajs_4g00123
for a gene on chromosome 4.
protein_id
¶
All proteins in a WGS or complete genome must be assigned an identification number by the submitter.
We use this number to track proteins when sequences are updated.
This number is indicated in the table by the CDS qualifier protein_id
, and should have the format gnl|dbname|string
, where dbname
is a version of your lab name that you think will be unique (e.g., SmithUCSD
), and string is the unique protein SeqID
assigned by the submitter.
This identifier is saved with the record (in ASN.1 format), but it is not visible in the flatfile.
We recommend using the locus_tag
as the protein SeqID.
In this example, the protein_id
for ABC5
is gnl|SmithUCSD|KCS_0001
.
Example:
<1 >1575 gene
gene Abc5
locus_tag KCS_0001
pseudogene unprocessed
1 1575 CDS
product ABC5
protein_id gnl|SmithUCSD|KCS_0001
Since the protein_id
is used for internal tracking in our database, it is important that the complete protein_id
(dbname + SeqID) not be duplicated by a genome center.
Thus, if your genome center is submitting more than one complete genome, please be sure to use unique protein_id
's for all of the genomes.
The protein_id
is also included as a qualifier on the corresponding mRNA feature, to allow the CDS and mRNA to be paired during processing.
Note that when WGS submissions are processed, the dbname
in the protein_id
is automatically changed to 'WGS:XXXX'
, where XXXX
is the project's accession number prefix.
transcript_id
¶
The transcript_id
is included as a qualifier for both the CDS and its corresponding mRNA.
It has the same format as the protein_id
, gnl|dbname|identifier.
Because each transcript_id
and protein_id
must be unique, we suggest adding 'mrna'
or 't'
to the protein_id identifier as a simple way to create the corresponding (unique) transcript_id
.
However, you can use whatever naming convention you choose, as long as all of the identifiers are unique.
63574 87173 gene
locus_tag Ngs_17131
63574 63907 mRNA
75690 75730
84396 85536
85598 85773
85836 86109
86173 86467
86555 86670
86731 87173
product hypothetical protein
protein_id gnl|ncbi|Ngs_17131
transcript_id gnl|ncbi|mrna.Ngs_17131
84402 85536 CDS
85598 85773
85836 86109
86173 86467
86555 86670
86731 86882
product hypothetical protein
protein_id gnl|ncbi|Ngs_17131
transcript_id gnl|ncbi|mrna.Ngs_17131
CDS (coding region) features¶
All CDS features must have a product qualifier (protein name). NCBI protein naming conventions are adopted from the International Protein Nomenclature Guidelines.
Consistent nomenclature is indispensable for communication, literature searching and data retrieval. Many species-specific communities have established gene nomenclature committees that try to assign consistent and, if possible, meaningful gene symbols. Other scientific communities have established protein nomenclatures for a set of proteins based on sequence similarity and/or function. But there is no established organization involved in the standardization of protein names, nor are there any efforts to establish naming rules that are valid across the largest spectrum of species possible.
Ambiguities regarding gene/protein names are a major problem in the literature and it is even worse in the sequence databases which tend to propagate the confusion. For this reason, we ask that you follow some basic guidelines in naming your proteins. The protein naming guidelines are based on the premise that a good and stable recommended name for a protein is a name that is as neutral as possible.
Partial coding regions¶
To annotate a partial coding region, you should use the "<"
or ">"
in your feature table to designate the feature as either 5' or 3' partial.
The coding region should begin at the first nucleotide present in the sequence or exon, and you will indicate where the first complete codon begins in that coding region.
Partial genes within a sequence should begin or end at consensus splice sites. Examples:
In the first example below, the "<"
designates this coding region as 5' partial and "codon_start 3" tells the software to start translation with the third nucleotide of the CDS.
Note that if the codon_start is not specified, then the software assumes a codon_start of 1.
The second coding region below is partial at the 3' end so ">"
is used to indicate a 3' partial feature. The third example is of a 3' partial coding region on the complementary or minus strand.
<1 497 CDS
product transcription factor
note similar to Bacillus subtilis aldolase
codon_start 3
protein_id gnl|dbname|KCS_0001
transcript_id gnl|dbname|mrna.KCS_0001
600 >1575 CDS
product actin-like protein
protein_id gnl|dbname|KCS_0002
transcript_id gnl|dbname|mrna.KCS_0002
436 >1 CDS
product hypothetical protein
protein_id gnl|dbname|KCS_0056
transcript_id gnl|dbname|mrna.KCS_0056
Here are more examples of formatting partial CDS features.
mRNA features¶
Include an mRNA feature for each translated CDS. Several things to note are:
- Use the same product name for the mRNA and its corresponding CDS.
- If there is no UTR information, then the mRNA's location will agree with its CDS's location, but the mRNA will be partial at its 5' and 3' ends.
- Extend the gene feature to include the entire mRNA.
- If the mRNA is partial, then make the gene partial.
Examples:
The first example is a complete CDS whose 5' and 3' UTRs are known.
>Feature Cont54
10400 12512 gene
locus_tag CCC_03116
10400 10462 mRNA
10533 10577
10651 11098
11182 11642
11716 12512
product hypothetical protein
protein_id gnl|dbname|CCC_03116
transcript_id gnl|dbname|mrna.CCC_03116
10450 10462 CDS
10533 10577
10651 11098
11182 11642
11716 12233
product hypothetical protein
protein_id gnl|dbname|CCC_03116
transcript_id gnl|dbname|mrna.CCC_03116
The second example is a CDS that is partial at the 5' end and lacks any 3' UTR information.
>Feature Cont3
<1 >497 gene
locus_tag CCC_111011
<1 497 CDS
note similar to Bacillus subtilis aldolase
product aldolase-like protein
codon_start 3
protein_id gnl|dbname|CCC_111011
transcript_id gnl|dbname|mrna.CCC_111011
<1 >497 mRNA
product aldolase-like protein
protein_id gnl|dbname|CCC_111011
transcript_id gnl|dbname|mrna.CCC_111011
Gene fragments¶
Sometimes a genome will have adjacent or nearby genes that seem to be only part of a protein. In many cases these indicate a possible problem with the sequence and/or annotation. A related issue is the presence of internal stop codons in the conceptual translation of a CDS that looks like it should be a real CDS. These problems may be due to a variety of reasons, including mutations or sequencing artifacts. They can be annotated in a number of ways:
-
Annotate the gene with /pseudo to indicate that there is a problem with the gene. Note that this qualifier does NOT mean that the gene is a pseudogene. (see point 2, below, if it is known that the gene IS a pseudogene) If multiple gene fragments were present initially, then add a single gene feature which covers all of the potential coding regions and add the pseudo qualifier. If known, a note qualifier may be added indicating why this gene is disrupted, for example:
-
If you are sure that the disrupted or error-filled gene is a biological pseudogene, then add the pseudogene qualifier and the appropriate pseudogene type. For example:
-
If the feature is just noting a similarity to genes in the database and is probably not translated, then it should be annotated as a misc_feature without a corresponding gene feature.
Transpliced Genes¶
Transpliced genes are the exception to the rule for annotating gene feature spans. Transpliced genes are similar to intron containing genes except the two pieces of the gene are found on different regions of the chromosome. These genes are transcribed as two or more separate RNA products that are transpliced into a single mRNA or tRNA. To annotate this using a table, enter the nucleotide spans so that the complementary (minus strand) spans are arranged from high to low and vice versa for the plus strand.
36700 36618 gene
86988 87064
locus_tag NEQ_t38
exception trans-splicing
36631 36618 misc_feature
note sequence cleaved during processing of trans-spliced tRNAs
36673 36635
87030 87064 tRNA
product tRNA-Glu
exception trans-splicing
note this trans-spliced tRNA consists of two halves on mixed strands; it shares a 3' half with another tRNA
Flatfile view:
gene join(complement(36618..36700),86988..87064)
/locus_tag="NEQ_t38"
/trans_splicing
misc_feature complement(36618..36631)
/locus_tag="NEQ_t38"
/note="sequence cleaved during processing of trans-spliced tRNAs"
tRNA join(complement(36635..36673),87030..87064)
/locus_tag="NEQ_t38"
/product="tRNA-Glu"
/trans_splicing
/note="this trans-spliced tRNA consists of two halves on
mixed strands; it shares a 3' half with another tRNA"
Split genes on two contigs¶
Sometimes in incomplete genomes the ends of a gene may be on different contigs.
When certain that the two pieces are part of the same gene, annotate these as separate genes with unique locus_tags
, plus separate CDS/mRNAs with different protein_id
's and transcript_id
's.
In addition, link the features together with notes that refer to the other part of the gene.
However, do not create extremely short features, for example if one end is only the start methinione or only a few amino acids before the stop codon.
>Feature Cont01.00111
5000 >7500 gene
locus_tag KCS_2223A
5000 5500 mRNA
6000 >7200
product enolase
protein_id gnl|dbname|KCS_2223A
transcript_id gnl|dbname|mrna.KCS_2223A
5488 5500 CDS
6000 >7200
product enolase
protein_id gnl|dbname|KCS_2223A
transcript_id gnl|dbname|mrna.KCS_2223A
note 5' end; 3' end is gene KCS_2223B on contig Cont01.00224
>Feature Cont01.00224
<1 1000 gene
locus_tag KCS_2223B
<100 1000 mRNA
product enolase
protein_id gnl|dbname|KCS_2223B
transcript_id gnl|dbname|mrna.KCS_2223B
<100 876 CDS
product enolase
protein_id gnl|dbname|KCS_2223B
transcript_id gnl|dbname|mrna.KCS_2223B
note 3' end; 5' end is gene KCS_2223A on contig Cont01.00111
Alternatively spliced genes¶
In many cases a gene can be alternatively spliced, yielding alternative transcripts. These transcripts may differ in the coding region and produce different products, or they may differ in the non-translated 5' or 3' UTR and produce the same protein. To annotate alternatively spliced genes, include one mRNA and CDS for each transcript, and include only one gene over all of the features. Give the corresponding mRNA and CDS the same name, and include a note "alternatively spliced" on each. If there are multiple CDS with the same name, then add a note to each mRNA and CDS to refer to each other, eg "transcript variant A" and "encoded by transcript variant A" for one mRNA/CDS pair. If the CDS have different translations, then they should have different product names. Make sure that all the proteins have unique protein_id's. Example 1 (different products):
>Feature Cont01.00055
10 5000 gene
locus_tag CCC_04562
10 500 mRNA
722 1555
2548 3901
4400 5000
product enolase isoform A
note alternatively spliced
protein_id gnl|dbname|CCC_04562A
transcript_id gnl|dbname|mrna.CCC_04562A
102 500 CDS
722 1555
2548 3901
4400 4566
product enolase isoform A
note alternatively spliced
protein_id gnl|dbname|CCC_04562A
transcript_id gnl|dbname|mrna.CCC_04562A
10 500 mRNA
2548 3901
4400 5000
product enolase isoform B
note alternatively spliced
protein_id gnl|dbname|CCC_04562B
transcript_id gnl|dbname|mrna.CCC_04562B
102 500 CDS
2548 3901
4400 4566
product enolase isoform B
note alternatively spliced
protein_id gnl|dbname|CCC_04562B
transcript_id gnl|dbname|mrna.CCC_04562B
Example 2 (same product):
>Feature Cont01.00056
100 1000 gene
locus_tag CCC_03222
100 333 mRNA
444 678
800 1000
product hypothetical protein
note transcript variant A; alternatively spliced
protein_id gnl|dbname|CCC_03222A
transcript_id gnl|dbname|mrna.CCC_03222A
456 678 CDS
800 865
product hypothetical protein
note encoded by transcript variant A; alternatively spliced
protein_id gnl|dbname|CCC_03222A
transcript_id gnl|dbname|mrna.CCC_03222A
100 360 mRNA
444 678
800 1000
product hypothetical protein
note transcript variant B; alternatively spliced
protein_id gnl|dbname|CCC_03222B
transcript_id gnl|dbname|mrna.CCC_03222B
456 678 CDS
800 865
product hypothetical protein
note encoded by transcript variant B; alternatively spliced
protein_id gnl|dbname|CCC_03222B
transcript_id gnl|dbname|mrna.CCC_03222B
Ribosomal RNA, tRNA and other RNA features¶
RNA features (rRNA, tRNA, ncRNA) need a corresponding gene feature with a locus_tag qualifier.
If the amino acid of a tRNA is unknown, use tRNA-Xxx
as the product, as in the example.
Many submitters like to label the tRNAs such as tRNA-Gly1, etc.
If you wish to do this please include "tRNA-Gly1" as a note and not in /gene.
The use of /gene
is reserved for the actual biological gene symbol such as "trnG"
.
If a tRNA is a pseudogene, please use the /pseudo
qualifier.
Annotate ncRNAs that belong to one of the INSDC nRNA_class
as an ncRNA feature, with the appropriate value in the required /ncRNA_class
qualifier.
Regions of an RNA should be annotated as a misc_feature (eg, leader sequences), or a misc_binding feature if they bind a known molecule (eg, riboswitches).
If the RFAM identifier is known, it can be included as a db_xref
.
Some rRNA, tRNA and ncRNA examples:
<1 400 gene
locus_tag KCS_00011
<1 400 rRNA
product 16S ribosomal RNA
488 560 gene
locus_tag KCS_00012
488 560 tRNA
product tRNA-Lys
570 601 gene
locus_tag KCS_00020
pseudo
570 601 tRNA
product tRNA-Phe
pseudo
700 780 gene
locus_tag KCS_00013
700 780 tRNA
product tRNA-Xxx
900 923 gene
locus_tag KCS_00014
900 923 ncRNA
ncRNA_class miRNA
product mir-9c
950 1000 gene
locus_tag KCS_00015
950 1000 tmRNA
product tmRNA
Riboswitches used to be annotated using the misc_binding feature if the bound moiety was known, for example:
Annotate riboswitches as regulatory features with the regulatory_class
'riboswitch'
:
1 100 regulatory
regulatory_class riboswitch
note cobalamin riboswitch
bound_moiety adenosylcobalamin
If the bound moiety is unknown or if the sequence is a leader sequence, annotate as a misc_feature
, for example:
misc_feature
and misc_binding
and regulatory features do not have an associated gene feature.
If it is desired to tag these features with a locus_tag
-like identifier, then include that value in the note, separated from other information by a semi-colon and space.
Evidence Qualifiers¶
The International Nucleotide Sequence Database Collaboration, DDBJ, EMBL and GenBank has adopted a set of new qualifiers to describe the evidence for feature annotation in GenBank records. These are:
/experimental="text" /inference="TYPE:text", where 'TYPE' is from a select list and 'text' is structured text.
These qualifiers replace /evidence=experimental and /evidence=non-experimental, respectively, which are no longer supported.
See more information about the Evidence Qualifiers .
Database cross references¶
A variety of database cross references can be added to a feature. These appear as /db_xref on the features. This qualifier serves as a vehicle for linking of sequence records to other external databases. See the full list of db_xref databases.
180 210 misc_feature
note yybP-ykoY element
db_xref RFAM:RF00080
```text
## Gene Ontology
GO (Gene Ontology) terms can be included in genomes in order to describe protein functionality. Gene Ontology (GO) terms can be indicated with the following qualifiers
```text
1 100 CDS
product helicase
go_process chromatin assembly or disassembly|0006333||IEA
go_process antimicrobial humoral response|0019730|16163390|IMP
go_component nucleus|0005634|14668392|IDA
go_component chromatin|0000785||IEA
go_function ATP-dependent helicase activity|0008026||ISS
go_function nucleic acid binding|0003676||IEA
go_function ATP binding|0005524||IEA
The value field is separated by vertical bars '|' into a descriptive string, the GO identifier (leading zeroes are retained), and optionally a PubMed ID and one or more evidence codes. The evidence code is the fourth token, so include blank fields, as necessary (eg the last qualifier has no PubMed ID so the third field is blank).
Acknowledgements¶
Some of this material has been adapted with permission from the following sources.