bio-gff3 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -2,6 +2,7 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
+ gem "bio", ">= 1.3.1"
5
6
 
6
7
  # Add dependencies to develop your gem here.
7
8
  # Include everything needed to run rake, tests, features, etc.
@@ -10,6 +11,6 @@ group :development do
10
11
  gem "bundler", "~> 1.0.0"
11
12
  gem "jeweler", "~> 1.5.2"
12
13
  gem "rcov", ">= 0"
13
- gem "bio", ">= 1.4.1"
14
- gem "rspec"
14
+ gem "bio", ">= 1.3.1"
15
+ gem "rspec", ">= 2.0.0"
15
16
  end
data/Gemfile.lock CHANGED
@@ -24,9 +24,9 @@ PLATFORMS
24
24
  ruby
25
25
 
26
26
  DEPENDENCIES
27
- bio (>= 1.4.1)
27
+ bio (>= 1.3.1)
28
28
  bundler (~> 1.0.0)
29
29
  jeweler (~> 1.5.2)
30
30
  rcov
31
- rspec
31
+ rspec (>= 2.0.0)
32
32
  shoulda
data/README.rdoc CHANGED
@@ -1,69 +1,60 @@
1
1
  = bio-gff3
2
2
 
3
- GFF3 plugin for BioRuby, aimed at parsing big data
3
+ GFF3 parser, aimed at parsing big data GFF3 to return sequences of any type,
4
+ including assembled mRNA, protein and CDS sequences.
4
5
 
5
6
  Features:
6
7
 
7
- # Take GFF (genome browser) information and digest mRNA and CDS sequences
8
+ # Take GFF3 (genome browser) information of any type, and assemble sequences, e.g. mRNA and CDS
8
9
  # Options for low memory use and caching of records
9
- # Support for external FASTA files
10
+ # Support for external FASTA input files
11
+ # Use of multi-cores (NYI)
12
+
13
+ Currently the output is a FASTA file.
10
14
 
11
15
  You can use this plugin in two ways. First as a standalone program, next as a
12
16
  plugin library to BioRuby.
13
17
 
14
- For example, fetch mRNA and CDS information from GFF3 files and output to FASTA:
15
-
16
- ./bin/gff3-fetch mrna test/data/gff/test.gff3
17
- ./bin/gff3-fetch cds test/data/gff/test.gff3
18
-
19
- Or clone this repository and add the 'lib' dir to the Ruby search path and
20
-
21
- require 'bio/db/gff/gffdb'
22
-
23
- You can also run RSpec with something like
24
-
25
- rspec -I ../bioruby/lib/ spec/*.rb
26
-
27
- This implementation depends on BioRuby's basic GFF3 parser, with the possible
28
- advantage that the plugin is faster and does not consume all memory. The Gff3
29
- specs are based on the output of the Wormbase genome browser.
18
+ == Install and run gff3-fetch
30
19
 
31
- For a write-up see http://thebird.nl/bioruby/BioRuby_GFF3.html
20
+ After installing ruby 1.9, or later, you can use rubygems
32
21
 
33
- -------------------------------------------------------------------------------
22
+ gem install bio-gff3
34
23
 
24
+ Then, fetch mRNA and CDS information from GFF3 files and output to FASTA:
35
25
 
36
- Fetch and assemble mRNAs, or CDS and print in FASTA format.
26
+ gff3-fetch mrna test/data/gff/test.gff3
27
+ gff3-fetch cds test/data/gff/test.gff3
37
28
 
38
- gff3-fetch [--no-cache] mRNA|CDS [filename.fa] filename.gff
29
+ == Development
39
30
 
40
- Where:
31
+ To use the library
41
32
 
42
- --no-cache : do not load everything in memory (slower)
43
- mRNA : assemble mRNA
44
- CDS : assemble CDS
33
+ require 'bio-gff3'
45
34
 
46
- Multiple GFF3 files can be used. For external FASTA files, always the last
47
- one before the GFF file is used.
35
+ For coding examples see ./bin/gff3-fetch and the ./spec/*rb
48
36
 
49
- Examples:
37
+ You can run RSpecs with something like
50
38
 
51
- Find mRNA and CDS information from test.gff3 (which includes sequence information)
39
+ rspec -I ../bioruby/lib/ spec/*.rb
52
40
 
53
- gff3-fetch mRNA test/data/gff/test.gff3
54
- gff3-fetch CDS test/data/gff/test.gff3
41
+ (supposing you are referring a bioruby source repository)
55
42
 
56
- Find CDS from external FASTA file
43
+ This implementation depends on BioRuby's basic GFF3 parser, with the possible
44
+ advantage that the plugin can assemble sequences, is faster and does not
45
+ consume all memory. The Gff3 specs are based on the output of the Wormbase
46
+ genome browser.
57
47
 
58
- gff3-fetch CDS test/data/gff/MhA1_Contig1133.fa test/data/gff/MhA1_Contig1133.gff3
48
+ == See also
59
49
 
60
- Find mRNA from external FASTA file, without loading everything in RAM
50
+ gff3-fetch --help
61
51
 
62
- gff3-fetch --no-cache mRNA test/data/gff/test-ext-fasta.fa test/data/gff/test-ext-fasta.gff3
52
+ For a write-up see http://thebird.nl/bioruby/BioRuby_GFF3.html
63
53
 
64
- If you use this software, please cite http://dx.doi.org/10.1093/bioinformatics/btq475
54
+ -------------------------------------------------------------------------------
65
55
 
66
56
  == Copyright
67
57
 
68
58
  Copyright (C) 2010,2011 Pjotr Prins <pjotr.prins@thebird.nl>
69
59
 
60
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0
1
+ 0.8.2
data/bin/gff3-fetch CHANGED
@@ -6,37 +6,89 @@
6
6
  #
7
7
  # Copyright (C) 2010,2011 Pjotr Prins <pjotr.prins@thebird.nl>
8
8
 
9
-
10
9
  USAGE = <<EOM
11
- Fetch and assemble mRNAs, or CDS and print in FASTA format.
12
10
 
13
- gff3-fetch [--no-cache] mRNA|CDS [filename.fa] filename.gff
11
+ Fetch and assemble GFF3 types (e.g. ORF, mRNA, CDS) + print in FASTA format.
12
+
13
+ gff3-fetch [--low-mem] [--validate] type [filename.fa] filename.gff3
14
14
 
15
- Where:
15
+ Where (NYI == Not Yet Implemented):
16
+
17
+ --translate : output as amino acid sequence
18
+ --validate : validate GFF3 file by translating
19
+ --no-assemble : output each record as a sequence -- NYI
20
+ --add-phase : output records using phase (useful w. no-assemble CDS to AA) --NYI
21
+ --fix : check 3-frame translation and fix, if possible -- NYI
22
+
23
+ type is any valid type in the GFF3 definition. For example:
16
24
 
17
- --no-cache : do not load everything in memory (slower)
18
25
  mRNA : assemble mRNA
19
26
  CDS : assemble CDS
27
+ exon : list all exons
28
+ gene/ORF : list gene ORFs -- NYI
29
+ other : use any type from GFF3 definition, e.g. 'Terminate' -- NYI
30
+
31
+ and the following performance options:
20
32
 
21
- Multiple GFF3 files can be used. For external FASTA files, always the last
22
- one before the GFF file is used.
33
+ --cache full : load all in RAM (fast)
34
+ --cache none : do not load anything in memory (slow)
35
+ --low-mem : use LRU cache (limit RAM use, fast) -- NYI
36
+ --max-cpus num : use num threads -- NYI
37
+ --emboss : use EMBOSS translation (fast) -- NYI
38
+
39
+ Multiple GFF3 files can be used. With external FASTA files, always the last
40
+ one before the GFF3 filename is matched.
41
+
42
+ Note that above switches are only partially implemented at this stage. Full
43
+ feature support is projected Feb. 2011.
23
44
 
24
45
  Examples:
25
46
 
26
- Find mRNA and CDS information from test.gff3 (which includes sequence information)
47
+ Assemble mRNA and CDS information from test.gff3 (which includes sequence information)
27
48
 
28
49
  gff3-fetch mRNA test/data/gff/test.gff3
29
50
  gff3-fetch CDS test/data/gff/test.gff3
30
51
 
31
- Find CDS from external FASTA file
52
+ Find CDS records from external FASTA file, adding phase and translate to protein sequence
32
53
 
33
- gff3-fetch CDS test/data/gff/MhA1_Contig1133.fa test/data/gff/MhA1_Contig1133.gff3
54
+ gff3-fetch --no-assemble --add-phase --translate CDS test/data/gff/MhA1_Contig1133.fa test/data/gff/MhA1_Contig1133.gff3
34
55
 
35
56
  Find mRNA from external FASTA file, without loading everything in RAM
36
57
 
37
- gff3-fetch --no-cache mRNA test/data/gff/test-ext-fasta.fa test/data/gff/test-ext-fasta.gff3
58
+ gff3-fetch --cache none mRNA test/data/gff/test-ext-fasta.fa test/data/gff/test-ext-fasta.gff3
59
+ gff3-fetch --cache none mRNA test/data/gff/test-ext-fasta.fa test/data/gff/test-ext-fasta.gff3
60
+
61
+ Validate GFF3 file using EMBOSS translation and validation
62
+
63
+ gff3-fetch --cache none --validate --emboss mRNA test/data/gff/test-ext-fasta.fa test/data/gff/test-ext-fasta.gff3
64
+
65
+ Find GENEID predicted terminal exons
66
+
67
+ gff3-fetch terminal chromosome1.fa geneid.gff3
68
+
69
+ == Performance
70
+
71
+ time gff3-fetch cds m_hapla.WS217.dna.fa m_hapla.WS217.gff3 > test.fa
72
+
73
+ Cache real user sys
74
+ ----------------------------------------------------
75
+ full 12m41s 12m28s 0m09s (0.8.0 Jan. 2011)
76
+ none 504m39s 477m49s 26m50s (0.8.0 Jan. 2011)
77
+ ----------------------------------------------------
78
+
79
+ where
38
80
 
39
- If you use this software, please cite http://dx.doi.org/10.1093/bioinformatics/btq475
81
+ 52M m_hapla.WS217.dna.fa
82
+ 456M m_hapla.WS217.gff3
83
+
84
+ ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
85
+ on an 8 CPU, 2.6 GHz (6MB cache), 16 GB RAM machine.
86
+
87
+ == Cite
88
+
89
+ If you use this software, please cite
90
+
91
+ http://dx.doi.org/10.1093/bioinformatics/btq475
40
92
 
41
93
  == Copyright
42
94
 
@@ -44,58 +96,104 @@ Copyright (C) 2010,2011 Pjotr Prins <pjotr.prins@thebird.nl>
44
96
 
45
97
  EOM
46
98
 
47
- rootpath = File.dirname(File.dirname(__FILE__))
48
- $: << rootpath+'/lib'
49
- $: << rootpath+'/../bioruby/lib'
99
+ SEP = File::SEPARATOR
100
+ rootpath = File.dirname(File.dirname(__FILE__))+SEP
101
+ $: << rootpath+'lib'
102
+ GFF3_VERSION = File.new(rootpath+'VERSION').read.chomp
50
103
 
51
104
  require 'bio-gff3'
105
+ require 'optparse'
106
+ require 'ostruct'
107
+ require 'bio/output/gfffastawriter'
52
108
 
53
- $stderr.print "BioRuby GFF3 Plugin Copyright (C) 2010,2011 Pjotr Prins <pjotr.prins@thebird.nl>\n\n"
109
+ $stderr.print "BioRuby GFF3 Plugin "+GFF3_VERSION+" Copyright (C) 2010,2011 Pjotr Prins <pjotr.prins@thebird.nl>\n\n"
54
110
 
55
111
  if ARGV.size == 0
56
112
  print USAGE
57
113
  end
58
114
 
115
+ options = OpenStruct.new()
116
+ opts = OptionParser.new() { |opts|
117
+ opts.on_tail("-h", "--help", "Show help and examples") {
118
+ print(opts)
119
+ print USAGE
120
+ exit()
121
+ }
122
+
123
+ opts.on("--cache [none,full]", String, "Caching (default full)") do |cache|
124
+ case cache.downcase
125
+ when 'none'
126
+ options.cache = :cache_none
127
+ # when 'lru'
128
+ # options.cache = :cache_lru
129
+ when 'full'
130
+ options.cache = :cache_full
131
+ else
132
+ raise 'Unknown --cache option'
133
+ end
134
+ end
135
+
136
+ opts.on("--translate", "output as amino acid sequence") do |b|
137
+ options.translate = b
138
+ end
139
+
140
+ opts.on("--validate", "validate GFF3 file by translating") do |v|
141
+ options.validate = v
142
+ $stop_on_error = true # replace global in near future
143
+ end
144
+
145
+ # opts.on("-q", "--quiet", "Run quietly") do |q|
146
+ # options.quiet = q
147
+ # end
148
+
149
+ # opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
150
+ # options.verbose = v
151
+ # end
152
+
153
+ # opts.on("-t", "--[no-]trace", "Debug") do |t|
154
+ # options.trace = t
155
+ # end
156
+ }
157
+ opts.parse!(ARGV)
158
+
59
159
  gfftype = ARGV.shift
60
- caching = true
61
- if gfftype == "--no-cache"
62
- caching = false
63
- gfftype = ARGV.shift
64
- end
160
+
65
161
  raise "Unknown GFF type '#{gfftype}'" if gfftype !~ /mrna|cds|exon/i
66
162
 
67
163
  fastafn = nil
68
164
 
69
165
  ARGV.each do | fn |
70
- if File.extname(fn) =~ /fa|fas|fasta/i
166
+ if File.extname(fn) =~ /fa|fas|fasta$/i
167
+ raise "Only one fasta file allowed per GFF3" if fastafn != nil
71
168
  fastafn = fn
72
169
  next
73
170
  end
74
- options = {:validate => false}
75
- options = {:validate => false, :cache_components => :cache_none, :cache_records => :cache_none} if caching == false
76
- options[:fasta_filename] = fastafn if fastafn
77
171
 
78
- gffdb = Bio::GFFbrowser::GFFdb.new(fn,options)
172
+ opts = {}
173
+ opts[:validate] = options.validate
174
+ opts[:cache_components] = options.cache
175
+ opts[:cache_records] = options.cache
176
+ opts[:fasta_filename] = fastafn if fastafn
177
+ gffdb = Bio::GFFbrowser::GFFdb.new(fn,opts)
79
178
  gff = gffdb.assembler
179
+ writer = Bio::GFFbrowser::FastaWriter.new(options.translate, options.validate)
80
180
  case gfftype.downcase
81
181
  when 'mrna'
82
182
  gff.each_mRNA_seq do | id, seq |
83
- puts ">"+id
84
- puts seq
183
+ writer.put(id,seq)
85
184
  end
86
185
  when 'exon'
87
186
  gff.each_exon_seq do | id, seq |
88
- puts ">"+id
89
- puts seq
187
+ writer.put(id,seq)
90
188
  end
91
189
  when 'cds'
92
190
  gff.each_CDS_seq do | id, seq |
93
- puts ">"+id
94
- puts seq
191
+ writer.put(id,seq)
95
192
  end
96
193
  else
97
194
  raise "Unknown action <#{gfftype}>"
98
195
  end
196
+ fastafn = nil
99
197
  end
100
198
 
101
199
 
data/bio-gff3.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bio-gff3}
8
- s.version = "0.8.0"
8
+ s.version = "0.8.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Pjotr Prins"]
12
- s.date = %q{2010-12-31}
12
+ s.date = %q{2011-01-03}
13
13
  s.default_executable = %q{gff3-fetch}
14
14
  s.description = %q{GFF3 (genome browser) information and digest mRNA and CDS sequences.
15
15
  Options for low memory use and caching of records.
@@ -38,6 +38,7 @@ Support for external FASTA files.
38
38
  "lib/bio/db/gff/gffinmemory.rb",
39
39
  "lib/bio/db/gff/gffnocache.rb",
40
40
  "lib/bio/db/gff/gffparser.rb",
41
+ "lib/bio/output/gfffastawriter.rb",
41
42
  "lib/bio/system/lruhash.rb",
42
43
  "spec/gff3_assemble2_spec.rb",
43
44
  "spec/gff3_assemble3_spec.rb",
@@ -76,27 +77,30 @@ Support for external FASTA files.
76
77
  s.specification_version = 3
77
78
 
78
79
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
80
+ s.add_runtime_dependency(%q<bio>, [">= 1.3.1"])
79
81
  s.add_development_dependency(%q<shoulda>, [">= 0"])
80
82
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
81
83
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
82
84
  s.add_development_dependency(%q<rcov>, [">= 0"])
83
- s.add_development_dependency(%q<bio>, [">= 1.4.1"])
84
- s.add_development_dependency(%q<rspec>, [">= 0"])
85
+ s.add_development_dependency(%q<bio>, [">= 1.3.1"])
86
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
85
87
  else
88
+ s.add_dependency(%q<bio>, [">= 1.3.1"])
86
89
  s.add_dependency(%q<shoulda>, [">= 0"])
87
90
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
88
91
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
89
92
  s.add_dependency(%q<rcov>, [">= 0"])
90
- s.add_dependency(%q<bio>, [">= 1.4.1"])
91
- s.add_dependency(%q<rspec>, [">= 0"])
93
+ s.add_dependency(%q<bio>, [">= 1.3.1"])
94
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
92
95
  end
93
96
  else
97
+ s.add_dependency(%q<bio>, [">= 1.3.1"])
94
98
  s.add_dependency(%q<shoulda>, [">= 0"])
95
99
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
96
100
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
97
101
  s.add_dependency(%q<rcov>, [">= 0"])
98
- s.add_dependency(%q<bio>, [">= 1.4.1"])
99
- s.add_dependency(%q<rspec>, [">= 0"])
102
+ s.add_dependency(%q<bio>, [">= 1.3.1"])
103
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
100
104
  end
101
105
  end
102
106
 
@@ -17,9 +17,14 @@ module Bio
17
17
  $stderr.print "Info: "+str+" <#{id}>\n"
18
18
  end
19
19
 
20
- def warn str,id=''
20
+ def warn str, id=''
21
21
  Kernel.warn "Warning: "+str+" <#{id}>"
22
22
  end
23
+
24
+ def error str, id=''
25
+ Kernel.warn "Error: "+str+" <#{id}>"
26
+ exit(1) if $stop_on_error
27
+ end
23
28
  end
24
29
 
25
30
  # Helper class for counting IDs
@@ -15,6 +15,8 @@ module Bio
15
15
 
16
16
  module NoCacheHelpers
17
17
 
18
+ # Module to fetch a line from GFF3 file and returns a parsed
19
+ # record
18
20
  module SeekRec
19
21
  # Fetch a record using fh and file seek position
20
22
  def SeekRec::fetch(fh,fpos)
@@ -24,7 +26,8 @@ module Bio
24
26
  end
25
27
  end
26
28
 
27
- # The hardwired to file RecList
29
+ # Helper class which gives Hash-like access to the
30
+ # no-cache GFF3 file
28
31
  class SeekRecList
29
32
  def initialize fh
30
33
  @fh = fh
@@ -49,6 +52,7 @@ module Bio
49
52
  end
50
53
  end
51
54
 
55
+ # List of ids
52
56
  class SeekLinkedRecs < Hash
53
57
  include Helpers::Error
54
58
  def add id, rec
@@ -107,7 +107,7 @@ module Bio
107
107
  if sequence
108
108
  yield description(id,component,reclist), assemble(sequence,component.start,reclist)
109
109
  else
110
- warn "No sequence information for",id
110
+ error "No sequence information for",id
111
111
  end
112
112
  end
113
113
  end
@@ -128,7 +128,7 @@ module Bio
128
128
  end
129
129
  yield description(id,component,reclist), seq
130
130
  else
131
- warn "No sequence information for",id
131
+ error "No sequence information for",id
132
132
  end
133
133
  end
134
134
  end
@@ -143,7 +143,7 @@ module Bio
143
143
  seq = assemble(sequence,component.start,reclist)
144
144
  yield description(id,component,reclist), seq
145
145
  else
146
- warn "No sequence information for",id
146
+ error "No sequence information for",id
147
147
  end
148
148
  end
149
149
  end
@@ -0,0 +1,31 @@
1
+
2
+ module Bio
3
+ module GFFbrowser
4
+
5
+ class FastaWriter
6
+ def initialize translate, validate
7
+ @do_translate = translate
8
+ @do_validate = validate
9
+ end
10
+
11
+ def put id, seq
12
+ puts '>'+id
13
+ put_seq seq
14
+ end
15
+ private
16
+
17
+ def put_seq seq
18
+ if @do_translate or @do_validate
19
+ ntseq = Bio::Sequence::NA.new(seq)
20
+ aaseq = ntseq.translate
21
+ puts aaseq if @do_translate
22
+ if @do_validate
23
+ raise 'Validation problem of '+id if aaseq.count('*') > 1
24
+ end
25
+ return if @do_translate
26
+ end
27
+ puts seq
28
+ end
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 8
8
- - 0
9
- version: 0.8.0
8
+ - 2
9
+ version: 0.8.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Pjotr Prins
@@ -14,12 +14,27 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-31 00:00:00 +01:00
17
+ date: 2011-01-03 00:00:00 +01:00
18
18
  default_executable: gff3-fetch
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: shoulda
21
+ name: bio
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 3
30
+ - 1
31
+ version: 1.3.1
32
+ type: :runtime
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: shoulda
37
+ requirement: &id002 !ruby/object:Gem::Requirement
23
38
  none: false
24
39
  requirements:
25
40
  - - ">="
@@ -29,10 +44,10 @@ dependencies:
29
44
  version: "0"
30
45
  type: :development
31
46
  prerelease: false
32
- version_requirements: *id001
47
+ version_requirements: *id002
33
48
  - !ruby/object:Gem::Dependency
34
49
  name: bundler
35
- requirement: &id002 !ruby/object:Gem::Requirement
50
+ requirement: &id003 !ruby/object:Gem::Requirement
36
51
  none: false
37
52
  requirements:
38
53
  - - ~>
@@ -44,10 +59,10 @@ dependencies:
44
59
  version: 1.0.0
45
60
  type: :development
46
61
  prerelease: false
47
- version_requirements: *id002
62
+ version_requirements: *id003
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: jeweler
50
- requirement: &id003 !ruby/object:Gem::Requirement
65
+ requirement: &id004 !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ~>
@@ -59,10 +74,10 @@ dependencies:
59
74
  version: 1.5.2
60
75
  type: :development
61
76
  prerelease: false
62
- version_requirements: *id003
77
+ version_requirements: *id004
63
78
  - !ruby/object:Gem::Dependency
64
79
  name: rcov
65
- requirement: &id004 !ruby/object:Gem::Requirement
80
+ requirement: &id005 !ruby/object:Gem::Requirement
66
81
  none: false
67
82
  requirements:
68
83
  - - ">="
@@ -72,35 +87,37 @@ dependencies:
72
87
  version: "0"
73
88
  type: :development
74
89
  prerelease: false
75
- version_requirements: *id004
90
+ version_requirements: *id005
76
91
  - !ruby/object:Gem::Dependency
77
92
  name: bio
78
- requirement: &id005 !ruby/object:Gem::Requirement
93
+ requirement: &id006 !ruby/object:Gem::Requirement
79
94
  none: false
80
95
  requirements:
81
96
  - - ">="
82
97
  - !ruby/object:Gem::Version
83
98
  segments:
84
99
  - 1
85
- - 4
100
+ - 3
86
101
  - 1
87
- version: 1.4.1
102
+ version: 1.3.1
88
103
  type: :development
89
104
  prerelease: false
90
- version_requirements: *id005
105
+ version_requirements: *id006
91
106
  - !ruby/object:Gem::Dependency
92
107
  name: rspec
93
- requirement: &id006 !ruby/object:Gem::Requirement
108
+ requirement: &id007 !ruby/object:Gem::Requirement
94
109
  none: false
95
110
  requirements:
96
111
  - - ">="
97
112
  - !ruby/object:Gem::Version
98
113
  segments:
114
+ - 2
99
115
  - 0
100
- version: "0"
116
+ - 0
117
+ version: 2.0.0
101
118
  type: :development
102
119
  prerelease: false
103
- version_requirements: *id006
120
+ version_requirements: *id007
104
121
  description: |
105
122
  GFF3 (genome browser) information and digest mRNA and CDS sequences.
106
123
  Options for low memory use and caching of records.
@@ -131,6 +148,7 @@ files:
131
148
  - lib/bio/db/gff/gffinmemory.rb
132
149
  - lib/bio/db/gff/gffnocache.rb
133
150
  - lib/bio/db/gff/gffparser.rb
151
+ - lib/bio/output/gfffastawriter.rb
134
152
  - lib/bio/system/lruhash.rb
135
153
  - spec/gff3_assemble2_spec.rb
136
154
  - spec/gff3_assemble3_spec.rb
@@ -162,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
180
  requirements:
163
181
  - - ">="
164
182
  - !ruby/object:Gem::Version
165
- hash: -1033924243
183
+ hash: -876270257
166
184
  segments:
167
185
  - 0
168
186
  version: "0"