options = Biopieces.options_parse(ARGV, casts)
-ILLUMINA_BASE = 64
-ILLUMINA_MIN = 0
-ILLUMINA_MAX = 40
-SCORES_MAX = 10_000
+SCORES_MAX = 10_000
scores_vec = NArray.int(SCORES_MAX)
count_vec = NArray.int(SCORES_MAX)
if scores.length > 0
raise BiopiecesError, "score string too long: #{scores.length} > #{SCORES_MAX}" if scores.length > SCORES_MAX
- scores_vec[0 ... scores.length] += NArray.to_na(scores, "byte") - ILLUMINA_BASE
+ scores_vec[0 ... scores.length] += NArray.to_na(scores, "byte") - Seq::SCORE_BASE
count_vec[0 ... scores.length] += 1
max = scores.length if scores.length > max
mean_vec = NArray.sfloat(max)
mean_vec = scores_vec[0 ... max].to_f / count_vec[0 ... max]
count_vec = count_vec[0 ... max].to_f
-count_vec *= (ILLUMINA_MAX / count_vec.max(0).to_f)
+count_vec *= (Seq::SCORE_MAX / count_vec.max(0).to_f)
x = (1 .. max).to_a
y1 = mean_vec.to_a
plot.ylabel options[:ylabel]
plot.output options[:data_out] if options[:data_out]
plot.xrange "[#{x.min - 1}:#{x.max + 1}]"
- plot.yrange "[#{ILLUMINA_MIN}:#{ILLUMINA_MAX}]"
+ plot.yrange "[#{Seq::SCORE_MIN}:#{Seq::SCORE_MAX}]"
plot.style "fill solid 0.5 border"
plot.xtics "out"
plot.ytics "out"
def quality_trim_right(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos = trim_right_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos = trim_right_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
self.subseq(0, pos)
end
def quality_trim_right!(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos = trim_right_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos = trim_right_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
self.subseq!(0, pos)
end
def quality_trim_left(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos = trim_left_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos = trim_left_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
self.subseq(pos)
end
def quality_trim_left!(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos = trim_left_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos = trim_left_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
self.subseq!(pos)
end
def quality_trim(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos_right = trim_right_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
- pos_left = trim_left_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos_right = trim_right_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
+ pos_left = trim_left_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
pos_left = pos_right if pos_left > pos_right
def quality_trim!(min_qual, min_len = 1)
check_trim_args(min_qual)
- pos_right = trim_right_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
- pos_left = trim_left_pos_c(self.qual, self.length, min_qual, min_len, SCORE_BASE)
+ pos_right = trim_right_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
+ pos_left = trim_left_pos_c(self.qual, self.length, min_qual, min_len, Seq::SCORE_BASE)
pos_left = pos_right if pos_left > pos_right
def check_trim_args(min_qual)
raise TrimError, "no sequence" if self.seq.nil?
raise TrimError, "no quality score" if self.qual.nil?
- unless (SCORE_MIN .. SCORE_MAX).include? min_qual
- raise TrimError, "minimum quality value: #{min_qual} out of range #{SCORE_MIN} .. #{SCORE_MAX}"
+ unless (Seq::SCORE_MIN .. Seq::SCORE_MAX).include? min_qual
+ raise TrimError, "minimum quality value: #{min_qual} out of range #{Seq::SCORE_MIN} .. #{Seq::SCORE_MAX}"
end
end