bio-gff3 0.8.0 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
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"