bio 1.4.1 → 1.4.2

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.
Files changed (61) hide show
  1. data/ChangeLog +954 -0
  2. data/KNOWN_ISSUES.rdoc +40 -5
  3. data/README.rdoc +36 -35
  4. data/RELEASE_NOTES.rdoc +87 -59
  5. data/bioruby.gemspec +24 -2
  6. data/doc/RELEASE_NOTES-1.4.1.rdoc +104 -0
  7. data/doc/Tutorial.rd +162 -200
  8. data/doc/Tutorial.rd.html +149 -146
  9. data/lib/bio.rb +1 -0
  10. data/lib/bio/appl/blast.rb +1 -1
  11. data/lib/bio/appl/blast/ddbj.rb +26 -34
  12. data/lib/bio/appl/blast/genomenet.rb +21 -11
  13. data/lib/bio/db/embl/sptr.rb +193 -21
  14. data/lib/bio/db/fasta.rb +1 -1
  15. data/lib/bio/db/fastq.rb +14 -0
  16. data/lib/bio/db/fastq/format_fastq.rb +2 -2
  17. data/lib/bio/db/genbank/ddbj.rb +1 -2
  18. data/lib/bio/db/genbank/format_genbank.rb +1 -1
  19. data/lib/bio/db/medline.rb +1 -0
  20. data/lib/bio/db/newick.rb +3 -1
  21. data/lib/bio/db/pdb/pdb.rb +9 -9
  22. data/lib/bio/db/pdb/residue.rb +2 -2
  23. data/lib/bio/io/ddbjrest.rb +344 -0
  24. data/lib/bio/io/ncbirest.rb +121 -1
  25. data/lib/bio/location.rb +2 -2
  26. data/lib/bio/reference.rb +3 -4
  27. data/lib/bio/shell/plugin/entry.rb +7 -3
  28. data/lib/bio/shell/plugin/ncbirest.rb +5 -1
  29. data/lib/bio/util/restriction_enzyme.rb +3 -0
  30. data/lib/bio/util/restriction_enzyme/dense_int_array.rb +195 -0
  31. data/lib/bio/util/restriction_enzyme/range/sequence_range.rb +7 -7
  32. data/lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb +57 -18
  33. data/lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb +2 -2
  34. data/lib/bio/util/restriction_enzyme/sorted_num_array.rb +219 -0
  35. data/lib/bio/version.rb +1 -1
  36. data/sample/test_restriction_enzyme_long.rb +4403 -0
  37. data/test/data/fasta/EFTU_BACSU.fasta +8 -0
  38. data/test/data/genbank/CAA35997.gp +48 -0
  39. data/test/data/genbank/SCU49845.gb +167 -0
  40. data/test/data/litdb/1717226.litdb +13 -0
  41. data/test/data/pir/CRAB_ANAPL.pir +6 -0
  42. data/test/functional/bio/appl/blast/test_remote.rb +93 -0
  43. data/test/functional/bio/appl/test_blast.rb +61 -0
  44. data/test/functional/bio/io/test_ddbjrest.rb +47 -0
  45. data/test/functional/bio/test_command.rb +3 -3
  46. data/test/unit/bio/db/embl/test_sptr.rb +6 -6
  47. data/test/unit/bio/db/embl/test_uniprot_new_part.rb +208 -0
  48. data/test/unit/bio/db/genbank/test_common.rb +274 -0
  49. data/test/unit/bio/db/genbank/test_genbank.rb +401 -0
  50. data/test/unit/bio/db/genbank/test_genpept.rb +81 -0
  51. data/test/unit/bio/db/pdb/test_pdb.rb +3287 -11
  52. data/test/unit/bio/db/test_fasta.rb +34 -12
  53. data/test/unit/bio/db/test_fastq.rb +26 -0
  54. data/test/unit/bio/db/test_litdb.rb +95 -0
  55. data/test/unit/bio/db/test_medline.rb +1 -0
  56. data/test/unit/bio/db/test_nbrf.rb +82 -0
  57. data/test/unit/bio/db/test_newick.rb +22 -4
  58. data/test/unit/bio/test_reference.rb +35 -0
  59. data/test/unit/bio/util/restriction_enzyme/test_dense_int_array.rb +201 -0
  60. data/test/unit/bio/util/restriction_enzyme/test_sorted_num_array.rb +281 -0
  61. metadata +44 -38
@@ -96,9 +96,9 @@ module Bio
96
96
  @sort = "sort"
97
97
  @data = @data.join("\r\n") + "\r\n"
98
98
  else
99
- @sort = "/usr/bin/sort"
100
- unless FileTest.executable?(@sort) then
101
- raise "Unsupported environment: /usr/bin/sort not found"
99
+ @sort = `which sort`.chomp
100
+ if @sort.empty? or !FileTest.executable?(@sort) then
101
+ raise "Unsupported environment: sort not found in PATH"
102
102
  end
103
103
  @data = @data.join("\n") + "\n"
104
104
  end
@@ -864,12 +864,12 @@ CC URL="http://www.genetests.org/query?gene=GJB1".'
864
864
  'NAME=Connexin-deafness homepage; URL="http://www.crg.es/deafness/".',
865
865
  'NAME=GeneReviews; URL="http://www.genetests.org/query?gene=GJB1".'],
866
866
  sp.cc['WEB RESOURCE'])
867
- assert_equal([{'NAME' => "Inherited peripheral neuropathies mutation db",
868
- 'URL' => 'http://www.molgen.ua.ac.be/CMTMutations/', 'NOTE' => nil},
869
- {'NAME' => "Connexin-deafness homepage",
870
- 'URL' => 'http://www.crg.es/deafness/', 'NOTE' => nil},
871
- {'NAME' => "GeneReviews",
872
- 'URL' => 'http://www.genetests.org/query?gene=GJB1', 'NOTE' => nil}],
867
+ assert_equal([{'Name' => "Inherited peripheral neuropathies mutation db",
868
+ 'URL' => 'http://www.molgen.ua.ac.be/CMTMutations/', 'Note' => nil},
869
+ {'Name' => "Connexin-deafness homepage",
870
+ 'URL' => 'http://www.crg.es/deafness/', 'Note' => nil},
871
+ {'Name' => "GeneReviews",
872
+ 'URL' => 'http://www.genetests.org/query?gene=GJB1', 'Note' => nil}],
873
873
  sp.cc('WEB RESOURCE'))
874
874
 
875
875
  end
@@ -0,0 +1,208 @@
1
+ #
2
+ # test/unit/bio/db/embl/test_uniprot_new_part.rb - Unit test for Bio::UniProt for new file formats using part of psudo entries
3
+ #
4
+ # Copyright:: Copyright (C) 2011 Naohisa Goto <ng@bioruby.org>
5
+ # License:: The Ruby License
6
+ #
7
+
8
+ # loading helper routine for testing bioruby
9
+ require 'pathname'
10
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4,
11
+ 'bioruby_test_helper.rb')).cleanpath.to_s
12
+
13
+ # libraries needed for the tests
14
+ require 'test/unit'
15
+ require 'bio/db/embl/uniprot'
16
+
17
+ module Bio
18
+ class TestUniProt_ID_since_rel9_0 < Test::Unit::TestCase
19
+
20
+ def setup
21
+ text = "ID ABC_DEFGH Reviewed; 256 AA.\n"
22
+ @obj = Bio::UniProt.new(text)
23
+ end
24
+
25
+ def test_id_line
26
+ expected = {
27
+ "ENTRY_NAME" => "ABC_DEFGH",
28
+ "DATA_CLASS" => "Reviewed",
29
+ "SEQUENCE_LENGTH" => 256,
30
+ "MOLECULE_TYPE" => nil
31
+ }
32
+ assert_equal(expected, @obj.id_line)
33
+ end
34
+
35
+ def test_entry_id
36
+ assert_equal("ABC_DEFGH", @obj.entry_id)
37
+ end
38
+
39
+ def test_entry_name
40
+ assert_equal("ABC_DEFGH", @obj.entry_name)
41
+ end
42
+
43
+ def test_entry
44
+ assert_equal("ABC_DEFGH", @obj.entry)
45
+ end
46
+
47
+ def test_sequence_length
48
+ assert_equal(256, @obj.sequence_length)
49
+ end
50
+
51
+ def test_aalen
52
+ assert_equal(256, @obj.aalen)
53
+ end
54
+
55
+ def test_molecule
56
+ assert_nil(@obj.molecule)
57
+ end
58
+ end #class TestUniProt_ID_since_rel9_0
59
+
60
+ class TestUniProt_DE_since_rel14_0 < Test::Unit::TestCase
61
+
62
+ def setup
63
+ text = <<the_end_of_the_text
64
+ ID ABC_DEFGH Unreviewed; 256 AA.
65
+ DE RecName: Full=Aaa Bbbb Ccccc-Dddddd Eeeeeee factor;
66
+ DE Short=ABC-DEF;
67
+ DE Short=A-DF;
68
+ DE EC=9.8.0.1;
69
+ DE AltName: Full=Bbbb-Aaa Eeeeeee Ccccc;
70
+ DE Short=Bbbb-Aaa;
71
+ DE EC=9.8.0.-;
72
+ DE AltName: Allergen=Bet v 1-B;
73
+ DE AltName: Biotech=this is fake entry;
74
+ DE AltName: CD_antigen=CD42c;
75
+ DE AltName: INN=Pseudo;
76
+ DE SubName: Full=submitter named this ABC_DEFGH;
77
+ DE EC=9.8.2.1;
78
+ DE Includes:
79
+ DE RecName: Full=Included protein example;
80
+ DE Short=IPE;
81
+ DE EC=9.9.9.9;
82
+ DE AltName: Full=Inclided protein altname;
83
+ DE Short=IPA;
84
+ DE Contains:
85
+ DE RecName: Full=Contained protein alpha chain;
86
+ DE Short=CPAC;
87
+ DE Flags: Precursor; Fragment;
88
+ the_end_of_the_text
89
+
90
+ @obj = Bio::UniProt.new(text)
91
+ end
92
+
93
+ def test_private_parse_DE_line_rel14
94
+ expected =
95
+ [ [ "RecName",
96
+ ["Full", "Aaa Bbbb Ccccc-Dddddd Eeeeeee factor"],
97
+ ["Short", "ABC-DEF"],
98
+ ["Short", "A-DF"],
99
+ ["EC", "9.8.0.1"]
100
+ ],
101
+ [ "AltName",
102
+ ["Full", "Bbbb-Aaa Eeeeeee Ccccc"],
103
+ ["Short", "Bbbb-Aaa"],
104
+ ["EC", "9.8.0.-"]
105
+ ],
106
+ [ "AltName",
107
+ ["Allergen", "Bet v 1-B"]
108
+ ],
109
+ [ "AltName",
110
+ ["Biotech", "this is fake entry"]
111
+ ],
112
+ [ "AltName",
113
+ ["CD_antigen", "CD42c"]
114
+ ],
115
+ [ "AltName",
116
+ ["INN", "Pseudo"]
117
+ ],
118
+ [ "SubName",
119
+ ["Full", "submitter named this ABC_DEFGH"],
120
+ ["EC", "9.8.2.1"]
121
+ ],
122
+ [ "Includes" ],
123
+ [ "RecName",
124
+ ["Full", "Included protein example"],
125
+ ["Short", "IPE"],
126
+ ["EC", "9.9.9.9"]
127
+ ],
128
+ ["AltName",
129
+ ["Full", "Inclided protein altname"],
130
+ ["Short", "IPA"]
131
+ ],
132
+ [ "Contains" ],
133
+ [ "RecName",
134
+ ["Full", "Contained protein alpha chain"],
135
+ ["Short", "CPAC"]
136
+ ],
137
+ [ "Flags",
138
+ ["Precursor", "Fragment"]
139
+ ]
140
+ ]
141
+ @obj.protein_name
142
+ ary = @obj.instance_eval { @data['DE'] }
143
+ assert_equal(expected, ary)
144
+ end
145
+
146
+ def test_protein_name
147
+ assert_equal('Aaa Bbbb Ccccc-Dddddd Eeeeeee factor',
148
+ @obj.protein_name)
149
+ end
150
+
151
+ def test_synonyms
152
+ expected = [ 'ABC-DEF',
153
+ 'A-DF',
154
+ 'EC 9.8.0.1',
155
+ 'Bbbb-Aaa Eeeeeee Ccccc',
156
+ 'Bbbb-Aaa',
157
+ 'EC 9.8.0.-',
158
+ 'Allergen=Bet v 1-B',
159
+ 'this is fake entry',
160
+ 'CD_antigen=CD42c',
161
+ 'Pseudo',
162
+ 'submitter named this ABC_DEFGH',
163
+ 'EC 9.8.2.1'
164
+ ]
165
+ assert_equal(expected, @obj.synonyms)
166
+ end
167
+
168
+ end #class TestUniProt_DE_since_rel14_0
169
+
170
+ class TestUniProt_CC_WEB_RESOURCE_since_rel12_2 < Test::Unit::TestCase
171
+
172
+ def setup
173
+ text = <<the_end_of_the_text
174
+ ID ABC_DEFGH Unreviewed; 256 AA.
175
+ CC -!- WEB RESOURCE: Name=BioRuby web site; Note=BioRuby main web site
176
+ CC located in Tokyo, Japan;
177
+ CC URL="http://bioruby.org";
178
+ CC -!- WEB RESOURCE: Name=official mirror of BioRuby web site hosted in
179
+ CC the Open Bioinformatics Foundation;
180
+ CC URL="http://bioruby.open-bio.org/";
181
+ CC -!- WEB RESOURCE: Name=BioRuby Wiki site;
182
+ CC URL="http://bioruby.open-bio.org/wiki/";
183
+ the_end_of_the_text
184
+
185
+ @obj = Bio::UniProt.new(text)
186
+ end
187
+
188
+ def test_cc_web_resource
189
+ expected =
190
+ [ { "Name" => "BioRuby web site",
191
+ "Note" => "BioRuby main web site located in Tokyo, Japan",
192
+ "URL" => "http://bioruby.org"
193
+ },
194
+ { "Name" => "official mirror of BioRuby web site hosted in the Open Bioinformatics Foundation",
195
+ "Note" => nil,
196
+ "URL" => "http://bioruby.open-bio.org/"
197
+ },
198
+ { "Name" => "BioRuby Wiki site",
199
+ "Note" => nil,
200
+ "URL" => "http://bioruby.open-bio.org/wiki/"
201
+ }
202
+ ]
203
+
204
+ assert_equal(expected, @obj.cc('WEB RESOURCE'))
205
+ end
206
+ end #class TestUniProt_CC_WEB_RESOURCE_since_rel12_2
207
+
208
+ end #module Bio
@@ -0,0 +1,274 @@
1
+ #
2
+ # test/unit/bio/db/genbank/test_common.rb - Unit test for Bio::NCBIDB::Common
3
+ #
4
+ # Copyright:: Copyright (C) 2010 Kazuhiro Hayashi <k.hayashi.info@gmail.com>
5
+ # License:: The Ruby License
6
+ #
7
+
8
+ # loading helper routine for testing bioruby
9
+ require 'pathname'
10
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4,
11
+ 'bioruby_test_helper.rb')).cleanpath.to_s
12
+
13
+ # libraries needed for the tests
14
+ require 'test/unit'
15
+ require 'bio/db/genbank/common'
16
+ require 'bio/reference'
17
+ require 'bio/compat/references' # Bio::References in this file seems to be obsolete, but Bio::NCBIDB::Common should require it.
18
+ require 'bio/feature'
19
+ require 'bio/compat/features' # Bio::Features in this file seems to be obsolete, but Bio::NCBIDB::Common should require it.
20
+
21
+
22
+ # - This class has low coverage, because a sample entry used in it lacks a lot of fields.
23
+ # - There are all the methods for test.
24
+ module Bio
25
+ class NCBIDB
26
+ class TestCommon < Test::Unit::TestCase
27
+
28
+ #Mock Class including the target module.
29
+ #BioNCBIDBCommon is used for the test.
30
+ class BioNCBIDBCommon < Bio::NCBIDB
31
+ include Bio::NCBIDB::Common
32
+ end
33
+
34
+ #a sample entry is a part of data/genbank/SCU49845.gb
35
+ def setup
36
+ entry =<<EOF
37
+ LOCUS SCU49845 5028 bp DNA linear PLN 23-MAR-2010
38
+ DEFINITION Saccharomyces cerevisiae TCP1-beta gene, partial cds; and Axl2p
39
+ (AXL2) and Rev7p (REV7) genes, complete cds.
40
+ ACCESSION U49845
41
+ VERSION U49845.1 GI:1293613
42
+ KEYWORDS .
43
+ SOURCE Saccharomyces cerevisiae (baker's yeast)
44
+ ORGANISM Saccharomyces cerevisiae
45
+ Eukaryota; Fungi; Dikarya; Ascomycota; Saccharomyceta;
46
+ Saccharomycotina; Saccharomycetes; Saccharomycetales;
47
+ Saccharomycetaceae; Saccharomyces.
48
+ EOF
49
+ @obj = BioNCBIDBCommon.new(entry)
50
+ end
51
+
52
+ def test_locus
53
+ #Since locus method is supposed to be overloaded in a child class, it may not be neccesary to test the method here.
54
+ end
55
+
56
+ def test_definition
57
+ expected = "Saccharomyces cerevisiae TCP1-beta gene, partial cds; and Axl2p (AXL2) and Rev7p (REV7) genes, complete cds."
58
+ assert_equal(expected, @obj.definition)
59
+ end
60
+
61
+ def test_accessions
62
+ expected = ["U49845"]
63
+ assert_equal(expected, @obj.accessions)
64
+ end
65
+
66
+ def test_accession
67
+ expected = "U49845"
68
+ assert_equal(expected, @obj.accession)
69
+ end
70
+
71
+ def test_versions
72
+ expected = ["U49845.1", "GI:1293613"]
73
+ assert_equal(expected, @obj.versions)
74
+ end
75
+
76
+ def test_version
77
+ expected = 1
78
+ assert_equal(expected, @obj.version)
79
+ end
80
+
81
+ def test_acc_version
82
+ expected = "U49845.1"
83
+ assert_equal(expected, @obj.acc_version)
84
+ end
85
+
86
+ def test_gi
87
+ expected = "GI:1293613"
88
+ assert_equal(expected, @obj.gi)
89
+ end
90
+
91
+ def test_nid
92
+ expected = ""
93
+ assert_equal(expected, @obj.nid)
94
+ end
95
+
96
+ def test_keywords
97
+ expected = []
98
+ assert_equal(expected, @obj.keywords)
99
+ end
100
+
101
+ def test_segment
102
+ expected = ""
103
+ assert_equal(expected, @obj.segment)
104
+ end
105
+
106
+ def test_source
107
+ expected = {"organism"=>"Saccharomyces cerevisiae",
108
+ "common_name"=>"Saccharomyces cerevisiae (baker's yeast)",
109
+ "taxonomy"=>
110
+ "Eukaryota; Fungi; Dikarya; Ascomycota; Saccharomyceta; Saccharomycotina; Saccharomycetes; Saccharomycetales; Saccharomycetaceae; Saccharomyces."}
111
+ assert_equal(expected, @obj.source)
112
+
113
+ #another pattern to pass line 103-105
114
+ source_pattern2 =<<EOS
115
+ SOURCE Saccharomyces cerevisiae (baker's yeast)
116
+ ORGANISM Saccharomyces cerevisiae
117
+ Saccharomyces.
118
+ EOS
119
+ obj2 = BioNCBIDBCommon.new(source_pattern2)
120
+ expected2 = {"organism"=>"Saccharomyces cerevisiae",
121
+ "common_name"=>"Saccharomyces cerevisiae (baker's yeast)",
122
+ "taxonomy"=>"Saccharomyces."}
123
+ assert_equal(expected2, obj2.source)
124
+
125
+ #the other pattern to pass line 106-109
126
+ source_pattern3 =<<EOS
127
+ SOURCE Saccharomyces cerevisiae (baker's yeast)
128
+ ORGANISM Saccharomyces cerevisiae
129
+ EOS
130
+ obj3 = BioNCBIDBCommon.new(source_pattern3)
131
+ expected3 = {"organism"=>"Saccharomyces cerevisiae",
132
+ "common_name"=>"Saccharomyces cerevisiae (baker's yeast)",
133
+ "taxonomy"=>""}
134
+ assert_equal(expected3, obj3.source)
135
+ end
136
+
137
+ def test_common_name
138
+ expected = "Saccharomyces cerevisiae (baker's yeast)"
139
+ assert_equal(expected, @obj.common_name)
140
+ end
141
+
142
+ def test_organism
143
+ expected = "Saccharomyces cerevisiae"
144
+ assert_equal(expected, @obj.organism)
145
+ end
146
+
147
+ def test_taxonomy
148
+ expected = "Eukaryota; Fungi; Dikarya; Ascomycota; Saccharomyceta; Saccharomycotina; Saccharomycetes; Saccharomycetales; Saccharomycetaceae; Saccharomyces."
149
+ assert_equal(expected, @obj.taxonomy)
150
+ end
151
+
152
+ def test_references
153
+ str=<<EOS
154
+ REFERENCE 2 (bases 1 to 2264)
155
+ AUTHORS Zhao,X., Brade,T., Cunningham,T.J. and Duester,G.
156
+ TITLE Retinoic acid controls expression of tissue remodeling genes Hmgn1
157
+ and Fgf18 at the digit-interdigit junction
158
+ JOURNAL Dev. Dyn. 239 (2), 665-671 (2010)
159
+ PUBMED 20034106
160
+ REMARK GeneRIF: limited to the digit-interdigit junction rather than being
161
+ expressed throughout the interdigital zone
162
+ EOS
163
+ com = BioNCBIDBCommon.new(str)
164
+ obj = com.references
165
+ expected =
166
+ {:mesh=>[],
167
+ :volume=>"239",
168
+ :doi=>nil,
169
+ :pages=>"665-671",
170
+ :embl_gb_record_number=>2,
171
+ :pubmed=>"20034106",
172
+ :abstract=>"",
173
+ :issue=>"2",
174
+ :year=>"2010",
175
+ :sequence_position=>"1-2264",
176
+ :affiliations=>[],
177
+ :journal=>"Dev. Dyn.",
178
+ :title=>
179
+ "Retinoic acid controls expression of tissue remodeling genes Hmgn1 and Fgf18 at the digit-interdigit junction",
180
+ :authors=>["Zhao, X.", "Brade, T.", "Cunningham, T.J.", "Duester, G."],
181
+ :medline=>"",
182
+ :url=>nil,
183
+ :comments=>
184
+ ["GeneRIF: limited to the digit-interdigit junction rather than being expressed throughout the interdigital zone"]}
185
+ actual = {:abstract => obj[0].abstract,
186
+ :affiliations => obj[0].affiliations,
187
+ :authors => obj[0].authors,
188
+ :comments => obj[0].comments,
189
+ :doi => obj[0].doi,
190
+ :embl_gb_record_number => obj[0].embl_gb_record_number,
191
+ :issue => obj[0].issue,
192
+ :journal => obj[0].journal,
193
+ :medline => obj[0].medline,
194
+ :mesh => obj[0].mesh,
195
+ :pages => obj[0].pages,
196
+ :pubmed => obj[0].pubmed,
197
+ :sequence_position => obj[0].sequence_position,
198
+ :title => obj[0].title,
199
+ :url => obj[0].url,
200
+ :volume => obj[0].volume,
201
+ :year => obj[0].year}
202
+ assert_equal(expected, actual)
203
+ actual2 = ""
204
+ com.references do |reference|
205
+ actual2 = reference.authors
206
+ break
207
+ end
208
+ assert_equal(["Zhao, X.", "Brade, T.", "Cunningham, T.J.", "Duester, G."],actual2)
209
+
210
+
211
+ #the other pattern where a journal doesn't match the regexp.
212
+ ref=<<EOS
213
+ REFERENCE 2 (bases 1 to 2264)
214
+ JOURNAL testcase
215
+ EOS
216
+ obj2 = BioNCBIDBCommon.new(ref)
217
+ actual3 = obj2.references[0].journal
218
+ assert_equal("testcase",actual3)
219
+ end
220
+
221
+ def test_comment
222
+ expected = ""
223
+ assert_equal(expected, @obj.comment)
224
+ end
225
+
226
+ def test_features
227
+ expected =
228
+ {:feature=>"CDS",
229
+ :position=>"<1..206",
230
+ :qualifiers=>
231
+ [{:qualifier=>"product",
232
+ :value=>"TCP1-beta"},
233
+ {:value=>3, :qualifier=>"codon_start"},
234
+ {:qualifier=>"translation",
235
+ :value=>
236
+ "SSIYNGISTSGLDLNNGTIADMRQLGIVESYKLKRAVVSSASEAAEVLLRVDNIIRARPRTANRQHM"}]}
237
+ fet =<<EOS
238
+ FEATURES Location/Qualifiers
239
+ CDS <1..206
240
+ /product="TCP1-beta"
241
+ /codon_start=3
242
+ /translation="SSIYNGISTSGLDLNNGTIADMRQLGIVESYKLKRAVVSSASEA
243
+ AEVLLRVDNIIRARPRTANRQHM"
244
+ EOS
245
+ obj = BioNCBIDBCommon.new(fet)
246
+ actual =
247
+ {:feature=>obj.features[0].feature,
248
+ :position=>obj.features[0].position,
249
+ :qualifiers=>
250
+ [{:qualifier=>obj.features[0].qualifiers[0].qualifier,
251
+ :value=>obj.features[0].qualifiers[0].value},
252
+ {:qualifier=>obj.features[0].qualifiers[1].qualifier,
253
+ :value=>
254
+ obj.features[0].qualifiers[1].value},
255
+ {:qualifier=>obj.features[0].qualifiers[2].qualifier,
256
+ :value=>
257
+ obj.features[0].qualifiers[2].value}]}
258
+ assert_equal(expected, actual)
259
+ actual2 = ""
260
+ obj.features do |feature|
261
+ actual2 = feature.feature
262
+ end
263
+
264
+ assert_equal("CDS", actual2)
265
+ end
266
+
267
+ def test_origin
268
+ expected = ""
269
+ assert_equal(expected, @obj.origin)
270
+ end
271
+
272
+ end
273
+ end
274
+ end