bio 1.2.1 → 1.3.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 (259) hide show
  1. data/ChangeLog +3421 -0
  2. data/KNOWN_ISSUES.rdoc +88 -0
  3. data/README.rdoc +252 -0
  4. data/README_DEV.rdoc +285 -0
  5. data/Rakefile +143 -0
  6. data/bin/bioruby +0 -0
  7. data/bin/br_biofetch.rb +0 -0
  8. data/bin/br_bioflat.rb +12 -1
  9. data/bin/br_biogetseq.rb +0 -0
  10. data/bin/br_pmfetch.rb +4 -3
  11. data/bioruby.gemspec +477 -0
  12. data/bioruby.gemspec.erb +117 -0
  13. data/doc/Changes-0.7.rd +7 -0
  14. data/doc/Changes-1.3.rdoc +239 -0
  15. data/doc/Tutorial.rd +296 -184
  16. data/doc/Tutorial.rd.html +1031 -0
  17. data/doc/Tutorial.rd.ja +111 -45
  18. data/doc/Tutorial.rd.ja.html +2225 -0
  19. data/doc/bioruby.css +281 -0
  20. data/extconf.rb +2 -0
  21. data/lib/bio.rb +29 -4
  22. data/lib/bio/appl/blast.rb +306 -121
  23. data/lib/bio/appl/blast/ddbj.rb +142 -0
  24. data/lib/bio/appl/blast/format0.rb +35 -25
  25. data/lib/bio/appl/blast/format8.rb +2 -2
  26. data/lib/bio/appl/blast/genomenet.rb +263 -0
  27. data/lib/bio/appl/blast/ncbioptions.rb +220 -0
  28. data/lib/bio/appl/blast/remote.rb +106 -0
  29. data/lib/bio/appl/blast/report.rb +260 -9
  30. data/lib/bio/appl/blast/rexml.rb +12 -5
  31. data/lib/bio/appl/blast/rpsblast.rb +277 -0
  32. data/lib/bio/appl/blast/wublast.rb +133 -12
  33. data/lib/bio/appl/blast/xmlparser.rb +35 -18
  34. data/lib/bio/appl/blat/report.rb +46 -5
  35. data/lib/bio/appl/emboss.rb +62 -13
  36. data/lib/bio/appl/fasta.rb +9 -11
  37. data/lib/bio/appl/genscan/report.rb +3 -3
  38. data/lib/bio/appl/hmmer.rb +1 -1
  39. data/lib/bio/appl/hmmer/report.rb +10 -10
  40. data/lib/bio/appl/paml/baseml.rb +95 -0
  41. data/lib/bio/appl/paml/baseml/report.rb +32 -0
  42. data/lib/bio/appl/paml/codeml.rb +242 -0
  43. data/lib/bio/appl/paml/codeml/rates.rb +67 -0
  44. data/lib/bio/appl/paml/codeml/report.rb +67 -0
  45. data/lib/bio/appl/paml/common.rb +348 -0
  46. data/lib/bio/appl/paml/common_report.rb +38 -0
  47. data/lib/bio/appl/paml/yn00.rb +103 -0
  48. data/lib/bio/appl/paml/yn00/report.rb +32 -0
  49. data/lib/bio/appl/psort.rb +2 -2
  50. data/lib/bio/appl/pts1.rb +5 -5
  51. data/lib/bio/appl/tmhmm/report.rb +10 -1
  52. data/lib/bio/command.rb +297 -41
  53. data/lib/bio/compat/features.rb +157 -0
  54. data/lib/bio/compat/references.rb +128 -0
  55. data/lib/bio/db/biosql/biosql_to_biosequence.rb +67 -0
  56. data/lib/bio/db/biosql/sequence.rb +508 -0
  57. data/lib/bio/db/embl/common.rb +28 -12
  58. data/lib/bio/db/embl/embl.rb +107 -9
  59. data/lib/bio/db/embl/embl_to_biosequence.rb +85 -0
  60. data/lib/bio/db/embl/format_embl.rb +190 -0
  61. data/lib/bio/db/embl/sptr.rb +15 -16
  62. data/lib/bio/db/fantom.rb +6 -8
  63. data/lib/bio/db/fasta.rb +10 -507
  64. data/lib/bio/db/fasta/defline.rb +532 -0
  65. data/lib/bio/db/fasta/fasta_to_biosequence.rb +63 -0
  66. data/lib/bio/db/fasta/format_fasta.rb +97 -0
  67. data/lib/bio/db/genbank/common.rb +25 -8
  68. data/lib/bio/db/genbank/format_genbank.rb +187 -0
  69. data/lib/bio/db/genbank/genbank.rb +36 -1
  70. data/lib/bio/db/genbank/genbank_to_biosequence.rb +86 -0
  71. data/lib/bio/db/gff.rb +1791 -119
  72. data/lib/bio/db/kegg/glycan.rb +2 -6
  73. data/lib/bio/db/lasergene.rb +3 -3
  74. data/lib/bio/db/medline.rb +4 -1
  75. data/lib/bio/db/newick.rb +10 -10
  76. data/lib/bio/db/pdb/chain.rb +6 -2
  77. data/lib/bio/db/pdb/pdb.rb +12 -3
  78. data/lib/bio/db/rebase.rb +7 -8
  79. data/lib/bio/db/soft.rb +3 -3
  80. data/lib/bio/feature.rb +1 -88
  81. data/lib/bio/io/biosql/biodatabase.rb +64 -0
  82. data/lib/bio/io/biosql/bioentry.rb +29 -0
  83. data/lib/bio/io/biosql/bioentry_dbxref.rb +11 -0
  84. data/lib/bio/io/biosql/bioentry_path.rb +12 -0
  85. data/lib/bio/io/biosql/bioentry_qualifier_value.rb +10 -0
  86. data/lib/bio/io/biosql/bioentry_reference.rb +10 -0
  87. data/lib/bio/io/biosql/bioentry_relationship.rb +10 -0
  88. data/lib/bio/io/biosql/biosequence.rb +11 -0
  89. data/lib/bio/io/biosql/comment.rb +7 -0
  90. data/lib/bio/io/biosql/config/database.yml +20 -0
  91. data/lib/bio/io/biosql/dbxref.rb +13 -0
  92. data/lib/bio/io/biosql/dbxref_qualifier_value.rb +12 -0
  93. data/lib/bio/io/biosql/location.rb +32 -0
  94. data/lib/bio/io/biosql/location_qualifier_value.rb +11 -0
  95. data/lib/bio/io/biosql/ontology.rb +10 -0
  96. data/lib/bio/io/biosql/reference.rb +9 -0
  97. data/lib/bio/io/biosql/seqfeature.rb +32 -0
  98. data/lib/bio/io/biosql/seqfeature_dbxref.rb +11 -0
  99. data/lib/bio/io/biosql/seqfeature_path.rb +11 -0
  100. data/lib/bio/io/biosql/seqfeature_qualifier_value.rb +20 -0
  101. data/lib/bio/io/biosql/seqfeature_relationship.rb +11 -0
  102. data/lib/bio/io/biosql/taxon.rb +12 -0
  103. data/lib/bio/io/biosql/taxon_name.rb +9 -0
  104. data/lib/bio/io/biosql/term.rb +27 -0
  105. data/lib/bio/io/biosql/term_dbxref.rb +11 -0
  106. data/lib/bio/io/biosql/term_path.rb +12 -0
  107. data/lib/bio/io/biosql/term_relationship.rb +13 -0
  108. data/lib/bio/io/biosql/term_relationship_term.rb +11 -0
  109. data/lib/bio/io/biosql/term_synonym.rb +10 -0
  110. data/lib/bio/io/das.rb +7 -7
  111. data/lib/bio/io/ddbjxml.rb +57 -0
  112. data/lib/bio/io/ensembl.rb +2 -2
  113. data/lib/bio/io/fetch.rb +28 -14
  114. data/lib/bio/io/flatfile.rb +17 -853
  115. data/lib/bio/io/flatfile/autodetection.rb +545 -0
  116. data/lib/bio/io/flatfile/buffer.rb +237 -0
  117. data/lib/bio/io/flatfile/index.rb +17 -7
  118. data/lib/bio/io/flatfile/indexer.rb +30 -12
  119. data/lib/bio/io/flatfile/splitter.rb +297 -0
  120. data/lib/bio/io/hinv.rb +442 -0
  121. data/lib/bio/io/keggapi.rb +2 -2
  122. data/lib/bio/io/ncbirest.rb +733 -0
  123. data/lib/bio/io/pubmed.rb +34 -80
  124. data/lib/bio/io/registry.rb +2 -2
  125. data/lib/bio/io/sql.rb +178 -357
  126. data/lib/bio/io/togows.rb +458 -0
  127. data/lib/bio/location.rb +106 -11
  128. data/lib/bio/pathway.rb +120 -14
  129. data/lib/bio/reference.rb +115 -101
  130. data/lib/bio/sequence.rb +164 -183
  131. data/lib/bio/sequence/adapter.rb +108 -0
  132. data/lib/bio/sequence/common.rb +22 -45
  133. data/lib/bio/sequence/compat.rb +2 -2
  134. data/lib/bio/sequence/dblink.rb +54 -0
  135. data/lib/bio/sequence/format.rb +254 -77
  136. data/lib/bio/sequence/format_raw.rb +23 -0
  137. data/lib/bio/shell.rb +3 -1
  138. data/lib/bio/shell/core.rb +2 -2
  139. data/lib/bio/shell/plugin/entry.rb +33 -4
  140. data/lib/bio/shell/plugin/ncbirest.rb +64 -0
  141. data/lib/bio/shell/plugin/togows.rb +40 -0
  142. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/bioruby_generator.rb +0 -0
  143. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/_classes.rhtml +0 -0
  144. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/_log.rhtml +0 -0
  145. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/_methods.rhtml +0 -0
  146. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/_modules.rhtml +0 -0
  147. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/_variables.rhtml +0 -0
  148. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby-bg.gif +0 -0
  149. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby-gem.png +0 -0
  150. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby-link.gif +0 -0
  151. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby.css +0 -0
  152. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby.rhtml +0 -0
  153. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby_controller.rb +0 -0
  154. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/bioruby_helper.rb +0 -0
  155. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/commands.rhtml +0 -0
  156. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/history.rhtml +0 -0
  157. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/index.rhtml +0 -0
  158. data/lib/bio/shell/rails/vendor/plugins/{generators → bioruby/generators}/bioruby/templates/spinner.gif +0 -0
  159. data/lib/bio/tree.rb +4 -2
  160. data/lib/bio/util/color_scheme.rb +2 -2
  161. data/lib/bio/util/contingency_table.rb +2 -2
  162. data/lib/bio/util/restriction_enzyme.rb +2 -2
  163. data/lib/bio/util/restriction_enzyme/single_strand.rb +6 -5
  164. data/lib/bio/version.rb +25 -0
  165. data/rdoc.zsh +8 -0
  166. data/sample/any2fasta.rb +0 -0
  167. data/sample/biofetch.rb +0 -0
  168. data/sample/dbget +0 -0
  169. data/sample/demo_sequence.rb +158 -0
  170. data/sample/enzymes.rb +0 -0
  171. data/sample/fasta2tab.rb +0 -0
  172. data/sample/fastagrep.rb +72 -0
  173. data/sample/fastasort.rb +54 -0
  174. data/sample/fsplit.rb +0 -0
  175. data/sample/gb2fasta.rb +2 -3
  176. data/sample/gb2tab.rb +0 -0
  177. data/sample/gbtab2mysql.rb +0 -0
  178. data/sample/genes2nuc.rb +0 -0
  179. data/sample/genes2pep.rb +0 -0
  180. data/sample/genes2tab.rb +0 -0
  181. data/sample/genome2rb.rb +0 -0
  182. data/sample/genome2tab.rb +0 -0
  183. data/sample/goslim.rb +0 -0
  184. data/sample/gt2fasta.rb +0 -0
  185. data/sample/na2aa.rb +34 -0
  186. data/sample/pmfetch.rb +0 -0
  187. data/sample/pmsearch.rb +0 -0
  188. data/sample/ssearch2tab.rb +0 -0
  189. data/sample/tfastx2tab.rb +0 -0
  190. data/sample/vs-genes.rb +0 -0
  191. data/setup.rb +1596 -0
  192. data/test/data/blast/blastp-multi.m7 +188 -0
  193. data/test/data/command/echoarg2.bat +1 -0
  194. data/test/data/paml/codeml/control_file.txt +30 -0
  195. data/test/data/paml/codeml/output.txt +78 -0
  196. data/test/data/paml/codeml/rates +217 -0
  197. data/test/data/rpsblast/misc.rpsblast +193 -0
  198. data/test/data/soft/GDS100_partial.soft +0 -0
  199. data/test/data/soft/GSE3457_family_partial.soft +0 -0
  200. data/test/functional/bio/appl/test_pts1.rb +115 -0
  201. data/test/functional/bio/io/test_ensembl.rb +123 -80
  202. data/test/functional/bio/io/test_togows.rb +267 -0
  203. data/test/functional/bio/sequence/test_output_embl.rb +51 -0
  204. data/test/functional/bio/test_command.rb +301 -0
  205. data/test/runner.rb +17 -1
  206. data/test/unit/bio/appl/blast/test_ncbioptions.rb +112 -0
  207. data/test/unit/bio/appl/blast/test_report.rb +753 -35
  208. data/test/unit/bio/appl/blast/test_rpsblast.rb +398 -0
  209. data/test/unit/bio/appl/paml/codeml/test_rates.rb +45 -0
  210. data/test/unit/bio/appl/paml/codeml/test_report.rb +45 -0
  211. data/test/unit/bio/appl/paml/test_codeml.rb +174 -0
  212. data/test/unit/bio/appl/test_blast.rb +135 -4
  213. data/test/unit/bio/appl/test_fasta.rb +2 -2
  214. data/test/unit/bio/appl/test_pts1.rb +1 -64
  215. data/test/unit/bio/db/embl/test_common.rb +15 -15
  216. data/test/unit/bio/db/embl/test_embl.rb +4 -4
  217. data/test/unit/bio/db/embl/test_embl_rel89.rb +5 -5
  218. data/test/unit/bio/db/embl/test_embl_to_bioseq.rb +203 -0
  219. data/test/unit/bio/db/embl/test_sptr.rb +38 -1
  220. data/test/unit/bio/db/pdb/test_pdb.rb +2 -2
  221. data/test/unit/bio/db/test_gff.rb +1151 -25
  222. data/test/unit/bio/db/test_medline.rb +127 -0
  223. data/test/unit/bio/db/test_nexus.rb +5 -1
  224. data/test/unit/bio/db/test_prosite.rb +4 -4
  225. data/test/unit/bio/io/flatfile/test_autodetection.rb +375 -0
  226. data/test/unit/bio/io/flatfile/test_buffer.rb +251 -0
  227. data/test/unit/bio/io/flatfile/test_splitter.rb +369 -0
  228. data/test/unit/bio/io/test_ddbjxml.rb +8 -3
  229. data/test/unit/bio/io/test_fastacmd.rb +5 -5
  230. data/test/unit/bio/io/test_flatfile.rb +357 -106
  231. data/test/unit/bio/io/test_soapwsdl.rb +2 -2
  232. data/test/unit/bio/io/test_togows.rb +161 -0
  233. data/test/unit/bio/sequence/test_common.rb +210 -11
  234. data/test/unit/bio/sequence/test_compat.rb +3 -3
  235. data/test/unit/bio/sequence/test_dblink.rb +58 -0
  236. data/test/unit/bio/sequence/test_na.rb +2 -2
  237. data/test/unit/bio/test_command.rb +111 -50
  238. data/test/unit/bio/test_feature.rb +29 -1
  239. data/test/unit/bio/test_location.rb +566 -6
  240. data/test/unit/bio/test_pathway.rb +91 -65
  241. data/test/unit/bio/test_reference.rb +67 -13
  242. data/test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb +3 -3
  243. data/test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb +3 -3
  244. data/test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb +3 -3
  245. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb +4 -3
  246. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb +3 -3
  247. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb +3 -3
  248. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb +3 -3
  249. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb +3 -3
  250. data/test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb +3 -3
  251. data/test/unit/bio/util/restriction_enzyme/test_analysis.rb +3 -3
  252. data/test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb +4 -4
  253. data/test/unit/bio/util/restriction_enzyme/test_double_stranded.rb +3 -3
  254. data/test/unit/bio/util/restriction_enzyme/test_single_strand.rb +3 -3
  255. data/test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb +3 -3
  256. data/test/unit/bio/util/restriction_enzyme/test_string_formatting.rb +3 -3
  257. data/test/unit/bio/util/test_restriction_enzyme.rb +3 -3
  258. metadata +202 -167
  259. data/test/unit/bio/appl/blast/test_xmlparser.rb +0 -388
@@ -5,68 +5,17 @@
5
5
  # Moses Hohman <mmhohman@northwestern.edu>
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_pathway.rb,v 1.5 2007/04/05 23:35:42 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
11
  require 'pathname'
12
- libpath = Pathname.new(File.join(File.dirname(__FILE__), [".."]*2, "lib")).cleanpath.to_s
12
+ libpath = Pathname.new(File.join(File.dirname(__FILE__), [".."]*3, "lib")).cleanpath.to_s
13
13
  $:.unshift(libpath) unless $:.include?(libpath)
14
14
 
15
15
  require 'test/unit'
16
16
  require 'bio/pathway'
17
17
 
18
- class Float
19
- NaN = 0/0.0
20
- Infinity = 1/0.0
21
- end
22
-
23
- class Array
24
- def sum
25
- inject { | sum, val | sum += val }
26
- end
27
- end
28
-
29
18
  module Bio
30
- class Pathway
31
- # bug in subgraph: does not include nodes w/o edges
32
- def subgraph(list = nil)
33
- if list
34
- @label.clear
35
- list.each { |node| @label[node] = true }
36
- end
37
- sub_graph = Pathway.new([], @undirected)
38
- @graph.each do |from, hash|
39
- next unless @label[from]
40
- sub_graph.graph[from] = {}
41
- hash.each do |to, relation|
42
- next unless @label[to]
43
- sub_graph.graph[from][to] = relation
44
- end
45
- end
46
- sub_graph
47
- end
48
-
49
- # bug in cliquishness: subgraph of neighbors does not include nodes w/o edges
50
- def subgraph_adjacency_matrix(nodes)
51
- adjacency_matrix = to_matrix(0).to_a
52
- node_indices = nodes.collect { |x| @index[x] }
53
- subgraph = adjacency_matrix.values_at(*(node_indices))
54
- subgraph.collect! { |row| row.values_at(*(node_indices)) }
55
- end
56
-
57
- # bug in cliquishness: subgraph of neighbors does not include nodes w/o edges
58
- # Throws exception if graph is directed
59
- def cliquishness(node)
60
- raise "Cannot calculate cliquishness in directed graph" if not undirected?
61
- neighbors = @graph[node].keys
62
- return Float::NaN if neighbors.size==0
63
- return 1 if neighbors.size==1
64
- # divide by two to avoid double-counting
65
- num_neighbor_edges = subgraph_adjacency_matrix(neighbors).flatten.sum/2
66
- num_complete_edges = neighbors.size*(neighbors.size-1)/2
67
- num_neighbor_edges.to_f / num_complete_edges.to_f
68
- end
69
- end
70
19
 
71
20
  class TestMyGraph < Test::Unit::TestCase
72
21
  def test_cliquishness
@@ -82,7 +31,10 @@ module Bio
82
31
  assert_equal(0, graph.cliquishness(1), "1's cliquishness wrong")
83
32
  assert_equal(1, graph.cliquishness(2), "2's cliquishness wrong")
84
33
  assert_in_delta(0.33, graph.cliquishness(3), 0.01, "3's cliquishness wrong")
85
- assert_equal(1, graph.cliquishness(4), "4's cliquishness wrong")
34
+ # Because cliquishness (clustering coefficient) for a node
35
+ # that has only one neighbor node is undefined, test for
36
+ # node 4 is commented out.
37
+ #assert_equal(1, graph.cliquishness(4), "4's cliquishness wrong")
86
38
  assert_equal(0, graph.cliquishness(5), "5's cliquishness wrong")
87
39
  assert_in_delta(0.16, graph.cliquishness(6), 0.01, "6's cliquishness wrong")
88
40
  end
@@ -104,6 +56,8 @@ module Bio
104
56
  end
105
57
 
106
58
  class TestSampleGraph < Test::Unit::TestCase
59
+
60
+ TheInfinity = 1/0.0
107
61
 
108
62
  # Sample Graph :
109
63
  # +----------------+
@@ -139,6 +93,54 @@ module Bio
139
93
  end
140
94
 
141
95
  def test_to_matrix
96
+ matrix = @graph.to_matrix(0)
97
+ index = @graph.index
98
+ # expected values
99
+ source_matrix =
100
+ [
101
+ #v w x y z q r s t u
102
+ [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], #v
103
+ [0, 0, 0, 0, 0, 0, 0, 1, 0, 0], #w
104
+ [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], #x
105
+ [0, 0, 0, 0, 0, 1, 0, 0, 0, 0], #y
106
+ [0, 0, 1, 0, 0, 0, 0, 0, 0, 0], #z
107
+ [0, 1, 0, 0, 0, 0, 0, 1, 1, 0], #q
108
+ [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], #r
109
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], #s
110
+ [0, 0, 1, 1, 0, 0, 0, 0, 0, 0], #t
111
+ [0, 0, 0, 1, 0, 0, 0, 0, 0, 0] #u
112
+ ]
113
+ source_index = {
114
+ "v"=>0, "w"=>1, "x"=>2, "y"=>3, "z"=>4,
115
+ "q"=>5, "r"=>6, "s"=>7, "t"=>8, "u"=>9
116
+ }
117
+ # test index size
118
+ assert_equal(10, source_index.size)
119
+ # test index keys
120
+ assert_equal(source_index.keys.sort, index.keys.sort)
121
+ # test index values
122
+ assert_equal(source_index.values.sort, index.values.sort)
123
+ # prepare expected matrix
124
+ ary = Array.new(index.size)
125
+ ary.collect! { |a| Array.new(index.size) }
126
+ index.each do |row_k, row_v|
127
+ src_row = source_index[row_k]
128
+ index.each do |col_k, col_v|
129
+ src_col = source_index[col_k]
130
+ ary[row_v][col_v] = source_matrix[src_row][src_col]
131
+ end
132
+ end
133
+ expected_matrix = Matrix.rows(ary)
134
+ # test the matrix
135
+ assert_equal(expected_matrix, matrix, "matrix wrong")
136
+ end
137
+
138
+ def test_to_matrix_fixed_index
139
+ # begin workaround removing depencency to order of Hash#each
140
+ %w( v w x y z q r s t u ).each_with_index do |x, i|
141
+ @graph.index[x] = i
142
+ end
143
+ # end workaround removing depencency to order of Hash#each
142
144
  assert_equal(Matrix[
143
145
  [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
144
146
  [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
@@ -155,6 +157,11 @@ module Bio
155
157
  end
156
158
 
157
159
  def test_dump_matrix
160
+ # begin workaround removing depencency to order of Hash#each
161
+ %w( v w x y z q r s t u ).each_with_index do |x, i|
162
+ @graph.index[x] = i
163
+ end
164
+ # end workaround removing depencency to order of Hash#each
158
165
  dumped = "[" +
159
166
  "# v, w, x, y, z, q, r, s, t, u\n" +
160
167
  " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n" + # v
@@ -171,6 +178,11 @@ module Bio
171
178
  end
172
179
 
173
180
  def test_dump_list
181
+ # begin workaround removing depencency to order of Hash#each
182
+ %w( v w x y z q r s t u ).each_with_index do |x, i|
183
+ @graph.index[x] = i
184
+ end
185
+ # end workaround removing depencency to order of Hash#each
174
186
  dumped = "v => w (1)\n" +
175
187
  "w => s (1)\n" +
176
188
  "x => z (1)\n" +
@@ -187,22 +199,34 @@ module Bio
187
199
  def test_extract_subgraph_by_label
188
200
  hash = { 'q' => "L1", 's' => "L2", 'v' => "L3", 'w' => "L4" }
189
201
  @graph.label = hash
202
+ subgraph = @graph.subgraph
203
+ # begin workaround removing depencency to order of Hash#each
204
+ %w( v w q s ).each_with_index do |x, i|
205
+ subgraph.index[x] = i
206
+ end
207
+ # end workaround removing depencency to order of Hash#each
190
208
  dumped =
191
209
  "v => w (1)\n" +
192
210
  "w => s (1)\n" +
193
211
  "q => w (1), s (1)\n" +
194
212
  "s => v (1)\n"
195
- assert_equal(dumped, @graph.subgraph.dump_list)
213
+ assert_equal(dumped, subgraph.dump_list)
196
214
  end
197
215
 
198
216
  def test_extract_subgraph_by_list
217
+ subgraph = @graph.subgraph(['q', 't', 'x', 'y', 'z'])
218
+ # begin workaround removing depencency to order of Hash#each
219
+ %w( x y z q t ).each_with_index do |x, i|
220
+ subgraph.index[x] = i
221
+ end
222
+ # end workaround removing depencency to order of Hash#each
199
223
  dumped =
200
224
  "x => z (1)\n" +
201
225
  "y => q (1)\n" +
202
226
  "z => x (1)\n" +
203
227
  "q => t (1)\n" +
204
228
  "t => x (1), y (1)\n"
205
- assert_equal(dumped, @graph.subgraph(['q', 't', 'x', 'y', 'z']).dump_list)
229
+ assert_equal(dumped, subgraph.dump_list)
206
230
  end
207
231
 
208
232
  def test_extract_subgraph_retains_disconnected_nodes
@@ -221,10 +245,6 @@ module Bio
221
245
  # v | | v |
222
246
  # (v)----->(w)<---+ (z)----+
223
247
 
224
- def test_cliquishness_raises_exception_for_directed_graph
225
- assert_raises (RuntimeError) { @graph.cliquishness('q') }
226
- end
227
-
228
248
  def test_undirected_cliquishness
229
249
  @graph.undirected
230
250
  assert_in_delta(0.33, @graph.cliquishness('q'), 0.01)
@@ -277,7 +297,13 @@ module Bio
277
297
  end
278
298
 
279
299
  def test_depth_first_search
280
- timestamp, tree, back, cross, forward = @graph.depth_first_search
300
+ # fixing node order to aviod dependency of Hash#each_key
301
+ %w( v w x y z q r s t u ).each_with_index do |x, i|
302
+ @graph.index[x] = i
303
+ end
304
+ # exec dfs
305
+ timestamp, tree, back, cross, forward =
306
+ @graph.depth_first_search
281
307
  assert_equal({
282
308
  "v"=>[1, 6],
283
309
  "w"=>[2, 5],
@@ -329,10 +355,10 @@ module Bio
329
355
  "y"=>2,
330
356
  "z"=>3,
331
357
  "q"=>0,
332
- "r"=>Float::Infinity,
358
+ "r"=>TheInfinity,
333
359
  "s"=>1,
334
360
  "t"=>1,
335
- "u"=>Float::Infinity}, distances, "distances wrong")
361
+ "u"=>TheInfinity}, distances, "distances wrong")
336
362
  assert_equal({
337
363
  "v"=>"s",
338
364
  "w"=>"q",
@@ -355,10 +381,10 @@ module Bio
355
381
  "y"=>2,
356
382
  "z"=>3,
357
383
  "q"=>0,
358
- "r"=>Float::Infinity,
384
+ "r"=>TheInfinity,
359
385
  "s"=>1,
360
386
  "t"=>1,
361
- "u"=>Float::Infinity}, distances, "distances wrong")
387
+ "u"=>TheInfinity}, distances, "distances wrong")
362
388
  assert_equal({
363
389
  "v"=>"s",
364
390
  "w"=>"q",
@@ -5,7 +5,7 @@
5
5
  # Mitsuteru C. Nakao <n@bioruby.org>
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_reference.rb,v 1.3 2007/04/05 23:35:42 trevor Exp $
8
+ # $Id: test_reference.rb,v 1.3.2.2 2008/06/17 12:24:41 ngoto Exp $
9
9
  #
10
10
 
11
11
  require 'pathname'
@@ -14,6 +14,7 @@ $:.unshift(libpath) unless $:.include?(libpath)
14
14
 
15
15
  require 'test/unit'
16
16
  require 'bio/reference'
17
+ require 'bio/compat/references'
17
18
 
18
19
 
19
20
  module Bio
@@ -90,7 +91,7 @@ module Bio
90
91
  end
91
92
 
92
93
  def test_format_endnote
93
- str = "%0 Journal Article\n%A Hoge, J.P.\n%A Fuga, F.B.\n%D 2001\n%T Title of the study.\n%J Theor. J. Hoge\n%V 12\n%N 3\n%P 123-145\n%M 12345678\n%U http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=12345678\n%X Hoge fuga. hoge fuga.\n%K Hoge\n%+ Tokyo"
94
+ str = "%0 Journal Article\n%A Hoge, J.P.\n%A Fuga, F.B.\n%D 2001\n%T Title of the study.\n%J Theor. J. Hoge\n%V 12\n%N 3\n%P 123-145\n%M 12345678\n%U http://example.com\n%X Hoge fuga. hoge fuga.\n%K Hoge\n%+ Tokyo"
94
95
  assert_equal(str, @obj.format('endnote'))
95
96
  assert_equal(str, @obj.endnote)
96
97
  end
@@ -102,21 +103,47 @@ module Bio
102
103
  end
103
104
 
104
105
  def test_format_bibtex
105
- str =<<END
106
- @article{PMID:12345678,
107
- author = {Hoge, J.P. and Fuga, F.B.},
108
- title = {Title of the study.},
109
- journal = {Theor. J. Hoge},
110
- year = {2001},
111
- volume = {12},
112
- number = {3},
113
- pages = {123--145},
114
- }
115
- END
106
+ str =<<__END__
107
+ @article{PMID:12345678,
108
+ author = {Hoge, J.P. and Fuga, F.B.},
109
+ title = {Title of the study.},
110
+ journal = {Theor. J. Hoge},
111
+ year = {2001},
112
+ volume = {12},
113
+ number = {3},
114
+ pages = {123--145},
115
+ url = {http://example.com},
116
+ }
117
+ __END__
116
118
  assert_equal(str, @obj.format('bibtex'))
117
119
  assert_equal(str, @obj.bibtex)
118
120
  end
119
121
 
122
+ def test_format_bibtex_with_arguments
123
+ str =<<__END__
124
+ @inproceedings{YourArticle,
125
+ author = {Hoge, J.P. and Fuga, F.B.},
126
+ title = {Title of the study.},
127
+ year = {2001},
128
+ volume = {12},
129
+ number = {3},
130
+ pages = {123--145},
131
+ booktitle = {Theor. J. Hoge},
132
+ month = {December},
133
+ }
134
+ __END__
135
+ assert_equal(str, @obj.format('bibtex', 'inproceedings', 'YourArticle',
136
+ { 'journal' => false,
137
+ 'url' => false,
138
+ 'booktitle' => @obj.journal,
139
+ 'month' => 'December'}))
140
+ assert_equal(str, @obj.bibtex('inproceedings', 'YourArticle',
141
+ { 'journal' => false,
142
+ 'url' => false,
143
+ 'booktitle' => @obj.journal,
144
+ 'month' => 'December'}))
145
+ end
146
+
120
147
  def test_format_rd
121
148
  str = "== Title of the study.\n\n* Hoge, J.P. and Fuga, F.B.\n\n* Theor. J. Hoge 2001 12:123-145 [PMID:12345678]\n\nHoge fuga. hoge fuga."
122
149
  assert_equal(str, @obj.format('rd'))
@@ -172,15 +199,42 @@ END
172
199
 
173
200
  end
174
201
 
202
+ class NullStderr
203
+ def initialize
204
+ @log = []
205
+ end
206
+
207
+ def write(*arg)
208
+ #p arg
209
+ @log.push([ :write, *arg ])
210
+ nil
211
+ end
212
+
213
+ def method_missing(*arg)
214
+ #p arg
215
+ @log.push arg
216
+ nil
217
+ end
218
+ end
219
+
175
220
  class TestReferences < Test::Unit::TestCase
176
221
 
177
222
  def setup
223
+ # To suppress warning messages, $stderr is replaced by dummy object.
224
+ @stderr_orig = $stderr
225
+ $stderr = NullStderr.new
226
+
178
227
  hash = {}
179
228
  ary = [Bio::Reference.new(hash),
180
229
  Bio::Reference.new(hash)]
181
230
  @obj = Bio::References.new(ary)
182
231
  end
183
232
 
233
+ def teardown
234
+ # bring back $stderr
235
+ $stderr = @stderr_orig
236
+ end
237
+
184
238
  def test_append
185
239
  hash = {}
186
240
  ref = Bio::Reference.new(hash)
@@ -5,7 +5,7 @@
5
5
  # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_calculated_cuts.rb,v 1.4 2007/04/05 23:35:44 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
11
  require 'pathname'
@@ -19,7 +19,7 @@ require 'bio/util/restriction_enzyme/range/cut_ranges'
19
19
  require 'bio/util/restriction_enzyme/range/horizontal_cut_range'
20
20
  require 'bio/util/restriction_enzyme/range/vertical_cut_range'
21
21
 
22
- module Bio #:nodoc:
22
+ module Bio; module TestRestrictionEnzyme #:nodoc:
23
23
 
24
24
  class TestAnalysisCalculatedCuts < Test::Unit::TestCase #:nodoc:
25
25
 
@@ -296,4 +296,4 @@ class TestAnalysisCalculatedCuts < Test::Unit::TestCase #:nodoc:
296
296
 
297
297
  end
298
298
 
299
- end
299
+ end; end
@@ -5,7 +5,7 @@
5
5
  # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_cut_ranges.rb,v 1.2 2007/04/05 23:35:44 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
11
  require 'pathname'
@@ -21,7 +21,7 @@ require 'bio/util/restriction_enzyme/range/horizontal_cut_range'
21
21
  require 'bio/util/restriction_enzyme/range/vertical_cut_range'
22
22
  require 'bio/util/restriction_enzyme/range/cut_ranges'
23
23
 
24
- module Bio #:nodoc:
24
+ module Bio; module TestRestrictionEnzyme #:nodoc:
25
25
 
26
26
  class TestCutRanges < Test::Unit::TestCase #:nodoc:
27
27
 
@@ -100,4 +100,4 @@ class TestCutRanges < Test::Unit::TestCase #:nodoc:
100
100
  assert_equal(false, @obj_3.include?(6))
101
101
  end
102
102
  end
103
- end
103
+ end; end
@@ -5,7 +5,7 @@
5
5
  # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
6
  # License:: The Ruby License
7
7
  #
8
- # $Id: test_sequence_range.rb,v 1.4 2007/04/05 23:35:44 trevor Exp $
8
+ # $Id:$
9
9
  #
10
10
 
11
11
  require 'pathname'
@@ -21,7 +21,7 @@ require 'bio/util/restriction_enzyme/range/horizontal_cut_range'
21
21
  require 'bio/util/restriction_enzyme/range/vertical_cut_range'
22
22
  require 'bio/util/restriction_enzyme/range/cut_ranges'
23
23
 
24
- module Bio #:nodoc:
24
+ module Bio; module TestRestrictionEnzyme #:nodoc:
25
25
 
26
26
  class TestAnalysisSequenceRange < Test::Unit::TestCase #:nodoc:
27
27
 
@@ -237,4 +237,4 @@ class TestAnalysisSequenceRange < Test::Unit::TestCase #:nodoc:
237
237
  end
238
238
 
239
239
  end
240
- end
240
+ end; end