Source code for seqtools.fastq
from seqtools.utils import fileOpen
[docs]class FastqRecord(object):
"""Very simple fastq class containing header, sequence, line3, and quality as strings"""
def __init__(self,header,sequence,line3,quality):
"""Initialize a FastqRecord
:param header: header
:param sequence: sequence
:param line3: second header line from fastq record
:param quality: string quality"""
self.header=header
self.sequence=sequence
self.line3=line3
self.quality=quality
def __str__(self):
"""String represendation, suitable for output to a fastq file"""
return "{}\n{}\n{}\n{}".format(self.header,self.sequence,self.line3,self.quality)
[docs]class Fastq(object):
def __init__(self,fname):
self.name = fname
self.fh = fileOpen(fname)
def _getNextRecord(self):
x = []
for i in range(0,4):
nextLine=self.fh.readline().strip()
x.append(nextLine)
if(nextLine==''):
return None
return(FastqRecord(x[0],x[1],x[2],x[3]))
def __iter__(self):
return self
def __next__(self):
tmp = self._getNextRecord()
if(tmp is None):
raise StopIteration
else:
return(tmp)
[docs] def name(self):
return self.fname
[docs] def close(self):
self.fh.close()