]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_ruby/test/maasha/seq/test_assemble.rb
fixed bug in assemble_pairs
[biopieces.git] / code_ruby / test / maasha / seq / test_assemble.rb
index cf05ca839fca4fb8bcdb0521b0d62b4e9eea6b83..93174085f4509767ccb50c047510a73f7f981108 100755 (executable)
@@ -8,34 +8,66 @@ require 'pp'
 
 class TestAssemble < Test::Unit::TestCase 
   test "Assemble.pair without overlap returns nil" do
-    assert_nil(Assemble.pair(Seq.new("test1", "aaaa"), Seq.new("test2", "tttt")))
+    assert_nil(Assemble.pair(Seq.new(seq: "aaaa"), Seq.new(seq: "tttt")))
   end
 
-  test "Assemble.pair with overlap returns the correctly" do
-    assert_equal("atcgatc", Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "gatc")).seq)
-    assert_equal("atcgat",  Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "cgat")).seq)
-    assert_equal("atcga",   Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "tcga")).seq)
-    assert_equal("atcg",    Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "atcg")).seq)
+  test "Assemble.pair with overlap returns correctly" do
+    assert_equal("atcGatc", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "gatc")).seq)
+    assert_equal("atCGat",  Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "cgat")).seq)
+    assert_equal("aTCGa",   Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "tcga")).seq)
+    assert_equal("ATCG",    Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "atcg")).seq)
+  end
+
+  test "Assemble.pair with first sequence longer than second and terminal overlap returns correctly" do
+    e1 = Seq.new(seq_name: "t1", seq: "AGGCGT")
+    e2 = Seq.new(seq_name: "t2", seq: "GT")
+    a = Assemble.pair(e1, e2)
+    assert_equal("t1:overlap=2:hamming=0", a.seq_name)
+    assert_equal("aggcGT", a.seq)
+  end
+
+  test "Assemble.pair with first sequence longer than second and internal overlap returns correctly" do
+    e1 = Seq.new(seq_name: "t1", seq: "AGGCGT")
+    e2 = Seq.new(seq_name: "t2", seq: "GC")
+    a = Assemble.pair(e1, e2)
+    assert_equal("t1:overlap=2:hamming=0", a.seq_name)
+    assert_equal("agGCgt", a.seq)
+  end
+
+  test "Assemble.pair with first sequence longer than second and initial overlap returns correctly" do
+    e1 = Seq.new(seq_name: "t1", seq: "GTCAGA")
+    e2 = Seq.new(seq_name: "t2", seq: "GT")
+    a = Assemble.pair(e1, e2)
+    assert_equal("t1:overlap=2:hamming=0", a.seq_name)
+    assert_equal("GTcaga", a.seq)
+  end
+
+  test "Assemble.pair with first sequence shorter than second and initial overlap returns correctly" do
+    e1 = Seq.new(seq_name: "t1", seq: "AG")
+    e2 = Seq.new(seq_name: "t2", seq: "AGTCAG")
+    a = Assemble.pair(e1, e2)
+    assert_equal("t1:overlap=2:hamming=0", a.seq_name)
+    assert_equal("AGtcag", a.seq)
   end
 
   test "Assemble.pair with overlap and overlap_min returns correctly" do
-    assert_nil(Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "gatc"), :overlap_min => 2))
-    assert_equal("atcgat", Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "cgat"), :overlap_min => 2).seq)
+    assert_nil(Assemble.pair(Seq.new(seq: "atcg"), Seq.new(seq: "gatc"), :overlap_min => 2))
+    assert_equal("atCGat", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "cgat"), :overlap_min => 2).seq)
   end
 
   test "Assemble.pair with overlap and overlap_max returns correctly" do
-    assert_equal("atcga", Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "tcga"), :overlap_max => 3).seq)
-    assert_nil(Assemble.pair(Seq.new("test1", "atcg"), Seq.new("test2", "atcg"), :overlap_max => 3))
+    assert_equal("aTCGa", Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "tcga"), :overlap_max => 3).seq)
+    assert_nil(Assemble.pair(Seq.new(seq_name: "t1", seq: "atcg"), Seq.new(seq_name: "t2", seq: "atcg"), :overlap_max => 3))
   end
 
   test "Assemble.pair with overlap returns correct quality" do
-    assert_equal("?", Assemble.pair(Seq.new("test1", "a", :dna, "I"), Seq.new("test2", "a", :dna, "5")).qual)
-    assert_equal("GH??43", Assemble.pair(Seq.new("test1", "atcg", :dna, "GHII"), Seq.new("test2", "cgat", :dna, "5543")).qual)
-    assert_equal("I???5", Assemble.pair(Seq.new("test1", "atcg", :dna, "IIII"), Seq.new("test2", "tcga", :dna, "5555")).qual)
+    assert_equal("?", Assemble.pair(Seq.new(seq_name: "t1", seq: "a", qual: "I"), Seq.new(seq_name: "t2", seq: "a", qual: "5")).qual)
+    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)
+    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)
   end
 
   test "Assemble.pair with mismatch returns the highest scoring" do
-    assert_equal("atcga", Assemble.pair(Seq.new("t1", "atcga", :dna, "IIIII"), Seq.new("t2", "attga", :dna, "55555"), :mismatches_max => 20).seq)
-    assert_equal("attga", Assemble.pair(Seq.new("t1", "atcga", :dna, "55555"), Seq.new("t2", "attga", :dna, "IIIII"), :mismatches_max => 20).seq)
+    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)
+    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)
   end
 end