Features
Features are the annotations on the sequence: genes, CDSs, promoters, origins, primer binding sites and so on. They are read from and written to GenBank feature tables, so anything another program annotated is here, and anything you annotate travels with the file.
The Features tab
Each row shows the feature's colour, its name (or type when it has no name), its type and its location in GenBank notation: complement(1234..1500) for a reverse-strand feature, join(...) for a feature in several pieces, order(...) for pieces listed but not joined (a binding site's residues, as GenPept has them), and a range like 4200..150 for one that wraps the origin of a circular sequence.
- Click a row to select the feature. Both views scroll to it and highlight its bases.
- The selected row gets Rename, Edit and Remove buttons. Double-click a row to rename it in place.
- A ⚠ after a CDS's name means its bases no longer give the protein its
/translationstates — usually because of an edit inside it. Select it to see what differs and to update or remove the stored translation (see Checking a record against itself).
Features are coloured by type (CDS blue, gene green, promoter orange, terminator red, origin purple, primer site pink, and so on) unless the file carries its own colours from ApE or SnapGene, which are used instead.
The source feature that GenBank records use for organism metadata is listed but not drawn on the views. On the map, features that share a name share one label.
Where a name comes from
GenBank has no one field for a feature's name, so it is taken from the qualifiers, and which one wins depends on the type:
- Anything you named yourself wins: a
/labelis used before all others. - A gene is named by its
/gene. - A CDS and the RNAs (
mRNA,tRNA,rRNAand kin) are named by their/productfirst, then by their/gene. So NCBI's usual pair over the same range reads as two rows —tetfor the gene and _tetracycline resistance protein_ for the CDS — rather than astettwice. - Every other type is named by
/product,/locus_tagor/standard_name, and never by/gene. On amisc_featureor amisc_binding,/geneis a cross-reference to the gene the feature sits inside, not a name of its own; taking it as one would put a single gene's label on every feature within it.
A feature with none of those is listed and drawn under its type, which is normal for the misc_features that fill most records. Rename it (or any other) in the Features tab and the name is written back as a /label.
Adding a feature
- Select the bases to annotate in either view.
- Click Add feature in the edit bar, or in the bar that floats beside the selection.
- The Features tab opens on a new
misc_featurecalled _New feature_, with its full editor (see Editing a feature) open under it and scrolled into view. The name is ready to be typed over. - Set what you need and press
Enter(or Save changes). Cancel,Escapeor Remove feature takes the new feature away again as if it had never been added, with no undo step left behind.
The new feature is the selected one, even when the bases were selected by clicking a feature that already covers them.
The ORFs and Primers tabs add features of their own: an ORF as a CDS with its translation, primers as primer_bind sites.
Detecting common features
A bare FASTA file, or a record someone annotated sparsely, opens with few features or none. Detect features, at the top of the Features tab, looks for the parts plasmids are made of and offers what it finds:
- Click Detect features. The search runs in the background; a progress bar with Cancel shows while it does (a plasmid takes a moment, a megabase well under a second).
- The hits are listed under the button, every one ticked, each with its type, its location, and how well it matched: _exact_, or the number of mismatches and the identity, such as _2 mismatches, 99.7%_, with bases inserted or deleted named first, such as _1 base deleted, 99.8%_. Hover over a row to see what the part is and the record it was matched against; click it to select those bases in the views.
- Untick any you do not want (or Untick all and tick a few), then click Add N features. They are added as one edit, so a single Undo takes them all away again. Dismiss puts the list away without adding anything.
What is found:
- Common RNAs: the Cas9 gRNA scaffold, the E. coli 5S rRNA and a few tRNAs (the glycine tRNA of tRNA-gRNA arrays, E. coli tRNA-Glu), offered as
misc_RNA,rRNAandtRNAfeatures. The structured-RNA families a covariance model would find are not searched for. - Plant, yeast and viral-vector parts: the T-DNA border repeats, the NOS and CaMV 35S promoters and terminators, the pVS1, CloDF13 and pBR322 _bom_ elements of binary vectors, the Tn7 ends, the AOX1 promoter and terminator of _Pichia_, the EM7 and hSyn promoters, the AAV2 inverted terminal repeat, the HIV-1 RRE, the pCI chimeric intron and the hGH poly(A). Where a vector carries a shortened or altered version of one of these, it is offered only if enough of it is left to match.
- Both strands, and through the origin of a circular sequence.
- A part cut off by the end: in a linear sequence — a fragment, a sequencing read — a part may run past either end, and what is there is offered for it, listed as _exact as far as it goes, cut off at the end_. The feature is marked partial at that end, which is what GenBank's
<and>mean, so it stays partial when you save. At least 30 bases and a fifth of the part must be there, so that a sliver is not annotated as a gene. - Near matches: by default a part is found when at least 95% of its bases match. Match at least in the list changes that to 98%, 90% or exactly, and searches again. Parts shorter than 24 bases (primer sites, short tags) are only found exactly, so that they do not turn up by chance.
- Variants that must match in full: a few parts differ from the usual sequence by a base or two, and a near match would report both. _lacUV5_ is one: the wild-type lac promoter differs from it by two bases in the -10 box, so it is only found where every base matches, whatever Match at least says. An ambiguity code where it has a base, a missing base or a cut-off end rules it out.
- Bases inserted or deleted: a copy of a part with a small indel — a frameshift, a filled-in site — is found too, up to 8 bases inserted or deleted in all. Each one counts against Match at least as a mismatch does, and the list says what was found, as _3 bases inserted, 1 mismatch, 98.7%_, so it is never mistaken for a copy with substitutions only. Where substitutions alone explain a copy well enough, that is how it is shown: an indel in the last few bases of a part reads as a mismatch or two there. Parts shorter than 36 bases are not looked for with indels.
- By what it codes for, as well as by its bases. Every vector spells a short tag — FLAG, Myc, the T7 tag, the SV40 nuclear localisation signal — in its own codons, and a fluorescent protein carried from one construct to the next picks up silent changes; neither is found by matching DNA. Those parts are looked for in all six translations instead, and a hit says so: _exact protein match_, or _2 residues differ, 99% of the protein_. This is how the fluorescent proteins whose DNA is not in a public record (EYFP, ECFP, mTurquoise2, mScarlet, Superfolder GFP, mKate2, TagBFP, Clover, mRuby2 and mRuby3 among them) are found at all. A short peptide must match exactly, for the same reason a short stretch of DNA must. Every coding part in the list is looked for this way too, from its own bases: a resistance marker recoded for another host (a Kan, Hyg or Bsd gene in a different vector family's codons) is still found, as the part.
- Similar proteins, a step further. A part's protein is also searched for with substitutions and gaps, so a diverged relative of a part, such as another aminoglycoside phosphotransferase or a β-lactamase variant, is offered as _similar protein: 87% identical over 96% of the part's protein_. It is never named as the part: the feature is called similar to KanR, so a homologue is not taken for the exact part. How diverged a relative may be depends on the part (a short protein or a fluorescent protein must be closer than an enzyme), and where the part itself was found over the same bases nothing "similar" is offered. Your own coding My parts are searched this way too.
- Ambiguity codes in your sequence (
N,R,Y, …) count against a match like a mismatch, but are reported separately, as _1 ambiguous base_, when the code allows the part's base. - A hit the document already has — a feature on the same strand, of the same type or name, over nearly the same bases — is not offered again; the list says how many there were.
- Where two parts of one type cover the same bases, only the better match is offered: the pBR322 origin rather than the pUC origin that differs from it by one base,
lacZrather than thelacZαinside it. Parts of different types are offered together, so a primer site inside a promoter is two features, and so are parts on opposite strands (the SV40 early poly(A) signal is the complement of the late one, and both are offered). - Two variants of one protein that differ in length by only a few bases (EGFP and ECFP) are one locus: the one that matches better is offered, even if it is the slightly shorter.
A feature added this way is named after the part and carries two notes: what the part is, and _Detected by PlasmidPop_ with how well it matched and the record it was matched against, so an annotation the app made can always be told from one the file came with.
Detect in every file opened without features, a tick box under the list, runs the search by itself whenever a file you open has no features (a source feature does not count), and brings the Features tab forward when it finds something. Nothing is added until you click Add. It is off until you turn it on, and remembered in this browser.
Where the parts come from
The bundled list holds over two hundred parts: origins of replication, resistance and auxotrophic markers, promoters, terminators, tags and fusion partners, operators and recombination sites, reporters, and the usual sequencing-primer sites, the parts of binary and viral vectors, plus common fluorescent proteins. Every one is read from a public NCBI record whose accession and location are cited with it; the fluorescent proteins are chosen from FPbase, whose data is shared under CC BY-SA 4.0, and their DNA is the coding sequence of the NCBI record FPbase names. The list is matched as DNA, so a fluorescent protein or tag written with other codons is not found, and some short tags (the His tag, HA, V5) are not in the list yet.
My parts
The bundled list cannot know your lab's own parts: in-house promoters, tags, landing pads, toolkit parts. My parts, under the Detect features button in the Features tab, is a list of your own that Detect features looks for as well. It is kept in this browser, like My primers, and leaves it only as a download.
- Add a part from any document: open a feature, choose Save to My parts. Its bases are saved as they read in the feature's own direction, with its type, name and notes. Or Add from file… with a GenBank file (each feature of each record becomes a part; a record with no features is one part) or a FASTA file (each record a part).
- A part must be at least 12 bases of A, C, G and T (a peptide part, 5 residues); the message after adding says how many were left out as too short, with other letters in them, or already kept.
- Download as GenBank writes your parts as one record each, which Add from file… reads back, so a lab can share one file. Parts that only have a protein cannot be written as DNA, and imported lists (below) are not included.
- Detect features searches My parts together with the bundled list. A hit from yours says from My parts under it, and the feature it adds has a note naming that list instead of an NCBI record. Where one of your parts and a bundled one cover the same bases, yours is the one offered.
Import a pLannotate database. If you already have a copy of one of pLannotate's databases and may use it, open Import a pLannotate database and choose its FASTA file (snapgene.fasta for nucleotides, fpbase.fasta for proteins) together with its descriptions table, a CSV or TSV with the columns sseqid, name, type, blurb (older ones: sseqid, Feature, Type, Description), or FPbase's headerless slug, name, blurb TSV. A table is paired with the FASTA of the same file name stem; without one, parts are named by their ids. The files are read in your browser and not uploaded, and none of that data is part of PlasmidPop. Its parts are labelled pLannotate: snapgene (or fpbase) and show that label on a hit, so they are never taken for the bundled, cited list. Remove this list takes one import away again. pLannotate's BLAST, DIAMOND and SQLite files are not read; use its FASTA and table.
Editing a feature
Edit opens the full editor under the row, with the name selected for typing over:
- Name and Type. The type field suggests common GenBank keys (CDS, gene, promoter, terminator, rep_origin, primer_bind, misc_feature, …) but accepts anything. One of those typed in another case (
cds,polya_signal) becomes that key, spelled as GenBank spells it, when you leave the field. - Strand: forward or reverse. Reverse-strand features are drawn with an arrow pointing left and are translated from the reverse complement.
- Thickness: how thick the feature's bar is drawn in the sequence view and on the map, _Thin_, _Medium_ or _Full_. As its type is thin for an intron, so a gene's exons stand out from the gaps between them, and full for everything else. The lane keeps its height whatever the bar's, and only a full bar has room for its name inside it (the map's labels are unaffected). The choice is saved with the feature as a
/PlasmidPop_thicknessqualifier, which other programs ignore. - Location, 1-based inclusive, in GenBank syntax without the
complement(...)wrapper (use the strand selector for that):100..450for a range,join(100..200,300..450)for several pieces,order(100..200,300..450)for pieces that are listed together but not one stretch of sequence,4000..120to wrap the origin of a circular sequence,<100..450or100..>450for partial ends. Invalid input is explained under the field and disables saving. - Qualifiers: the
/name="value"pairs of the GenBank table, such asgene,product,note,codon_start,transl_tableortranslation. Add, edit or remove rows; a qualifier with no value is written as a flag (/pseudo).
Save changes (or Enter) applies everything as one undo step. Cancel (or Escape) closes the editor and leaves the feature as it was. Remove feature deletes it.
Features and edits
Insertions and deletions move and resize features automatically, on both strands and across the origin. Copying a selection carries its features along, and pasting adds them at the destination; see Editing.