mgnu 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +0 -0
- data/README.md +31 -0
- data/Rakefile +33 -0
- data/lib/mgnu.rb +9 -0
- data/lib/mgnu/alignment.rb +143 -0
- data/lib/mgnu/common.rb +68 -0
- data/lib/mgnu/genbank.rb +117 -0
- data/lib/mgnu/genbank/feature.rb +84 -0
- data/lib/mgnu/genbank/location.rb +150 -0
- data/lib/mgnu/genbank/qualifier.rb +45 -0
- data/lib/mgnu/genbank/reference.rb +114 -0
- data/lib/mgnu/genbank/source.rb +39 -0
- data/lib/mgnu/loggable.rb +61 -0
- data/lib/mgnu/parser.rb +50 -0
- data/lib/mgnu/parser/blast.rb +87 -0
- data/lib/mgnu/parser/blast/format0.rb +290 -0
- data/lib/mgnu/parser/blast/format7.rb +121 -0
- data/lib/mgnu/parser/blast/format8.rb +120 -0
- data/lib/mgnu/parser/blast/hsp.rb +75 -0
- data/lib/mgnu/parser/blast/query.rb +45 -0
- data/lib/mgnu/parser/blast/sbjct.rb +62 -0
- data/lib/mgnu/parser/clustalw.rb +72 -0
- data/lib/mgnu/parser/fasta.rb +61 -0
- data/lib/mgnu/parser/fasta_header_index.rb +39 -0
- data/lib/mgnu/parser/fasta_index.rb +57 -0
- data/lib/mgnu/parser/fastq.rb +61 -0
- data/lib/mgnu/parser/genbank.rb +187 -0
- data/lib/mgnu/parser/gff.rb +56 -0
- data/lib/mgnu/parser/iprscan/hit.rb +76 -0
- data/lib/mgnu/parser/iprscan_file.rb +39 -0
- data/lib/mgnu/parser/kegg_ontology_index.rb +163 -0
- data/lib/mgnu/parser/pilercr.rb +102 -0
- data/lib/mgnu/parser/prodigal.rb +170 -0
- data/lib/mgnu/parser/sam.rb +115 -0
- data/lib/mgnu/parser/sam/alignment.rb +22 -0
- data/lib/mgnu/parser/sam/header.rb +23 -0
- data/lib/mgnu/parser/sam/pair.rb +18 -0
- data/lib/mgnu/sequence.rb +207 -0
- data/lib/mgnu/sequence/fasta.rb +79 -0
- data/lib/mgnu/sequence/fastq.rb +43 -0
- data/lib/mgnu/version.rb +16 -0
- data/mgnu.gemspec +39 -0
- data/spec/mgnu/parser/blast_format0_spec.rb +114 -0
- data/spec/mgnu/parser/blast_format7_spec.rb +24 -0
- data/spec/mgnu/parser/blast_format8_spec.rb +26 -0
- data/spec/mgnu/parser/blast_multihsp_spec.rb +100 -0
- data/spec/mgnu/parser/blast_oof_spec.rb +53 -0
- data/spec/mgnu/parser/clustalw_spec.rb +90 -0
- data/spec/mgnu/parser/fasta_header_index_tc_parser_spec.rb +25 -0
- data/spec/mgnu/parser/fasta_index_tc_parser_spec.rb +25 -0
- data/spec/mgnu/parser/fasta_parser_spec.rb +53 -0
- data/spec/mgnu/parser_spec.rb +22 -0
- data/spec/mgnu/sequence/fasta_spec.rb +60 -0
- data/spec/mgnu/sequence/fastq_spec.rb +31 -0
- data/spec/mgnu/sequence_spec.rb +81 -0
- data/spec/mgnu_spec.rb +7 -0
- data/spec/spec_helper.rb +53 -0
- metadata +376 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MgNu::Parser::Blast format0' do
|
4
|
+
before do
|
5
|
+
@report = MgNu::Parser::Blast.new('data/test.blast', 0)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'knows about attributes' do
|
9
|
+
expect(@report).to be_a(MgNu::Parser::Blast)
|
10
|
+
expect(@report).to respond_to(:parse)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'after calling parse' do
|
14
|
+
before do
|
15
|
+
@queries = @report.parse
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should have the correct number of queries' do
|
19
|
+
expect(@queries.length).to eq(3)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should contain the correct first query' do
|
23
|
+
expect(@queries[0].query_id).to eq('test')
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should have the correct number of sbjcts for query 1' do
|
27
|
+
expect(@queries[0].sbjcts.length).to eq(10)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should have the correct number of sbjcts for query 2' do
|
31
|
+
expect(@queries[1].sbjcts.length).to eq(10)
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'the third query' do
|
35
|
+
before do
|
36
|
+
@query = @queries[2]
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should have a correct database name' do
|
40
|
+
expect(@query.database).to eq('NCBI Protein Reference Sequences')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should respond to sbjcts' do
|
44
|
+
expect(@query).to respond_to(:sbjcts)
|
45
|
+
expect(@query.sbjcts).to be_a(Array)
|
46
|
+
expect(@query.sbjcts.length).to eq(10)
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'the first sbjct of the third query' do
|
50
|
+
before do
|
51
|
+
@sbjct = @query.sbjcts[0]
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should have number 1' do
|
55
|
+
expect(@sbjct.number).to eq(1)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should have the correct sbjct name' do
|
59
|
+
expect(@sbjct.sbjct_id).to eq('ref|ZP_02544218.1|')
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should have the correct length' do
|
63
|
+
expect(@sbjct.length).to eq(121)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should have a non-empty array of Hsps' do
|
67
|
+
expect(@sbjct.hsps.length).to be > 0
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should respond to best_hsp and return an Hsp object' do
|
71
|
+
expect(@query.sbjcts[0]).to respond_to(:best_hsp)
|
72
|
+
expect(@sbjct.best_hsp).to be_a(MgNu::Parser::Blast::Hsp)
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'the first hsp of the first sbjct of the third query' do
|
76
|
+
before do
|
77
|
+
@hsp = @sbjct.hsps[0]
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should have a known query sequence' do
|
81
|
+
str = 'MKKIL-ATIXSAALYGLP----AXVMAQGITDDLSNLGLNXFGNETNLGTNIALIGTIARIINILLGFLGVLAVILVLWGGFKWMTAAGDEAKIGEAKKLMGAGVIGLVIILAAFAIASFVVNQL'
|
82
|
+
expect(@hsp.query_sequence).to eq(str)
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should have a known midline' do
|
86
|
+
str = 'MKK L A + S + P A V A ++ S + GN T+L + I I+NILL G +AVI+++ GG +++ ++GD ++ AK + VIGL++++ A+AI +FVV +'
|
87
|
+
expect(@hsp.midline).to eq(str)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should have a known sbjct sequence' do
|
91
|
+
str = 'MKKFLIAALVSLGIVVTPLAMDAPVFANAKSEVTSGVSSVNDGNSTDLPS------FITNIVNILLFLAGAVAVIVIIIGGIRYVMSSGDAGQVQSAKNTILYAVIGLIVVIMAYAIVNFVVTNV'
|
92
|
+
expect(@hsp.sbjct_sequence).to eq(str)
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should have the correct bit score and raw score' do
|
96
|
+
expect(@hsp.bit_score).to eq(62.0)
|
97
|
+
expect(@hsp.score).to eq(149)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should have a correct evalue' do
|
101
|
+
expect(@hsp.evalue).to eq(1e-10)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should have a non-nil query|sbjct_from and _to values' do
|
105
|
+
expect(@hsp.query_from).not_to be_nil
|
106
|
+
expect(@hsp.query_to).not_to be_nil
|
107
|
+
expect(@hsp.sbjct_from).not_to be_nil
|
108
|
+
expect(@hsp.sbjct_to).not_to be_nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MgNu::Parser::Blast format7' do
|
4
|
+
before do
|
5
|
+
@report = MgNu::Parser::Blast.new('data/test.blast.xml')
|
6
|
+
@queries = @report.parse
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should correctly parse' do
|
10
|
+
expect(@queries.length).to eq(8)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should report the correct information for queries' do
|
14
|
+
query_10 = @queries.select{|x| x.number == 10}[0]
|
15
|
+
expect(query_10).to be_a(MgNu::Parser::Blast::Query)
|
16
|
+
expect(query_10.number).to eq(10)
|
17
|
+
expect(query_10.sbjcts.length).to eq(7)
|
18
|
+
|
19
|
+
sbjct_6 = query_10.sbjcts.select{|x| x.number == 6}[0]
|
20
|
+
expect(sbjct_6.sbjct_id).to eq('gi|31376410|gb|AC096051.7|')
|
21
|
+
expect(sbjct_6.hsps.length).to eq(1)
|
22
|
+
expect(sbjct_6.hsps[0].evalue).to eq(2.97608)
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MgNu::Parser::Blast format8' do
|
4
|
+
before do
|
5
|
+
@report = MgNu::Parser::Blast.new('./data/test.blast.m8', 8)
|
6
|
+
@queries = @report.parse
|
7
|
+
expect(@report).to be_a(MgNu::Parser::Blast)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should correctly parse' do
|
11
|
+
expect(@queries.length).to eq(2)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should report the correct information for queries' do
|
15
|
+
expect(@queries[0].sbjcts.length).to eq(3)
|
16
|
+
expect(@queries[1].sbjcts.length).to eq(3)
|
17
|
+
|
18
|
+
expect(@queries[0].sbjcts[0].hsps.length).to eq(3)
|
19
|
+
expect(@queries[0].sbjcts[1].hsps.length).to eq(3)
|
20
|
+
expect(@queries[0].sbjcts[2].hsps.length).to eq(3)
|
21
|
+
|
22
|
+
expect(@queries[1].sbjcts[0].hsps.length).to eq(8)
|
23
|
+
expect(@queries[1].sbjcts[1].hsps.length).to eq(1)
|
24
|
+
expect(@queries[1].sbjcts[2].hsps.length).to eq(1)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MgNu::Parser::Blast parsing a multihsp report' do
|
4
|
+
before do
|
5
|
+
@report = MgNu::Parser::Blast.new('data/multihsp.blast', 0)
|
6
|
+
@queries = @report.parse
|
7
|
+
@query = @queries[0]
|
8
|
+
@sbjct = @query.sbjcts[0]
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should have one query' do
|
12
|
+
expect(@queries.length).to eq(1)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should have 1 sbjcts for query 1' do
|
16
|
+
expect(@queries[0].sbjcts.length).to eq(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should have the correct sbjct_id for query 1' do
|
20
|
+
expect(@sbjct.sbjct_id).to eq('Contig17100_1_5')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should have the correct sbjct length' do
|
24
|
+
expect(@sbjct.length).to eq(2190)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should have a non-empty array of Hsps' do
|
28
|
+
expect(@sbjct.hsps.length).to be > 0
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'Query 1, Sbjct 1, Hsp 1' do
|
32
|
+
before do
|
33
|
+
@hsp = @sbjct.hsps[0]
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should have a known query sequence' do
|
37
|
+
str = 'gatcgacggcaagct'
|
38
|
+
expect(@hsp.query_sequence).to eq(str)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should have a known midline' do
|
42
|
+
str = '|||||||||||||||'
|
43
|
+
expect(@hsp.midline).to eq(str)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should have a known sbjct sequence' do
|
47
|
+
str = 'gatcgacggcaagct'
|
48
|
+
expect(@hsp.sbjct_sequence).to eq(str)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should have the correct bit score and raw score' do
|
52
|
+
expect(@hsp.bit_score).to eq(30.2)
|
53
|
+
expect(@hsp.score).to eq(15)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should have a correct evalue' do
|
57
|
+
expect(@hsp.evalue).to eq(0.12)
|
58
|
+
end
|
59
|
+
end # end - hsp 1 context
|
60
|
+
|
61
|
+
describe 'Query 1, Sbjct 1, Hsp 4' do
|
62
|
+
before do
|
63
|
+
@hsp = @sbjct.hsps[3]
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should have a known query sequence' do
|
67
|
+
str = 'gatcgataaagtg'
|
68
|
+
expect(@hsp.query_sequence).to eq(str)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should have a known midline' do
|
72
|
+
str = '|||||||||||||'
|
73
|
+
expect(@hsp.midline).to eq(str)
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should have a known sbjct sequence' do
|
77
|
+
str = 'gatcgataaagtg'
|
78
|
+
expect(@hsp.sbjct_sequence).to eq(str)
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should have the correct bit score and raw score' do
|
82
|
+
expect(@hsp.bit_score).to eq(26.3)
|
83
|
+
expect(@hsp.score).to eq(13)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should have a correct evalue' do
|
87
|
+
expect(@hsp.evalue).to eq(1.8)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should have the correct query start/stop positions' do
|
91
|
+
expect(@hsp.query_from).to eq(64175)
|
92
|
+
expect(@hsp.query_to).to eq(64187)
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should have the correct sbjct start/stop positions' do
|
96
|
+
expect(@hsp.sbjct_from).to eq(1566)
|
97
|
+
expect(@hsp.sbjct_to).to eq(1578)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'MgNu::Parser::Blast parsing a oof report' do
|
4
|
+
before do
|
5
|
+
@report = MgNu::Parser::Blast.new('data/test_blastx_oof.blast', 0)
|
6
|
+
@queries = @report.parse
|
7
|
+
@query = @queries[0]
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should have 1 query' do
|
11
|
+
expect(@queries.length).to eq(1)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should have 1 sbjcts for query 1' do
|
15
|
+
expect(@query.sbjcts.length).to eq(1)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'Query 1, Sbjct 1' do
|
19
|
+
before do
|
20
|
+
@sbjct = @query.sbjcts[0]
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should have the correct sbjct_id' do
|
24
|
+
expect(@sbjct.sbjct_id).to eq('spe:Spro_0261')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should have the correct length' do
|
28
|
+
expect(@sbjct.length).to eq(729)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should have a non-empty array of Hsps' do
|
32
|
+
expect(@sbjct.hsps.length).to be > 0
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'Query 1, Sbjct 1, Hsp 1' do
|
36
|
+
before do
|
37
|
+
@hsp = @sbjct.hsps[0]
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should contain one frame-shift characters in the query sequence' do
|
41
|
+
expect(@hsp.query_sequence.split(%r{\/}).length).to be(2)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should respond to query_frameshifts and return a hash with the correct key/value pair' do
|
45
|
+
expect(@hsp).to respond_to(:query_frameshifts)
|
46
|
+
expect(@hsp.query_frameshifts).to be_a(Hash)
|
47
|
+
expect(@hsp.query_frameshifts.keys.length).to eq(1)
|
48
|
+
expect(@hsp.query_frameshifts.keys[0]).to eq(576)
|
49
|
+
expect(@hsp.query_frameshifts.values[0]).to eq(1)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MgNu::Parser::ClustalW do
|
4
|
+
before do
|
5
|
+
@clw = MgNu::Parser::ClustalW.new('data/clustalw_test.aln')
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should be a correct object' do
|
9
|
+
expect(@clw).to be_a(MgNu::Parser::ClustalW)
|
10
|
+
expect(@clw).to respond_to(:file)
|
11
|
+
expect(@clw).to respond_to(:buffer)
|
12
|
+
expect(@clw).to respond_to(:alignment)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should be parsed after creation' do
|
16
|
+
expect(@clw.buffer.length).to be > 0
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'return a MgNu::Alignment' do
|
20
|
+
expect(@clw.alignment).to be_a(MgNu::Alignment)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'MgNu::Alignment' do
|
24
|
+
before do
|
25
|
+
@a = @clw.alignment
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should act like an array' do
|
29
|
+
count = 0
|
30
|
+
@a.each do |s|
|
31
|
+
count += 1
|
32
|
+
expect(s).to be_a(String)
|
33
|
+
end
|
34
|
+
expect(count).to eq(7)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'can iterate by column' do
|
38
|
+
count = 0
|
39
|
+
@a.each_position do
|
40
|
+
count += 1
|
41
|
+
end
|
42
|
+
expect(count).to eq(@a.length)
|
43
|
+
expect(@a.each_position).to be_a(Array)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'can iterate of a range of columns' do
|
47
|
+
count = 0
|
48
|
+
@a.each_position(10..20) do
|
49
|
+
count += 1
|
50
|
+
end
|
51
|
+
r = []
|
52
|
+
(10..20).each { |x| r << x }
|
53
|
+
expect(count).to eq(r.length)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'can fetch a single position in in the alignment' do
|
57
|
+
m = nil
|
58
|
+
@a.each_position(3) do |pos|
|
59
|
+
m = pos
|
60
|
+
end
|
61
|
+
expect(m).to be_a(Array)
|
62
|
+
expect(m[0]).to eq('K')
|
63
|
+
expect(m[1]).to eq('N')
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should behave like an enumerable' do
|
67
|
+
expect(@a[10..20]).to be_a(Array)
|
68
|
+
m = @a[3]
|
69
|
+
expect(m).to be_a(Array)
|
70
|
+
expect(m[0][0]).to eq('K')
|
71
|
+
expect(m[0][1]).to eq('N')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'reports the correct match length' do
|
75
|
+
expect(@a.match.length).to eq(@a.length)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'reports correct match data using a range operator' do
|
79
|
+
expect(@a.match(107..112)).to eq('. : .*')
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'reports single position match values correctly' do
|
83
|
+
expect(@a.match(3)).to eq(' ')
|
84
|
+
expect(@a.match(107)).to eq('.')
|
85
|
+
expect(@a.match(108)).to eq(' ')
|
86
|
+
expect(@a.match(109)).to eq(':')
|
87
|
+
expect(@a.match(112)).to eq('*')
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MgNu::Parser::FastaHeaderIndex do
|
4
|
+
before do
|
5
|
+
@ff = MgNu::Parser::FastaHeaderIndex.new('data/test.fasta')
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should know about attributes' do
|
9
|
+
expect(@ff).to be_a(MgNu::Parser::FastaHeaderIndex)
|
10
|
+
expect(File.exist?('data/test.fasta.hdr.tch')).to be(true)
|
11
|
+
expect(@ff).to respond_to(:filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should allow hash-like access using Fasta header names' do
|
15
|
+
expect(@ff['name1']).to eq('description1')
|
16
|
+
end
|
17
|
+
|
18
|
+
after(:each) do
|
19
|
+
@ff.close
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
File.delete('data/test.fasta.hdr.tch') if File.exist?('data/test.fasta.hdr.tch')
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MgNu::Parser::FastaIndex do
|
4
|
+
before do
|
5
|
+
@ff = MgNu::Parser::FastaIndex.new('data/test.fasta')
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should know about attributes' do
|
9
|
+
expect(@ff).to be_a(MgNu::Parser::FastaIndex)
|
10
|
+
expect(File.exist?('data/test.fasta.tch')).to be(true)
|
11
|
+
expect(@ff).to respond_to(:filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should allow hash-like access using Fasta header names' do
|
15
|
+
expect(@ff['name1'].sequence).to eq('ACCG')
|
16
|
+
end
|
17
|
+
|
18
|
+
after(:each) do
|
19
|
+
@ff.close
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
File.delete('data/test.fasta.tch') if File.exist?('data/test.fasta.tch')
|
24
|
+
end
|
25
|
+
end
|