Design
Apply features from a file
A GTF, GFF3 or BED lists features and their positions and carries no bases at all, so on its own there is nothing to look at. This puts those features onto a record you already have open — but only once something establishes that the coordinates and the bases are in the same space. If the file and the record both name a genome build and agree, it proceeds. If they disagree, it refuses, because no statement from you can reconcile two contradictory declarations. If either is silent, it asks you to say that you are applying the intervals as positions in this record's own numbering, and records that this is what you did. Anything that would run past the end of the record is reported with the end that did not fit, never trimmed to fit.
Nine real annotation files: GFF3 · GTF · BED · EMBL across three divisions and three molecule types, the 5′-UTR introns most parsers have never met, and the JBEI registry’s own XML
What it does
- 01Applies the features in a GTF, GFF3 or BED to a record that is already open, which is the step a feature file needs: those formats list positions and carry no sequence of their own
- 02REFUSES by default rather than assuming the two are in the same coordinate space — a feature file's intervals are positions on a named genome, and applying them to whichever record happens to be open would invent the one correspondence that matters
- 03Four verdicts, kept distinct because they are different claims: MATCHED (file and record both name an assembly and they agree), UNSTATED (neither says), UNCONFIRMED (the file names one and the record does not), and MISMATCH (both name one and they differ)
- 04A mismatch cannot be overridden. Two declared assemblies that disagree is the one case a user's statement cannot make true, so it refuses outright rather than offering a way past
- 05An unstated or unconfirmed file can be applied on a coordinates-only basis, which the user states at the point of use: it says these intervals are being read as positions in this record's own numbering with no genome correspondence checked. It is never the default and never inferred, and the basis is recorded so the history entry and the explanation can say which of the two it was
- 06Features whose span runs past the end of the record are REPORTED with the end that did not fit, never clamped to the last base — a trimmed feature is a wrong feature that looks right
- 07Features the record already carries identically are named as duplicates instead of being written twice
- 08Assembly names compare case-insensitively, because hg19 and HG19 are one build written two ways
- 09Writes as a single undo step through the same operation path the auto-annotator uses, so one undo takes the whole apply back
- 10Available from the panel and as a workflow, agent, HTTP and MCP tool, where it returns the annotated record rather than mutating the open document, so a pipeline can compose it
What it runs on
Coordinates are 0-based inclusive throughout, the convention the editor and the feature-file readers already share, and nothing in the apply converts between conventions — a second conversion would be a second convention. Verified against the GTF specification's own example file: its first exon reads 150 200 in the file, which is 1-based inclusive, and arrives from the reader as 149 199. The assembly a file declares is read from what the file actually states (GFF3's ##genome-build, or a BED track line's db=), never inferred from a chromosome name.
Everything runs client-side. Files are parsed in the browser and projects are saved on this machine, so an unpublished sequence is never uploaded.
Questions
- Why does it refuse when my GTF and my sequence are obviously the same thing?
- Because neither of them says so. A BED is three required columns and not one of them is the assembly; a GTF has no standard place for it either. If the file names no genome and the record names no genome, nothing in either document establishes that the intervals belong to those bases — so the tool asks you to state it rather than deciding for you. Stating it takes one click and is recorded as the basis for the apply.
- What is the coordinates-only basis, exactly?
- It is you saying: read these numbers as positions in this record's own numbering, and do not claim any correspondence to a genome build has been checked. That is a legitimate thing to want — it is how you put a feature table onto a construct you built yourself — and it is a different claim from a matched apply, which is why the two are recorded separately.
- Two assemblies are named and they disagree. Can I force it?
- No, and that is deliberate. Unstated means nobody claimed anything, and you are allowed to supply the missing claim. A mismatch means both documents stated where they are and contradicted each other, and no statement from you makes hg38 coordinates into hg19 coordinates.
- What happens to a feature that runs off the end of my record?
- It is listed, with the end position that did not fit and the record's length, and it is not written. It is not shortened to fit: a feature trimmed to the last base still looks like a feature, and would be quietly wrong everywhere it was read afterwards.
Also searched as
apply GTF features to a sequence · load a GFF3 onto a record · add BED intervals to a sequence · annotate a sequence from an annotation file · GTF has no sequence how do I view it · transfer features from a feature file to a plasmid · import annotations onto an existing record · put gene models onto a genome sequence · GFF3 to GenBank features · why do my GTF coordinates land in the wrong place