]> git.donarmstrong.com Git - biopieces.git/commitdiff
added scores_mean method to seq.rb
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Fri, 29 Jun 2012 13:44:59 +0000 (13:44 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Fri, 29 Jun 2012 13:44:59 +0000 (13:44 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@1850 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/lib/maasha/seq.rb
code_ruby/test/maasha/test_seq.rb

index 95c0f303451e67b8efef359368a6170f4aff5c3a..aac8d5ec295dbcb5403588898e867d8b80262535 100644 (file)
@@ -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__
index a8f58ce565d7b0598ee919fa372cfa1991119434..d177d311467901296a0d2d0aa90f01dce29ffd86 100755 (executable)
@@ -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__