parse_fasta 1.5.2 → 1.6.0
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.
- checksums.yaml +5 -13
- data/.coveralls.yml +1 -0
- data/.travis.yml +18 -0
- data/README.md +58 -34
- data/lib/parse_fasta/seq_file.rb +82 -0
- data/lib/parse_fasta/version.rb +1 -1
- data/lib/parse_fasta.rb +1 -0
- data/parse_fasta.gemspec +1 -0
- data/spec/lib/seq_file_spec.rb +150 -0
- data/spec/spec_helper.rb +4 -0
- data/test_files/bogus.txt +2 -0
- data/test_files/test.fa +2 -0
- metadata +37 -17
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MTI3NDc4ODFiZjcwOGQ0NTRkMjM2NDE5NzI5YjgwOTczNTY3Nzg4NQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2f6ccbf7f40297b5bc4604e15c7ef47ffb573d44
|
4
|
+
data.tar.gz: f95cffcff55c9789eabb563095319154ca21ec99
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NzAwMWUwOTNiYjAyMDU2Y2UyOTIzMjIyZjQ1YzIzM2Y5ZmM1M2JhN2JhNzdi
|
11
|
-
MzBjYzYwMzNjYjIzMGU2MWZiOTlhYzNiNTVkY2Y1OWQ4YjU1OTY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
N2VkZWE3OTk3NTg2NDM4YmFiOTdlMjgzZjAzODVmZGE4Y2Q2MzJjZjY2MzU4
|
14
|
-
YTA2OWFiZGU4YjllNTVmYTJlZWMwYjE2Y2YxMzc3ODNiYzgyODNkNGI2MmM4
|
15
|
-
OTJhZTFhYWIyMDU1OWM1ZmU1N2IwZGE4ZTM3ZjY0MThlZDcyOWE=
|
6
|
+
metadata.gz: 1cdd0c880390a6666bafa57190eb37672188abfe64e24048277e759cdfd48eedca35c0e6a2251426bfe071aedc9c0bddb00b220ba140f87fdf1de1f8ae0b67b5
|
7
|
+
data.tar.gz: 92734f57cc2da98f1a705c5e60b568c67c47b152efd6a114e523c51fc982c55f1f8aa4edf6df6b143fc11a3a910ec0b448158f4010438a7b292c25bf0154fafa
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# parse_fasta #
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/parse_fasta)
|
3
|
+
[](http://badge.fury.io/rb/parse_fasta) [](https://travis-ci.org/mooreryan/parse_fasta) [](https://coveralls.io/r/mooreryan/parse_fasta)
|
4
4
|
|
5
5
|
So you want to parse a fasta file...
|
6
6
|
|
@@ -20,17 +20,15 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Overview ##
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
probably add more, but likely only tasks that I find myself doing over
|
27
|
-
and over.
|
23
|
+
Provides nice, programmatic access to fasta and fastq files, as well
|
24
|
+
as providing Sequence and Quality helper classes. It's more
|
25
|
+
lightweight than BioRuby. And more fun! ;)
|
28
26
|
|
29
27
|
## Documentation ##
|
30
28
|
|
31
29
|
Checkout
|
32
|
-
[parse_fasta docs](http://rubydoc.info/gems/parse_fasta/1.
|
33
|
-
|
30
|
+
[parse_fasta docs](http://rubydoc.info/gems/parse_fasta/1.6.0/frames)
|
31
|
+
for the full api documentation.
|
34
32
|
|
35
33
|
## Usage ##
|
36
34
|
|
@@ -40,36 +38,51 @@ A little script to print header and length of each record.
|
|
40
38
|
|
41
39
|
require 'parse_fasta'
|
42
40
|
|
43
|
-
FastaFile.open(ARGV
|
41
|
+
FastaFile.open(ARGV[0]).each_record do |header, sequence|
|
44
42
|
puts [header, sequence.length].join("\t")
|
45
43
|
end
|
46
44
|
|
47
45
|
And here, a script to calculate GC content:
|
48
46
|
|
49
|
-
FastaFile.open(ARGV
|
47
|
+
FastaFile.open(ARGV[0]).each_record do |header, sequence|
|
50
48
|
puts [header, sequence.gc].join("\t")
|
51
49
|
end
|
52
50
|
|
53
51
|
Now we can parse fastq files as well!
|
54
52
|
|
55
|
-
FastqFile.open(ARGV
|
56
|
-
puts [header,
|
53
|
+
FastqFile.open(ARGV[0]).each_record do |head, seq, desc, qual|
|
54
|
+
puts [header, qual.qual_scores.join(',')].join("\t")
|
55
|
+
end
|
56
|
+
|
57
|
+
What if you don't care if the input is a fastA or a fastQ? No problem!
|
58
|
+
|
59
|
+
SeqFile.open(ARGV[0]).each_record do |head, seq|
|
60
|
+
puts [header, seq].join "\t"
|
57
61
|
end
|
58
62
|
|
59
63
|
## Versions ##
|
60
64
|
|
61
|
-
### 1.
|
65
|
+
### 1.6 ###
|
66
|
+
|
67
|
+
Added `SeqFile` class, which accepts either fastA or fastQ files. It
|
68
|
+
uses FastaFile and FastqFile internally. You can use this class if you
|
69
|
+
want your scripts to accept either fastA or fastQ files.
|
70
|
+
|
71
|
+
If you need the description and quality string, you should use
|
72
|
+
FastqFile instead.
|
73
|
+
|
74
|
+
### 1.5 ###
|
62
75
|
|
63
76
|
Now accepts gzipped files. Huzzah!
|
64
77
|
|
65
|
-
### 1.4
|
78
|
+
### 1.4 ###
|
66
79
|
|
67
80
|
Added methods:
|
68
81
|
|
69
82
|
Sequence.base_counts
|
70
83
|
Sequence.base_frequencies
|
71
84
|
|
72
|
-
### 1.3
|
85
|
+
### 1.3 ###
|
73
86
|
|
74
87
|
Add additional functionality to `each_record` method.
|
75
88
|
|
@@ -108,7 +121,7 @@ Then info will contain the following arrays
|
|
108
121
|
['fruits', ['pineapple', 'pear', 'peach']],
|
109
122
|
['veggies', ['peppers', 'parsnip', 'peas']]
|
110
123
|
|
111
|
-
### 1.2
|
124
|
+
### 1.2 ###
|
112
125
|
|
113
126
|
Added `mean_qual` method to the `Quality` class.
|
114
127
|
|
@@ -119,11 +132,11 @@ Dropped Ruby requirement to 1.9.3
|
|
119
132
|
(Note, if you want to build the docs with yard and you're using
|
120
133
|
Ruby 1.9.3, you may have to install the redcarpet gem.)
|
121
134
|
|
122
|
-
### 1.1
|
135
|
+
### 1.1 ###
|
123
136
|
|
124
137
|
Added: Fastq and Quality classes
|
125
138
|
|
126
|
-
### 1.0
|
139
|
+
### 1.0 ###
|
127
140
|
|
128
141
|
Added: Fasta and Sequence classes
|
129
142
|
|
@@ -135,16 +148,17 @@ Last version with File monkey patch.
|
|
135
148
|
|
136
149
|
## Benchmark ##
|
137
150
|
|
138
|
-
|
139
|
-
|
140
|
-
|
151
|
+
Perhaps this isn't exactly fair since `BioRuby` is a big module with
|
152
|
+
lots of features and error checking, whereas `parse_fasta` is meant to
|
153
|
+
be lightweight and easy to use for my own research. Oh well ;)
|
141
154
|
|
142
155
|
### FastaFile#each_record ###
|
143
156
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
157
|
+
You're probably wondering...How does it compare to BioRuby in some
|
158
|
+
super accurate benchmarking tests? Lucky for you, I calculated
|
159
|
+
sequence length for each fasta record with both the `each_record`
|
160
|
+
method from this gem and using the `FastaFormat` class from
|
161
|
+
BioRuby. You can see the test script in `benchmark.rb`.
|
148
162
|
|
149
163
|
The test file contained 2,009,897 illumina reads and the file size
|
150
164
|
was 1.1 gigabytes. Here are the results from Ruby's `Benchmark` class:
|
@@ -153,8 +167,7 @@ was 1.1 gigabytes. Here are the results from Ruby's `Benchmark` class:
|
|
153
167
|
parse_fasta 64.530000 1.740000 66.270000 ( 67.081502)
|
154
168
|
bioruby 116.250000 2.260000 118.510000 (120.223710)
|
155
169
|
|
156
|
-
|
157
|
-
twice as fasta as BioRuby doesn't hurt either!
|
170
|
+
Hot dog! It's faster :)
|
158
171
|
|
159
172
|
### FastqFile#each_record ###
|
160
173
|
|
@@ -167,14 +180,11 @@ file containing 4,000,000 illumina reads.
|
|
167
180
|
|
168
181
|
### Sequence#gc ###
|
169
182
|
|
170
|
-
|
171
|
-
method and found this one to be the fastest.
|
172
|
-
|
173
|
-
The test is done on random strings mating `/[AaCcTtGgUu]/`. `this_gc`
|
183
|
+
The test is done on random strings matcing `/[AaCcTtGgUu]/`. `this_gc`
|
174
184
|
is `Sequence.new(str).gc`, and `bioruby_gc` is
|
175
185
|
`Bio::Sequence::NA.new(str).gc_content`.
|
176
186
|
|
177
|
-
To see how the methods
|
187
|
+
To see how the methods scales, the test 1 string was 2,000,000 bases,
|
178
188
|
test 2 was 4,000,000 and test 3 was 8,000,000 bases.
|
179
189
|
|
180
190
|
user system total real
|
@@ -189,7 +199,21 @@ test 2 was 4,000,000 and test 3 was 8,000,000 bases.
|
|
189
199
|
|
190
200
|
Nice!
|
191
201
|
|
202
|
+
Troll: "But Ryan, when will you find the GC of an 8,000,000 base
|
203
|
+
sequence?"
|
204
|
+
|
205
|
+
Me: "Step off, troll!"
|
206
|
+
|
207
|
+
## Test suite & docs ##
|
208
|
+
|
209
|
+
For a good time, you could clone this repo and run the test suite with
|
210
|
+
rspec! Or if you just don't trust that it works like it should. The
|
211
|
+
specs probably need a little clean up...so fork it and clean it up ;)
|
212
|
+
|
213
|
+
Same with the docs. Clone the repo and build them yourself with `yard`
|
214
|
+
if you are in need of some excitement.
|
215
|
+
|
192
216
|
## Notes ##
|
193
217
|
|
194
|
-
|
195
|
-
or
|
218
|
+
Only the `SeqFile` class actually checks to make sure that you passed
|
219
|
+
in a "proper" fastA or fastQ file, so watch out.
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# Copyright 2014, 2015 Ryan Moore
|
2
|
+
# Contact: moorer@udel.edu
|
3
|
+
#
|
4
|
+
# This file is part of parse_fasta.
|
5
|
+
#
|
6
|
+
# parse_fasta is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# parse_fasta is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License
|
17
|
+
# along with parse_fasta. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# Provides a class that will parse either fastA or fastQ files,
|
20
|
+
# depending on what the user provides. Handles, gzipped files.
|
21
|
+
class SeqFile < File
|
22
|
+
|
23
|
+
# Analagous to IO#each_line, #each_record will go through a fastA or
|
24
|
+
# fastQ file record by record.
|
25
|
+
#
|
26
|
+
# This #each_record is used in a similar fashion as
|
27
|
+
# FastaFile#each_record except that it yields the header and the
|
28
|
+
# sequence regardless of whether the input is a fastA file or a
|
29
|
+
# fastQ file.
|
30
|
+
#
|
31
|
+
# If the input is a fastQ file, this method will yield the header
|
32
|
+
# and the sequence and ignore the description and the quality
|
33
|
+
# string. This SeqFile class should only be used if your program
|
34
|
+
# needs to work on either fastA or fastQ files, thus it ignores the
|
35
|
+
# quality string and description and treats either file type as if
|
36
|
+
# it were a fastA file.
|
37
|
+
#
|
38
|
+
# If you need the description or quality, you should use
|
39
|
+
# FastqFile#each_record instead.
|
40
|
+
#
|
41
|
+
# @example Parse a gzipped fastA file
|
42
|
+
# SeqFile.open('reads.fa.gz').each_record do |head, seq|
|
43
|
+
# puts [head, seq.length].join "\t"
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# @example Parse an uncompressed fastQ file
|
47
|
+
# SeqFile.open('reads.fq.gz').each_record do |head, seq|
|
48
|
+
# puts [head, seq.length].join "\t"
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# @yieldparam header [String] The header of the record without the
|
52
|
+
# leading '>' or '@'
|
53
|
+
#
|
54
|
+
# @yieldparam sequence [Sequence] The sequence of the record.
|
55
|
+
def each_record
|
56
|
+
first_char = get_first_char(self)
|
57
|
+
|
58
|
+
if first_char == '>'
|
59
|
+
FastaFile.open(self).each_record do |header, sequence|
|
60
|
+
yield(header, sequence)
|
61
|
+
end
|
62
|
+
elsif first_char == '@'
|
63
|
+
FastqFile.open(self).each_record do |head, seq, desc, qual|
|
64
|
+
yield(head, seq)
|
65
|
+
end
|
66
|
+
else
|
67
|
+
raise ArgumentError, "Input does not look like FASTA or FASTQ"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def get_first_char(f)
|
74
|
+
begin
|
75
|
+
handle = Zlib::GzipReader.open(f)
|
76
|
+
rescue Zlib::GzipFile::Error => e
|
77
|
+
handle = f
|
78
|
+
end
|
79
|
+
|
80
|
+
handle.each_line.peek[0]
|
81
|
+
end
|
82
|
+
end
|
data/lib/parse_fasta/version.rb
CHANGED
data/lib/parse_fasta.rb
CHANGED
data/parse_fasta.gemspec
CHANGED
@@ -0,0 +1,150 @@
|
|
1
|
+
# Copyright 2014, 2015 Ryan Moore
|
2
|
+
# Contact: moorer@udel.edu
|
3
|
+
#
|
4
|
+
# This file is part of parse_fasta.
|
5
|
+
#
|
6
|
+
# parse_fasta is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# parse_fasta is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License
|
17
|
+
# along with parse_fasta. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
|
21
|
+
describe SeqFile do
|
22
|
+
describe "#each_record" do
|
23
|
+
let(:records) {
|
24
|
+
[["seq1 is fun", "AACTGGNNN"],
|
25
|
+
["seq2", "AATCCTGNNN"],
|
26
|
+
["seq3", "yyyyyyyyyyyyyyyNNN"]]
|
27
|
+
}
|
28
|
+
|
29
|
+
context "when input is a fasta file" do
|
30
|
+
let(:f_handle) { SeqFile.open(@fname).each_record { |s| } }
|
31
|
+
|
32
|
+
shared_examples_for "parsing a fasta file" do
|
33
|
+
it "yields proper header and sequence for each record" do
|
34
|
+
expect { |b|
|
35
|
+
SeqFile.open(@fname).each_record(&b)
|
36
|
+
}.to yield_successive_args(*records)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "yields the sequence as a Sequence class" do
|
40
|
+
SeqFile.open(@fname).each_record do |_, seq|
|
41
|
+
expect(seq).to be_an_instance_of Sequence
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "with a gzipped file" do
|
47
|
+
before(:each) do
|
48
|
+
@fname = "#{File.dirname(__FILE__)}/../../test_files/test.fa.gz"
|
49
|
+
end
|
50
|
+
|
51
|
+
it_behaves_like "parsing a fasta file"
|
52
|
+
|
53
|
+
it "closes the GzipReader" do
|
54
|
+
expect(f_handle).to be_closed
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns GzipReader object" do
|
58
|
+
expect(f_handle).to be_an_instance_of Zlib::GzipReader
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "with a non-gzipped file" do
|
63
|
+
before(:each) do
|
64
|
+
@fname = "#{File.dirname(__FILE__)}/../../test_files/test.fa"
|
65
|
+
end
|
66
|
+
|
67
|
+
it_behaves_like "parsing a fasta file"
|
68
|
+
|
69
|
+
it "doesn't close the File (approx regular file behavior)" do
|
70
|
+
expect(f_handle).not_to be_closed
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns FastaFile object" do
|
74
|
+
expect(f_handle).to be_a FastaFile
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "when input is a fastq file" do
|
81
|
+
let(:records) {
|
82
|
+
[["seq1", "AACCTTGG"],
|
83
|
+
["seq2 apples", "ACTG"]] }
|
84
|
+
let(:f_handle) { SeqFile.open(@fname).each_record { |s| } }
|
85
|
+
|
86
|
+
shared_examples_for "parsing a fastq file" do
|
87
|
+
it "yields only header & sequence" do
|
88
|
+
expect { |b|
|
89
|
+
SeqFile.open(@fname).each_record(&b)
|
90
|
+
}.to yield_successive_args(records[0], records[1])
|
91
|
+
end
|
92
|
+
|
93
|
+
it "yields the sequence as a Sequence class" do
|
94
|
+
SeqFile.open(@fname).each_record do |_, seq, _, _|
|
95
|
+
expect(seq).to be_an_instance_of Sequence
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "with a 4 line per record fastq file" do
|
101
|
+
describe "#each_record" do
|
102
|
+
context "with a gzipped file" do
|
103
|
+
before(:each) do
|
104
|
+
@fname =
|
105
|
+
"#{File.dirname(__FILE__)}/../../test_files/test.fq.gz"
|
106
|
+
end
|
107
|
+
|
108
|
+
it_behaves_like "parsing a fastq file"
|
109
|
+
|
110
|
+
it "closes the GzipReader" do
|
111
|
+
expect(f_handle).to be_closed
|
112
|
+
end
|
113
|
+
|
114
|
+
it "returns GzipReader object" do
|
115
|
+
expect(f_handle).to be_an_instance_of Zlib::GzipReader
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "with a non-gzipped file" do
|
120
|
+
before(:each) do
|
121
|
+
@fname =
|
122
|
+
"#{File.dirname(__FILE__)}/../../test_files/test.fq"
|
123
|
+
end
|
124
|
+
|
125
|
+
it_behaves_like "parsing a fastq file"
|
126
|
+
|
127
|
+
it "doesn't close the SeqFile (approx reg file behav)" do
|
128
|
+
expect(f_handle).not_to be_closed
|
129
|
+
end
|
130
|
+
|
131
|
+
it "returns FastqFile object" do
|
132
|
+
expect(f_handle).to be_a FastqFile
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "when input is bogus" do
|
140
|
+
it "raises an ArgumentError with message" do
|
141
|
+
fname = "#{File.dirname(__FILE__)}/../../test_files/bogus.txt"
|
142
|
+
err_msg = "Input does not look like FASTA or FASTQ"
|
143
|
+
|
144
|
+
expect { SeqFile.open(fname).each_record do |h, s|
|
145
|
+
puts [h, s].join ' '
|
146
|
+
end
|
147
|
+
}.to raise_error(ArgumentError, err_msg)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/test_files/test.fa
CHANGED
metadata
CHANGED
@@ -1,85 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse_fasta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.14'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.14'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bio
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.8'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.8'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: coveralls
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.7'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.7'
|
83
97
|
description: Provides nice, programmatic access to fasta and fastq files, as well
|
84
98
|
as providing Sequence and Quality helper classes. No need for BioRuby ;)
|
85
99
|
email:
|
@@ -88,7 +102,9 @@ executables: []
|
|
88
102
|
extensions: []
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
91
|
-
- .
|
105
|
+
- ".coveralls.yml"
|
106
|
+
- ".gitignore"
|
107
|
+
- ".travis.yml"
|
92
108
|
- COPYING
|
93
109
|
- Gemfile
|
94
110
|
- README.md
|
@@ -97,22 +113,25 @@ files:
|
|
97
113
|
- lib/parse_fasta/fasta_file.rb
|
98
114
|
- lib/parse_fasta/fastq_file.rb
|
99
115
|
- lib/parse_fasta/quality.rb
|
116
|
+
- lib/parse_fasta/seq_file.rb
|
100
117
|
- lib/parse_fasta/sequence.rb
|
101
118
|
- lib/parse_fasta/version.rb
|
102
119
|
- parse_fasta.gemspec
|
103
120
|
- spec/lib/fasta_file_spec.rb
|
104
121
|
- spec/lib/fastq_file_spec.rb
|
105
122
|
- spec/lib/quality_spec.rb
|
123
|
+
- spec/lib/seq_file_spec.rb
|
106
124
|
- spec/lib/sequence_spec.rb
|
107
125
|
- spec/spec_helper.rb
|
108
126
|
- test_files/benchmark.rb
|
127
|
+
- test_files/bogus.txt
|
109
128
|
- test_files/test.fa
|
110
129
|
- test_files/test.fa.gz
|
111
130
|
- test_files/test.fq
|
112
131
|
- test_files/test.fq.gz
|
113
132
|
homepage: https://github.com/mooreryan/parse_fasta
|
114
133
|
licenses:
|
115
|
-
-
|
134
|
+
- 'GPLv3: http://www.gnu.org/licenses/gpl.txt'
|
116
135
|
metadata: {}
|
117
136
|
post_install_message:
|
118
137
|
rdoc_options: []
|
@@ -120,17 +139,17 @@ require_paths:
|
|
120
139
|
- lib
|
121
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
122
141
|
requirements:
|
123
|
-
- -
|
142
|
+
- - ">="
|
124
143
|
- !ruby/object:Gem::Version
|
125
144
|
version: 1.9.3
|
126
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
146
|
requirements:
|
128
|
-
- -
|
147
|
+
- - ">="
|
129
148
|
- !ruby/object:Gem::Version
|
130
149
|
version: '0'
|
131
150
|
requirements: []
|
132
151
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.4.6
|
134
153
|
signing_key:
|
135
154
|
specification_version: 4
|
136
155
|
summary: Easy-peasy parsing of fasta & fastq files!
|
@@ -138,6 +157,7 @@ test_files:
|
|
138
157
|
- spec/lib/fasta_file_spec.rb
|
139
158
|
- spec/lib/fastq_file_spec.rb
|
140
159
|
- spec/lib/quality_spec.rb
|
160
|
+
- spec/lib/seq_file_spec.rb
|
141
161
|
- spec/lib/sequence_spec.rb
|
142
162
|
- spec/spec_helper.rb
|
143
163
|
has_rdoc:
|