Source code for fastqtools.readprocess.readprocess

import os
from tools import code2score,score2code
from tools import checkqual
from tools import checkN
from tools import dnaseq
from tools import diffstr
from tools import autocutadaptor
[docs]class readprocess(): def __init__(self,read): self.r1 = read.r1 self.r2 = read.r2 self.filter = False self.adaptor = False
[docs] def trim(self,head1,tail1,head2,tail2): self.r1.seq = self.r1.seq[head1:] self.r1.qual = self.r1.qual[head1:] if not tail1 == 0: self.r1.seq = self.r1.seq[:(0-tail1)] self.r1.qual = self.r1.qual[:(0-tail1)] self.r2.seq = self.r2.seq[head2:] self.r2.qual = self.r2.qual[head2:] if not tail2 == 0: self.r2.seq = self.r2.seq[:(0-tail2)] self.r2.qual = self.r2.qual[:(0-tail2)]
[docs] def qual(self,q,percent): if checkqual(self.r1.qual,q,percent) and checkqual(self.r2.qual,q,percent): pass else: self.filter = True
[docs] def nbase(self,percent): if checkN(self.r1.seq,percent) or checkN(self.r2.seq,percent): self.filter = True
[docs] def autoadaptremove(self,flag): if not flag: return out = autocutadaptor(self.r1.seq,self.r2.seq) if not out: return consus,r1start,r1end,r2start,r2end = out self.r1.seq = self.r1.seq[r1start:r1end] self.r1.qual = self.r1.qual[r1start:r1end] self.r2.seq = self.r2.seq[r2start:r2end] self.r2.qual = self.r2.qual[r2start:r2end] self.adaptor = True
[docs] def umi(self,umis): if not umis: return if type(umis) == int: umi1 = self.r1.seq[:umis] umi2 = self.r2.seq[:umis] umistr = "@" + umi1 + ":" + umi2 self.r1.id = "%s%s" % (umistr,self.r1.id) self.r2.id = "%s%s" % (umistr,self.r2.id) self.r1.seq = self.r1.seq[umis:] self.r2.seq = self.r2.seq[umis:] self.r1.qual = self.r1.qual[umis:] self.r2.qual = self.r2.qual[umis:] if type(umis) == list: umi1,mis1 = checkumi(self.r1.seq,umis) umi2,mis2 = checkumi(self.r2.seq,umis) umistr = "@%s:%s" % (umi1,umi2) self.r1.id = "%s%s" % (umistr,self.r1.id) self.r2.id = "%s%s" % (umistr,self.r2.id) self.r1.seq = self.r1.seq[len(umi1):] self.r1.qual = self.r1.qual[len(umi1):] self.r2.seq = self.r2.seq[len(umi2):] self.r2.qual = self.r2.qual[len(umi2):]
[docs] def length(self,lenMin): if len(self.r1.seq) < lenMin or len(self.r2.seq) < lenMin: self.filter = True