Mercurial > repos > devteam > gffread
changeset 8:154d00cbbf2d draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/gffread commit f40643d8b80299ebb84faebe92579321ac459746"
author | iuc |
---|---|
date | Sat, 25 Sep 2021 15:38:31 +0000 |
parents | 4dea02886337 |
children | 3e436657dcd0 |
files | gffread.xml test-data/Homo_sapiens.GRCh37_19.71.bed test-data/Homo_sapiens.GRCh37_19.71.gff3 test-data/ecoli-k12.processed.gff3 test-data/stop_codons.gtf |
diffstat | 5 files changed, 254 insertions(+), 96 deletions(-) [+] |
line wrap: on
line diff
--- a/gffread.xml Mon Nov 11 18:27:46 2019 -0500 +++ b/gffread.xml Sat Sep 25 15:38:31 2021 +0000 @@ -1,13 +1,21 @@ -<tool id="gffread" name="gffread" version="@VERSION@.0"> +<tool id="gffread" name="gffread" version="@GALAXY_TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.05"> <description>Filters and/or converts GFF3/GTF2 records</description> + <xrefs> + <xref type="bio.tools">gffread</xref> + </xrefs> <macros> - <token name="@VERSION@">0.11.6</token> + <!-- the version of this tool must not be lowered since in the past 2.x was used + lets use small increments and hope that gffread catches up one day --> + <token name="@GALAXY_TOOL_VERSION@">2.2.1.3</token> + <token name="@TOOL_VERSION@">0.12.7</token> + <token name="@VERSION_SUFFIX@">0</token> <xml name="fasta_output_select"> <param name="fa_outputs" type="select" display="checkboxes" multiple="true" label="Select fasta outputs"> - <option value="-w exons.fa">fasta file with spliced exons for each GFF transcript (-w exons.fa)</option> - <option value="-x cds.fa">fasta file with spliced CDS for each GFF transcript (-x cds.fa)</option> - <option value="-y pep.fa">protein fasta file with the translation of CDS for each record (-y pep.fa)</option> + <option value="-w exons.fa">fasta file with spliced exons for each GFF transcript (-w)</option> + <option value="-x cds.fa">fasta file with spliced CDS for each GFF transcript (-x)</option> + <option value="-y pep.fa">protein fasta file with the translation of CDS for each record (-y)</option> <option value="-W">for each fasta: record the exon coordinates projected onto the spliced sequence (-W)</option> + <option value="-S">for protein fasta: use '*' instead of '.' as stop codon translation (-S)</option> </param> </xml> <xml name="ref_filtering_select"> @@ -22,14 +30,14 @@ </param> </xml> <xml name="trackname"> - <param name="tname" type="text" value="" optional="true" label="Trackname to use in the second column of each GFF output line" help="(-t track_name}"> + <param argument="-t" name="tname" type="text" value="" optional="true" label="Trackname to use in the second column of each GFF output line" help=""> <validator type="regex">\w+</validator> </param> </xml> <xml name="merge_opts"> <option value="-K">also collapse shorter, fully contained transcripts with fewer introns than the container (-K)</option> <option value="-Q">remove the containment restriction: multi-exon transcripts will be collapsed if just their introns match, while single-exon transcripts can partially overlap 80% (-Q)</option> - <option value="-d dupinfo">output collapsing info (-d dupinfo)</option> + <option value="-d dupinfo">output collapsing info (-d)</option> </xml> <xml name="cluster_opts"> <option value="--force-exons"> make sure that the lowest level GFF features are printed as 'exon' features (--force-exons)</option> @@ -48,14 +56,19 @@ </xml> </macros> <requirements> - <requirement type="package" version="@VERSION@">gffread</requirement> + <requirement type="package" version="@TOOL_VERSION@">gffread</requirement> </requirements> + <version_command>gffread --version</version_command> <command detect_errors="aggressive"> <![CDATA[ #if $reference_genome.source == 'history': ln -s '$reference_genome.genome_fasta' genomeref.fa && #end if + gffread '$input' + #if $input.ext.startswith("bed") + --in-bed + #end if #if $reference_genome.source == 'cached': -g '${reference_genome.fasta_indexes.fields.path}' #if $reference_genome.ref_filtering and str($reference_genome.ref_filtering) != '': @@ -104,22 +117,68 @@ #end if #end if #if $gffs.gff_fmt != 'none': - #if $gffs.tname: + #if $gffs.gff_fmt != 'bed' and $gffs.tname: -t '$gffs.tname' #end if #if $gffs.gff_fmt == 'gff': + ## TODO bug 'gft' -> 'gtf' #if $input.datatype.file_ext == 'gft': $gffs.ensembl #end if - $gffs.output_cmd - #elif $gffs.gff_fmt == 'gtf': - $gffs.output_cmd + #end if + #if $gffs.gff_fmt == 'gtf' + -T + #elif $gffs.gff_fmt == 'bed' + --bed #end if + -o output.$gffs.gff_fmt #end if + +## Missing options +## +## --ids +## --nids +## -l +## --jmatch +## --nc +## --ignore-locus +## -A -s (see above) +## --sort-alpha : chromosomes (reference sequences) are sorted alphabetically +## --sort-by : sort the reference sequences by the order in which their +## names are given in the <refseq.lst> file +## Misc +## --keep-exon-attrs : for -F option, do not attempt to reduce redundant +## --attrs +## --keep-genes : in transcript-only mode (default), also preserve gene records +## --keep-comments: for GFF3 input/output, try to preserve comments +## -B (see above) +## -P +## --add-hasCDS : add a "hasCDS" attribute with value "true" for transcripts +## that have CDS features +## --adj-stop stop codon adjustment: enables -P and performs automatic +## adjustment of the CDS stop coordinate if premature or downstream + +## --in-tlf: input GFF-like one-line-per-transcript format without exon/CDS +## features (see --tlf option below); automatic if the input +## filename ends with .tlf) +## --stream: fast processing of input GFF/BED transcripts as they are received +## ((no sorting, exons must be grouped by transcript in the input data) + +## Clustering + +## -Y + +## Output + +## --gene2exon +## --t-adopt +## -j +## --w-add +## --w-nocds ]]> </command> <inputs> - <param name="input" type="data" format="gff3,gtf" label="Input GFF3 or GTF feature file"/> + <param name="input" type="data" format="bed,gff3,gtf" label="Input BED, GFF3 or GTF feature file"/> <!-- filtering --> <param name="filtering" type="select" display="checkboxes" multiple="true" label="filters"> <option value="-U">discard single-exon transcripts (-U)</option> @@ -135,9 +194,9 @@ </param> <when value="none"/> <when value="filter"> - <param name="range" type="text" value="" label="Only show transcripts overlapping coordinate range"> + <param argument="-r" name="range" type="text" value="" label="Only show transcripts overlapping coordinate range"> <help><![CDATA[ - (-r [['strand']'chr':]'start'..'end') <br> + [['strand']'chr':]'start'..'end' <br> examples: <br> 1000..500000 <br> chr1:1000..500000 <br> @@ -147,14 +206,14 @@ </help> <validator type="regex">(([+-])?(\w+:))?\d+\.\.\d+</validator> </param> - <param name="discard_partial" type="boolean" truevalue="-R" falsevalue="" checked="false" - label="Discard all transcripts that are not fully contained within the given range" help="(-R)"/> + <param argument="-R" name="discard_partial" type="boolean" truevalue="-R" falsevalue="" checked="false" + label="Discard all transcripts that are not fully contained within the given range" help=""/> </when> </conditional> - <param name="maxintron" type="integer" value="" optional="true" min="0" label="Filter out transcipts with large introns" - help="If set, discard transcripts having an intron larger (-i max_intron)"/> - <param name="chr_replace" type="data" format="tabular" optional="true" label="Replace reference sequence names" > - <help><![CDATA[(-m chr_replace) <br> + <param argument="-i" name="maxintron" type="integer" value="" optional="true" min="0" label="Filter out transcipts with large introns" + help="If set, discard transcripts having an intron larger"/> + <param argument="-m" name="chr_replace" type="data" format="tabular" optional="true" label="Replace reference sequence names" > + <help><![CDATA[ chr_replace is a reference sequence replacement table consisting of 2 columns: "original_ref_ID" "new_ref_ID"<br> It is useful for switching between Ensembl and UCSC naming conventions <br> NOTE: GFF records on reference sequences that are not found among the "original_ref_ID" entries in this file will be filtered out @@ -174,10 +233,10 @@ <!-- merging --> <conditional name="merging"> - <param name="merge_sel" type="select" label="Transcript merging" help="(-M/--merge or --cluster-only)"> + <param name="merge_sel" type="select" label="Transcript merging" help=""> <option value="none">none</option> - <option value="merge">merge: cluster the input transcripts into loci, collapsing matching transcripts</option> - <option value="cluster">cluster-only: merge but without collapsing matching transcripts</option> + <option value="merge">merge: cluster the input transcripts into loci, collapsing matching transcripts (--merge)</option> + <option value="cluster">cluster-only: merge but without collapsing matching transcripts (--cluster-only)</option> </param> <when value="none"/> <when value="merge"> @@ -192,7 +251,7 @@ <!-- reference sequence file --> <!-- Error: -g option is required for options -w, -x, -y, -V, -N, -M --> <conditional name="reference_genome"> - <param name="source" type="select" label="Reference Genome" help="(-g genome.fasta) NOTE: Required for fasta outputs"> + <param name="source" type="select" label="Reference Genome" help="NOTE: Required for fasta outputs"> <option value="none">none</option> <option value="cached"></option> <option value="history">From your history</option> @@ -200,14 +259,14 @@ <when value="none"> </when> <when value="cached"> - <param name="fasta_indexes" type="select" label="Source FASTA Sequence"> + <param argument="-g" name="fasta_indexes" type="select" label="Source FASTA Sequence"> <options from_data_table="all_fasta"/> </param> <expand macro="ref_filtering_select" /> <expand macro="fasta_output_select" /> </when> <when value="history"> - <param name="genome_fasta" type="data" format="fasta" label="Genome Reference Fasta"/> + <param argument="-g" name="genome_fasta" type="data" format="fasta" label="Genome Reference Fasta"/> <expand macro="ref_filtering_select" /> <expand macro="fasta_output_select" /> </when> @@ -219,35 +278,39 @@ <option value="none">none</option> <option value="gff">GFF</option> <option value="gtf">GTF</option> + <option value="bed">BED</option> </param> <when value="none"> </when> <when value="gff"> - <param name="output_cmd" type="hidden" value="-o output.gff3"/> - <param name="ensembl" type="boolean" truevalue="-L" falsevalue="" checked="false" label="Ensembl GTF to GFF3 conversion" help="(-L)"/> + <param argument="-L" name="ensembl" type="boolean" truevalue="-L" falsevalue="" checked="false" label="Ensembl GTF to GFF3 conversion" help=""/> <expand macro="trackname" /> </when> <when value="gtf"> - <param name="output_cmd" type="hidden" value="-T -o output.gtf"/> <expand macro="trackname" /> </when> + <when value="bed"> + </when> </conditional> - <param name="full_gff_attribute_preservation" type="boolean" truevalue="-F" falsevalue="" checked="false" - label="full GFF attribute preservation (all attributes are shown)" help="(-F)"/> - <param name="decode_url" type="boolean" truevalue="-D" falsevalue="" checked="false" - label="decode url encoded characters within attributes" help="(-D)"/> - <param name="expose" type="boolean" truevalue="-E" falsevalue="" checked="false" - label="warn about duplicate transcript IDs and other potential problems with the given GFF/GTF records" help="(-E)"/> + <param argument="-F" name="full_gff_attribute_preservation" type="boolean" truevalue="-F" falsevalue="" checked="false" + label="full GFF attribute preservation (all attributes are shown)" help=""/> + <param argument="-D" name="decode_url" type="boolean" truevalue="-D" falsevalue="" checked="false" + label="decode url encoded characters within attributes" help=""/> + <param argument="-E" name="expose" type="boolean" truevalue="-E" falsevalue="" checked="false" + label="warn about duplicate transcript IDs and other potential problems with the given GFF/GTF records" help=""/> </inputs> <outputs> - <data name="output_gff" format="gff3" metadata_source="input" label="${tool.name} on ${on_string}: gff3" from_work_dir="output.gff3"> + <data name="output_gff" format="gff3" metadata_source="input" label="${tool.name} on ${on_string}: gff3" from_work_dir="output.gff"> <filter>gffs['gff_fmt'] == 'gff'</filter> </data> <data name="output_gtf" format="gtf" metadata_source="input" label="${tool.name} on ${on_string}: gtf" from_work_dir="output.gtf"> <filter>gffs['gff_fmt'] == 'gtf'</filter> </data> + <data name="output_bed" format="bed" metadata_source="input" label="${tool.name} on ${on_string}: bed" from_work_dir="output.bed"> + <filter>gffs['gff_fmt'] == 'bed'</filter> + </data> <data name="output_exons" format="fasta" label="${tool.name} on ${on_string}: exons.fa" from_work_dir="exons.fa"> <filter>'fa_outputs' in reference_genome and str(reference_genome['fa_outputs']).find('exons.fa') > 0 </filter> </data> @@ -262,28 +325,48 @@ </data> </outputs> <tests> - <test> + <test expect_num_outputs="1"> <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> <param name="gff_fmt" value="gff"/> - <output name="output_gff" file="Homo_sapiens.GRCh37_19.71.gff3" ftype="gff3" lines_diff="2" /> + <output name="output_gff" file="Homo_sapiens.GRCh37_19.71.gff3" ftype="gff3" lines_diff="4" /> </test> - <test> + <test expect_num_outputs="1"> + <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> + <param name="gff_fmt" value="gff"/> + <output name="output_gff" file="Homo_sapiens.GRCh37_19.71.gff3" ftype="gff3" lines_diff="4" /> + </test> + <test expect_num_outputs="1"> <param name="input" ftype="gtf" value="ecoli-k12.gff3"/> <param name="gff_fmt" value="gff"/> <param name="full_gff_attribute_preservation" value="-F"/> - <output name="output_gff" file="ecoli-k12.processed.gff3" ftype="gff3" lines_diff="2" /> + <output name="output_gff" file="ecoli-k12.processed.gff3" ftype="gff3" lines_diff="4" /> </test> - <test> - <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> - <param name="filtering" value="--no-pseudo"/> - <param name="gff_fmt" value="gtf"/> - <output name="output_gtf"> + <!-- bed output --> + <test expect_num_outputs="1"> + <param name="input" ftype="gff3" value="Homo_sapiens.GRCh37_19.71.gff3"/> + <param name="gff_fmt" value="bed"/> + <output name="output_bed" ftype="bed"> <assert_contents> - <not_has_text text="pseudo" /> + <has_n_lines n="42"/> + <has_n_columns n="13"/> </assert_contents> </output> </test> - <test> + <!-- bed input and test tname --> + <test expect_num_outputs="1"> + <param name="input" ftype="bed" value="Homo_sapiens.GRCh37_19.71.bed"/> + <param name="gff_fmt" value="gff"/> + <param name="tname" value="track name"/> + <output name="output_bed" ftype="gff3"> + <assert_contents> + <has_n_lines n="388"/> + <!-- this will work with https://github.com/galaxyproject/galaxy/pull/12528 --> + <!-- <has_n_columns n="9" comment="#"/> --> + <has_text text="track name"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1"> <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> <param name="region_filter" value="filter"/> <param name="range" value="19:496500..504965"/> @@ -295,7 +378,7 @@ </assert_contents> </output> </test> - <test> + <test expect_num_outputs="1"> <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> <param name="region_filter" value="filter"/> <param name="range" value="19:496500..504965"/> @@ -308,7 +391,7 @@ </assert_contents> </output> </test> - <test> + <test expect_num_outputs="1"> <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> <param name="filtering" value="-C"/> <param name="region_filter" value="filter"/> @@ -321,7 +404,7 @@ </assert_contents> </output> </test> - <test> + <test expect_num_outputs="4"> <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/> <param name="source" value="history"/> <param name="genome_fasta" ftype="fasta" value="Homo_sapiens.GRCh37.71.dna.chromosome.19.fa"/> @@ -354,7 +437,18 @@ </assert_contents> </output> </test> - + <test expect_num_outputs="1"> + <param name="input" ftype="gtf" value="stop_codons.gtf"/> + <param name="source" value="history"/> + <param name="genome_fasta" ftype="fasta" value="Homo_sapiens.GRCh37.71.dna.chromosome.19.fa"/> + <param name="fa_outputs" value="-y pep.fa,-S"/> + <output name="output_pep"> + <assert_contents> + <has_text text="ENST00000269812" /> + <has_text text="PLRGLHPRV*LQTPLERCPCWPPAGGTGGCPHCLLHLRLLQSPTPTALSEGGGAGTEAQPVTDVDPGRG*" /> + </assert_contents> + </output> + </test> </tests> <help> <![CDATA[ @@ -364,30 +458,32 @@ .. _stringtie: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread - -gffread v0.11.4. Usage: :: +gffread v0.12.7. Usage: :: - gffread <input_gff> [-g <genomic_seqs_fasta> | <dir>][-s <seq_info.fsize>] - [-o <outfile>] [-t <trackname>] [-r [[<strand>]<chr>:]<start>..<end> [-R]] + gffread [-g <genomic_seqs_fasta> | <dir>] [-s <seq_info.fsize>] + [-o <outfile>] [-t <trackname>] [-r [<strand>]<chr>:<start>-<end> [-R]] + [--jmatch <chr>:<start>-<end>] [--no-pseudo] [-CTVNJMKQAFPGUBHZWTOLE] [-w <exons.fa>] [-x <cds.fa>] [-y <tr_cds.fa>] - [-i <maxintron>] [--bed] [--table <attrlist>] [--sort-by <refseq_list.txt>] - + [-j ][--ids <IDs.lst> | --nids <IDs.lst>] [--attrs <attr-list>] [-i <maxintron>] + [--stream] [--bed | --gtf | --tlf] [--table <attrlist>] [--sort-by <ref.lst>] + [<input_gff>] + Filter, convert or cluster GFF/GTF/BED records, extract the sequence of transcripts (exon or CDS) and more. By default (i.e. without -O) only transcripts are processed, discarding any other non-transcript features. Default output is a simplified GFF3 with only the basic attributes. - <input_gff> is a GFF file, use '-' for stdin - Options: - + --ids discard records/transcripts if their IDs are not listed in <IDs.lst> + --nids discard records/transcripts if their IDs are listed in <IDs.lst> -i discard transcripts having an intron larger than <maxintron> -l discard transcripts shorter than <minlen> bases -r only show transcripts overlapping coordinate range <start>..<end> (on chromosome/contig <chr>, strand <strand> if provided) -R for -r option, discard all transcripts that are not fully contained within the given range + --jmatch only output transcripts matching the given junction -U discard single-exon transcripts -C coding only: discard mRNAs that have no CDS features --nc non-coding only: discard mRNAs that have CDS features @@ -398,18 +494,18 @@ for each of the mapped sequences: <seq-name> <seq-length> <seq-description> (useful for -A option with mRNA/EST/protein mappings) - - Sorting: (by default, chromosomes are kept in the order they were found) + Sorting: (by default, chromosomes are kept in the order they were found) --sort-alpha : chromosomes (reference sequences) are sorted alphabetically --sort-by : sort the reference sequences by the order in which their names are given in the <refseq.lst> file - Misc options: - -F preserve all GFF attributes (for non-exon features) + -F keep all GFF attributes (for non-exon features) --keep-exon-attrs : for -F option, do not attempt to reduce redundant exon/CDS attributes -G do not keep exon attributes, move them to the transcript feature (for GFF3 output) + --attrs <attr-list> only output the GTF/GFF attributes listed in <attr-list> + which is a comma delimited list of attribute names to --keep-genes : in transcript-only mode (default), also preserve gene records --keep-comments: for GFF3 input/output, try to preserve comments -O process other non-transcript GFF records (by default non-transcript @@ -437,10 +533,11 @@ --in-tlf: input GFF-like one-line-per-transcript format without exon/CDS features (see --tlf option below); automatic if the input filename ends with .tlf) - + --stream: fast processing of input GFF/BED transcripts as they are received + ((no sorting, exons must be grouped by transcript in the input data) Clustering: -M/--merge : cluster the input transcripts into loci, discarding - "duplicated" transcripts (those with the same exact introns + "redundant" transcripts (those with the same exact introns and fully contained or equal boundaries) -d <dupinfo> : for -M option, write duplication info to file <dupinfo> --cluster-only: same as -M/--merge but without discarding any of the @@ -452,7 +549,6 @@ multi-exon transcripts, and >=80% overlap for single-exon transcripts -Y for -M option, enforce -Q but also discard overlapping single-exon transcripts, even on the opposite strand (can be combined with -K) - Output options: --force-exons: make sure that the lowest level GFF features are considered "exon" features @@ -465,25 +561,26 @@ -g full path to a multi-fasta file with the genomic sequences for all input mappings, OR a directory with single-fasta files (one per genomic sequence, with file names matching sequence names) - -w write a fasta file with spliced exons for each GFF transcript + -j output the junctions and the corresponding transcripts + -w write a fasta file with spliced exons for each transcript + --w-add <N> for the -w option, extract additional <N> bases + both upstream and downstream of the transcript boundaries + --w-nocds for -w, disable the output of CDS info in the FASTA file -x write a fasta file with spliced CDS for each GFF transcript -y write a protein fasta file with the translation of CDS for each record - -W for -w and -x options, write in the FASTA defline the exon + -W for -w, -x and -y options, write in the FASTA defline all the exon coordinates projected onto the spliced sequence; - for -y option, write transcript attributes in the FASTA defline -S for -y option, use '*' instead of '.' as stop codon translation - -L Ensembl GTF to GFF3 conversion (implies -F; should be used with -m) + -L Ensembl GTF to GFF3 conversion, adds version to IDs -m <chr_replace> is a name mapping table for converting reference sequence names, having this 2-column format: <original_ref_ID> <new_ref_ID> - WARNING: all GFF records on reference sequences whose original IDs - are not found in the 1st column of this table will be discarded! -t use <trackname> in the 2nd column of each GFF/GTF output line - -o write the records into <outfile> instead of stdout + -o write the output records into <outfile> instead of stdout -T main output will be GTF instead of GFF3 --bed output records in BED format instead of default GFF3 --tlf output "transcript line format" which is like GFF - but exons, CDS features and related data are stored as GFF + but with exons and CDS related features stored as GFF attributes in the transcript feature line, like this: exoncount=N;exons=<exons>;CDSphase=<N>;CDS=<CDScoords> <exons> is a comma-delimited list of exon_start-exon_end coordinates; @@ -491,9 +588,14 @@ --table output a simple tab delimited format instead of GFF, with columns having the values of GFF attributes given in <attrlist>; special pseudo-attributes (prefixed by @) are recognized: - @chr, @start, @end, @strand, @numexons, @exons, @cds, @covlen, @cdslen + @id, @geneid, @chr, @start, @end, @strand, @numexons, @exons, + @cds, @covlen, @cdslen + If any of -w/-y/-x FASTA output files are enabled, the same fields + (excluding @id) are appended to the definition line of corresponding + FASTA records -v,-E expose (warn about) duplicate transcript IDs and other potential problems with the given GFF/GTF records + ]]> </help> <citations>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/Homo_sapiens.GRCh37_19.71.bed Sat Sep 25 15:38:31 2021 +0000 @@ -0,0 +1,42 @@ +19 223157 223261 ENST00000410397 100 - 223157 223261 0,0,0 1 104, 0, geneID=ENSG00000222329;gene_name=U6 +19 229639 230165 ENST00000587910 100 - 229639 230165 0,0,0 2 70,82, 0,444, geneID=ENSG00000267600;gene_name=AC098474.1 +19 239144 239247 ENST00000588755 100 - 239144 239247 0,0,0 1 103, 0, geneID=ENSG00000267305;gene_name=CTD-3113P16.7 +19 279494 280170 ENST00000589981 100 + 279494 280170 0,0,0 1 676, 0, geneID=ENSG00000267447;gene_name=VN2R11P +19 281042 291386 ENST00000269812 100 - 281387 291336 0,0,0 6 495,177,58,278,152,102, 0,1091,1709,6431,6977,10242, CDS=281387:291336;CDSphase=0;geneID=ENSG00000141934;gene_name=PPAP2C +19 281344 291393 ENST00000434325 100 - 281387 288055 0,0,0 6 193,177,58,278,152,68, 0,789,1407,6129,6675,9981, CDS=281387:288055;CDSphase=0;geneID=ENSG00000141934;gene_name=PPAP2C +19 281387 291200 ENST00000327790 100 - 281387 291066 0,0,0 6 150,177,58,278,152,249, 0,746,1364,6086,6632,9564, CDS=281387:291066;CDSphase=0;geneID=ENSG00000141934;gene_name=PPAP2C +19 281990 287636 ENST00000586998 100 - 282121 287636 2,0,0 3 320,58,163, 0,761,5483, CDS=282121:287636;CDSphase=2;geneID=ENSG00000141934;gene_name=PPAP2C +19 287160 288530 ENST00000589672 100 - 287160 288530 0,0,0 2 591,511, 0,859, geneID=ENSG00000141934;gene_name=PPAP2C +19 287473 291382 ENST00000591572 100 - 287473 291336 0,0,0 3 278,170,98, 0,546,3811, CDS=287473:291336;CDSphase=0;geneID=ENSG00000141934;gene_name=PPAP2C +19 305572 306467 ENST00000591533 100 + 305572 306467 0,0,0 2 131,411, 0,484, geneID=ENSG00000267124;gene_name=CTD-3113P16.5 +19 305574 344793 ENST00000264819 100 - 306689 344782 0,0,0 14 1137,418,89,125,95,82,152,70,92,124,126,143,91,20, 0,1544,3002,3226,6270,6616,7917,20060,20932,21558,22289,28825,30508,39199, CDS=306689:344782;CDSphase=0;geneID=ENSG00000105556;gene_name=MIER2 +19 305578 325706 ENST00000589092 100 + 305578 325706 0,0,0 2 356,83, 0,20045, geneID=ENSG00000267124;gene_name=CTD-3113P16.5 +19 326606 336178 ENST00000586994 100 - 326606 336178 0,0,0 4 650,126,143,96, 0,1257,7793,9476, geneID=ENSG00000105556;gene_name=MIER2 +19 327863 340599 ENST00000592722 100 - 327863 340599 0,0,0 5 126,117,143,91,86, 0,2400,6536,8219,12650, geneID=ENSG00000105556;gene_name=MIER2 +19 334114 344798 ENST00000587966 100 - 334114 344798 0,0,0 2 428,25, 0,10659, geneID=ENSG00000105556;gene_name=MIER2 +19 361749 376013 ENST00000342640 100 - 362199 375970 0,0,0 8 677,160,118,70,62,72,123,351, 0,5315,9455,10881,11720,12190,12549,13913, CDS=362199:375970;CDSphase=0;geneID=ENSG00000105549;gene_name=THEG +19 362057 374620 ENST00000530711 100 - 362057 374620 0,0,0 3 369,160,322, 0,5007,12241, geneID=ENSG00000105549;gene_name=THEG +19 362199 375970 ENST00000346878 100 - 362199 375970 0,0,0 7 227,160,118,70,62,123,308, 0,4865,9005,10431,11270,12099,13463, CDS=362199:375970;CDSphase=0;geneID=ENSG00000105549;gene_name=THEG +19 367201 374249 ENST00000528213 100 - 367201 374249 0,0,0 5 23,118,70,62,310, 0,4003,5429,6268,6738, geneID=ENSG00000105549;gene_name=THEG +19 397588 398941 ENST00000591757 100 + 397588 398941 0,0,0 2 45,252, 0,1101, geneID=ENSG00000267443;gene_name=AC010641.1 +19 405444 409139 ENST00000332235 100 - 407095 408361 0,0,0 2 2957,134, 0,3561, CDS=407095:408361;CDSphase=0;geneID=ENSG00000183186;gene_name=C2CD4C +19 416582 419879 ENST00000587423 100 - 416582 419879 0,0,0 2 740,957, 0,2340, geneID=ENSG00000129946;gene_name=SHC2 +19 416582 422828 ENST00000588376 100 - 416582 422828 0,0,0 3 740,134,683, 0,2340,5563, geneID=ENSG00000129946;gene_name=SHC2 +19 416592 460996 ENST00000264554 100 - 418927 460996 0,0,0 13 730,134,311,135,64,157,127,52,54,120,61,71,468, 0,2330,5553,8504,14091,18116,19572,19787,20037,22125,22377,24269,43936, CDS=418927:460996;CDSphase=0;geneID=ENSG00000129946;gene_name=SHC2 +19 416608 441384 ENST00000589922 100 - 416608 441384 0,0,0 11 714,134,311,135,64,157,127,304,120,61,523, 0,2314,5537,8488,14075,18100,19556,19771,22109,22361,24253, geneID=ENSG00000129946;gene_name=SHC2 +19 417199 436258 ENST00000590170 100 - 434761 436258 0,0,0 6 123,134,234,64,157,94, 0,1723,4946,13484,17509,18965, CDS=434761:436258;CDSphase=0;geneID=ENSG00000129946;gene_name=SHC2 +19 417199 436258 ENST00000591948 100 - 417199 436258 0,0,0 6 123,134,234,64,157,94, 0,1723,4946,13484,17509,18965, geneID=ENSG00000129946;gene_name=SHC2 +19 434701 460571 ENST00000590222 100 - 439397 460571 1,0,0 9 164,127,52,54,120,61,259,71,43, 0,1463,1678,1928,4016,4268,4531,6160,25827, CDS=439397:460571;CDSphase=1;geneID=ENSG00000129946;gene_name=SHC2 +19 435770 436534 ENST00000591388 100 - 435770 436534 0,0,0 3 191,127,155, 0,394,609, geneID=ENSG00000129946;gene_name=SHC2 +19 435778 439031 ENST00000590113 100 - 435778 439031 0,0,0 6 183,127,52,54,120,62, 0,386,601,851,2939,3191, geneID=ENSG00000129946;gene_name=SHC2 +19 453133 453245 ENST00000516730 100 + 453133 453245 0,0,0 1 112, 0, geneID=ENSG00000252539;gene_name=RNA5SP462 +19 463345 474983 ENST00000315489 100 - 463843 474747 0,0,0 4 1019,114,108,363, 0,4303,9048,11275, CDS=463843:474747;CDSphase=0;geneID=ENSG00000181781;gene_name=ODF3L2 +19 463466 474880 ENST00000382696 100 - 463843 474747 0,0,0 3 898,114,260, 0,4182,11154, CDS=463843:474747;CDSphase=0;geneID=ENSG00000181781;gene_name=ODF3L2 +19 464145 472631 ENST00000591681 100 - 464145 472631 0,0,0 3 219,114,238, 0,3503,8248, geneID=ENSG00000181781;gene_name=ODF3L2 +19 489175 505342 ENST00000587541 100 + 489175 505342 0,0,0 3 864,261,598, 0,12493,15569, geneID=ENSG00000099866;gene_name=MADCAM1 +19 490045 507813 ENST00000592413 100 - 490045 507813 0,0,0 3 308,84,438, 0,11495,17330, geneID=ENSG00000266933;gene_name=AC005775.2 +19 496453 505207 ENST00000346144 100 + 496499 504965 0,0,0 4 98,285,330,463, 0,1379,2042,8291, CDS=496499:504965;CDSphase=0;geneID=ENSG00000099866;gene_name=MADCAM1 +19 496453 505347 ENST00000215637 100 + 496499 504965 0,0,0 5 98,285,330,261,603, 0,1379,2042,5215,8291, CDS=496499:504965;CDSphase=0;geneID=ENSG00000099866;gene_name=MADCAM1 +19 496499 504965 ENST00000382683 100 + 496499 504965 0,0,0 3 52,330,221, 0,1996,8245, CDS=496499:504965;CDSphase=0;geneID=ENSG00000099866;gene_name=MADCAM1 +19 507298 519654 ENST00000359315 100 + 507506 519423 0,0,0 2 546,766, 0,11590, CDS=507506:519423;CDSphase=0;geneID=ENSG00000141933;gene_name=TPGS1 +19 507499 510372 ENST00000588278 100 + 507499 510372 0,0,0 1 2873, 0, geneID=ENSG00000141933;gene_name=TPGS1
--- a/test-data/Homo_sapiens.GRCh37_19.71.gff3 Mon Nov 11 18:27:46 2019 -0500 +++ b/test-data/Homo_sapiens.GRCh37_19.71.gff3 Sat Sep 25 15:38:31 2021 +0000 @@ -1,6 +1,6 @@ -# gffread /tmp/tmpq6d_yfqc/files/9/2/2/dataset_922cd54b-d77c-48fb-abf7-6fc8d8fdb97c.dat -o output.gff3 -# gffread v0.11.6 ##gff-version 3 +# gffread v0.12.7 +# gffread /tmp/tmpk_iy6dhb/files/e/1/9/dataset_e191f2e3-7ad2-452e-b21c-edd22b6ba6e2.dat -o output.gff 19 snRNA transcript 223158 223261 . - . ID=ENST00000410397;geneID=ENSG00000222329;gene_name=U6 19 snRNA exon 223158 223261 . - . Parent=ENST00000410397 19 unprocessed_pseudogene transcript 229640 230165 . - . ID=ENST00000587910;geneID=ENSG00000267600;gene_name=AC098474.1
--- a/test-data/ecoli-k12.processed.gff3 Mon Nov 11 18:27:46 2019 -0500 +++ b/test-data/ecoli-k12.processed.gff3 Sat Sep 25 15:38:31 2021 +0000 @@ -1,33 +1,33 @@ -# gffread /tmp/tmpq6d_yfqc/files/2/7/7/dataset_277f6e18-b25a-4b59-b712-49b5c202a183.dat -F -o output.gff3 -# gffread v0.11.6 ##gff-version 3 -NC_000913.3 RefSeq gene 190 255 . + . ID=gene-b0001;geneID=gene-b0001;gene_name=thrL;Dbxref=ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=thrL;gbkey=Gene;gene=thrL;gene_biotype=protein_coding;gene_synonym=ECK0001;locus_tag=b0001 +# gffread v0.12.7 +# gffread /tmp/tmpk_iy6dhb/files/7/c/b/dataset_7cbb521e-a7fc-4b92-8335-006b4f916f5c.dat -F -o output.gff +NC_000913.3 RefSeq gene 190 255 . + . ID=gene-b0001;gene_name=thrL;Dbxref=ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=thrL;gbkey=Gene;gene=thrL;gene_biotype=protein_coding;gene_synonym=ECK0001;locus_tag=b0001 NC_000913.3 RefSeq CDS 190 255 . + 0 Parent=gene-b0001;Dbxref=UniProtKB/Swiss-Prot:P0AD86,Genbank:NP_414542.1,ASAP:ABE-0000006,ECOCYC:EG11277,EcoGene:EG11277,GeneID:944742;Name=NP_414542.1;gbkey=CDS;gene=thrL;locus_tag=b0001;orig_transcript_id=gnl|b0001|mrna.b0001;product=thr operon leader peptide;protein_id=NP_414542.1;transl_table=11 -NC_000913.3 RefSeq gene 337 2799 . + . ID=gene-b0002;geneID=gene-b0002;gene_name=thrA;Dbxref=ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=thrA;gbkey=Gene;gene=thrA;gene_biotype=protein_coding;gene_synonym=ECK0002,Hs,thrA1,thrA2,thrD;locus_tag=b0002 +NC_000913.3 RefSeq gene 337 2799 . + . ID=gene-b0002;gene_name=thrA;Dbxref=ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=thrA;gbkey=Gene;gene=thrA;gene_biotype=protein_coding;gene_synonym=ECK0002,Hs,thrA1,thrA2,thrD;locus_tag=b0002 NC_000913.3 RefSeq CDS 337 2799 . + 0 Parent=gene-b0002;Dbxref=UniProtKB/Swiss-Prot:P00561,Genbank:NP_414543.1,ASAP:ABE-0000008,ECOCYC:EG10998,EcoGene:EG10998,GeneID:945803;Name=NP_414543.1;gbkey=CDS;gene=thrA;locus_tag=b0002;orig_transcript_id=gnl|b0002|mrna.b0002;product=fused aspartate kinase/homoserine dehydrogenase 1;protein_id=NP_414543.1;transl_table=11 -NC_000913.3 RefSeq gene 2801 3733 . + . ID=gene-b0003;geneID=gene-b0003;gene_name=thrB;Dbxref=ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=thrB;gbkey=Gene;gene=thrB;gene_biotype=protein_coding;gene_synonym=ECK0003;locus_tag=b0003 +NC_000913.3 RefSeq gene 2801 3733 . + . ID=gene-b0003;gene_name=thrB;Dbxref=ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=thrB;gbkey=Gene;gene=thrB;gene_biotype=protein_coding;gene_synonym=ECK0003;locus_tag=b0003 NC_000913.3 RefSeq CDS 2801 3733 . + 0 Parent=gene-b0003;Dbxref=UniProtKB/Swiss-Prot:P00547,Genbank:NP_414544.1,ASAP:ABE-0000010,ECOCYC:EG10999,EcoGene:EG10999,GeneID:947498;Name=NP_414544.1;gbkey=CDS;gene=thrB;locus_tag=b0003;orig_transcript_id=gnl|b0003|mrna.b0003;product=homoserine kinase;protein_id=NP_414544.1;transl_table=11 -NC_000913.3 RefSeq gene 3734 5020 . + . ID=gene-b0004;geneID=gene-b0004;gene_name=thrC;Dbxref=ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=thrC;gbkey=Gene;gene=thrC;gene_biotype=protein_coding;gene_synonym=ECK0004;locus_tag=b0004 +NC_000913.3 RefSeq gene 3734 5020 . + . ID=gene-b0004;gene_name=thrC;Dbxref=ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=thrC;gbkey=Gene;gene=thrC;gene_biotype=protein_coding;gene_synonym=ECK0004;locus_tag=b0004 NC_000913.3 RefSeq CDS 3734 5020 . + 0 Parent=gene-b0004;Dbxref=UniProtKB/Swiss-Prot:P00934,Genbank:NP_414545.1,ASAP:ABE-0000012,ECOCYC:EG11000,EcoGene:EG11000,GeneID:945198;Name=NP_414545.1;gbkey=CDS;gene=thrC;locus_tag=b0004;orig_transcript_id=gnl|b0004|mrna.b0004;product=threonine synthase;protein_id=NP_414545.1;transl_table=11 -NC_000913.3 RefSeq gene 5234 5530 . + . ID=gene-b0005;geneID=gene-b0005;gene_name=yaaX;Dbxref=ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=yaaX;gbkey=Gene;gene=yaaX;gene_biotype=protein_coding;gene_synonym=ECK0005;locus_tag=b0005 +NC_000913.3 RefSeq gene 5234 5530 . + . ID=gene-b0005;gene_name=yaaX;Dbxref=ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=yaaX;gbkey=Gene;gene=yaaX;gene_biotype=protein_coding;gene_synonym=ECK0005;locus_tag=b0005 NC_000913.3 RefSeq CDS 5234 5530 . + 0 Parent=gene-b0005;Dbxref=UniProtKB/Swiss-Prot:P75616,Genbank:NP_414546.1,ASAP:ABE-0000015,ECOCYC:G6081,EcoGene:EG14384,GeneID:944747;Name=NP_414546.1;gbkey=CDS;gene=yaaX;locus_tag=b0005;orig_transcript_id=gnl|b0005|mrna.b0005;product=DUF2502 domain-containing protein YaaX;protein_id=NP_414546.1;transl_table=11 -NC_000913.3 RefSeq gene 5683 6459 . - . ID=gene-b0006;geneID=gene-b0006;gene_name=yaaA;Dbxref=ASAP:ABE-0000018,ECOCYC:EG10011,EcoGene:EG10011,GeneID:944749;Name=yaaA;gbkey=Gene;gene=yaaA;gene_biotype=protein_coding;gene_synonym=ECK0006;locus_tag=b0006 +NC_000913.3 RefSeq gene 5683 6459 . - . ID=gene-b0006;gene_name=yaaA;Dbxref=ASAP:ABE-0000018,ECOCYC:EG10011,EcoGene:EG10011,GeneID:944749;Name=yaaA;gbkey=Gene;gene=yaaA;gene_biotype=protein_coding;gene_synonym=ECK0006;locus_tag=b0006 NC_000913.3 RefSeq CDS 5683 6459 . - 0 Parent=gene-b0006;Dbxref=UniProtKB/Swiss-Prot:P0A8I3,Genbank:NP_414547.1,ASAP:ABE-0000018,ECOCYC:EG10011,EcoGene:EG10011,GeneID:944749;Name=NP_414547.1;gbkey=CDS;gene=yaaA;locus_tag=b0006;orig_transcript_id=gnl|b0006|mrna.b0006;product=peroxide stress resistance protein YaaA;protein_id=NP_414547.1;transl_table=11 -NC_000913.3 RefSeq gene 6529 7959 . - . ID=gene-b0007;geneID=gene-b0007;gene_name=yaaJ;Dbxref=ASAP:ABE-0000020,ECOCYC:EG11555,EcoGene:EG11555,GeneID:944745;Name=yaaJ;gbkey=Gene;gene=yaaJ;gene_biotype=protein_coding;gene_synonym=ECK0007;locus_tag=b0007 +NC_000913.3 RefSeq gene 6529 7959 . - . ID=gene-b0007;gene_name=yaaJ;Dbxref=ASAP:ABE-0000020,ECOCYC:EG11555,EcoGene:EG11555,GeneID:944745;Name=yaaJ;gbkey=Gene;gene=yaaJ;gene_biotype=protein_coding;gene_synonym=ECK0007;locus_tag=b0007 NC_000913.3 RefSeq CDS 6529 7959 . - 0 Parent=gene-b0007;Dbxref=UniProtKB/Swiss-Prot:P30143,Genbank:NP_414548.1,ASAP:ABE-0000020,ECOCYC:EG11555,EcoGene:EG11555,GeneID:944745;Name=NP_414548.1;gbkey=CDS;gene=yaaJ;locus_tag=b0007;orig_transcript_id=gnl|b0007|mrna.b0007;product=putative transporter YaaJ;protein_id=NP_414548.1;transl_table=11 -NC_000913.3 RefSeq gene 8238 9191 . + . ID=gene-b0008;geneID=gene-b0008;gene_name=talB;Dbxref=ASAP:ABE-0000027,ECOCYC:EG11556,EcoGene:EG11556,GeneID:944748;Name=talB;gbkey=Gene;gene=talB;gene_biotype=protein_coding;gene_synonym=ECK0008,yaaK;locus_tag=b0008 +NC_000913.3 RefSeq gene 8238 9191 . + . ID=gene-b0008;gene_name=talB;Dbxref=ASAP:ABE-0000027,ECOCYC:EG11556,EcoGene:EG11556,GeneID:944748;Name=talB;gbkey=Gene;gene=talB;gene_biotype=protein_coding;gene_synonym=ECK0008,yaaK;locus_tag=b0008 NC_000913.3 RefSeq CDS 8238 9191 . + 0 Parent=gene-b0008;Dbxref=UniProtKB/Swiss-Prot:P0A870,Genbank:NP_414549.1,ASAP:ABE-0000027,ECOCYC:EG11556,EcoGene:EG11556,GeneID:944748;Name=NP_414549.1;gbkey=CDS;gene=talB;locus_tag=b0008;orig_transcript_id=gnl|b0008|mrna.b0008;product=transaldolase B;protein_id=NP_414549.1;transl_table=11 -NC_000913.3 RefSeq gene 9306 9893 . + . ID=gene-b0009;geneID=gene-b0009;gene_name=mog;Dbxref=ASAP:ABE-0000030,ECOCYC:EG11511,EcoGene:EG11511,GeneID:944760;Name=mog;gbkey=Gene;gene=mog;gene_biotype=protein_coding;gene_synonym=bisD,chlG,ECK0009,mogA,yaaG;locus_tag=b0009 +NC_000913.3 RefSeq gene 9306 9893 . + . ID=gene-b0009;gene_name=mog;Dbxref=ASAP:ABE-0000030,ECOCYC:EG11511,EcoGene:EG11511,GeneID:944760;Name=mog;gbkey=Gene;gene=mog;gene_biotype=protein_coding;gene_synonym=bisD,chlG,ECK0009,mogA,yaaG;locus_tag=b0009 NC_000913.3 RefSeq CDS 9306 9893 . + 0 Parent=gene-b0009;Dbxref=UniProtKB/Swiss-Prot:P0AF03,Genbank:NP_414550.1,ASAP:ABE-0000030,ECOCYC:EG11511,EcoGene:EG11511,GeneID:944760;Name=NP_414550.1;gbkey=CDS;gene=mog;locus_tag=b0009;orig_transcript_id=gnl|b0009|mrna.b0009;product=molybdopterin adenylyltransferase;protein_id=NP_414550.1;transl_table=11 -NC_000913.3 RefSeq gene 9928 10494 . - . ID=gene-b0010;geneID=gene-b0010;gene_name=satP;Dbxref=ASAP:ABE-0000032,ECOCYC:EG11512,EcoGene:EG11512,GeneID:944792;Name=satP;gbkey=Gene;gene=satP;gene_biotype=protein_coding;gene_synonym=ECK0010,yaaH;locus_tag=b0010 +NC_000913.3 RefSeq gene 9928 10494 . - . ID=gene-b0010;gene_name=satP;Dbxref=ASAP:ABE-0000032,ECOCYC:EG11512,EcoGene:EG11512,GeneID:944792;Name=satP;gbkey=Gene;gene=satP;gene_biotype=protein_coding;gene_synonym=ECK0010,yaaH;locus_tag=b0010 NC_000913.3 RefSeq CDS 9928 10494 . - 0 Parent=gene-b0010;Dbxref=UniProtKB/Swiss-Prot:P0AC98,Genbank:NP_414551.1,ASAP:ABE-0000032,ECOCYC:EG11512,EcoGene:EG11512,GeneID:944792;Name=NP_414551.1;gbkey=CDS;gene=satP;locus_tag=b0010;orig_transcript_id=gnl|b0010|mrna.b0010;product=acetate/succinate:H(+) symporter;protein_id=NP_414551.1;transl_table=11 -NC_000913.3 RefSeq gene 10643 11356 . - . ID=gene-b0011;geneID=gene-b0011;gene_name=yaaW;Dbxref=ASAP:ABE-0000037,ECOCYC:G6082,EcoGene:EG14340,GeneID:944771;Name=yaaW;gbkey=Gene;gene=yaaW;gene_biotype=protein_coding;gene_synonym=ECK0011;locus_tag=b0011 +NC_000913.3 RefSeq gene 10643 11356 . - . ID=gene-b0011;gene_name=yaaW;Dbxref=ASAP:ABE-0000037,ECOCYC:G6082,EcoGene:EG14340,GeneID:944771;Name=yaaW;gbkey=Gene;gene=yaaW;gene_biotype=protein_coding;gene_synonym=ECK0011;locus_tag=b0011 NC_000913.3 RefSeq CDS 10643 11356 . - 0 Parent=gene-b0011;Dbxref=UniProtKB/Swiss-Prot:P75617,Genbank:NP_414552.1,ASAP:ABE-0000037,ECOCYC:G6082,EcoGene:EG14340,GeneID:944771;Name=NP_414552.1;gbkey=CDS;gene=yaaW;locus_tag=b0011;orig_transcript_id=gnl|b0011|mrna.b0011;product=putative enzyme-specific chaperone YaaW;protein_id=NP_414552.1;transl_table=11 -NC_000913.3 RefSeq gene 10830 11315 . + . ID=gene-b0012;geneID=gene-b0012;gene_name=mbiA;Dbxref=ASAP:ABE-0000040,ECOCYC:EG11509,EcoGene:EG11509,GeneID:948295;Name=mbiA;gbkey=Gene;gene=mbiA;gene_biotype=protein_coding;gene_synonym=ECK0012,htgA,htpY;locus_tag=b0012 +NC_000913.3 RefSeq gene 10830 11315 . + . ID=gene-b0012;gene_name=mbiA;Dbxref=ASAP:ABE-0000040,ECOCYC:EG11509,EcoGene:EG11509,GeneID:948295;Name=mbiA;gbkey=Gene;gene=mbiA;gene_biotype=protein_coding;gene_synonym=ECK0012,htgA,htpY;locus_tag=b0012 NC_000913.3 RefSeq CDS 10830 11315 . + 0 Parent=gene-b0012;Dbxref=UniProtKB/Swiss-Prot:P28697,Genbank:YP_009518733.1,ASAP:ABE-0000040,ECOCYC:EG11509,EcoGene:EG11509,GeneID:948295;Name=YP_009518733.1;gbkey=CDS;gene=mbiA;locus_tag=b0012;orig_transcript_id=gnl|b0012|mrna.CDS13;product=uncharacterized protein MbiA;protein_id=YP_009518733.1;transl_table=11 -NC_000913.3 RefSeq gene 11382 11786 . - . ID=gene-b0013;geneID=gene-b0013;gene_name=yaaI;Dbxref=ASAP:ABE-0000043,ECOCYC:G8202,EcoGene:EG11513,GeneID:944751;Name=yaaI;gbkey=Gene;gene=yaaI;gene_biotype=protein_coding;gene_synonym=ECK0013;locus_tag=b0013 +NC_000913.3 RefSeq gene 11382 11786 . - . ID=gene-b0013;gene_name=yaaI;Dbxref=ASAP:ABE-0000043,ECOCYC:G8202,EcoGene:EG11513,GeneID:944751;Name=yaaI;gbkey=Gene;gene=yaaI;gene_biotype=protein_coding;gene_synonym=ECK0013;locus_tag=b0013 NC_000913.3 RefSeq CDS 11382 11786 . - 0 Parent=gene-b0013;Dbxref=UniProtKB/Swiss-Prot:P28696,Genbank:NP_414554.1,ASAP:ABE-0000043,ECOCYC:G8202,EcoGene:EG11513,GeneID:944751;Name=NP_414554.1;gbkey=CDS;gene=yaaI;locus_tag=b0013;orig_transcript_id=gnl|b0013|mrna.b0013;product=DUF2541 domain-containing protein YaaI;protein_id=NP_414554.1;transl_table=11 -NC_000913.3 RefSeq gene 12163 14079 . + . ID=gene-b0014;geneID=gene-b0014;gene_name=dnaK;Dbxref=ASAP:ABE-0000052,ECOCYC:EG10241,EcoGene:EG10241,GeneID:944750;Name=dnaK;gbkey=Gene;gene=dnaK;gene_biotype=protein_coding;gene_synonym=ECK0014,groPAB,groPC,groPF,grpC,grpF,seg;locus_tag=b0014 +NC_000913.3 RefSeq gene 12163 14079 . + . ID=gene-b0014;gene_name=dnaK;Dbxref=ASAP:ABE-0000052,ECOCYC:EG10241,EcoGene:EG10241,GeneID:944750;Name=dnaK;gbkey=Gene;gene=dnaK;gene_biotype=protein_coding;gene_synonym=ECK0014,groPAB,groPC,groPF,grpC,grpF,seg;locus_tag=b0014 NC_000913.3 RefSeq CDS 12163 14079 . + 0 Parent=gene-b0014;Dbxref=UniProtKB/Swiss-Prot:P0A6Y8,Genbank:NP_414555.1,ASAP:ABE-0000052,ECOCYC:EG10241,EcoGene:EG10241,GeneID:944750;Name=NP_414555.1;gbkey=CDS;gene=dnaK;locus_tag=b0014;orig_transcript_id=gnl|b0014|mrna.b0014;product=chaperone protein DnaK;protein_id=NP_414555.1;transl_table=11 -NC_000913.3 RefSeq gene 14168 15298 . + . ID=gene-b0015;geneID=gene-b0015;gene_name=dnaJ;Dbxref=ASAP:ABE-0000054,ECOCYC:EG10240,EcoGene:EG10240,GeneID:944753;Name=dnaJ;gbkey=Gene;gene=dnaJ;gene_biotype=protein_coding;gene_synonym=ECK0015,groP,grpC;locus_tag=b0015 +NC_000913.3 RefSeq gene 14168 15298 . + . ID=gene-b0015;gene_name=dnaJ;Dbxref=ASAP:ABE-0000054,ECOCYC:EG10240,EcoGene:EG10240,GeneID:944753;Name=dnaJ;gbkey=Gene;gene=dnaJ;gene_biotype=protein_coding;gene_synonym=ECK0015,groP,grpC;locus_tag=b0015 NC_000913.3 RefSeq CDS 14168 15298 . + 0 Parent=gene-b0015;Dbxref=UniProtKB/Swiss-Prot:P08622,Genbank:NP_414556.1,ASAP:ABE-0000054,ECOCYC:EG10240,EcoGene:EG10240,GeneID:944753;Name=NP_414556.1;gbkey=CDS;gene=dnaJ;locus_tag=b0015;orig_transcript_id=gnl|b0015|mrna.b0015;product=chaperone protein DnaJ;protein_id=NP_414556.1;transl_table=11
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/stop_codons.gtf Sat Sep 25 15:38:31 2021 +0000 @@ -0,0 +1,14 @@ +19 protein_coding exon 291275 291386 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "1"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00001234447"; +19 protein_coding CDS 291275 291336 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "1"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding start_codon 291334 291336 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "1"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; +19 protein_coding exon 288020 288171 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "2"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00003304149"; +19 protein_coding CDS 288020 288171 . - 2 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "2"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding exon 287474 287751 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "3"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00003352024"; +19 protein_coding CDS 287474 287751 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "3"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding exon 282752 282809 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "4"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00000951309"; +19 protein_coding CDS 282752 282809 . - 1 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "4"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding exon 282134 282310 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "5"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00000951310"; +19 protein_coding CDS 282134 282310 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "5"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding exon 281043 281537 . - . gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "6"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; exon_id "ENSE00000951311"; +19 protein_coding CDS 281391 281537 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "6"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001"; protein_id "ENSP00000269812"; +19 protein_coding stop_codon 281388 281390 . - 0 gene_id "ENSG00000141934"; transcript_id "ENST00000269812"; exon_number "6"; gene_name "PPAP2C"; gene_biotype "protein_coding"; transcript_name "PPAP2C-001";