PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/test/unit/bio/util/test_sirna.rb

https://github.com/nmb/bioruby
Ruby | 247 lines | 187 code | 47 blank | 13 comment | 0 complexity | d2513018f7eb14ede9b5fcfb4afdf527 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. #
  2. # test/unit/bio/util/test_sirna.rb - Unit test for Bio::SiRNA.
  3. #
  4. # Copyright:: Copyright (C) 2005 Mitsuteru C. Nakao <n@bioruby.org>
  5. # License:: The Ruby License
  6. #
  7. # $Id:$
  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. # libraries needed for the tests
  14. require 'test/unit'
  15. require 'bio/util/sirna'
  16. module Bio
  17. RANDOM_SEQ = "ctttcggtgcggacgtaaggagtattcctgtactaactaaatggagttaccaaggtaggaccacggtaaaatcgcgagcagcctcgatacaagcgttgtgctgaagcctatcgctgacctgaaggggggcgtaagcaaggcagcggttcaccttcatcagttctgctagaaatcacctagcaccccttatcatccgcgtcaggtccattacccttcccattatgtcggactcaattgaggtgcttgtgaacttatacttgaatccaaaacgtctactgtattggcgactaaaaagcacttgtggggagtcggcttgatcagcctccattagggccaggcactgaggatcatccagttaacgtcagattcaaggtctggctcttagcactcggagttgcac"
  18. class TestSiRNANew < Test::Unit::TestCase
  19. def test_new
  20. naseq = Bio::Sequence::NA.new(RANDOM_SEQ)
  21. assert(Bio::SiRNA.new(naseq))
  22. assert(Bio::SiRNA.new(naseq, 21))
  23. assert(Bio::SiRNA.new(naseq, 21, 60.0))
  24. assert(Bio::SiRNA.new(naseq, 21, 60.0, 40.0))
  25. assert_raise(ArgumentError) { Bio::SiRNA.new(naseq, 21, 60.0, 40.0, 10.0) }
  26. end
  27. end
  28. class TestSiRNA < Test::Unit::TestCase
  29. def setup
  30. naseq = Bio::Sequence::NA.new(RANDOM_SEQ)
  31. @obj = Bio::SiRNA.new(naseq)
  32. end
  33. def test_antisense_size
  34. assert_equal(21, @obj.antisense_size)
  35. end
  36. def test_max_gc_percent
  37. assert_equal(60.0, @obj.max_gc_percent)
  38. end
  39. def test_min_gc_percent
  40. assert_equal(40.0, @obj.min_gc_percent)
  41. end
  42. def test_uitei?
  43. target = "aaGaa"
  44. assert_equal(false, @obj.uitei?(target))
  45. target = "aaAaa"
  46. assert_equal(false, @obj.uitei?(target))
  47. target = "G" * 9
  48. assert_equal(false, @obj.uitei?(target))
  49. end
  50. def test_reynolds?
  51. target = "G" * 9
  52. assert_equal(false, @obj.reynolds?(target))
  53. target = "aaaaAaaaaaaUaaAaaaaaAaa"
  54. assert_equal(true, @obj.reynolds?(target))
  55. end
  56. def test_uitei
  57. assert(@obj.uitei)
  58. end
  59. def test_reynolds
  60. assert(@obj.reynolds)
  61. end
  62. def test_design
  63. assert(@obj.design)
  64. end
  65. def test_design_uitei
  66. assert(@obj.design('uitei'))
  67. end
  68. def test_design_reynolds
  69. assert(@obj.design('reynolds'))
  70. end
  71. end
  72. class TestSiRNAPairNew < Test::Unit::TestCase
  73. def test_new
  74. target = ""
  75. sense = ""
  76. antisense = ""
  77. start = 0
  78. stop = 1
  79. rule = 'rule'
  80. gc_percent = 60.0
  81. assert_raise(ArgumentError) { Bio::SiRNA::Pair.new(target, sense, antisense, start, stop, rule) }
  82. assert(Bio::SiRNA::Pair.new(target, sense, antisense, start, stop, rule, gc_percent))
  83. assert_raise(ArgumentError) { Bio::SiRNA::Pair.new(target, sense, antisense, start, stop, rule, gc_percent, "") }
  84. end
  85. end
  86. class TestSiRNAPair < Test::Unit::TestCase
  87. def setup
  88. naseq = Bio::Sequence::NA.new(RANDOM_SEQ)
  89. @obj = Bio::SiRNA.new(naseq).design.first
  90. end
  91. def test_target
  92. assert_equal("gcggacguaaggaguauuccugu", @obj.target)
  93. end
  94. def test_sense
  95. assert_equal("ggacguaaggaguauuccugu", @obj.sense)
  96. end
  97. def test_antisense
  98. assert_equal("aggaauacuccuuacguccgc", @obj.antisense)
  99. end
  100. def test_start
  101. assert_equal(9, @obj.start)
  102. end
  103. def test_stop
  104. assert_equal(32, @obj.stop)
  105. end
  106. def test_rule
  107. assert_equal("uitei", @obj.rule)
  108. end
  109. def test_gc_percent
  110. assert_equal(52.0, @obj.gc_percent)
  111. end
  112. def test_report
  113. report =<<END
  114. ### siRNA
  115. Start: 9
  116. Stop: 32
  117. Rule: uitei
  118. GC %: 52
  119. Target: GCGGACGUAAGGAGUAUUCCUGU
  120. Sense: GGACGUAAGGAGUAUUCCUGU
  121. Antisense: CGCCUGCAUUCCUCAUAAGGA
  122. END
  123. assert_equal(report, @obj.report)
  124. end
  125. end
  126. class TestShRNANew < Test::Unit::TestCase
  127. def test_new
  128. pair = ""
  129. assert(Bio::SiRNA::ShRNA.new(pair))
  130. assert_raise(ArgumentError) { Bio::SiRNA::ShRNA.new }
  131. assert_raise(ArgumentError) { Bio::SiRNA::ShRNA.new(pair, "") }
  132. end
  133. end
  134. class TestShRNA < Test::Unit::TestCase
  135. def setup
  136. naseq = Bio::Sequence::NA.new(RANDOM_SEQ)
  137. sirna = Bio::SiRNA.new(naseq)
  138. pairs = sirna.design
  139. @obj = Bio::SiRNA::ShRNA.new(pairs.first)
  140. end
  141. def test_top_strand
  142. @obj.design
  143. assert_equal("caccggacguaaggaguauuccugugtgtgctgtccacaggaauacuccuuacgucc", @obj.top_strand)
  144. end
  145. def test_top_strand_class
  146. @obj.design
  147. assert_equal(Bio::Sequence::NA, @obj.top_strand.class)
  148. end
  149. def test_top_strand_nil
  150. assert_equal(nil, @obj.top_strand)
  151. end
  152. def test_bottom_strand
  153. @obj.design
  154. assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.bottom_strand)
  155. end
  156. def test_bottom_strand_class
  157. @obj.design
  158. assert_equal(Bio::Sequence::NA, @obj.bottom_strand.class)
  159. end
  160. def test_bottom_strand_nil
  161. assert_equal(nil, @obj.bottom_strand)
  162. end
  163. def test_design
  164. assert(@obj.design)
  165. end
  166. def test_design_BLOCK_IT
  167. assert_raises(NotImplementedError) { @obj.design('BLOCK-IT') }
  168. end
  169. def test_blocK_it
  170. assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it)
  171. end
  172. def test_blocK_it_BLOCK_iT
  173. assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it)
  174. end
  175. def test_blocK_it_BLOCK_IT
  176. assert_raises(NotImplementedError) { @obj.block_it('BLOCK-IT') }
  177. end
  178. def test_blocK_it_piGene
  179. assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it('piGENE'))
  180. end
  181. def test_blocK_it_
  182. assert_raises(NotImplementedError) { @obj.block_it("") }
  183. end
  184. def test_report
  185. report =<<END
  186. ### shRNA
  187. Top strand shRNA (57 nt):
  188. 5'-CACCGGACGUAAGGAGUAUUCCUGUGTGTGCTGTCCACAGGAAUACUCCUUACGUCC-3'
  189. Bottom strand shRNA (57 nt):
  190. 3'-CCUGCAUUCCUCAUAAGGACACACACGACAGGUGUCCUUAUGAGGAAUGCAGGAAAA-5'
  191. END
  192. #@obj.design
  193. @obj.block_it
  194. assert_equal(report, @obj.report)
  195. end
  196. def test_report_before_design
  197. assert_raises(NoMethodError) { @obj.report }
  198. end
  199. end
  200. end