bio 1.3.1 → 1.4.0

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 (303) hide show
  1. data/ChangeLog +2105 -3728
  2. data/KNOWN_ISSUES.rdoc +35 -3
  3. data/README.rdoc +8 -2
  4. data/RELEASE_NOTES.rdoc +166 -0
  5. data/bin/bioruby +4 -1
  6. data/bioruby.gemspec +146 -1
  7. data/bioruby.gemspec.erb +3 -1
  8. data/doc/ChangeLog-before-1.3.1 +3961 -0
  9. data/doc/Tutorial.rd +154 -22
  10. data/doc/Tutorial.rd.html +125 -68
  11. data/lib/bio.rb +21 -6
  12. data/lib/bio/appl/bl2seq/report.rb +11 -202
  13. data/lib/bio/appl/blast/format0.rb +0 -193
  14. data/lib/bio/appl/blast/report.rb +2 -147
  15. data/lib/bio/appl/blast/wublast.rb +0 -208
  16. data/lib/bio/appl/fasta.rb +4 -19
  17. data/lib/bio/appl/fasta/format10.rb +0 -14
  18. data/lib/bio/appl/genscan/report.rb +0 -176
  19. data/lib/bio/appl/hmmer.rb +1 -15
  20. data/lib/bio/appl/hmmer/report.rb +0 -100
  21. data/lib/bio/appl/meme/mast.rb +156 -0
  22. data/lib/bio/appl/meme/mast/report.rb +91 -0
  23. data/lib/bio/appl/meme/motif.rb +48 -0
  24. data/lib/bio/appl/psort.rb +0 -111
  25. data/lib/bio/appl/psort/report.rb +1 -45
  26. data/lib/bio/appl/pts1.rb +2 -4
  27. data/lib/bio/appl/sosui/report.rb +5 -54
  28. data/lib/bio/appl/targetp/report.rb +1 -104
  29. data/lib/bio/appl/tmhmm/report.rb +0 -36
  30. data/lib/bio/command.rb +94 -10
  31. data/lib/bio/data/aa.rb +1 -77
  32. data/lib/bio/data/codontable.rb +1 -95
  33. data/lib/bio/data/na.rb +1 -26
  34. data/lib/bio/db/aaindex.rb +1 -38
  35. data/lib/bio/db/fasta.rb +1 -134
  36. data/lib/bio/db/fasta/format_qual.rb +204 -0
  37. data/lib/bio/db/fasta/qual.rb +102 -0
  38. data/lib/bio/db/fastq.rb +645 -0
  39. data/lib/bio/db/fastq/fastq_to_biosequence.rb +40 -0
  40. data/lib/bio/db/fastq/format_fastq.rb +175 -0
  41. data/lib/bio/db/genbank/genbank.rb +1 -86
  42. data/lib/bio/db/gff.rb +0 -17
  43. data/lib/bio/db/go.rb +4 -72
  44. data/lib/bio/db/kegg/common.rb +112 -0
  45. data/lib/bio/db/kegg/compound.rb +29 -20
  46. data/lib/bio/db/kegg/drug.rb +74 -34
  47. data/lib/bio/db/kegg/enzyme.rb +26 -5
  48. data/lib/bio/db/kegg/genes.rb +128 -15
  49. data/lib/bio/db/kegg/genome.rb +3 -41
  50. data/lib/bio/db/kegg/glycan.rb +19 -24
  51. data/lib/bio/db/kegg/orthology.rb +16 -56
  52. data/lib/bio/db/kegg/reaction.rb +81 -28
  53. data/lib/bio/db/kegg/taxonomy.rb +1 -52
  54. data/lib/bio/db/litdb.rb +1 -16
  55. data/lib/bio/db/phyloxml/phyloxml.xsd +582 -0
  56. data/lib/bio/db/phyloxml/phyloxml_elements.rb +1174 -0
  57. data/lib/bio/db/phyloxml/phyloxml_parser.rb +954 -0
  58. data/lib/bio/db/phyloxml/phyloxml_writer.rb +228 -0
  59. data/lib/bio/db/prosite.rb +2 -95
  60. data/lib/bio/db/rebase.rb +5 -6
  61. data/lib/bio/db/sanger_chromatogram/abif.rb +120 -0
  62. data/lib/bio/db/sanger_chromatogram/chromatogram.rb +133 -0
  63. data/lib/bio/db/sanger_chromatogram/chromatogram_to_biosequence.rb +32 -0
  64. data/lib/bio/db/sanger_chromatogram/scf.rb +210 -0
  65. data/lib/bio/io/das.rb +0 -44
  66. data/lib/bio/io/ddbjxml.rb +1 -181
  67. data/lib/bio/io/flatfile.rb +1 -7
  68. data/lib/bio/io/flatfile/autodetection.rb +6 -0
  69. data/lib/bio/io/keggapi.rb +0 -442
  70. data/lib/bio/io/ncbirest.rb +130 -132
  71. data/lib/bio/io/ncbisoap.rb +2 -1
  72. data/lib/bio/io/pubmed.rb +0 -88
  73. data/lib/bio/location.rb +0 -73
  74. data/lib/bio/pathway.rb +0 -171
  75. data/lib/bio/sequence.rb +18 -1
  76. data/lib/bio/sequence/adapter.rb +3 -0
  77. data/lib/bio/sequence/format.rb +16 -0
  78. data/lib/bio/sequence/quality_score.rb +205 -0
  79. data/lib/bio/tree.rb +70 -5
  80. data/lib/bio/util/restriction_enzyme/single_strand.rb +3 -2
  81. data/lib/bio/util/sirna.rb +1 -23
  82. data/lib/bio/version.rb +1 -1
  83. data/sample/demo_aaindex.rb +67 -0
  84. data/sample/demo_aminoacid.rb +101 -0
  85. data/sample/demo_bl2seq_report.rb +220 -0
  86. data/sample/demo_blast_report.rb +285 -0
  87. data/sample/demo_codontable.rb +119 -0
  88. data/sample/demo_das.rb +105 -0
  89. data/sample/demo_ddbjxml.rb +212 -0
  90. data/sample/demo_fasta_remote.rb +51 -0
  91. data/sample/demo_fastaformat.rb +105 -0
  92. data/sample/demo_genbank.rb +132 -0
  93. data/sample/demo_genscan_report.rb +202 -0
  94. data/sample/demo_gff1.rb +49 -0
  95. data/sample/demo_go.rb +98 -0
  96. data/sample/demo_hmmer_report.rb +149 -0
  97. data/sample/demo_kegg_compound.rb +57 -0
  98. data/sample/demo_kegg_drug.rb +65 -0
  99. data/sample/demo_kegg_genome.rb +74 -0
  100. data/sample/demo_kegg_glycan.rb +72 -0
  101. data/sample/demo_kegg_orthology.rb +62 -0
  102. data/sample/demo_kegg_reaction.rb +66 -0
  103. data/sample/demo_kegg_taxonomy.rb +92 -0
  104. data/sample/demo_keggapi.rb +502 -0
  105. data/sample/demo_litdb.rb +42 -0
  106. data/sample/demo_locations.rb +99 -0
  107. data/sample/demo_ncbi_rest.rb +130 -0
  108. data/sample/demo_nucleicacid.rb +49 -0
  109. data/sample/demo_pathway.rb +196 -0
  110. data/sample/demo_prosite.rb +120 -0
  111. data/sample/demo_psort.rb +138 -0
  112. data/sample/demo_psort_report.rb +70 -0
  113. data/sample/demo_pubmed.rb +118 -0
  114. data/sample/demo_sirna.rb +63 -0
  115. data/sample/demo_sosui_report.rb +89 -0
  116. data/sample/demo_targetp_report.rb +135 -0
  117. data/sample/demo_tmhmm_report.rb +68 -0
  118. data/sample/pmfetch.rb +13 -4
  119. data/sample/pmsearch.rb +15 -4
  120. data/sample/test_phyloxml_big.rb +205 -0
  121. data/test/bioruby_test_helper.rb +61 -0
  122. data/test/data/KEGG/1.1.1.1.enzyme +935 -0
  123. data/test/data/KEGG/C00025.compound +102 -0
  124. data/test/data/KEGG/D00063.drug +104 -0
  125. data/test/data/KEGG/G00024.glycan +47 -0
  126. data/test/data/KEGG/G01366.glycan +18 -0
  127. data/test/data/KEGG/K02338.orthology +902 -0
  128. data/test/data/KEGG/R00006.reaction +14 -0
  129. data/test/data/fastq/README.txt +109 -0
  130. data/test/data/fastq/error_diff_ids.fastq +20 -0
  131. data/test/data/fastq/error_double_qual.fastq +22 -0
  132. data/test/data/fastq/error_double_seq.fastq +22 -0
  133. data/test/data/fastq/error_long_qual.fastq +20 -0
  134. data/test/data/fastq/error_no_qual.fastq +20 -0
  135. data/test/data/fastq/error_qual_del.fastq +20 -0
  136. data/test/data/fastq/error_qual_escape.fastq +20 -0
  137. data/test/data/fastq/error_qual_null.fastq +0 -0
  138. data/test/data/fastq/error_qual_space.fastq +21 -0
  139. data/test/data/fastq/error_qual_tab.fastq +21 -0
  140. data/test/data/fastq/error_qual_unit_sep.fastq +20 -0
  141. data/test/data/fastq/error_qual_vtab.fastq +20 -0
  142. data/test/data/fastq/error_short_qual.fastq +20 -0
  143. data/test/data/fastq/error_spaces.fastq +20 -0
  144. data/test/data/fastq/error_tabs.fastq +21 -0
  145. data/test/data/fastq/error_trunc_at_plus.fastq +19 -0
  146. data/test/data/fastq/error_trunc_at_qual.fastq +19 -0
  147. data/test/data/fastq/error_trunc_at_seq.fastq +18 -0
  148. data/test/data/fastq/error_trunc_in_plus.fastq +19 -0
  149. data/test/data/fastq/error_trunc_in_qual.fastq +20 -0
  150. data/test/data/fastq/error_trunc_in_seq.fastq +18 -0
  151. data/test/data/fastq/error_trunc_in_title.fastq +17 -0
  152. data/test/data/fastq/illumina_full_range_as_illumina.fastq +8 -0
  153. data/test/data/fastq/illumina_full_range_as_sanger.fastq +8 -0
  154. data/test/data/fastq/illumina_full_range_as_solexa.fastq +8 -0
  155. data/test/data/fastq/illumina_full_range_original_illumina.fastq +8 -0
  156. data/test/data/fastq/longreads_as_illumina.fastq +40 -0
  157. data/test/data/fastq/longreads_as_sanger.fastq +40 -0
  158. data/test/data/fastq/longreads_as_solexa.fastq +40 -0
  159. data/test/data/fastq/longreads_original_sanger.fastq +120 -0
  160. data/test/data/fastq/misc_dna_as_illumina.fastq +16 -0
  161. data/test/data/fastq/misc_dna_as_sanger.fastq +16 -0
  162. data/test/data/fastq/misc_dna_as_solexa.fastq +16 -0
  163. data/test/data/fastq/misc_dna_original_sanger.fastq +16 -0
  164. data/test/data/fastq/misc_rna_as_illumina.fastq +16 -0
  165. data/test/data/fastq/misc_rna_as_sanger.fastq +16 -0
  166. data/test/data/fastq/misc_rna_as_solexa.fastq +16 -0
  167. data/test/data/fastq/misc_rna_original_sanger.fastq +16 -0
  168. data/test/data/fastq/sanger_full_range_as_illumina.fastq +8 -0
  169. data/test/data/fastq/sanger_full_range_as_sanger.fastq +8 -0
  170. data/test/data/fastq/sanger_full_range_as_solexa.fastq +8 -0
  171. data/test/data/fastq/sanger_full_range_original_sanger.fastq +8 -0
  172. data/test/data/fastq/solexa_full_range_as_illumina.fastq +8 -0
  173. data/test/data/fastq/solexa_full_range_as_sanger.fastq +8 -0
  174. data/test/data/fastq/solexa_full_range_as_solexa.fastq +8 -0
  175. data/test/data/fastq/solexa_full_range_original_solexa.fastq +8 -0
  176. data/test/data/fastq/wrapping_as_illumina.fastq +12 -0
  177. data/test/data/fastq/wrapping_as_sanger.fastq +12 -0
  178. data/test/data/fastq/wrapping_as_solexa.fastq +12 -0
  179. data/test/data/fastq/wrapping_original_sanger.fastq +24 -0
  180. data/test/data/meme/db +0 -0
  181. data/test/data/meme/mast +0 -0
  182. data/test/data/meme/mast.out +13 -0
  183. data/test/data/meme/meme.out +3 -0
  184. data/test/data/phyloxml/apaf.xml +666 -0
  185. data/test/data/phyloxml/bcl_2.xml +2097 -0
  186. data/test/data/phyloxml/made_up.xml +144 -0
  187. data/test/data/phyloxml/ncbi_taxonomy_mollusca_short.xml +65 -0
  188. data/test/data/phyloxml/phyloxml_examples.xml +415 -0
  189. data/test/data/sanger_chromatogram/test_chromatogram_abif.ab1 +0 -0
  190. data/test/data/sanger_chromatogram/test_chromatogram_scf_v2.scf +0 -0
  191. data/test/data/sanger_chromatogram/test_chromatogram_scf_v3.scf +0 -0
  192. data/test/functional/bio/appl/test_pts1.rb +7 -5
  193. data/test/functional/bio/io/test_ensembl.rb +4 -3
  194. data/test/functional/bio/io/test_pubmed.rb +9 -3
  195. data/test/functional/bio/io/test_soapwsdl.rb +5 -4
  196. data/test/functional/bio/io/test_togows.rb +5 -4
  197. data/test/functional/bio/sequence/test_output_embl.rb +6 -4
  198. data/test/functional/bio/test_command.rb +54 -5
  199. data/test/runner.rb +5 -3
  200. data/test/unit/bio/appl/bl2seq/test_report.rb +5 -4
  201. data/test/unit/bio/appl/blast/test_ncbioptions.rb +4 -2
  202. data/test/unit/bio/appl/blast/test_report.rb +5 -4
  203. data/test/unit/bio/appl/blast/test_rpsblast.rb +5 -4
  204. data/test/unit/bio/appl/gcg/test_msf.rb +5 -5
  205. data/test/unit/bio/appl/genscan/test_report.rb +8 -9
  206. data/test/unit/bio/appl/hmmer/test_report.rb +5 -4
  207. data/test/unit/bio/appl/iprscan/test_report.rb +6 -5
  208. data/test/unit/bio/appl/mafft/test_report.rb +6 -5
  209. data/test/unit/bio/appl/meme/mast/test_report.rb +46 -0
  210. data/test/unit/bio/appl/meme/test_mast.rb +103 -0
  211. data/test/unit/bio/appl/meme/test_motif.rb +38 -0
  212. data/test/unit/bio/appl/paml/codeml/test_rates.rb +5 -4
  213. data/test/unit/bio/appl/paml/codeml/test_report.rb +5 -4
  214. data/test/unit/bio/appl/paml/test_codeml.rb +5 -4
  215. data/test/unit/bio/appl/sim4/test_report.rb +5 -4
  216. data/test/unit/bio/appl/sosui/test_report.rb +6 -5
  217. data/test/unit/bio/appl/targetp/test_report.rb +5 -3
  218. data/test/unit/bio/appl/test_blast.rb +5 -4
  219. data/test/unit/bio/appl/test_fasta.rb +4 -2
  220. data/test/unit/bio/appl/test_pts1.rb +4 -2
  221. data/test/unit/bio/appl/tmhmm/test_report.rb +6 -5
  222. data/test/unit/bio/data/test_aa.rb +5 -3
  223. data/test/unit/bio/data/test_codontable.rb +5 -4
  224. data/test/unit/bio/data/test_na.rb +5 -3
  225. data/test/unit/bio/db/biosql/tc_biosql.rb +5 -1
  226. data/test/unit/bio/db/embl/test_common.rb +4 -2
  227. data/test/unit/bio/db/embl/test_embl.rb +6 -6
  228. data/test/unit/bio/db/embl/test_embl_rel89.rb +6 -6
  229. data/test/unit/bio/db/embl/test_embl_to_bioseq.rb +7 -8
  230. data/test/unit/bio/db/embl/test_sptr.rb +6 -8
  231. data/test/unit/bio/db/embl/test_uniprot.rb +6 -5
  232. data/test/unit/bio/db/fasta/test_format_qual.rb +346 -0
  233. data/test/unit/bio/db/kegg/test_compound.rb +146 -0
  234. data/test/unit/bio/db/kegg/test_drug.rb +194 -0
  235. data/test/unit/bio/db/kegg/test_enzyme.rb +241 -0
  236. data/test/unit/bio/db/kegg/test_genes.rb +32 -4
  237. data/test/unit/bio/db/kegg/test_glycan.rb +260 -0
  238. data/test/unit/bio/db/kegg/test_orthology.rb +50 -0
  239. data/test/unit/bio/db/kegg/test_reaction.rb +96 -0
  240. data/test/unit/bio/db/pdb/test_pdb.rb +4 -2
  241. data/test/unit/bio/db/sanger_chromatogram/test_abif.rb +76 -0
  242. data/test/unit/bio/db/sanger_chromatogram/test_scf.rb +98 -0
  243. data/test/unit/bio/db/test_aaindex.rb +6 -6
  244. data/test/unit/bio/db/test_fasta.rb +5 -46
  245. data/test/unit/bio/db/test_fastq.rb +829 -0
  246. data/test/unit/bio/db/test_gff.rb +4 -2
  247. data/test/unit/bio/db/test_lasergene.rb +7 -5
  248. data/test/unit/bio/db/test_medline.rb +4 -2
  249. data/test/unit/bio/db/test_newick.rb +6 -6
  250. data/test/unit/bio/db/test_nexus.rb +4 -2
  251. data/test/unit/bio/db/test_phyloxml.rb +769 -0
  252. data/test/unit/bio/db/test_phyloxml_writer.rb +328 -0
  253. data/test/unit/bio/db/test_prosite.rb +6 -5
  254. data/test/unit/bio/db/test_qual.rb +63 -0
  255. data/test/unit/bio/db/test_rebase.rb +5 -3
  256. data/test/unit/bio/db/test_soft.rb +7 -6
  257. data/test/unit/bio/io/flatfile/test_autodetection.rb +6 -7
  258. data/test/unit/bio/io/flatfile/test_buffer.rb +6 -5
  259. data/test/unit/bio/io/flatfile/test_splitter.rb +4 -4
  260. data/test/unit/bio/io/test_ddbjxml.rb +4 -3
  261. data/test/unit/bio/io/test_ensembl.rb +5 -3
  262. data/test/unit/bio/io/test_fastacmd.rb +4 -3
  263. data/test/unit/bio/io/test_flatfile.rb +6 -5
  264. data/test/unit/bio/io/test_soapwsdl.rb +4 -3
  265. data/test/unit/bio/io/test_togows.rb +4 -2
  266. data/test/unit/bio/sequence/test_aa.rb +5 -3
  267. data/test/unit/bio/sequence/test_common.rb +4 -2
  268. data/test/unit/bio/sequence/test_compat.rb +4 -2
  269. data/test/unit/bio/sequence/test_dblink.rb +5 -3
  270. data/test/unit/bio/sequence/test_na.rb +4 -2
  271. data/test/unit/bio/sequence/test_quality_score.rb +330 -0
  272. data/test/unit/bio/shell/plugin/test_seq.rb +5 -3
  273. data/test/unit/bio/test_alignment.rb +5 -3
  274. data/test/unit/bio/test_command.rb +4 -3
  275. data/test/unit/bio/test_db.rb +5 -3
  276. data/test/unit/bio/test_feature.rb +4 -2
  277. data/test/unit/bio/test_location.rb +4 -2
  278. data/test/unit/bio/test_map.rb +5 -3
  279. data/test/unit/bio/test_pathway.rb +4 -2
  280. data/test/unit/bio/test_reference.rb +4 -2
  281. data/test/unit/bio/test_sequence.rb +5 -3
  282. data/test/unit/bio/test_shell.rb +5 -3
  283. data/test/unit/bio/test_tree.rb +6 -6
  284. data/test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb +4 -2
  285. data/test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb +4 -2
  286. data/test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb +4 -2
  287. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb +4 -2
  288. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb +4 -2
  289. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb +4 -2
  290. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb +4 -2
  291. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb +4 -2
  292. data/test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb +4 -2
  293. data/test/unit/bio/util/restriction_enzyme/test_analysis.rb +4 -2
  294. data/test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb +4 -2
  295. data/test/unit/bio/util/restriction_enzyme/test_double_stranded.rb +4 -2
  296. data/test/unit/bio/util/restriction_enzyme/test_single_strand.rb +17 -13
  297. data/test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb +17 -13
  298. data/test/unit/bio/util/restriction_enzyme/test_string_formatting.rb +4 -2
  299. data/test/unit/bio/util/test_color_scheme.rb +5 -3
  300. data/test/unit/bio/util/test_contingency_table.rb +5 -3
  301. data/test/unit/bio/util/test_restriction_enzyme.rb +4 -2
  302. data/test/unit/bio/util/test_sirna.rb +6 -4
  303. metadata +147 -2
@@ -0,0 +1,328 @@
1
+ #
2
+ # = test/unit/bio/db/test_phyloxml_writer.rb - Unit test for Bio::PhyloXML::Writer
3
+ #
4
+ # Copyright:: Copyright (C) 2009
5
+ # Diana Jaunzeikare <latvianlinuxgirl@gmail.com>
6
+ # License:: The Ruby License
7
+ #
8
+
9
+ # loading helper routine for testing bioruby
10
+ require 'pathname'
11
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
12
+ 'bioruby_test_helper.rb')).cleanpath.to_s
13
+
14
+ # libraries needed for the tests
15
+ require 'test/unit'
16
+ require 'singleton'
17
+ require 'bio/command'
18
+
19
+ begin
20
+ require 'libxml'
21
+ rescue LoadError
22
+ end
23
+
24
+ if defined?(LibXML) then
25
+ require 'bio/db/phyloxml/phyloxml_writer'
26
+ end
27
+
28
+ module Bio
29
+ class TestPhyloXMLWriter_Check_LibXML < Test::Unit::TestCase
30
+ def test_libxml
31
+ assert(defined?(LibXML),
32
+ "Error: libxml-ruby library is not present. Please install libxml-ruby library. It is needed for Bio::PhyloXML module. Unit test for PhyloXML will not be performed.")
33
+ end
34
+ end #class TestPhyloXMLWriter_Check_LibXML
35
+ end #module Bio
36
+
37
+ module Bio
38
+
39
+ module TestPhyloXMLWriterData
40
+
41
+ PHYLOXML_WRITER_TEST_DATA = Pathname.new(File.join(BioRubyTestDataPath, 'phyloxml')).cleanpath.to_s
42
+
43
+ def self.example_xml
44
+ File.join PHYLOXML_WRITER_TEST_DATA, 'phyloxml_examples.xml'
45
+ end
46
+
47
+ def self.mollusca_short_xml
48
+ File.join PHYLOXML_WRITER_TEST_DATA, 'ncbi_taxonomy_mollusca_short.xml'
49
+ end
50
+
51
+ def self.made_up_xml
52
+ File.join PHYLOXML_WRITER_TEST_DATA, 'made_up.xml'
53
+ end
54
+
55
+ end #end module TestPhyloXMLWriterData
56
+
57
+ class TestPhyloXMLWriter < Test::Unit::TestCase
58
+
59
+ # helper class to write files using temporary directory
60
+ class WriteTo
61
+ include Singleton
62
+
63
+ def initialize
64
+ @leave_tmpdir = ENV['BIORUBY_TEST_DEBUG'].to_s.empty? ? false : true
65
+ @tests = nil
66
+ @tests_passed = 0
67
+ @tmpdir = nil
68
+ end
69
+
70
+ attr_accessor :tests
71
+
72
+ def test_passed
73
+ @tests_passed += 1
74
+ if !@leave_tmpdir and @tmpdir and @tests and
75
+ @tests_passed >= @tests then
76
+ #$stderr.print "Removing #{@tmpdir.path}\n"
77
+ @tmpdir.close!
78
+ @tmpdir = nil
79
+ @tests_passed = 0
80
+ end
81
+ end
82
+
83
+ def tmpdir
84
+ @tmpdir ||= Bio::Command::Tmpdir.new('PhyloXML')
85
+ @tmpdir
86
+ end
87
+
88
+ def file(f)
89
+ File.join(self.tmpdir.path, f)
90
+ end
91
+
92
+ def example_xml_test
93
+ self.file('phyloxml_examples_written.xml')
94
+ end
95
+ end #class WriteTo
96
+
97
+ def setup
98
+ @writeto = WriteTo.instance
99
+ @writeto.tests ||= self.methods.collect { |x|
100
+ x.to_s }.find_all { |y|
101
+ /\Atest\_/ =~ y }.size
102
+ end
103
+
104
+ def teardown
105
+ @writeto.test_passed
106
+ end
107
+
108
+ # def test_write
109
+ # # @todo this is test for Tree.write
110
+ # tree = Bio::PhyloXML::Tree.new
111
+ # filename = @writeto.file('test.xml')
112
+ # tree.write(filename)
113
+ # end
114
+
115
+ def test_init
116
+ filename = @writeto.file("test2.xml")
117
+ writer = Bio::PhyloXML::Writer.new(filename)
118
+
119
+ tree = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.mollusca_short_xml).next_tree
120
+
121
+ writer.write(tree)
122
+
123
+ assert_nothing_thrown do
124
+ Bio::PhyloXML::Parser.open(filename)
125
+ end
126
+
127
+ #File.delete(filename)
128
+ end
129
+
130
+ def test_simple_xml
131
+ filename = @writeto.file("sample.xml")
132
+ writer = Bio::PhyloXML::Writer.new(filename)
133
+ tree = Bio::PhyloXML::Tree.new
134
+ tree.rooted = true
135
+ tree.name = "Test tree"
136
+ root_node = Bio::PhyloXML::Node.new
137
+ tree.root = root_node
138
+ root_node.name = "A"
139
+ #root_node.taxonomies[0] = Bio::PhyloXML::Taxonomy.new
140
+ root_node.taxonomies << Bio::PhyloXML::Taxonomy.new
141
+ root_node.taxonomies[0].scientific_name = "Animal animal"
142
+ node2 = Bio::PhyloXML::Node.new
143
+ node2.name = "B"
144
+ tree.add_node(node2)
145
+ tree.add_edge(root_node, node2)
146
+ writer.write(tree)
147
+
148
+ lines = File.open(filename).readlines()
149
+ assert_equal("<phyloxml xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.phyloxml.org http://www.phyloxml.org/1.10/phyloxml.xsd\" xmlns=\"http://www.phyloxml.org\">",
150
+ lines[1].chomp)
151
+ assert_equal(" <phylogeny rooted=\"true\">", lines[2].chomp)
152
+ assert_equal(" <name>Test tree</name>", lines[3].chomp)
153
+ assert_equal(" <clade>", lines[4].chomp)
154
+ assert_equal(" <name>A</name>", lines[5].chomp)
155
+ assert_equal(" <taxonomy>", lines[6].chomp)
156
+ assert_equal(" <scientific_name>Animal animal</scientific_name>", lines[7].chomp)
157
+ assert_equal(" </taxonomy>", lines[8].chomp)
158
+ assert_equal(" <name>B</name>", lines[10].chomp)
159
+ assert_equal(" </clade>", lines[12].chomp)
160
+ assert_equal(" </phylogeny>", lines[13].chomp)
161
+ assert_equal("</phyloxml>", lines[14].chomp)
162
+
163
+ #File.delete(filename)
164
+ end
165
+
166
+ def test_phyloxml_examples_tree1
167
+ tree = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.example_xml).next_tree
168
+
169
+ filename = @writeto.file('example_tree1.xml')
170
+ writer = Bio::PhyloXML::Writer.new(filename)
171
+ writer.write_branch_length_as_subelement = false
172
+ writer.write(tree)
173
+
174
+ assert_nothing_thrown do
175
+ tree2 = Bio::PhyloXML::Parser.open(filename)
176
+ end
177
+
178
+ #File.delete(filename)
179
+
180
+ #@todo check if branch length is written correctly
181
+ end
182
+
183
+ def test_phyloxml_examples_tree2
184
+ phyloxml = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.example_xml)
185
+ 2.times do
186
+ @tree = phyloxml.next_tree
187
+ end
188
+
189
+ filename = @writeto.file('example_tree2.xml')
190
+ writer = Bio::PhyloXML::Writer.new(filename)
191
+ writer.write(@tree)
192
+
193
+ assert_nothing_thrown do
194
+ tree2 = Bio::PhyloXML::Parser.open(filename)
195
+ end
196
+
197
+ #File.delete(filename)
198
+ end
199
+
200
+ def test_phyloxml_examples_tree4
201
+ phyloxml = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.example_xml)
202
+ 4.times do
203
+ @tree = phyloxml.next_tree
204
+ end
205
+ #@todo tree = phyloxml[4]
206
+ filename = @writeto.file('example_tree4.xml')
207
+ writer = Bio::PhyloXML::Writer.new(filename)
208
+ writer.write(@tree)
209
+ assert_nothing_thrown do
210
+ @tree2 = Bio::PhyloXML::Parser.open(filename).next_tree
211
+ end
212
+ assert_equal(@tree.name, @tree2.name)
213
+ assert_equal(@tree.get_node_by_name('A').taxonomies[0].scientific_name, @tree2.get_node_by_name('A').taxonomies[0].scientific_name)
214
+ assert_equal(@tree.get_node_by_name('B').sequences[0].annotations[0].desc,
215
+ @tree2.get_node_by_name('B').sequences[0].annotations[0].desc)
216
+ # assert_equal(@tree.get_node_by_name('B').sequences[0].annotations[0].confidence.value,@tree2.get_node_by_name('B').sequences[0].annotations[0].confidence.value)
217
+ #File.delete(filename)
218
+ end
219
+
220
+ def test_phyloxml_examples_sequence_relation
221
+ phyloxml = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.example_xml)
222
+ filename = @writeto.example_xml_test
223
+ writer = Bio::PhyloXML::Writer.new(filename)
224
+ phyloxml.each do |tree|
225
+ writer.write(tree)
226
+ end
227
+
228
+ assert_nothing_thrown do
229
+ @phyloxml_test = Bio::PhyloXML::Parser.open(filename)
230
+ end
231
+
232
+ 5.times do
233
+ @tree = @phyloxml_test.next_tree
234
+ end
235
+
236
+ assert_equal("x", @tree.sequence_relations[0].id_ref_0)
237
+ assert_equal("z", @tree.sequence_relations[1].id_ref_1)
238
+ assert_equal(nil, @tree.sequence_relations[2].distance)
239
+ assert_equal("orthology", @tree.sequence_relations[2].type)
240
+
241
+ #File.delete(filename)
242
+ end
243
+
244
+ def test_generate_xml_with_sequence
245
+ tree = Bio::PhyloXML::Tree.new
246
+ r = Bio::PhyloXML::Node.new
247
+ tree.add_node(r)
248
+ tree.root = r
249
+ n = Bio::PhyloXML::Node.new
250
+ tree.add_node(n)
251
+ tree.add_edge(tree.root, n)
252
+ tree.rooted = true
253
+
254
+ n.name = "A"
255
+ seq = PhyloXML::Sequence.new
256
+ n.sequences[0] = seq
257
+ seq.annotations[0] = PhyloXML::Annotation.new
258
+ seq.annotations[0].desc = "Sample annotation"
259
+ seq.name = "sequence name"
260
+ seq.location = "somewhere"
261
+ seq.accession = PhyloXML::Accession.new
262
+ seq.accession.source = "ncbi"
263
+ seq.accession.value = "AAB80874"
264
+ seq.symbol = "adhB"
265
+ seq.mol_seq = "TDATGKPIKCMAAIAWEAKKPLSIEEVEVAPPKSGEVRIKILHSGVCHTD"
266
+ seq.uri = PhyloXML::Uri.new
267
+ seq.uri.desc = "EMBL REPTILE DATABASE"
268
+ seq.uri.uri = "http://www.embl-heidelberg.de/~uetz/families/Varanidae.html"
269
+ seq.domain_architecture = PhyloXML::DomainArchitecture.new
270
+ seq.domain_architecture.length = 1249
271
+ domain1 = PhyloXML::ProteinDomain.new
272
+ seq.domain_architecture.domains << domain1
273
+ domain1.from = 6
274
+ domain1.to = 90
275
+ domain1.confidence = "7.0E-26"
276
+ domain1.value = "CARD"
277
+ domain2 = PhyloXML::ProteinDomain.new
278
+ seq.domain_architecture.domains << domain2
279
+ domain2.from = 109
280
+ domain2.to = 414
281
+ domain2.confidence = "7.2E-117"
282
+ domain2.value = "NB-ARC"
283
+
284
+ filename = @writeto.file('sequence.xml')
285
+ Bio::PhyloXML::Writer.new(filename).write(tree)
286
+
287
+ assert_nothing_thrown do
288
+ Bio::PhyloXML::Parser.open(filename).next_tree
289
+ end
290
+
291
+ #File.delete(filename)
292
+ end
293
+
294
+ def test_phyloxml_examples_file
295
+ outputfn = "phyloxml_examples_generated_in_test.xml"
296
+ phyloxml = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.example_xml)
297
+ filename = @writeto.file(outputfn)
298
+ writer = Bio::PhyloXML::Writer.new(filename)
299
+ phyloxml.each do |tree|
300
+ writer.write(tree)
301
+ end
302
+ writer.write_other(phyloxml.other)
303
+
304
+ assert_nothing_thrown do
305
+ Bio::PhyloXML::Parser.open(filename)
306
+ end
307
+ # The output file is not deleted since it might be used in the phyloxml
308
+ # parser test. But since the order of tests can't be assumed, I can't
309
+ # hard code it in.
310
+ end
311
+
312
+ def test_made_up_xml_file
313
+ phyloxml = Bio::PhyloXML::Parser.open(TestPhyloXMLWriterData.made_up_xml)
314
+ filename = @writeto.file("made_up_generated_in_test.xml")
315
+ writer = Bio::PhyloXML::Writer.new(filename)
316
+ # The output file is not deleted since it might be used in the phyloxml
317
+ # parser test. But since the order of tests can't be assumed, I can't
318
+ # hard code it in.
319
+ phyloxml.each do |tree|
320
+ writer.write(tree)
321
+ end
322
+ end
323
+
324
+ end
325
+
326
+
327
+ end if defined?(LibXML) #end module Bio
328
+
@@ -4,13 +4,15 @@
4
4
  # Copyright:: Copyright (C) 2005 Mitsuteru Nakao <n@bioruby.org>
5
5
  # License:: The Ruby License
6
6
  #
7
- # $Id: test_prosite.rb,v 1.6 2007/04/05 23:35:43 trevor Exp $
7
+ # $Id:$
8
8
  #
9
9
 
10
+ # loading helper routine for testing bioruby
10
11
  require 'pathname'
11
- libpath = Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4, 'lib')).cleanpath.to_s
12
- $:.unshift(libpath) unless $:.include?(libpath)
12
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
13
+ 'bioruby_test_helper.rb')).cleanpath.to_s
13
14
 
15
+ # libraries needed for the tests
14
16
  require 'test/unit'
15
17
  require 'bio/db/prosite'
16
18
 
@@ -32,8 +34,7 @@ module Bio
32
34
  class TestPROSITE < Test::Unit::TestCase
33
35
 
34
36
  def setup
35
- bioruby_root = Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4)).cleanpath.to_s
36
- data = File.open(File.join(bioruby_root, 'test', 'data', 'prosite', 'prosite.dat')).read
37
+ data = File.open(File.join(BioRubyTestDataPath, 'prosite', 'prosite.dat')).read
37
38
  data = data.split(Bio::PROSITE::RS)[0]
38
39
  @obj = Bio::PROSITE.new(data)
39
40
  end
@@ -0,0 +1,63 @@
1
+ #
2
+ # test/unit/bio/db/test_qual.rb - Unit test for Bio::FastaNumericFormat
3
+ #
4
+ # Copyright:: Copyright (C) 2005 Mitsuteru Nakao <n@bioruby.org>
5
+ # License:: The Ruby License
6
+ #
7
+ # $Id:$
8
+ #
9
+
10
+ # loading helper routine for testing bioruby
11
+ require 'pathname'
12
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
13
+ 'bioruby_test_helper.rb')).cleanpath.to_s
14
+
15
+ # libraries needed for the tests
16
+ require 'test/unit'
17
+ require 'bio/db/fasta/qual'
18
+
19
+ module Bio
20
+ class TestFastaNumericFormat < Test::Unit::TestCase
21
+
22
+ def setup
23
+ text =<<END
24
+ >CRA3575282.F
25
+ 24 15 23 29 20 13 20 21 21 23 22 25 13 22 17 15 25 27 32 26
26
+ 32 29 29 25
27
+ END
28
+ @obj = Bio::FastaNumericFormat.new(text)
29
+ end
30
+
31
+ def test_entry
32
+ assert_equal(">CRA3575282.F\n24 15 23 29 20 13 20 21 21 23 22 25 13 22 17 15 25 27 32 26 \n32 29 29 25\n", @obj.entry)
33
+ end
34
+
35
+ def test_entry_id
36
+ assert_equal('CRA3575282.F', @obj.entry_id)
37
+ end
38
+
39
+ def test_definition
40
+ assert_equal('CRA3575282.F', @obj.definition)
41
+ end
42
+
43
+ def test_data
44
+ data = [24, 15, 23, 29, 20, 13, 20, 21, 21, 23, 22, 25, 13, 22, 17, 15, 25, 27, 32, 26, 32, 29, 29, 25]
45
+ assert_equal(data, @obj.data)
46
+ end
47
+
48
+ def test_length
49
+ assert_equal(24, @obj.length)
50
+ end
51
+
52
+ def test_each
53
+ assert(@obj.each {|x| })
54
+ end
55
+
56
+ def test_arg
57
+ assert(@obj[0], '')
58
+ assert(@obj[-1], '')
59
+ end
60
+
61
+
62
+ end #class TestFastaNumericFormat
63
+ end #module Bio
@@ -5,13 +5,15 @@
5
5
  # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_rebase.rb,v 1.5 2007/04/05 23:35:43 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
+ # loading helper routine for testing bioruby
11
12
  require 'pathname'
12
- libpath = Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4, 'lib')).cleanpath.to_s
13
- $:.unshift(libpath) unless $:.include?(libpath)
13
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
14
+ 'bioruby_test_helper.rb')).cleanpath.to_s
14
15
 
16
+ # libraries needed for the tests
15
17
  require 'test/unit'
16
18
  require 'bio/db/rebase'
17
19
 
@@ -1,17 +1,19 @@
1
1
  #
2
- # test/unit/bio/db/test_rebase.rb - Unit test for Bio::REBASE
2
+ # test/unit/bio/db/test_soft.rb - Unit test for Bio::SOFT
3
3
  #
4
4
  # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
5
  # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_soft.rb,v 1.3 2007/04/05 23:35:43 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
+ # loading helper routine for testing bioruby
11
12
  require 'pathname'
12
- libpath = Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4, 'lib')).cleanpath.to_s
13
- $:.unshift(libpath) unless $:.include?(libpath)
13
+ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
14
+ 'bioruby_test_helper.rb')).cleanpath.to_s
14
15
 
16
+ # libraries needed for the tests
15
17
  require 'test/unit'
16
18
  require 'bio/db/soft'
17
19
 
@@ -19,8 +21,7 @@ module Bio #:nodoc:
19
21
  class TestSOFT < Test::Unit::TestCase #:nodoc:
20
22
 
21
23
  def setup
22
- bioruby_root = Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4)).cleanpath.to_s
23
- test_data_path = Pathname.new(File.join(bioruby_root, 'test', 'data', 'soft')).cleanpath.to_s
24
+ test_data_path = Pathname.new(File.join(BioRubyTestDataPath, 'soft')).cleanpath.to_s
24
25
  series_filename = File.join(test_data_path, 'GSE3457_family_partial.soft')
25
26
  dataset_filename = File.join(test_data_path, 'GDS100_partial.soft')
26
27