parse_fasta 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 689bddd57bc87d882ad8e8711acc84f0f1c33825
4
- data.tar.gz: 85d056f1581a23cc25c1a60224fd2c177266ab23
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTBkNDczMWQyMjI5YzNkMmEwY2M1MWY3ODRlMzI3ZjE2MThhM2FkMw==
5
+ data.tar.gz: !binary |-
6
+ YzNlOGU2Y2FiMDlhMjMxMDkxNTE2Y2NjMzdlOWE2MmUzOWRlMzdiMw==
5
7
  SHA512:
6
- metadata.gz: f68c1541107d1881177606398c63d09b7da2b04d7e0f30b3165ebd51cc7310caddbcba7788f72db71f21c778c5c1f022382a17e4b450cd172946534665f360a1
7
- data.tar.gz: eb8a9bf47345d0ee4b164ef053da5ddb4cb6785d0c0a91424b2e4549d9231d2f55ab79f9355e0df8f924d51be7be738a95f5887b6333aa99c4a5a945941f34f3
8
+ metadata.gz: !binary |-
9
+ NGE2NGMyOThlODMzODk0M2ZjMTI2YjI3ZWY4MWVmMTgwODQzNjdhNmI1MjM2
10
+ NGNkNmFmODEzMTgxMTA1ZWIyN2NlZTBmZjg4NDgzZjEyMjE4ZGY1MDM0ZjBj
11
+ OGE3NTFiNzE2YjEyNDJlN2VmYjdlYWY1YmUwZTI4OGE3MmE5N2I=
12
+ data.tar.gz: !binary |-
13
+ ZjYwMzM2OWQ2MjA2MjE1ZTg4YWUyODdkZWMyODY4NjVhNjk1NDEwNGIwZmMz
14
+ YTJlM2U5YjFkMWI2MTNiZjEzMGY1MWIyZjQ2ZDZhOWFhZDBkMTk5NzhkMzg3
15
+ OTlhZDYyN2QxMThhNmU0ZDRiY2U4ODllMmVkNzZlY2YzNjJlMDc=
data/README.md CHANGED
@@ -29,7 +29,7 @@ and over.
29
29
  ## Documentation ##
30
30
 
31
31
  Checkout
32
- [parse_fasta docs](http://rubydoc.info/gems/parse_fasta/1.4.0/frames)
32
+ [parse_fasta docs](http://rubydoc.info/gems/parse_fasta/1.5.0/frames)
33
33
  to see the full documentation.
34
34
 
35
35
  ## Usage ##
@@ -58,6 +58,10 @@ Now we can parse fastq files as well!
58
58
 
59
59
  ## Versions ##
60
60
 
61
+ ### 1.5.0 ###
62
+
63
+ Now accepts gzipped files. Huzzah!
64
+
61
65
  ### 1.4.0 ###
62
66
 
63
67
  Added methods:
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -16,23 +16,26 @@
16
16
  # You should have received a copy of the GNU General Public License
17
17
  # along with parse_fasta. If not, see <http://www.gnu.org/licenses/>.
18
18
 
19
- # Provides simple interface for parsing fasta format files.
19
+ require 'zlib'
20
+
21
+ # Provides simple interface for parsing fasta format files. Gzipped
22
+ # files are no problem.
20
23
  class FastaFile < File
21
24
 
22
- # Analagous to File#each_line, #each_record is used to go through a
23
- # fasta file record by record.
25
+ # Analagous to IO#each_line, #each_record is used to go through a
26
+ # fasta file record by record. It will accept gzipped files as well.
24
27
  #
25
28
  # @param separate_lines [Object] If truthy, separate lines of record
26
- # into an array, but if falsy, yield a Sequence object for the
27
- # sequence instead.
29
+ # into an array of Sequences, but if falsy, yield a Sequence
30
+ # object for the sequence instead.
28
31
  #
29
- # @example Parsing a fasta file (default behavior)
30
- # FastaFile.open('reads.fna', 'r').each_record do |header, sequence|
32
+ # @example Parsing a fasta file (default behavior, gzip files are fine)
33
+ # FastaFile.open('reads.fna.gz').each_record do |header, sequence|
31
34
  # puts [header, sequence.gc].join("\t")
32
35
  # end
33
36
  #
34
37
  # @example Parsing a fasta file (with truthy value param)
35
- # FastaFile.open('reads.fna','r').each_record(1) do |header, sequence|
38
+ # FastaFile.open('reads.fna').each_record(1) do |header, sequence|
36
39
  # # header => 'sequence_1'
37
40
  # # sequence => ['AACTG', 'AGTCGT', ... ]
38
41
  # end
@@ -43,22 +46,31 @@ class FastaFile < File
43
46
  # @yieldparam header [String] The header of the fasta record without
44
47
  # the leading '>'
45
48
  #
46
- # @yieldparam sequence [Sequence, Array<String>] The sequence of the
49
+ # @yieldparam sequence [Sequence, Array<Sequence>] The sequence of the
47
50
  # fasta record. If `separate_lines` is falsy (the default
48
51
  # behavior), will be Sequence, but if truthy will be
49
52
  # Array<String>.
50
53
  def each_record(separate_lines=nil)
54
+ begin
55
+ f = Zlib::GzipReader.open(self)
56
+ rescue Zlib::GzipFile::Error => e
57
+ f = self
58
+ end
59
+
51
60
  if separate_lines
52
- self.each("\n>") do |line|
61
+ f.each("\n>") do |line|
53
62
  header, sequence = parse_line_separately(line)
54
63
  yield(header.strip, sequence)
55
64
  end
56
65
  else
57
- self.each("\n>") do |line|
66
+ f.each("\n>") do |line|
58
67
  header, sequence = parse_line(line)
59
68
  yield(header.strip, Sequence.new(sequence))
60
69
  end
61
70
  end
71
+
72
+ f.close if f.instance_of?(Zlib::GzipReader)
73
+ return f
62
74
  end
63
75
 
64
76
  private
@@ -67,10 +79,11 @@ class FastaFile < File
67
79
  end
68
80
 
69
81
  def parse_line_separately(line)
70
- #line.chomp.split("\n", 2).map { |s| s.gsub(/>/, '') }
71
82
  header, sequence =
72
83
  line.chomp.split("\n", 2).map { |s| s.gsub(/>/, '') }
73
- sequences = sequence.split("\n").reject { |s| s.empty? }
84
+ sequences = sequence.split("\n")
85
+ .reject { |s| s.empty? }
86
+ .map { |s| Sequence.new(s) }
74
87
 
75
88
  [header, sequences]
76
89
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -16,15 +16,21 @@
16
16
  # You should have received a copy of the GNU General Public License
17
17
  # along with parse_fasta. If not, see <http://www.gnu.org/licenses/>.
18
18
 
19
+ require 'zlib'
20
+
19
21
  # Provides simple interface for parsing four-line-per-record fastq
20
- # format files.
22
+ # format files. Gzipped files are no problem.
21
23
  class FastqFile < File
22
24
 
23
- # Analagous to File#each_line, #each_record is used to go through a
24
- # fastq file record by record.
25
+ # Analagous to IO#each_line, #each_record is used to go through a
26
+ # fastq file record by record. It will accept gzipped files as well.
25
27
  #
26
28
  # @example Parsing a fastq file
27
- # FastqFile.open('reads.fq', 'r').each_record do |head, seq, desc, qual|
29
+ # FastqFile.open('reads.fq').each_record do |head, seq, desc, qual|
30
+ # # do some fun stuff here!
31
+ # end
32
+ # @example Use the same syntax for gzipped files!
33
+ # FastqFile.open('reads.fq.gz').each_record do |head, seq, desc, qual|
28
34
  # # do some fun stuff here!
29
35
  # end
30
36
  #
@@ -43,8 +49,14 @@ class FastqFile < File
43
49
  sequence = ''
44
50
  description = ''
45
51
  quality = ''
52
+
53
+ begin
54
+ f = Zlib::GzipReader.open(self)
55
+ rescue Zlib::GzipFile::Error => e
56
+ f = self
57
+ end
46
58
 
47
- self.each_line do |line|
59
+ f.each_line do |line|
48
60
  line.chomp!
49
61
 
50
62
  case count % 4
@@ -61,5 +73,8 @@ class FastqFile < File
61
73
 
62
74
  count += 1
63
75
  end
76
+
77
+ f.close if f.instance_of?(Zlib::GzipReader)
78
+ return f
64
79
  end
65
80
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -17,5 +17,5 @@
17
17
  # along with parse_fasta. If not, see <http://www.gnu.org/licenses/>.
18
18
 
19
19
  module ParseFasta
20
- VERSION = "1.4.0"
20
+ VERSION = "1.5.0"
21
21
  end
data/lib/parse_fasta.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
data/parse_fasta.gemspec CHANGED
@@ -8,8 +8,11 @@ Gem::Specification.new do |spec|
8
8
  spec.version = ParseFasta::VERSION
9
9
  spec.authors = ["Ryan Moore"]
10
10
  spec.email = ["moorer@udel.edu"]
11
- spec.summary = %q{Easy-peasy parsing of fasta files}
12
- spec.description = %q{So you want to parse a fasta or fastq file...}
11
+ spec.summary = %q{Easy-peasy parsing of fasta & fastq files!}
12
+ spec.description =
13
+ "Provides nice, programmatic access to fasta " +
14
+ "and fastq files, as well as providing Sequence and Quality " +
15
+ "helper classes. No need for BioRuby ;)"
13
16
  spec.homepage = "https://github.com/mooreryan/parse_fasta"
14
17
  spec.license = "GPLv3: http://www.gnu.org/licenses/gpl.txt"
15
18
 
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -20,41 +20,82 @@ require 'spec_helper'
20
20
 
21
21
  describe FastaFile do
22
22
  describe "#each_record" do
23
+ let(:records) {
24
+ [["seq1 is fun", "AACTGGNNN"],
25
+ ["seq2", "AATCCTGNNN"],
26
+ ["seq3", "yyyyyyyyyyyyyyyNNN"]]
27
+ }
23
28
 
24
- let(:fname) { "#{File.dirname(__FILE__)}/../../test_files/test.fa" }
29
+ let(:truthy_records) {
30
+ [["seq1 is fun", ["AACTGGNNN"]],
31
+ ["seq2", ["AAT", "CCTGNNN"]],
32
+ ["seq3", ["yyyyyyyyyy", "yyyyy", "NNN"]]]
33
+ }
34
+ let(:f_handle) { FastaFile.open(@fname).each_record { |s| } }
25
35
 
26
- context "with no arguments" do
27
- it "yields header and sequence for each record in a fasta file" do
28
- seqs = []
29
- FastaFile.open(fname, 'r').each_record do |header, sequence|
30
- seqs << [header, sequence]
36
+ shared_examples_for "any FastaFile" do
37
+ context "with no arguments" do
38
+ it "yields proper header and sequence for each record" do
39
+ expect { |b|
40
+ FastaFile.open(@fname).each_record(&b)
41
+ }.to yield_successive_args(*records)
31
42
  end
32
-
33
- expect(seqs).to eq([["seq1 is fun", "AACTGGNNN"],
34
- ["seq2", "AATCCTGNNN"],
35
- ["seq3", "yyyyyyyyyyyyyyyNNN"]])
36
43
 
44
+ it "yields the sequence as a Sequence class" do
45
+ FastaFile.open(@fname).each_record do |_, seq|
46
+ expect(seq).to be_an_instance_of Sequence
47
+ end
48
+ end
37
49
  end
38
50
 
39
- it "yields sequence of type Sequence as second parameter" do
40
- FastaFile.open(fname, 'r').each_record do |header, sequence|
41
- expect(sequence).to be_an_instance_of Sequence
42
- break
51
+ context "with a truthy argument" do
52
+ it "yields proper header and sequence for each record" do
53
+ expect { |b|
54
+ FastaFile.open(@fname).each_record(1, &b)
55
+ }.to yield_successive_args(*truthy_records)
43
56
  end
44
- end
45
- end
46
57
 
47
- context "with a truthy argument" do
48
- it "yields header and array of lines for each record" do
49
- seqs = []
50
- FastaFile.open(fname, 'r').each_record(1) do |header, sequence|
51
- seqs << [header, sequence]
58
+ it "yields the sequence as a Sequence class" do
59
+ FastaFile.open(@fname).each_record(1) do |_, seq|
60
+ all_Sequences = seq.map { |s| s.instance_of?(Sequence) }.all?
61
+ expect(all_Sequences).to be true
62
+ end
52
63
  end
64
+
65
+ end
66
+ end
67
+
68
+ context "with a gzipped file" do
69
+ before(:each) do
70
+ @fname = "#{File.dirname(__FILE__)}/../../test_files/test.fa.gz"
71
+ end
72
+
73
+ it_behaves_like "any FastaFile"
74
+
75
+ it "closes the GzipReader" do
76
+ expect(f_handle).to be_closed
77
+ end
78
+
79
+ it "returns GzipReader object" do
80
+ expect(f_handle).to be_an_instance_of Zlib::GzipReader
81
+ end
82
+ end
83
+
84
+ context "with a non-gzipped file" do
85
+ before(:each) do
86
+ @fname = "#{File.dirname(__FILE__)}/../../test_files/test.fa"
87
+ end
88
+
89
+ it_behaves_like "any FastaFile"
53
90
 
54
- expect(seqs).to eq([["seq1 is fun", ["AACTGGNNN"]],
55
- ["seq2", ["AAT", "CCTGNNN"]],
56
- ["seq3", ["yyyyyyyyyy", "yyyyy", "NNN"]]])
91
+ it "doesn't close the FastqFile (approx regular file behavior)" do
92
+ expect(f_handle).not_to be_closed
93
+ end
94
+
95
+ it "returns FastaFile object" do
96
+ expect(f_handle).to be_an_instance_of FastaFile
57
97
  end
58
98
  end
59
- end
99
+ end
60
100
  end
101
+
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -19,32 +19,67 @@
19
19
  require 'spec_helper'
20
20
 
21
21
  describe FastqFile do
22
- describe "#each_record" do
23
- let(:fname) { "#{File.dirname(__FILE__)}/../../test_files/test.fq" }
24
-
25
- context "with a 4 line per record fastq file" do
26
- before do
27
- @records = []
28
- FastqFile.open(fname, 'r').each_record do |head, seq, desc, qual|
29
- @records << [head, seq, desc, qual]
30
- end
22
+ let(:records) {
23
+ [["seq1", "AACCTTGG", "", ")#3gTqN8"],
24
+ ["seq2 apples", "ACTG", "seq2 apples", "*ujM"]] }
25
+ let(:f_handle) { FastqFile.open(@fname).each_record { |s| } }
26
+
27
+
28
+ shared_examples_for "any FastqFile" do
29
+ it "yields proper header, sequence, description, and quality" do
30
+ expect { |b|
31
+ FastqFile.open(@fname).each_record(&b)
32
+ }.to yield_successive_args(records[0], records[1])
33
+ end
34
+
35
+ it "yields the sequence as a Sequence class" do
36
+ FastqFile.open(@fname).each_record do |_, seq, _, _|
37
+ expect(seq).to be_an_instance_of Sequence
31
38
  end
39
+ end
32
40
 
33
- it "yields the header, sequence, desc, and qual" do
34
- expect(@records).to eq([["seq1", "AACCTTGG", "", ")#3gTqN8"],
35
- ["seq2 apples", "ACTG", "seq2 apples",
36
- "*ujM"]])
41
+ it "yields the quality as a Quality class" do
42
+ FastqFile.open(@fname).each_record do |_, _, _, qual|
43
+ expect(qual).to be_an_instance_of Quality
37
44
  end
38
-
39
- it "yields the sequence as a Sequence class" do
40
- the_sequence = @records[0][1]
41
- expect(the_sequence).to be_a(Sequence)
45
+ end
46
+
47
+ end
48
+
49
+ context "with a 4 line per record fastq file" do
50
+ describe "#each_record" do
51
+ context "with a gzipped file" do
52
+ before(:each) do
53
+ @fname = "#{File.dirname(__FILE__)}/../../test_files/test.fq.gz"
54
+ end
55
+
56
+ it_behaves_like "any FastqFile"
57
+
58
+ it "closes the GzipReader" do
59
+ expect(f_handle).to be_closed
60
+ end
61
+
62
+ it "returns GzipReader object" do
63
+ expect(f_handle).to be_an_instance_of Zlib::GzipReader
64
+ end
42
65
  end
43
66
 
44
- it "yields the quality string as a Quality class" do
45
- the_quality = @records[0][3]
46
- expect(the_quality).to be_a(Quality)
67
+ context "with a non-gzipped file" do
68
+ before(:each) do
69
+ @fname = "#{File.dirname(__FILE__)}/../../test_files/test.fq"
70
+ end
71
+
72
+ it_behaves_like "any FastqFile"
73
+
74
+ it "doesn't close the FastqFile (approx regular file behavior)" do
75
+ expect(f_handle).not_to be_closed
76
+ end
77
+
78
+ it "returns FastqFile object" do
79
+ expect(f_handle).to be_an_instance_of FastqFile
80
+ end
47
81
  end
48
82
  end
49
- end
83
+ end
50
84
  end
85
+
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2014 Ryan Moore
1
+ # Copyright 2014, 2015 Ryan Moore
2
2
  # Contact: moorer@udel.edu
3
3
  #
4
4
  # This file is part of parse_fasta.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Copyright 2014 Ryan Moore
3
+ # Copyright 2014, 2015 Ryan Moore
4
4
  # Contact: moorer@udel.edu
5
5
 
6
6
  # This file is part of parse_fasta.
Binary file
Binary file
metadata CHANGED
@@ -1,93 +1,94 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_fasta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.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: 2014-08-13 00:00:00.000000000 Z
11
+ date: 2015-01-08 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
- description: So you want to parse a fasta or fastq file...
83
+ description: Provides nice, programmatic access to fasta and fastq files, as well
84
+ as providing Sequence and Quality helper classes. No need for BioRuby ;)
84
85
  email:
85
86
  - moorer@udel.edu
86
87
  executables: []
87
88
  extensions: []
88
89
  extra_rdoc_files: []
89
90
  files:
90
- - ".gitignore"
91
+ - .gitignore
91
92
  - COPYING
92
93
  - Gemfile
93
94
  - README.md
@@ -106,10 +107,12 @@ files:
106
107
  - spec/spec_helper.rb
107
108
  - test_files/benchmark.rb
108
109
  - test_files/test.fa
110
+ - test_files/test.fa.gz
109
111
  - test_files/test.fq
112
+ - test_files/test.fq.gz
110
113
  homepage: https://github.com/mooreryan/parse_fasta
111
114
  licenses:
112
- - 'GPLv3: http://www.gnu.org/licenses/gpl.txt'
115
+ - ! 'GPLv3: http://www.gnu.org/licenses/gpl.txt'
113
116
  metadata: {}
114
117
  post_install_message:
115
118
  rdoc_options: []
@@ -117,12 +120,12 @@ require_paths:
117
120
  - lib
118
121
  required_ruby_version: !ruby/object:Gem::Requirement
119
122
  requirements:
120
- - - ">="
123
+ - - ! '>='
121
124
  - !ruby/object:Gem::Version
122
125
  version: 1.9.3
123
126
  required_rubygems_version: !ruby/object:Gem::Requirement
124
127
  requirements:
125
- - - ">="
128
+ - - ! '>='
126
129
  - !ruby/object:Gem::Version
127
130
  version: '0'
128
131
  requirements: []
@@ -130,7 +133,7 @@ rubyforge_project:
130
133
  rubygems_version: 2.2.2
131
134
  signing_key:
132
135
  specification_version: 4
133
- summary: Easy-peasy parsing of fasta files
136
+ summary: Easy-peasy parsing of fasta & fastq files!
134
137
  test_files:
135
138
  - spec/lib/fasta_file_spec.rb
136
139
  - spec/lib/fastq_file_spec.rb