parse_fasta 2.0.0 → 2.0.1
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/.travis.yml +2 -3
- data/lib/parse_fasta/seq_file.rb +34 -33
- data/lib/parse_fasta/version.rb +1 -1
- data/parse_fasta.gemspec +1 -1
- data/spec/test_files/test.rb +71 -0
- metadata +27 -25
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTgxOWFjYTEyMWI0MjNlNjBhZjJkNGZkMjFkZGFkZDNjNGJkNTk2NA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9f779807eb98f39dfbbd67376e04a890be3a7bf9
|
4
|
+
data.tar.gz: 5f7201962d03a7c3b2553d576d4721822dbc24a2
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTI0NDk5NDY0NTc4YThhZTg4ODczYjAxZTA3MGNmZDdmMWYzNmMwMGFlMzhl
|
11
|
-
ODFhM2Q1NzIxZDVlYjE0MjEwYTg0OTlkMzlmZDQyYjIzYjhjNGQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTBlN2NmNmJkOGUwM2Q1MDZhZTkzM2NmMzNmOTY1YWUzMzVjNjdkN2NiMDM2
|
14
|
-
NTJlYmU5Yzk1ODExNzczMGNkNTFkNzEwOWZkZGIwMjRiMjNiNGY5ZGM0MDJk
|
15
|
-
ZmY3YWI0OGQwOTNiMzY2ODAzMzkxZjFkZmNiNTExMGE3NWFlZjk=
|
6
|
+
metadata.gz: 9ddd0ae41bde830edba8af62be8ee88700e6c309b2f61ef0887a67579551d88308e0e53bbcb57c5d18ddd0cbc4b79f60a47986df14f2578415fa983ddbeb317f
|
7
|
+
data.tar.gz: ad89bb85f6cfcd8ed8af0d7c518d1b773cff2c9edcc5f51b241a149a55c217d070cbedca0946edb506b53ce430117d41ef7058a130e7e7e013dcc64c4d41b110
|
data/.travis.yml
CHANGED
data/lib/parse_fasta/seq_file.rb
CHANGED
@@ -18,39 +18,6 @@
|
|
18
18
|
|
19
19
|
require "zlib"
|
20
20
|
|
21
|
-
def get_first_char fname
|
22
|
-
if File.exists? fname
|
23
|
-
begin
|
24
|
-
f = Zlib::GzipReader.open fname
|
25
|
-
rescue Zlib::GzipFile::Error
|
26
|
-
f = File.open fname
|
27
|
-
ensure
|
28
|
-
# f.close
|
29
|
-
end
|
30
|
-
|
31
|
-
first_char = f.each_char.peek[0]
|
32
|
-
f.close
|
33
|
-
return first_char
|
34
|
-
else
|
35
|
-
raise ParseFasta::Error::FileNotFoundError,
|
36
|
-
"No such file or directory -- #{fname}"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def check_file fname
|
41
|
-
first_char = get_first_char fname
|
42
|
-
|
43
|
-
if first_char == ">"
|
44
|
-
:fasta
|
45
|
-
elsif first_char == "@"
|
46
|
-
:fastq
|
47
|
-
else
|
48
|
-
raise ParseFasta::Error::DataFormatError,
|
49
|
-
"The file does not look like fastA or fastQ " +
|
50
|
-
"-- #{fname}"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
21
|
module ParseFasta
|
55
22
|
class SeqFile
|
56
23
|
# @!attribute type
|
@@ -250,5 +217,39 @@ module ParseFasta
|
|
250
217
|
|
251
218
|
line_reader
|
252
219
|
end
|
220
|
+
|
221
|
+
def get_first_char fname
|
222
|
+
if File.exists? fname
|
223
|
+
begin
|
224
|
+
f = Zlib::GzipReader.open fname
|
225
|
+
rescue Zlib::GzipFile::Error
|
226
|
+
f = File.open fname
|
227
|
+
end
|
228
|
+
|
229
|
+
begin
|
230
|
+
first_char = f.each_char.peek[0]
|
231
|
+
return first_char
|
232
|
+
ensure
|
233
|
+
f.close
|
234
|
+
end
|
235
|
+
else
|
236
|
+
raise ParseFasta::Error::FileNotFoundError,
|
237
|
+
"No such file or directory -- #{fname}"
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def check_file fname
|
242
|
+
first_char = get_first_char fname
|
243
|
+
|
244
|
+
if first_char == ">"
|
245
|
+
:fasta
|
246
|
+
elsif first_char == "@"
|
247
|
+
:fastq
|
248
|
+
else
|
249
|
+
raise ParseFasta::Error::DataFormatError,
|
250
|
+
"The file does not look like fastA or fastQ " +
|
251
|
+
"-- #{fname}"
|
252
|
+
end
|
253
|
+
end
|
253
254
|
end
|
254
255
|
end
|
data/lib/parse_fasta/version.rb
CHANGED
data/parse_fasta.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.required_ruby_version = ">=
|
24
|
+
spec.required_ruby_version = ">= 2"
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.6"
|
27
27
|
spec.add_development_dependency "rake", "~> 10.3"
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require "parse_fasta"
|
2
|
+
|
3
|
+
fasta_records =
|
4
|
+
[ParseFasta::Record.new(header: "empty seq at beginning",
|
5
|
+
seq: ""),
|
6
|
+
ParseFasta::Record.new(header: "seq1 is fun",
|
7
|
+
seq: "AACTGGNNN"),
|
8
|
+
ParseFasta::Record.new(header: "seq2",
|
9
|
+
seq: "AATCCTGNNN"),
|
10
|
+
ParseFasta::Record.new(header: "empty seq 1",
|
11
|
+
seq: ""),
|
12
|
+
ParseFasta::Record.new(header: "empty seq 2",
|
13
|
+
seq: ""),
|
14
|
+
ParseFasta::Record.new(header: "seq3",
|
15
|
+
seq: "yyyyyyyyyyyyyyyNNN"),
|
16
|
+
ParseFasta::Record.new(header: "seq 4 > has many '>' in header",
|
17
|
+
seq: "ACTGactg"),
|
18
|
+
ParseFasta::Record.new(header: "empty seq at end",
|
19
|
+
seq: "")]
|
20
|
+
|
21
|
+
fastq_records =
|
22
|
+
[ParseFasta::Record.new(header: "seq1",
|
23
|
+
seq: "AA CC TT GG",
|
24
|
+
desc: "",
|
25
|
+
qual: ")# 3g Tq N8"),
|
26
|
+
ParseFasta::Record.new(header: "seq2 @pples",
|
27
|
+
seq: "ACTG",
|
28
|
+
desc: "seq2 +pples",
|
29
|
+
qual: "*ujM")]
|
30
|
+
|
31
|
+
|
32
|
+
line_endings_fastq_records =
|
33
|
+
[ParseFasta::Record.new(header: "apple", seq: "ACTG", desc: "", qual: "IIII"),
|
34
|
+
ParseFasta::Record.new(header: "pie", seq: "AACC", desc: "", qual: "BBBB"),]
|
35
|
+
|
36
|
+
line_endings_fasta_records =
|
37
|
+
[ParseFasta::Record.new(header: "apple", seq: "ACTG"),
|
38
|
+
ParseFasta::Record.new(header: "pie", seq: "AACC"),]
|
39
|
+
|
40
|
+
def check fname, expected_records
|
41
|
+
STDERR.puts "\nReading #{fname}"
|
42
|
+
recs = []
|
43
|
+
ParseFasta::SeqFile.open(File.join File.dirname(__FILE__), fname).each_record do |rec|
|
44
|
+
p [rec.header, rec.seq, rec.desc, rec.qual]
|
45
|
+
recs << rec
|
46
|
+
end
|
47
|
+
STDERR.puts "Good? #{recs == expected_records}"
|
48
|
+
|
49
|
+
$results << (recs == expected_records)
|
50
|
+
end
|
51
|
+
|
52
|
+
$results = []
|
53
|
+
|
54
|
+
check "seqs.fa", fasta_records
|
55
|
+
check "seqs.fa.gz", fasta_records
|
56
|
+
check "seqs.fq", fastq_records
|
57
|
+
check "seqs.fq.gz", fastq_records
|
58
|
+
|
59
|
+
check "cr.fa", line_endings_fasta_records
|
60
|
+
check "cr.fa.gz", line_endings_fasta_records
|
61
|
+
check "cr_nl.fa", line_endings_fasta_records
|
62
|
+
check "cr_nl.fa.gz", line_endings_fasta_records
|
63
|
+
|
64
|
+
check "cr.fq", line_endings_fastq_records
|
65
|
+
check "cr.fq.gz", line_endings_fastq_records
|
66
|
+
check "cr_nl.fq", line_endings_fastq_records
|
67
|
+
check "cr_nl.fq.gz", line_endings_fastq_records
|
68
|
+
|
69
|
+
if $results.all? { |res| res }
|
70
|
+
STDERR.puts "\nAll Good!\n\n"
|
71
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse_fasta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Moore
|
@@ -14,98 +14,98 @@ dependencies:
|
|
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
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rdiscount
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: coveralls
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0.7'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0.7'
|
111
111
|
description: Provides nice, programmatic access to fasta and fastq files, as well
|
@@ -118,11 +118,11 @@ executables:
|
|
118
118
|
extensions: []
|
119
119
|
extra_rdoc_files: []
|
120
120
|
files:
|
121
|
-
- .coveralls.yml
|
122
|
-
- .gitignore
|
123
|
-
- .rspec
|
124
|
-
- .travis.yml
|
125
|
-
- .yardopts
|
121
|
+
- ".coveralls.yml"
|
122
|
+
- ".gitignore"
|
123
|
+
- ".rspec"
|
124
|
+
- ".travis.yml"
|
125
|
+
- ".yardopts"
|
126
126
|
- CHANGELOG.md
|
127
127
|
- COPYING
|
128
128
|
- Gemfile
|
@@ -156,9 +156,10 @@ files:
|
|
156
156
|
- spec/test_files/seqs.fa.gz
|
157
157
|
- spec/test_files/seqs.fq
|
158
158
|
- spec/test_files/seqs.fq.gz
|
159
|
+
- spec/test_files/test.rb
|
159
160
|
homepage: https://github.com/mooreryan/parse_fasta
|
160
161
|
licenses:
|
161
|
-
-
|
162
|
+
- 'GPLv3: http://www.gnu.org/licenses/gpl.txt'
|
162
163
|
metadata: {}
|
163
164
|
post_install_message:
|
164
165
|
rdoc_options: []
|
@@ -166,17 +167,17 @@ require_paths:
|
|
166
167
|
- lib
|
167
168
|
required_ruby_version: !ruby/object:Gem::Requirement
|
168
169
|
requirements:
|
169
|
-
- -
|
170
|
+
- - ">="
|
170
171
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
172
|
+
version: '2'
|
172
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
174
|
requirements:
|
174
|
-
- -
|
175
|
+
- - ">="
|
175
176
|
- !ruby/object:Gem::Version
|
176
177
|
version: '0'
|
177
178
|
requirements: []
|
178
179
|
rubyforge_project:
|
179
|
-
rubygems_version: 2.
|
180
|
+
rubygems_version: 2.5.1
|
180
181
|
signing_key:
|
181
182
|
specification_version: 4
|
182
183
|
summary: Easy-peasy parsing of fasta & fastq files!
|
@@ -201,4 +202,5 @@ test_files:
|
|
201
202
|
- spec/test_files/seqs.fa.gz
|
202
203
|
- spec/test_files/seqs.fq
|
203
204
|
- spec/test_files/seqs.fq.gz
|
205
|
+
- spec/test_files/test.rb
|
204
206
|
has_rdoc:
|