Cython: Added fasta and fastq writers
This commit is contained in:
0
python/obitools3/writers/__init__.py
Normal file
0
python/obitools3/writers/__init__.py
Normal file
9
python/obitools3/writers/fasta.pxd
Normal file
9
python/obitools3/writers/fasta.pxd
Normal file
@ -0,0 +1,9 @@
|
||||
#cython: language_level=3
|
||||
|
||||
cdef class FastaNucWriter:
|
||||
cdef object formatter
|
||||
cdef object output
|
||||
cdef int only
|
||||
cdef int skip
|
||||
cdef int skipped
|
||||
cdef int read
|
37
python/obitools3/writers/fasta.pyx
Normal file
37
python/obitools3/writers/fasta.pyx
Normal file
@ -0,0 +1,37 @@
|
||||
#cython: language_level=3
|
||||
|
||||
'''
|
||||
Created on oct 12th 2018
|
||||
|
||||
@author: celine.mercier.bioinfo@gmail.com
|
||||
'''
|
||||
|
||||
|
||||
cdef class FastaNucWriter:
|
||||
|
||||
def __init__(self,
|
||||
object formatter,
|
||||
object output_object,
|
||||
int skip=0,
|
||||
only=None):
|
||||
|
||||
if only is None:
|
||||
self.only = -1
|
||||
else:
|
||||
self.only = int(only)
|
||||
|
||||
self.formatter = formatter
|
||||
self.output = output_object
|
||||
self.skip = skip
|
||||
self.skipped = 0
|
||||
self.read = 0
|
||||
|
||||
def __call__(self, object seq):
|
||||
if self.only > -1 and self.read == self.only:
|
||||
raise StopIteration
|
||||
if self.skip > 0 and self.skipped < self.skip:
|
||||
self.skipped += 1
|
||||
return
|
||||
self.output.write(self.formatter(seq))
|
||||
self.output.write(b"\n") # TODO is that clean?
|
||||
self.read += 1
|
9
python/obitools3/writers/fastq.pxd
Normal file
9
python/obitools3/writers/fastq.pxd
Normal file
@ -0,0 +1,9 @@
|
||||
#cython: language_level=3
|
||||
|
||||
cdef class FastqWriter:
|
||||
cdef object formatter
|
||||
cdef object output
|
||||
cdef int only
|
||||
cdef int skip
|
||||
cdef int skipped
|
||||
cdef int read
|
41
python/obitools3/writers/fastq.pyx
Normal file
41
python/obitools3/writers/fastq.pyx
Normal file
@ -0,0 +1,41 @@
|
||||
#cython: language_level=3
|
||||
|
||||
'''
|
||||
Created on oct 14th 2018
|
||||
|
||||
@author: celine.mercier.bioinfo@gmail.com
|
||||
'''
|
||||
|
||||
|
||||
cdef class FastqWriter:
|
||||
|
||||
def __init__(self,
|
||||
object formatter,
|
||||
object output_object,
|
||||
int skip=0,
|
||||
only=None):
|
||||
|
||||
self.formatter = formatter
|
||||
self.output = output_object
|
||||
|
||||
if only is None:
|
||||
self.only = -1
|
||||
else:
|
||||
self.only = int(only)
|
||||
|
||||
self.formatter = formatter
|
||||
self.output = output_object
|
||||
self.skip = skip
|
||||
self.skipped = 0
|
||||
self.read = 0
|
||||
|
||||
|
||||
def __call__(self, object seq):
|
||||
if self.only > -1 and self.read == self.only:
|
||||
raise StopIteration
|
||||
if self.skip > 0 and self.skipped < self.skip:
|
||||
self.skipped += 1
|
||||
return
|
||||
self.output.write(self.formatter(seq))
|
||||
self.output.write(b"\n") # TODO is that clean?
|
||||
self.read += 1
|
Reference in New Issue
Block a user