Cython: fasta and fastq parsers now return bytes and take NA string
argument
This commit is contained in:
@ -5,28 +5,25 @@ from obitools3.dms.capi.obiview cimport NUC_SEQUENCE_COLUMN
|
||||
from obitools3.utils cimport bytes2str, str2bytes, tobytes
|
||||
|
||||
|
||||
# TODO quality offset option
|
||||
# TODO quality offset option?
|
||||
cdef class FastqFormat:
|
||||
|
||||
def __init__(self, list tags=[], bint printNAKeys=False):
|
||||
def __init__(self, list tags=[], bint printNAKeys=False, bytes NAString=b"NA"):
|
||||
self.headerFormatter = HeaderFormat("fastq",
|
||||
tags,
|
||||
printNAKeys)
|
||||
tags=tags,
|
||||
printNAKeys=printNAKeys,
|
||||
NAString=NAString)
|
||||
|
||||
@cython.boundscheck(False)
|
||||
def __call__(self, object data):
|
||||
|
||||
cdef bytes quality
|
||||
cdef bytes quality
|
||||
|
||||
if hasattr(data, "quality_str"):
|
||||
quality = str2bytes(data.quality_str) # TODO quality_bytes property
|
||||
if hasattr(data, "quality_bytes"):
|
||||
quality = data.quality_bytes
|
||||
elif hasattr(data, "quality"):
|
||||
quality = tobytes(data.quality)
|
||||
else:
|
||||
raise AttributeError("No quality when exporting to fastq") # TODO discuss
|
||||
|
||||
return bytes2str(self.headerFormatter(data) +
|
||||
b"\n" +
|
||||
data[NUC_SEQUENCE_COLUMN] +
|
||||
b"\n+\n" +
|
||||
quality)
|
||||
return self.headerFormatter(data) + b"\n" + data[NUC_SEQUENCE_COLUMN] + b"\n+\n" + quality
|
||||
|
Reference in New Issue
Block a user