From 0ab290c76c4e253ea809f9a7c2321a28de72b286 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Wed, 18 Sep 2013 10:17:27 +0000 Subject: [PATCH] added ambiguity to hamming_distance git-svn-id: http://biopieces.googlecode.com/svn/trunk@2198 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/lib/maasha/seq.rb | 9 +++++++-- code_ruby/test/maasha/test_seq.rb | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code_ruby/lib/maasha/seq.rb b/code_ruby/lib/maasha/seq.rb index e4b6bfd..73bf055 100644 --- a/code_ruby/lib/maasha/seq.rb +++ b/code_ruby/lib/maasha/seq.rb @@ -31,6 +31,7 @@ autoload :BackTrack, 'maasha/seq/backtrack' autoload :Dynamic, 'maasha/seq/dynamic' autoload :Homopolymer, 'maasha/seq/homopolymer' autoload :Levenshtein, 'maasha/seq/levenshtein' +autoload :Ambiguity, 'maasha/seq/ambiguity' # Residue alphabets DNA = %w[a t c g] @@ -384,8 +385,12 @@ class Seq # Method to determine the Hamming Distance between # two Sequence objects (case insensitive). - def hamming_distance(entry) - self.seq.upcase.hamming_distance(entry.seq.upcase) + def hamming_distance(entry, options = nil) + if options and options[:ambiguity] + Ambiguity.hamming_distance(self.seq, entry.seq) + else + self.seq.upcase.hamming_distance(entry.seq.upcase) + end end # Method to determine the Edit Distance between diff --git a/code_ruby/test/maasha/test_seq.rb b/code_ruby/test/maasha/test_seq.rb index 5947ee8..bbb6759 100755 --- a/code_ruby/test/maasha/test_seq.rb +++ b/code_ruby/test/maasha/test_seq.rb @@ -304,6 +304,14 @@ class TestSeq < Test::Unit::TestCase assert_equal(1, seq1.hamming_distance(seq2)) end + test "#hamming_distance with ambiguity codes return correctly" do + seq1 = Seq.new("test1", "ATCG") + seq2 = Seq.new("test2", "atng") + + assert_equal(1, seq1.hamming_distance(seq2)) + assert_equal(0, seq1.hamming_distance(seq2, ambiguity: true)) + end + test "#edit_distance returns correctly" do seq1 = Seq.new("test1", "ATCG") seq2 = Seq.new("test2", "tgncg") -- 2.39.2