]> git.donarmstrong.com Git - biopieces.git/blob - code_ruby/test/maasha/seq/test_trim.rb
added patscan_trim method to Seq
[biopieces.git] / code_ruby / test / maasha / seq / test_trim.rb
1 #!/usr/bin/env ruby
2 $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
3
4 require 'maasha/seq'
5 require 'test/unit'
6 require 'test/helper'
7 require 'pp'
8
9 class TestTrim < Test::Unit::TestCase 
10   def setup
11     @entry = Seq.new
12   end
13
14   test "Seq.quality_trim with missing seq raises" do
15     @entry.qual = "hhhh"
16     assert_raise(TrimError) { @entry.quality_trim_right(20) }
17     assert_raise(TrimError) { @entry.quality_trim_right!(20) }
18     assert_raise(TrimError) { @entry.quality_trim_left(20) }
19     assert_raise(TrimError) { @entry.quality_trim_left!(20) }
20     assert_raise(TrimError) { @entry.quality_trim(20) }
21     assert_raise(TrimError) { @entry.quality_trim!(20) }
22   end
23
24   test "Seq.quality_trim with missing qual raises" do
25     @entry.seq = "ATCG"
26     assert_raise(TrimError) { @entry.quality_trim_right(20) }
27     assert_raise(TrimError) { @entry.quality_trim_right!(20) }
28     assert_raise(TrimError) { @entry.quality_trim_left(20) }
29     assert_raise(TrimError) { @entry.quality_trim_left!(20) }
30     assert_raise(TrimError) { @entry.quality_trim(20) }
31     assert_raise(TrimError) { @entry.quality_trim!(20) }
32   end
33
34   test "Seq.quality_trim with bad min raises" do
35     @entry.seq  = "ATCG"
36     @entry.qual = "hhhh"
37
38     [-1, 41].each do |min|
39       assert_raise(TrimError) { @entry.quality_trim_right(min) }
40       assert_raise(TrimError) { @entry.quality_trim_right!(min) }
41       assert_raise(TrimError) { @entry.quality_trim_left(min) }
42       assert_raise(TrimError) { @entry.quality_trim_left!(min) }
43       assert_raise(TrimError) { @entry.quality_trim(min) }
44       assert_raise(TrimError) { @entry.quality_trim!(min) }
45     end
46   end
47
48   test "Seq.quality_trim with ok min dont raise" do
49     @entry.seq  = "ATCG"
50     @entry.qual = "hhhh"
51
52     [0, 40].each do |min|
53       assert_nothing_raised { @entry.quality_trim_right(min) }
54       assert_nothing_raised { @entry.quality_trim_right!(min) }
55       assert_nothing_raised { @entry.quality_trim_left(min) }
56       assert_nothing_raised { @entry.quality_trim_left!(min) }
57       assert_nothing_raised { @entry.quality_trim(min) }
58       assert_nothing_raised { @entry.quality_trim!(min) }
59     end
60   end
61
62   test "Seq.quality_trim_right returns correctly" do
63     @entry.seq  = "AAAAATCG"
64     @entry.qual = "IIIIIHGF"
65     new_entry = @entry.quality_trim_right(38)
66     assert_equal("AAAAATC", new_entry.seq) 
67     assert_equal("IIIIIHG", new_entry.qual) 
68     assert_equal("AAAAATCG", @entry.seq) 
69     assert_equal("IIIIIHGF", @entry.qual) 
70   end
71
72   test "Seq.quality_trim_right! returns correctly" do
73     @entry.seq  = "AAAAATCG"
74     @entry.qual = "IIIIIHGF"
75     @entry.quality_trim_right!(38)
76     assert_equal("AAAAATC", @entry.seq) 
77     assert_equal("IIIIIHG", @entry.qual) 
78   end
79
80   test "Seq.quality_trim_right! with all low qual returns correctly" do
81     @entry.seq  = "GCTAAAAA"
82     @entry.qual = "@@@@@@@@"
83     @entry.quality_trim_right!(38)
84     assert_equal("", @entry.seq) 
85     assert_equal("", @entry.qual) 
86   end
87
88   test "Seq.quality_trim_left returns correctly" do
89     @entry.seq  = "GCTAAAAA"
90     @entry.qual = "FGHIIIII"
91     new_entry = @entry.quality_trim_left(38)
92     assert_equal("CTAAAAA", new_entry.seq) 
93     assert_equal("GHIIIII", new_entry.qual) 
94     assert_equal("GCTAAAAA", @entry.seq) 
95     assert_equal("FGHIIIII", @entry.qual) 
96   end
97
98   test "Seq.quality_trim_left! returns correctly" do
99     @entry.seq  = "GCTAAAAA"
100     @entry.qual = "FGHIIIII"
101     @entry.quality_trim_left!(38)
102     assert_equal("CTAAAAA", @entry.seq) 
103     assert_equal("GHIIIII", @entry.qual) 
104   end
105
106   test "Seq.quality_trim_left! with all low qual returns correctly" do
107     @entry.seq  = "GCTAAAAA"
108     @entry.qual = "@@@@@@@@"
109     @entry.quality_trim_left!(38)
110     assert_equal("", @entry.seq) 
111     assert_equal("", @entry.qual) 
112   end
113
114   test "Seq.quality_trim returns correctly" do
115     @entry.seq  = "GCTAAAAAGTG"
116     @entry.qual = "FGHIIIIIHGF"
117     new_entry = @entry.quality_trim(38)
118     assert_equal("CTAAAAAGT", new_entry.seq) 
119     assert_equal("GHIIIIIHG", new_entry.qual) 
120     assert_equal("GCTAAAAAGTG", @entry.seq) 
121     assert_equal("FGHIIIIIHGF", @entry.qual) 
122   end
123
124   test "Seq.quality_trim! returns correctly" do
125     @entry.seq  = "GCTAAAAAGTG"
126     @entry.qual = "FGHIIIIIHGF"
127     @entry.quality_trim!(38)
128     assert_equal("CTAAAAAGT", @entry.seq) 
129     assert_equal("GHIIIIIHG", @entry.qual) 
130   end
131
132   test "Seq.quality_trim! with min len bang returns correctly" do
133     @entry.seq  = "GCTCAAACGTG"
134     @entry.qual = "IEFGHIHGFEI"
135     @entry.quality_trim!(37, 2)
136     assert_equal("TCAAACG", @entry.seq) 
137     assert_equal("FGHIHGF", @entry.qual) 
138   end
139
140   test "Seq.quality_trim! with all low qual returns correctly" do
141     @entry.seq  = "GCTCAAACGTG"
142     @entry.qual = "@@@@@@@@@@@"
143     @entry.quality_trim!(37, 2)
144     assert_equal("", @entry.seq) 
145     assert_equal("", @entry.qual) 
146   end
147
148   test "#patmatch_trim_right! without match don't trim" do
149     @entry.seq  = "GCTCAAACGTG"
150     @entry.patmatch_trim_left!("GAAAC")
151     assert_equal("GCTCAAACGTG", @entry.seq) 
152   end
153
154   test "#patmatch_trim_right! without match returns nil" do
155     @entry.seq  = "GCTCAAACGTG"
156     assert_nil(@entry.patmatch_trim_left!("GAAAC"))
157   end
158
159   test "#patmatch_trim_right! without qual trims correctly" do
160     @entry.seq  = "GCTCAAACGTG"
161     @entry.patmatch_trim_left!("AAAC")
162     assert_equal("GTG", @entry.seq) 
163   end
164
165   test "#patmatch_trim_right! with qual trims correctly" do
166     @entry.seq  = "GCTCAAACGTG"
167     @entry.qual = "IEFGHIHGFEI"
168     @entry.patmatch_trim_left!("AAAC")
169     assert_equal("GTG", @entry.seq) 
170     assert_equal("FEI", @entry.qual) 
171   end
172
173   test "#patmatch_trim_left! without match trims correctly" do
174     @entry.seq  = "GCTCAAACGTG"
175     @entry.patmatch_trim_right!("GAAAC")
176     assert_equal("GCTCAAACGTG", @entry.seq) 
177   end
178
179   test "#patmatch_trim_left! without match returns nil" do
180     @entry.seq  = "GCTCAAACGTG"
181     assert_nil(@entry.patmatch_trim_right!("GAAAC"))
182   end
183
184   test "#patmatch_trim_left! without qual trims correctly" do
185     @entry.seq  = "GCTCAAACGTG"
186     @entry.patmatch_trim_right!("AAAC")
187     assert_equal("GCTC", @entry.seq) 
188   end
189
190   test "#patmatch_trim_left! with qual trims correctly" do
191     @entry.seq  = "GCTCAAACGTG"
192     @entry.qual = "IEFGHIHGFEI"
193     @entry.patmatch_trim_right!("AAAC")
194     assert_equal("GCTC", @entry.seq) 
195     assert_equal("IEFG", @entry.qual) 
196   end
197 end
198
199 __END__