X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=code_ruby%2Flib%2Fmaasha%2Fseq.rb;h=f2d93d1fc5bbf86b6611e56e9eb9ce98d9185795;hb=d4b9c1bec954d5ff3e6eb2f7dc6c1aaa1f7f810f;hp=45c13fe6ded1fe1d20771b8003a58596f5ab41b1;hpb=162aeddb3605c07e27906be021786e2db3ce0664;p=biopieces.git diff --git a/code_ruby/lib/maasha/seq.rb b/code_ruby/lib/maasha/seq.rb index 45c13fe..f2d93d1 100644 --- a/code_ruby/lib/maasha/seq.rb +++ b/code_ruby/lib/maasha/seq.rb @@ -538,13 +538,30 @@ class Seq # Method that determines if a quality score string can be # absolutely identified as base 33. def qual_base33? - self.qual.match(/[!-:]/) + self.qual.match(/[!-:]/) ? true : false end # Method that determines if a quality score string can be # absolutely identified as base 64. def qual_base64? - self.qual.match(/[K-h]/) + self.qual.match(/[K-h]/) ? true : false + end + + # Method to determine if a quality score is valid. + def qual_valid?(encoding) + raise SeqError, "Missing qual" if self.qual.nil? + + case encoding.downcase + when "sanger" then return true if self.qual.match(/^[!-I]*$/) + when "454" then return true if self.qual.match(/^[@-h]*$/) + when "solexa" then return true if self.qual.match(/^[;-h]*$/) + when "illumina13" then return true if self.qual.match(/^[@-h]*$/) + when "illumina15" then return true if self.qual.match(/^[@-h]*$/) + when "illumina18" then return true if self.qual.match(/^[!-J]*$/) + else raise SeqError, "unknown quality score encoding: #{encoding}" + end + + false end # Method to convert quality scores inbetween formats. @@ -552,7 +569,7 @@ class Seq # 454 base 64, range 0-40 # Solexa base 64, range -5-40 # Illumina13 base 64, range 0-40 - # Illumina15 base 64, range 3-40 + # Illumina15 base 64, range 0-40 # Illumina18 base 33, range 0-41 def convert_scores!(from, to) unless from == to