]> git.donarmstrong.com Git - biopieces.git/blob - code_ruby/test/maasha/seq/test_assemble.rb
fixed bug in assemble_pairs
[biopieces.git] / code_ruby / test / maasha / seq / test_assemble.rb
1 #!/usr/bin/env ruby
2 $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
3
4 require 'maasha/seq/assemble'
5 require 'test/unit'
6 require 'test/helper'
7 require 'pp'
8
9 class TestAssemble < Test::Unit::TestCase 
10   test "Assemble.pair without overlap returns nil" do
11     assert_nil(Assemble.pair(Seq.new(seq: "aaaa"), Seq.new(seq: "tttt")))
12   end
13
14   test "Assemble.pair with overlap returns correctly" do
15     assert_equal("atcGatc", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "gatc")).seq)
16     assert_equal("atCGat",  Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "cgat")).seq)
17     assert_equal("aTCGa",   Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "tcga")).seq)
18     assert_equal("ATCG",    Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "atcg")).seq)
19   end
20
21   test "Assemble.pair with first sequence longer than second and terminal overlap returns correctly" do
22     e1 = Seq.new(seq_name: "t1", seq: "AGGCGT")
23     e2 = Seq.new(seq_name: "t2", seq: "GT")
24     a = Assemble.pair(e1, e2)
25     assert_equal("t1:overlap=2:hamming=0", a.seq_name)
26     assert_equal("aggcGT", a.seq)
27   end
28
29   test "Assemble.pair with first sequence longer than second and internal overlap returns correctly" do
30     e1 = Seq.new(seq_name: "t1", seq: "AGGCGT")
31     e2 = Seq.new(seq_name: "t2", seq: "GC")
32     a = Assemble.pair(e1, e2)
33     assert_equal("t1:overlap=2:hamming=0", a.seq_name)
34     assert_equal("agGCgt", a.seq)
35   end
36
37   test "Assemble.pair with first sequence longer than second and initial overlap returns correctly" do
38     e1 = Seq.new(seq_name: "t1", seq: "GTCAGA")
39     e2 = Seq.new(seq_name: "t2", seq: "GT")
40     a = Assemble.pair(e1, e2)
41     assert_equal("t1:overlap=2:hamming=0", a.seq_name)
42     assert_equal("GTcaga", a.seq)
43   end
44
45   test "Assemble.pair with first sequence shorter than second and initial overlap returns correctly" do
46     e1 = Seq.new(seq_name: "t1", seq: "AG")
47     e2 = Seq.new(seq_name: "t2", seq: "AGTCAG")
48     a = Assemble.pair(e1, e2)
49     assert_equal("t1:overlap=2:hamming=0", a.seq_name)
50     assert_equal("AGtcag", a.seq)
51   end
52
53   test "Assemble.pair with overlap and overlap_min returns correctly" do
54     assert_nil(Assemble.pair(Seq.new(seq: "atcg"), Seq.new(seq: "gatc"), :overlap_min => 2))
55     assert_equal("atCGat", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "cgat"), :overlap_min => 2).seq)
56   end
57
58   test "Assemble.pair with overlap and overlap_max returns correctly" do
59     assert_equal("aTCGa", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "tcga"), :overlap_max => 3).seq)
60     assert_nil(Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "atcg"), :overlap_max => 3))
61   end
62
63   test "Assemble.pair with overlap returns correct quality" do
64     assert_equal("?", Assemble.pair(Seq.new(seq_name: "t1", seq: "a", qual: "I"), Seq.new(seq_name: "t2", seq: "a", qual: "5")).qual)
65     assert_equal("GH??43", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg", qual: "GHII"), Seq.new(seq_name: "t2", seq: "cgat", qual: "5543")).qual)
66     assert_equal("I???5", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg", qual: "IIII"), Seq.new(seq_name: "t2", seq: "tcga", qual: "5555")).qual)
67   end
68
69   test "Assemble.pair with mismatch returns the highest scoring" do
70     assert_equal("ATCGA", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcga", qual: "IIIII"), Seq.new(seq_name: "t2", seq: "attga", qual: "55555"), :mismatches_max => 20).seq)
71     assert_equal("ATTGA", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcga", qual: "55555"), Seq.new(seq_name: "t2", seq: "attga", qual: "IIIII"), :mismatches_max => 20).seq)
72   end
73 end