From: martinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Date: Fri, 29 Jun 2012 13:44:59 +0000 (+0000)
Subject: added scores_mean method to seq.rb
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=893e2c5644233d53a7eca9c0e127d4002bd5ed03;p=biopieces.git

added scores_mean method to seq.rb

git-svn-id: http://biopieces.googlecode.com/svn/trunk@1850 74ccb610-7750-0410-82ae-013aeee3265d
---

diff --git a/code_ruby/lib/maasha/seq.rb b/code_ruby/lib/maasha/seq.rb
index 95c0f30..aac8d5e 100644
--- a/code_ruby/lib/maasha/seq.rb
+++ b/code_ruby/lib/maasha/seq.rb
@@ -499,6 +499,14 @@ class Seq
 
     self
   end
+
+  # Method to calculate and return the mean quality score.
+  def scores_mean
+    raise SeqError, "Missing qual in entry" if self.qual.nil?
+
+    na_qual = NArray.to_na(self.qual, "byte")
+    (na_qual - SCORE_BASE).mean
+  end
 end
 
 __END__
diff --git a/code_ruby/test/maasha/test_seq.rb b/code_ruby/test/maasha/test_seq.rb
index a8f58ce..d177d31 100755
--- a/code_ruby/test/maasha/test_seq.rb
+++ b/code_ruby/test/maasha/test_seq.rb
@@ -622,6 +622,16 @@ class TestSeq < Test::Unit::TestCase
     @entry.qual = 'BCDEFGHI'
     assert_equal('BCDEFGHI', @entry.convert_scores!('illumina18', 'illumina18').qual)
   end
+
+  def test_Seq_scores_mean_without_qual_raises
+    @entry.qual = nil
+    assert_raise(SeqError) { @entry.scores_mean }
+  end
+
+  def test_Seq_scores_mean_returns_correctly
+    @entry.qual = '@@hh'
+    assert_equal(20.0, @entry.scores_mean)
+  end
 end
 
 __END__