parse_fasta 1.5.2 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![Gem Version](https://badge.fury.io/rb/parse_fasta.svg)](http://badge.fury.io/rb/parse_fasta)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/parse_fasta.svg)](http://badge.fury.io/rb/parse_fasta) [![Build Status](https://travis-ci.org/mooreryan/parse_fasta.svg?branch=master)](https://travis-ci.org/mooreryan/parse_fasta) [![Coverage Status](https://coveralls.io/repos/mooreryan/parse_fasta/badge.svg)](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:
|