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 +3 -2
- data/Gemfile.lock +2 -2
- data/README.rdoc +29 -38
- data/VERSION +1 -1
- data/bin/gff3-fetch +130 -32
- data/bio-gff3.gemspec +12 -8
- data/lib/bio/db/gff/gffassemble.rb +6 -1
- data/lib/bio/db/gff/gffnocache.rb +5 -1
- data/lib/bio/db/gff/gffparser.rb +3 -3
- data/lib/bio/output/gfffastawriter.rb +31 -0
- metadata +37 -19
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.
|
14
|
-
gem "rspec"
|
14
|
+
gem "bio", ">= 1.3.1"
|
15
|
+
gem "rspec", ">= 2.0.0"
|
15
16
|
end
|
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -1,69 +1,60 @@
|
|
1
1
|
= bio-gff3
|
2
2
|
|
3
|
-
GFF3
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
26
|
+
gff3-fetch mrna test/data/gff/test.gff3
|
27
|
+
gff3-fetch cds test/data/gff/test.gff3
|
37
28
|
|
38
|
-
|
29
|
+
== Development
|
39
30
|
|
40
|
-
|
31
|
+
To use the library
|
41
32
|
|
42
|
-
|
43
|
-
mRNA : assemble mRNA
|
44
|
-
CDS : assemble CDS
|
33
|
+
require 'bio-gff3'
|
45
34
|
|
46
|
-
|
47
|
-
one before the GFF file is used.
|
35
|
+
For coding examples see ./bin/gff3-fetch and the ./spec/*rb
|
48
36
|
|
49
|
-
|
37
|
+
You can run RSpecs with something like
|
50
38
|
|
51
|
-
|
39
|
+
rspec -I ../bioruby/lib/ spec/*.rb
|
52
40
|
|
53
|
-
|
54
|
-
gff3-fetch CDS test/data/gff/test.gff3
|
41
|
+
(supposing you are referring a bioruby source repository)
|
55
42
|
|
56
|
-
|
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
|
-
|
48
|
+
== See also
|
59
49
|
|
60
|
-
|
50
|
+
gff3-fetch --help
|
61
51
|
|
62
|
-
|
52
|
+
For a write-up see http://thebird.nl/bioruby/BioRuby_GFF3.html
|
63
53
|
|
64
|
-
|
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.
|
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
|
-
|
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
|
-
|
22
|
-
|
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
|
-
|
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 --
|
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
|
-
|
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
|
-
|
48
|
-
|
49
|
-
$: << rootpath+'
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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{
|
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.
|
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.
|
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.
|
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
|
-
#
|
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
|
data/lib/bio/db/gff/gffparser.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
-
|
9
|
-
version: 0.8.
|
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:
|
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:
|
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: *
|
47
|
+
version_requirements: *id002
|
33
48
|
- !ruby/object:Gem::Dependency
|
34
49
|
name: bundler
|
35
|
-
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: *
|
62
|
+
version_requirements: *id003
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: jeweler
|
50
|
-
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: *
|
77
|
+
version_requirements: *id004
|
63
78
|
- !ruby/object:Gem::Dependency
|
64
79
|
name: rcov
|
65
|
-
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: *
|
90
|
+
version_requirements: *id005
|
76
91
|
- !ruby/object:Gem::Dependency
|
77
92
|
name: bio
|
78
|
-
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
|
-
-
|
100
|
+
- 3
|
86
101
|
- 1
|
87
|
-
version: 1.
|
102
|
+
version: 1.3.1
|
88
103
|
type: :development
|
89
104
|
prerelease: false
|
90
|
-
version_requirements: *
|
105
|
+
version_requirements: *id006
|
91
106
|
- !ruby/object:Gem::Dependency
|
92
107
|
name: rspec
|
93
|
-
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
|
-
|
116
|
+
- 0
|
117
|
+
version: 2.0.0
|
101
118
|
type: :development
|
102
119
|
prerelease: false
|
103
|
-
version_requirements: *
|
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: -
|
183
|
+
hash: -876270257
|
166
184
|
segments:
|
167
185
|
- 0
|
168
186
|
version: "0"
|