Merge branch 'master' into Eric_version_for_sequence
Conflicts: python/obitools3/obidms/_obidmscolumn_seq.pyx
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
from ..utils cimport bytes2str
|
||||
from .header cimport HeaderFormat
|
||||
from cython.view cimport array as cvarray
|
||||
|
||||
|
@ -10,38 +10,47 @@ cdef class FastaFormat:
|
||||
printNAKeys)
|
||||
|
||||
|
||||
def __cinit(self):
|
||||
self.sequenceBufferLength=1000
|
||||
self.sequenceBuffer = malloc(self.sequenceBufferLength)
|
||||
|
||||
def __dealloc__(self)
|
||||
free(self.sequenceBuffer)
|
||||
# def __cinit(self):
|
||||
# self.sequenceBufferLength=1000
|
||||
# self.sequenceBuffer = malloc(self.sequenceBufferLength)
|
||||
#
|
||||
# def __dealloc__(self)
|
||||
# free(self.sequenceBuffer)
|
||||
|
||||
@cython.boundscheck(False)
|
||||
def __call__(self, dict data):
|
||||
cdef bytes brawseq = <bytes> data['sequence']
|
||||
cdef char* crowseq = <char*> brawseq
|
||||
cdef bytes brawseq = data['sequence']
|
||||
cdef size_t lseq = len(brawseq)
|
||||
cdef size_t needed_size = lseq + 1
|
||||
cdef size_t k=0
|
||||
|
||||
needed_size += needed_size/ 50
|
||||
cdef list lines = []
|
||||
|
||||
if needed_size > self.sequenceBufferLength:
|
||||
self.sequenceBufferLength=needed_size
|
||||
self.sequenceBuffer = realloc(self.sequenceBuffer,
|
||||
self.sequenceBufferLength
|
||||
)
|
||||
for k in range(0,lseq,60):
|
||||
lines.append(brawseq[k:(k+60)])
|
||||
|
||||
brawseq = b'\n'.join(lines)
|
||||
|
||||
for i in range(0,lseq,60):
|
||||
if i+60 <= lseq:
|
||||
fasta[k:(k+60)]=seq[i:(i+60)]
|
||||
fasta[k+60]='\n'
|
||||
k+=61
|
||||
else:
|
||||
fasta[k:(k+lseq-i)]=seq[i:lseq]
|
||||
k+=lseq-i
|
||||
return "%s\n%s" % (self.headerFormater(data),bytes2str(brawseq))
|
||||
|
||||
# cdef char* crowseq = <char*> brawseq
|
||||
# cdef size_t needed_size = lseq + 1
|
||||
#
|
||||
# needed_size += needed_size/ 50
|
||||
#
|
||||
# if needed_size > self.sequenceBufferLength:
|
||||
# self.sequenceBufferLength=needed_size
|
||||
# self.sequenceBuffer = realloc(self.sequenceBuffer,
|
||||
# self.sequenceBufferLength
|
||||
# )
|
||||
#
|
||||
#
|
||||
# for i in range(0,lseq,60):
|
||||
# if i+60 <= lseq:
|
||||
# fasta[k:(k+60)]=seq[i:(i+60)]
|
||||
# fasta[k+60]='\n'
|
||||
# k+=61
|
||||
# else:
|
||||
# fasta[k:(k+lseq-i)]=seq[i:lseq]
|
||||
# k+=lseq-i
|
||||
|
||||
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
cdef class HeaderFormat:
|
||||
|
||||
cdef str start
|
||||
cdef set tags
|
||||
cdef bint printNaKeys
|
||||
cdef size_t headerBufferLength
|
||||
|
@ -2,8 +2,19 @@
|
||||
cdef class HeaderFormat:
|
||||
|
||||
def __init__(self, bint fastaHeader=True, list tags=[], bint printNAKeys=False):
|
||||
'''
|
||||
|
||||
self.tags = tags
|
||||
@param fastaHeader:
|
||||
@type fastaHeader: `bool`
|
||||
|
||||
@param tags:
|
||||
@type tags: `list` of `bytes`
|
||||
|
||||
@param printNAKeys:
|
||||
@type printNAKeys: `bool`
|
||||
'''
|
||||
|
||||
self.tags = set(tags)
|
||||
self.printNaKeys = printNAKeys
|
||||
|
||||
if fastaHeader:
|
||||
@ -12,16 +23,38 @@ cdef class HeaderFormat:
|
||||
self.start="@"
|
||||
|
||||
self.headerBufferLength = 1000
|
||||
self.headerBuffer = []
|
||||
#self.headerBuffer = []
|
||||
|
||||
def __call__(self, dict data):
|
||||
cdef str header
|
||||
cdef dict tags = data['tags']
|
||||
cdef set ktags
|
||||
cdef list lines = [""]
|
||||
cdef str tagline
|
||||
|
||||
if data['definition'] is not None:
|
||||
header = "%s%s %s" % (self.start,data['id'],
|
||||
data['definition'])
|
||||
if self.tags is not None and self.tags:
|
||||
ktags = self.tags
|
||||
else:
|
||||
header = "%s%s" % (self.start,data['id'])
|
||||
ktags = set(tags.keys())
|
||||
|
||||
for k in ktags:
|
||||
if k in tags:
|
||||
value = tags[k]
|
||||
if value is not None or self.printNaKeys:
|
||||
lines.append("%s=%s;" % (k,tags[k]))
|
||||
|
||||
if len(lines) > 1:
|
||||
tagline=" ".join(lines)
|
||||
else:
|
||||
tagline=""
|
||||
|
||||
if data['definition'] is not None:
|
||||
header = "%s%s%s %s" % (self.start,data['id'],
|
||||
tagline,
|
||||
data['definition'])
|
||||
else:
|
||||
header = "%s%s%s" % (self.start,data['id'],
|
||||
tagline)
|
||||
|
||||
return header
|
||||
|
||||
|
@ -91,5 +91,5 @@ cdef class OBIDMS:
|
||||
cpdef OBIView open_view(self, str view_name)
|
||||
cpdef OBIView new_view(self, str view_name, object view_to_clone=*, list line_selection=*, str view_type=*, str comments=*)
|
||||
cpdef dict read_view_infos(self, str view_name)
|
||||
cpdef dict read_views(self)
|
||||
# cpdef dict read_views(self) TODO
|
||||
|
||||
|
@ -44,7 +44,8 @@ from ._obidmscolumn_bool cimport OBIDMS_column_bool, \
|
||||
from ._obidmscolumn_char cimport OBIDMS_column_char, \
|
||||
OBIDMS_column_multi_elts_char
|
||||
|
||||
from ._obidmscolumn_qual cimport OBIDMS_column_qual
|
||||
from ._obidmscolumn_qual cimport OBIDMS_column_qual, \
|
||||
OBIDMS_column_multi_elts_qual
|
||||
|
||||
from ._obidmscolumn_str cimport OBIDMS_column_str, \
|
||||
OBIDMS_column_multi_elts_str
|
||||
@ -53,16 +54,15 @@ from ._obidmscolumn_seq cimport OBIDMS_column_seq, \
|
||||
OBIDMS_column_multi_elts_seq
|
||||
|
||||
from .capi.obiview cimport Obiview_p, \
|
||||
Obiviews_infos_all_p, \
|
||||
Obiview_infos_p, \
|
||||
Column_reference_p, \
|
||||
obi_new_view_nuc_seqs, \
|
||||
obi_new_view, \
|
||||
obi_new_view_cloned_from_name, \
|
||||
obi_new_view_nuc_seqs_cloned_from_name, \
|
||||
obi_view_map_file, \
|
||||
obi_view_unmap_file, \
|
||||
obi_open_view, \
|
||||
obi_read_view_infos, \
|
||||
obi_close_view_infos, \
|
||||
obi_view_delete_column, \
|
||||
obi_view_add_column, \
|
||||
obi_view_get_column, \
|
||||
@ -194,8 +194,8 @@ cdef class OBIDMS_column :
|
||||
elif col_type == OBI_QUAL :
|
||||
if col_one_element_per_line :
|
||||
subclass = OBIDMS_column_qual
|
||||
# else : # TODO
|
||||
# subclass = OBIDMS_column_multi_elts_qual
|
||||
else :
|
||||
subclass = OBIDMS_column_multi_elts_qual
|
||||
elif col_type == OBI_STR :
|
||||
if col_one_element_per_line :
|
||||
subclass = OBIDMS_column_str
|
||||
@ -290,11 +290,11 @@ cdef class OBIView :
|
||||
raise Exception("Error creating/opening a view")
|
||||
|
||||
self.pointer = view
|
||||
self.name = bytes2str(view.name)
|
||||
self.name = bytes2str(view.infos.name)
|
||||
|
||||
# Go through columns to build list of corresponding python instances
|
||||
self.columns = {}
|
||||
for i in range(view.column_count) :
|
||||
for i in range(view.infos.column_count) :
|
||||
column_p = <OBIDMS_column_p> (view.columns)[i]
|
||||
header = (column_p).header
|
||||
col_name = bytes2str(header.name)
|
||||
@ -304,7 +304,7 @@ cdef class OBIView :
|
||||
|
||||
def __repr__(self) :
|
||||
cdef str s
|
||||
s = str(self.name) + ", " + str(self.comments) + ", " + str(self.pointer.line_count) + " lines\n"
|
||||
s = str(self.name) + ", " + str(self.comments) + ", " + str(self.pointer.infos.line_count) + " lines\n"
|
||||
for column_name in self.columns :
|
||||
s = s + self.columns[column_name].__repr__() + '\n'
|
||||
return s
|
||||
@ -313,7 +313,7 @@ cdef class OBIView :
|
||||
cpdef delete_column(self, str column_name) :
|
||||
|
||||
cdef int i
|
||||
cdef Obiview_p view
|
||||
cdef Obiview_p view_p
|
||||
cdef OBIDMS_column column
|
||||
cdef OBIDMS_column_p column_p
|
||||
cdef OBIDMS_column_header_p header
|
||||
@ -321,7 +321,7 @@ cdef class OBIView :
|
||||
|
||||
view = self.pointer
|
||||
|
||||
if obi_view_delete_column(view, str2bytes(column_name)) < 0 :
|
||||
if obi_view_delete_column(view_p, str2bytes(column_name)) < 0 :
|
||||
raise Exception("Problem deleting a column from a view")
|
||||
|
||||
# Update the dictionaries of column pointers and column objects, and update pointers in column objects (make function?):
|
||||
@ -329,7 +329,7 @@ cdef class OBIView :
|
||||
|
||||
for column_n in self.columns :
|
||||
(self.columns[column_n]).update_pointer()
|
||||
|
||||
|
||||
|
||||
cpdef add_column(self,
|
||||
str column_name,
|
||||
@ -401,7 +401,7 @@ cdef class OBIView :
|
||||
cdef OBIView_line line # TODO Check that this works for NUC SEQ views
|
||||
|
||||
# Yield each line
|
||||
lines_used = (self.pointer).line_count
|
||||
lines_used = self.pointer.infos.line_count
|
||||
|
||||
for line_nb in range(lines_used) :
|
||||
line = self[line_nb]
|
||||
@ -485,12 +485,12 @@ cdef class OBIView_NUC_SEQS(OBIView):
|
||||
raise Exception("Error creating/opening view")
|
||||
|
||||
self.pointer = view
|
||||
self.name = bytes2str(view.name)
|
||||
self.comments = bytes2str(view.comments)
|
||||
self.name = bytes2str(view.infos.name)
|
||||
self.comments = bytes2str(view.infos.comments)
|
||||
|
||||
# Go through columns to build list of corresponding python instances
|
||||
self.columns = {}
|
||||
for i in range(view.column_count) :
|
||||
for i in range(view.infos.column_count) :
|
||||
column_p = <OBIDMS_column_p> (view.columns)[i]
|
||||
header = (column_p).header
|
||||
col_name = bytes2str(header.name)
|
||||
@ -501,28 +501,6 @@ cdef class OBIView_NUC_SEQS(OBIView):
|
||||
self.sequences = self.columns[bytes2str(NUC_SEQUENCE_COLUMN)]
|
||||
self.definitions = self.columns[bytes2str(DEFINITION_COLUMN)]
|
||||
self.qualities = self.columns[bytes2str(QUALITY_COLUMN)]
|
||||
|
||||
|
||||
cpdef delete_column(self, str column_name) :
|
||||
|
||||
cdef int i
|
||||
cdef Obiview_p view_p
|
||||
cdef OBIDMS_column column
|
||||
cdef OBIDMS_column_p column_p
|
||||
cdef OBIDMS_column_header_p header
|
||||
cdef str column_n
|
||||
|
||||
view_p = self.pointer
|
||||
|
||||
if obi_view_delete_column(view_p, str2bytes(column_name)) < 0 :
|
||||
raise Exception("Problem deleting a column from a view")
|
||||
|
||||
# Remove instance from the dictionary
|
||||
(self.columns).pop(column_name)
|
||||
|
||||
for column_n in self.columns :
|
||||
(self.columns[column_n]).update_pointer()
|
||||
|
||||
|
||||
def __getitem__(self, object item) :
|
||||
if type(item) == str :
|
||||
@ -530,7 +508,6 @@ cdef class OBIView_NUC_SEQS(OBIView):
|
||||
elif type(item) == int :
|
||||
return OBI_Nuc_Seq_Stored(self, item)
|
||||
|
||||
|
||||
def __setitem__(self, index_t line_idx, OBI_Nuc_Seq sequence_obj) :
|
||||
for key in sequence_obj :
|
||||
self[line_idx][key] = sequence_obj[key]
|
||||
@ -625,7 +602,7 @@ cdef class OBIDMS :
|
||||
view_class = OBIView_NUC_SEQS
|
||||
else :
|
||||
view_class = OBIView
|
||||
|
||||
|
||||
return view_class(self, view_name)
|
||||
|
||||
|
||||
@ -643,54 +620,84 @@ cdef class OBIDMS :
|
||||
|
||||
|
||||
cpdef dict read_view_infos(self, str view_name) :
|
||||
all_views = self.read_views()
|
||||
return all_views[view_name]
|
||||
|
||||
|
||||
cpdef dict read_views(self) : # TODO function that prints the dic nicely and function that prints 1 view nicely. Add column type in col ref
|
||||
|
||||
cdef Obiviews_infos_all_p all_views_p
|
||||
cdef Obiview_infos_p view_p
|
||||
cdef Obiview_infos_p view_infos_p
|
||||
cdef dict view_infos_d
|
||||
cdef Column_reference_p column_refs
|
||||
cdef int nb_views
|
||||
cdef int i, j
|
||||
cdef str view_name
|
||||
cdef str column_name
|
||||
cdef dict views
|
||||
cdef bytes name_b
|
||||
|
||||
view_infos_p = obi_view_map_file(self.pointer, str2bytes(view_name))
|
||||
view_infos_d = {}
|
||||
view_infos_d["name"] = bytes2str(view_infos_p.name)
|
||||
view_infos_d["comments"] = bytes2str(view_infos_p.comments)
|
||||
view_infos_d["view_type"] = bytes2str(view_infos_p.view_type)
|
||||
view_infos_d["column_count"] = <int> view_infos_p.column_count
|
||||
view_infos_d["line_count"] = <int> view_infos_p.line_count
|
||||
view_infos_d["created_from"] = bytes2str(view_infos_p.created_from)
|
||||
view_infos_d["creation_date"] = bytes2str(obi_format_date(view_infos_p.creation_date))
|
||||
if (view_infos_p.all_lines) :
|
||||
view_infos_d["line_selection"] = None
|
||||
else :
|
||||
view_infos_d["line_selection"] = {}
|
||||
view_infos_d["line_selection"]["column_name"] = bytes2str((view_infos_p.line_selection).column_name)
|
||||
view_infos_d["line_selection"]["version"] = <int> (view_infos_p.line_selection).version
|
||||
view_infos_d["column_references"] = {}
|
||||
column_refs = view_infos_p.column_references
|
||||
for j in range(view_infos_d["column_count"]) :
|
||||
column_name = bytes2str((column_refs[j]).column_name)
|
||||
view_infos_d["column_references"][column_name] = {}
|
||||
view_infos_d["column_references"][column_name]["version"] = column_refs[j].version
|
||||
|
||||
views = {}
|
||||
all_views_p = obi_read_view_infos(self.pointer)
|
||||
if all_views_p == NULL :
|
||||
raise Exception("No views to read")
|
||||
nb_views = <int> (all_views_p.header).view_count
|
||||
for i in range(nb_views) :
|
||||
view_p = (<Obiview_infos_p> (all_views_p.view_infos)) + i
|
||||
view_name = bytes2str(view_p.name)
|
||||
views[view_name] = {}
|
||||
views[view_name]["comments"] = bytes2str(view_p.comments)
|
||||
views[view_name]["view_type"] = bytes2str(view_p.view_type)
|
||||
views[view_name]["column_count"] = <int> view_p.column_count
|
||||
views[view_name]["line_count"] = <int> view_p.line_count
|
||||
views[view_name]["view_number"] = <int> view_p.view_number
|
||||
views[view_name]["created_from"] = bytes2str(view_p.created_from)
|
||||
views[view_name]["creation_date"] = bytes2str(obi_format_date(view_p.creation_date))
|
||||
if (view_p.all_lines) :
|
||||
views[view_name]["line_selection"] = None
|
||||
else :
|
||||
views[view_name]["line_selection"] = {}
|
||||
views[view_name]["line_selection"]["column_name"] = bytes2str((view_p.line_selection).column_name)
|
||||
views[view_name]["line_selection"]["version"] = <int> (view_p.line_selection).version
|
||||
views[view_name]["column_references"] = {}
|
||||
column_refs = view_p.column_references
|
||||
for j in range(views[view_name]["column_count"]) :
|
||||
column_name = bytes2str((column_refs[j]).column_name)
|
||||
views[view_name]["column_references"][column_name] = {}
|
||||
views[view_name]["column_references"][column_name]["version"] = column_refs[j].version
|
||||
|
||||
obi_close_view_infos(all_views_p);
|
||||
|
||||
return views
|
||||
obi_view_unmap_file(self.pointer, view_infos_p)
|
||||
|
||||
return view_infos_d
|
||||
|
||||
|
||||
# cpdef dict read_views(self) : # TODO function that prints the dic nicely and function that prints 1 view nicely. Add column type in col ref
|
||||
#
|
||||
# cdef Obiviews_infos_all_p all_views_p
|
||||
# cdef Obiview_infos_p view_p
|
||||
# cdef Column_reference_p column_refs
|
||||
# cdef int nb_views
|
||||
# cdef int i, j
|
||||
# cdef str view_name
|
||||
# cdef str column_name
|
||||
# cdef dict views
|
||||
# cdef bytes name_b
|
||||
#
|
||||
# views = {}
|
||||
# all_views_p = obi_read_view_infos(self.pointer)
|
||||
# if all_views_p == NULL :
|
||||
# raise Exception("No views to read")
|
||||
# nb_views = <int> (all_views_p.header).view_count
|
||||
# for i in range(nb_views) :
|
||||
# view_p = (<Obiview_infos_p> (all_views_p.view_infos)) + i
|
||||
# view_name = bytes2str(view_p.name)
|
||||
# views[view_name] = {}
|
||||
# views[view_name]["comments"] = bytes2str(view_p.comments)
|
||||
# views[view_name]["view_type"] = bytes2str(view_p.view_type)
|
||||
# views[view_name]["column_count"] = <int> view_p.column_count
|
||||
# views[view_name]["line_count"] = <int> view_p.line_count
|
||||
# views[view_name]["view_number"] = <int> view_p.view_number
|
||||
# views[view_name]["created_from"] = bytes2str(view_p.created_from)
|
||||
# views[view_name]["creation_date"] = bytes2str(obi_format_date(view_p.creation_date))
|
||||
# if (view_p.all_lines) :
|
||||
# views[view_name]["line_selection"] = None
|
||||
# else :
|
||||
# views[view_name]["line_selection"] = {}
|
||||
# views[view_name]["line_selection"]["column_name"] = bytes2str((view_p.line_selection).column_name)
|
||||
# views[view_name]["line_selection"]["version"] = <int> (view_p.line_selection).version
|
||||
# views[view_name]["column_references"] = {}
|
||||
# column_refs = view_p.column_references
|
||||
# for j in range(views[view_name]["column_count"]) :
|
||||
# column_name = bytes2str((column_refs[j]).column_name)
|
||||
# views[view_name]["column_references"][column_name] = {}
|
||||
# views[view_name]["column_references"][column_name]["version"] = column_refs[j].version
|
||||
#
|
||||
# obi_close_view_infos(all_views_p);
|
||||
#
|
||||
# return views
|
||||
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#cython: language_level=3
|
||||
|
||||
from .capi.obitypes cimport index_t
|
||||
from ._obidms cimport OBIDMS_column #, OBIDMS_column_multi_elts
|
||||
from ._obidms cimport OBIDMS_column , OBIDMS_column_multi_elts
|
||||
|
||||
|
||||
cdef class OBIDMS_column_qual(OBIDMS_column):
|
||||
@ -11,7 +11,10 @@ cdef class OBIDMS_column_qual(OBIDMS_column):
|
||||
cpdef set_str_line(self, index_t line_nb, object value)
|
||||
|
||||
|
||||
# cdef class OBIDMS_column_multi_elts_qual(OBIDMS_column_multi_elts):
|
||||
# cpdef object get_item(self, index_t line_nb, str element_name)
|
||||
# cpdef object get_line(self, index_t line_nb)
|
||||
# cpdef set_item(self, index_t line_nb, str element_name, object value)
|
||||
cdef class OBIDMS_column_multi_elts_qual(OBIDMS_column_multi_elts):
|
||||
cpdef object get_item(self, index_t line_nb, str element_name)
|
||||
cpdef object get_str_item(self, index_t line_nb, str element_name)
|
||||
cpdef object get_line(self, index_t line_nb)
|
||||
cpdef object get_str_line(self, index_t line_nb)
|
||||
cpdef set_item(self, index_t line_nb, str element_name, object value)
|
||||
cpdef set_str_item(self, index_t line_nb, str element_name, object value)
|
||||
|
@ -32,7 +32,7 @@ cdef class OBIDMS_column_qual(OBIDMS_column):
|
||||
value = obi_column_get_obiqual_int_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, &value_length)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if value == NULL : # TODO
|
||||
if value == OBIQual_int_NA :
|
||||
result = None
|
||||
else :
|
||||
result = []
|
||||
@ -47,7 +47,7 @@ cdef class OBIDMS_column_qual(OBIDMS_column):
|
||||
value = obi_column_get_obiqual_char_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if strcmp(value, OBIQual_char_NA) == 0 :
|
||||
if value == OBIQual_char_NA :
|
||||
result = None
|
||||
else :
|
||||
result = bytes2str(value)
|
||||
@ -58,94 +58,127 @@ cdef class OBIDMS_column_qual(OBIDMS_column):
|
||||
cdef uint8_t* value_b
|
||||
cdef int value_length
|
||||
if value is None :
|
||||
value_b = NULL # TODO
|
||||
value_length = 0
|
||||
if obi_column_set_obiqual_int_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, OBIQual_int_NA, 0) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
value_length = len(value)
|
||||
value_b = <uint8_t*> malloc(value_length * sizeof(uint8_t))
|
||||
for i in range(value_length) :
|
||||
value_b[i] = <uint8_t>value[i]
|
||||
if obi_column_set_obiqual_int_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, value_b, value_length) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
if value is not None :
|
||||
if obi_column_set_obiqual_int_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, value_b, value_length) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
free(value_b)
|
||||
|
||||
cpdef set_str_line(self, index_t line_nb, object value):
|
||||
cdef bytes value_b
|
||||
if value is None :
|
||||
value_b = OBIQual_char_NA
|
||||
if obi_column_set_obiqual_char_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, OBIQual_char_NA) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
value_b = str2bytes(value)
|
||||
if obi_column_set_obiqual_char_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, value_b) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
if obi_column_set_obiqual_char_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, str2bytes(value)) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
|
||||
|
||||
# TODO OR NOT?
|
||||
# cdef class OBIDMS_column_multi_elts_qual(OBIDMS_column_multi_elts):
|
||||
#
|
||||
#
|
||||
# cpdef object get_item(self, index_t line_nb, str element_name):
|
||||
# cdef const uint8_t* value
|
||||
# cdef int value_length
|
||||
# cdef object result
|
||||
# cdef int i
|
||||
# value = obi_column_get_obiqual_int_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), &value_length)
|
||||
# if obi_errno > 0 :
|
||||
# raise IndexError(line_nb, element_name)
|
||||
# if value == NULL: # TODO
|
||||
# result = None
|
||||
# else :
|
||||
# result = []
|
||||
# for i in range(value_length) :
|
||||
# result.append(<int>value[i])
|
||||
# return result
|
||||
#
|
||||
# # cpdef object get_str_item(self, index_t line_nb, str element_name):
|
||||
# # pass
|
||||
# # cdef char* value
|
||||
# # cdef object result
|
||||
# # value = obi_column_get_obiseq_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name))
|
||||
# # if obi_errno > 0 :
|
||||
# # raise IndexError(line_nb, element_name)
|
||||
# # if strcmp(value, OBISeq_NA) == 0 :
|
||||
# # result = None
|
||||
# # else :
|
||||
# # result = bytes2str(value)
|
||||
# # free(value)
|
||||
# # return result
|
||||
#
|
||||
# cpdef object get_line(self, index_t line_nb) :
|
||||
# pass
|
||||
# # cdef char* value
|
||||
# # cdef object value_in_result
|
||||
# # cdef dict result
|
||||
# # cdef index_t i
|
||||
# # cdef bint all_NA
|
||||
# # result = {}
|
||||
# # all_NA = True
|
||||
# # for i in range(self.nb_elements_per_line) :
|
||||
# # value = obi_column_get_obiseq_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, i)
|
||||
# # if obi_errno > 0 :
|
||||
# # raise IndexError(line_nb)
|
||||
# # if strcmp(value, OBISeq_NA) == 0 :
|
||||
# # value_in_result = None
|
||||
# # else :
|
||||
# # value_in_result = bytes2str(value)
|
||||
# # free(value)
|
||||
# # result[self.elements_names[i]] = value_in_result
|
||||
# # if all_NA and (value_in_result is not None) :
|
||||
# # all_NA = False
|
||||
# # if all_NA :
|
||||
# # result = None
|
||||
# # return result
|
||||
#
|
||||
# cpdef set_item(self, index_t line_nb, str element_name, object value):
|
||||
# pass
|
||||
# # cdef bytes value_b
|
||||
# # if value is None :
|
||||
# # value_b = OBISeq_NA
|
||||
# # else :
|
||||
# # value_b = str2bytes(value)
|
||||
# # if obi_column_set_obiseq_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), value_b) < 0:
|
||||
# # raise Exception("Problem setting a value in a column")
|
||||
# #
|
||||
cdef class OBIDMS_column_multi_elts_qual(OBIDMS_column_multi_elts):
|
||||
|
||||
cpdef object get_item(self, index_t line_nb, str element_name):
|
||||
cdef const uint8_t* value
|
||||
cdef int value_length
|
||||
cdef object result
|
||||
cdef int i
|
||||
value = obi_column_get_obiqual_int_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), &value_length)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb, element_name)
|
||||
if value == OBIQual_int_NA :
|
||||
result = None
|
||||
else :
|
||||
result = []
|
||||
for i in range(value_length) :
|
||||
result.append(<int>value[i])
|
||||
return result
|
||||
|
||||
cpdef object get_str_item(self, index_t line_nb, str element_name):
|
||||
cdef char* value
|
||||
cdef object result
|
||||
value = obi_column_get_obiqual_char_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name))
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb, element_name)
|
||||
if value == OBIQual_char_NA :
|
||||
result = None
|
||||
else :
|
||||
result = bytes2str(value)
|
||||
free(value)
|
||||
return result
|
||||
|
||||
cpdef object get_line(self, index_t line_nb) :
|
||||
cdef const uint8_t* value
|
||||
cdef int value_length
|
||||
cdef object value_in_result
|
||||
cdef dict result
|
||||
cdef index_t i
|
||||
cdef int j
|
||||
cdef bint all_NA
|
||||
result = {}
|
||||
all_NA = True
|
||||
for i in range(self.nb_elements_per_line) :
|
||||
value = obi_column_get_obiqual_int_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, i, &value_length)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if value == OBIQual_int_NA :
|
||||
value_in_result = None
|
||||
else :
|
||||
value_in_result = []
|
||||
for j in range(value_length) :
|
||||
value_in_result.append(<int>value[j])
|
||||
result[self.elements_names[i]] = value_in_result
|
||||
if all_NA and (value_in_result is not None) :
|
||||
all_NA = False
|
||||
if all_NA :
|
||||
result = None
|
||||
return result
|
||||
|
||||
cpdef object get_str_line(self, index_t line_nb) :
|
||||
cdef char* value
|
||||
cdef object value_in_result
|
||||
cdef dict result
|
||||
cdef index_t i
|
||||
cdef bint all_NA
|
||||
result = {}
|
||||
all_NA = True
|
||||
for i in range(self.nb_elements_per_line) :
|
||||
value = obi_column_get_obiqual_char_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, i)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if value == OBIQual_char_NA :
|
||||
value_in_result = None
|
||||
else :
|
||||
value_in_result = bytes2str(value)
|
||||
free(value)
|
||||
result[self.elements_names[i]] = value_in_result
|
||||
if all_NA and (value_in_result is not None) :
|
||||
all_NA = False
|
||||
if all_NA :
|
||||
result = None
|
||||
return result
|
||||
|
||||
cpdef set_item(self, index_t line_nb, str element_name, object value):
|
||||
cdef uint8_t* value_b
|
||||
cdef int value_length
|
||||
if value is None :
|
||||
if obi_column_set_obiqual_int_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), OBIQual_int_NA, 0) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
value_length = len(value)
|
||||
value_b = <uint8_t*> malloc(value_length * sizeof(uint8_t))
|
||||
for i in range(value_length) :
|
||||
value_b[i] = <uint8_t>value[i]
|
||||
if obi_column_set_obiqual_int_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), value_b, value_length) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
free(value_b)
|
||||
|
||||
cpdef set_str_item(self, index_t line_nb, str element_name, object value):
|
||||
if value is None :
|
||||
if obi_column_set_obiqual_char_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), OBIQual_char_NA) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
if obi_column_set_obiqual_char_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name), str2bytes(value)) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
|
@ -13,7 +13,6 @@ from ._obidms cimport OBIView
|
||||
from obitools3.utils cimport str2bytes, bytes2str
|
||||
|
||||
from libc.stdlib cimport free
|
||||
from libc.string cimport strcmp
|
||||
|
||||
|
||||
cdef class OBIDMS_column_seq(OBIDMS_column):
|
||||
@ -24,7 +23,7 @@ cdef class OBIDMS_column_seq(OBIDMS_column):
|
||||
value = obi_column_get_obiseq_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if strcmp(value, OBISeq_NA) == 0 :
|
||||
if value == OBISeq_NA :
|
||||
result = None
|
||||
else :
|
||||
try:
|
||||
@ -47,6 +46,9 @@ cdef class OBIDMS_column_seq(OBIDMS_column):
|
||||
|
||||
if obi_column_set_obiseq_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, value_b) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
if obi_column_set_obiseq_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, str2bytes(value)) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
|
||||
# TODO choose alignment type (lcs or other) with supplementary argument
|
||||
cpdef align(self,
|
||||
@ -69,7 +71,7 @@ cdef class OBIDMS_column_multi_elts_seq(OBIDMS_column_multi_elts):
|
||||
value = obi_column_get_obiseq_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name))
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb, element_name)
|
||||
if strcmp(value, OBISeq_NA) == 0 :
|
||||
if value == OBISeq_NA :
|
||||
result = None
|
||||
else :
|
||||
try:
|
||||
@ -91,7 +93,7 @@ cdef class OBIDMS_column_multi_elts_seq(OBIDMS_column_multi_elts):
|
||||
value = obi_column_get_obiseq_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, i)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if strcmp(value, OBISeq_NA) == 0 :
|
||||
if value == OBISeq_NA :
|
||||
value_in_result = None
|
||||
else :
|
||||
try:
|
||||
|
@ -9,8 +9,6 @@ from .capi.obitypes cimport OBIStr_NA, const_char_p
|
||||
|
||||
from obitools3.utils cimport str2bytes, bytes2str
|
||||
|
||||
from libc.string cimport strcmp
|
||||
|
||||
|
||||
cdef class OBIDMS_column_str(OBIDMS_column):
|
||||
|
||||
@ -20,7 +18,7 @@ cdef class OBIDMS_column_str(OBIDMS_column):
|
||||
value = obi_column_get_obistr_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if strcmp(value, OBIStr_NA) == 0 :
|
||||
if value == OBIStr_NA :
|
||||
result = None
|
||||
else :
|
||||
result = bytes2str(value)
|
||||
@ -28,13 +26,12 @@ cdef class OBIDMS_column_str(OBIDMS_column):
|
||||
return result
|
||||
|
||||
cpdef set_line(self, index_t line_nb, object value):
|
||||
cdef bytes value_b
|
||||
if value is None :
|
||||
value_b = OBIStr_NA
|
||||
if obi_column_set_obistr_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, OBIStr_NA) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
else :
|
||||
value_b = str2bytes(value)
|
||||
if obi_column_set_obistr_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, value_b) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
if obi_column_set_obistr_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, 0, str2bytes(value)) < 0:
|
||||
raise Exception("Problem setting a value in a column")
|
||||
|
||||
|
||||
cdef class OBIDMS_column_multi_elts_str(OBIDMS_column_multi_elts):
|
||||
@ -45,7 +42,7 @@ cdef class OBIDMS_column_multi_elts_str(OBIDMS_column_multi_elts):
|
||||
value = obi_column_get_obistr_with_elt_name_in_view(self.view.pointer, (self.pointer)[0], line_nb, str2bytes(element_name))
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb, element_name)
|
||||
if strcmp(value, OBIStr_NA) == 0 :
|
||||
if value == OBIStr_NA :
|
||||
result = None
|
||||
else :
|
||||
result = bytes2str(value)
|
||||
@ -64,7 +61,7 @@ cdef class OBIDMS_column_multi_elts_str(OBIDMS_column_multi_elts):
|
||||
value = obi_column_get_obistr_with_elt_idx_in_view(self.view.pointer, (self.pointer)[0], line_nb, i)
|
||||
if obi_errno > 0 :
|
||||
raise IndexError(line_nb)
|
||||
if strcmp(value, OBIStr_NA) == 0 :
|
||||
if value == OBIStr_NA :
|
||||
value_in_result = None
|
||||
else :
|
||||
value_in_result = bytes2str(value)
|
||||
|
@ -4,35 +4,35 @@ from ._obidms cimport OBIView_line
|
||||
|
||||
|
||||
cdef class OBI_Seq(dict) :
|
||||
cdef str id
|
||||
cdef str definition
|
||||
cdef str sequence
|
||||
cdef object id
|
||||
cdef object definition
|
||||
cdef object sequence
|
||||
|
||||
cpdef set_id(self, str id)
|
||||
cpdef get_id(self)
|
||||
cpdef set_definition(self, str definition)
|
||||
cpdef get_definition(self)
|
||||
cpdef get_sequence(self)
|
||||
cpdef set_id(self, object id)
|
||||
cpdef object get_id(self)
|
||||
cpdef set_definition(self, object definition)
|
||||
cpdef object get_definition(self)
|
||||
cpdef object get_sequence(self)
|
||||
|
||||
|
||||
cdef class OBI_Nuc_Seq(OBI_Seq) :
|
||||
cdef object quality
|
||||
|
||||
#cpdef str reverse_complement(self)
|
||||
cpdef set_sequence(self, str sequence)
|
||||
#cpdef object reverse_complement(self)
|
||||
cpdef set_sequence(self, object sequence)
|
||||
cpdef set_quality(self, object quality)
|
||||
cpdef get_quality(self)
|
||||
cpdef object get_quality(self)
|
||||
|
||||
|
||||
cdef class OBI_Nuc_Seq_Stored(OBIView_line) :
|
||||
cpdef set_id(self, str id)
|
||||
cpdef get_id(self)
|
||||
cpdef set_definition(self, str definition)
|
||||
cpdef get_definition(self)
|
||||
cpdef set_sequence(self, str sequence)
|
||||
cpdef get_sequence(self)
|
||||
cpdef set_id(self, object id)
|
||||
cpdef object get_id(self)
|
||||
cpdef set_definition(self, object definition)
|
||||
cpdef object get_definition(self)
|
||||
cpdef set_sequence(self, object sequence)
|
||||
cpdef object get_sequence(self)
|
||||
cpdef set_quality(self, object quality)
|
||||
cpdef get_quality(self)
|
||||
cpdef get_str_quality(self)
|
||||
cpdef object get_quality(self)
|
||||
cpdef object get_str_quality(self)
|
||||
|
||||
# cpdef str reverse_complement(self)
|
||||
# cpdef object reverse_complement(self)
|
||||
|
@ -9,20 +9,20 @@ from .capi.obiview cimport NUC_SEQUENCE_COLUMN, \
|
||||
|
||||
cdef class OBI_Seq(dict) :
|
||||
|
||||
def __init__(self, str id, str seq, str definition=None) :
|
||||
def __init__(self, object id, object seq, object definition=None) :
|
||||
self.set_id(id)
|
||||
self.set_sequence(seq)
|
||||
if definition is not None :
|
||||
self.set_definition(definition)
|
||||
|
||||
cpdef set_id(self, str id) :
|
||||
cpdef set_id(self, object id) :
|
||||
self.id = id
|
||||
self[bytes2str(ID_COLUMN)] = id
|
||||
|
||||
cpdef get_id(self) :
|
||||
return self.id
|
||||
|
||||
cpdef set_definition(self, str definition) :
|
||||
cpdef set_definition(self, object definition) :
|
||||
self.definition = definition
|
||||
self[bytes2str(DEFINITION_COLUMN)] = definition
|
||||
|
||||
@ -38,7 +38,7 @@ cdef class OBI_Seq(dict) :
|
||||
|
||||
cdef class OBI_Nuc_Seq(OBI_Seq) :
|
||||
|
||||
cpdef set_sequence(self, str sequence) :
|
||||
cpdef set_sequence(self, object sequence) :
|
||||
self.sequence = sequence
|
||||
self[bytes2str(NUC_SEQUENCE_COLUMN)] = sequence
|
||||
|
||||
@ -57,34 +57,34 @@ cdef class OBI_Nuc_Seq_Stored(OBIView_line) :
|
||||
|
||||
# TODO store the str version of column name macros
|
||||
|
||||
cpdef set_id(self, str id) :
|
||||
cpdef set_id(self, object id) :
|
||||
self[bytes2str(ID_COLUMN)] = id
|
||||
|
||||
cpdef get_id(self) :
|
||||
cpdef object get_id(self) :
|
||||
return self[bytes2str(ID_COLUMN)]
|
||||
|
||||
cpdef set_definition(self, str definition) :
|
||||
cpdef set_definition(self, object definition) :
|
||||
self[bytes2str(DEFINITION_COLUMN)] = definition
|
||||
|
||||
cpdef get_definition(self) :
|
||||
cpdef object get_definition(self) :
|
||||
return self[bytes2str(DEFINITION_COLUMN)]
|
||||
|
||||
cpdef set_sequence(self, str sequence) :
|
||||
cpdef set_sequence(self, object sequence) :
|
||||
self[bytes2str(NUC_SEQUENCE_COLUMN)] = sequence
|
||||
|
||||
cpdef get_sequence(self) :
|
||||
cpdef object get_sequence(self) :
|
||||
return self[bytes2str(NUC_SEQUENCE_COLUMN)]
|
||||
|
||||
cpdef set_quality(self, object quality) :
|
||||
if type(quality) == list :
|
||||
if (type(quality) == list) or (quality is None) :
|
||||
self[bytes2str(QUALITY_COLUMN)] = quality
|
||||
else : # Quality is in str form
|
||||
(((self.view).columns)[bytes2str(QUALITY_COLUMN)]).set_str_line(self.index, quality)
|
||||
|
||||
cpdef get_quality(self) :
|
||||
cpdef object get_quality(self) :
|
||||
return self[bytes2str(QUALITY_COLUMN)]
|
||||
|
||||
cpdef get_str_quality(self) :
|
||||
cpdef object get_str_quality(self) :
|
||||
return ((self.view).columns)[bytes2str(QUALITY_COLUMN)].get_str_line(self.index)
|
||||
|
||||
# def __str__(self) :
|
||||
|
@ -1,7 +1,8 @@
|
||||
#cython: language_level=3
|
||||
|
||||
|
||||
from libc.stdint cimport int32_t, int64_t
|
||||
from libc.stdint cimport int32_t, int64_t, uint8_t
|
||||
|
||||
from posix.types cimport time_t
|
||||
|
||||
|
||||
@ -47,8 +48,8 @@ cdef extern from "obitypes.h" nogil:
|
||||
extern obibool_t OBIBool_NA
|
||||
extern const_char_p OBISeq_NA
|
||||
extern const_char_p OBIStr_NA
|
||||
extern const_char_p OBIQual_int_NA
|
||||
extern const_char_p OBIQual_char_NA
|
||||
extern uint8_t* OBIQual_int_NA
|
||||
|
||||
const_char_p name_data_type(int data_type)
|
||||
|
||||
|
@ -23,21 +23,6 @@ cdef extern from "obiview.h" nogil:
|
||||
extern const_char_p DEFINITION_COLUMN
|
||||
extern const_char_p QUALITY_COLUMN
|
||||
|
||||
struct Obiview_t :
|
||||
OBIDMS_p dms
|
||||
const_char_p name
|
||||
const_char_p created_from
|
||||
const_char_p view_type
|
||||
bint read_only
|
||||
OBIDMS_column_p line_selection
|
||||
OBIDMS_column_p new_line_selection
|
||||
index_t line_count
|
||||
int column_count
|
||||
OBIDMS_column_p columns
|
||||
const_char_p comments
|
||||
|
||||
ctypedef Obiview_t* Obiview_p
|
||||
|
||||
|
||||
struct Column_reference_t :
|
||||
const_char_p column_name
|
||||
@ -47,7 +32,6 @@ cdef extern from "obiview.h" nogil:
|
||||
|
||||
|
||||
struct Obiview_infos_t :
|
||||
int view_number
|
||||
time_t creation_date
|
||||
const_char_p name
|
||||
const_char_p created_from
|
||||
@ -62,19 +46,15 @@ cdef extern from "obiview.h" nogil:
|
||||
ctypedef Obiview_infos_t* Obiview_infos_p
|
||||
|
||||
|
||||
struct Obiviews_header_t :
|
||||
size_t header_size
|
||||
size_t views_size
|
||||
int view_count
|
||||
|
||||
ctypedef Obiviews_header_t* Obiviews_header_p
|
||||
struct Obiview_t :
|
||||
Obiview_infos_p infos
|
||||
OBIDMS_p dms
|
||||
bint read_only
|
||||
OBIDMS_column_p line_selection
|
||||
OBIDMS_column_p new_line_selection
|
||||
OBIDMS_column_p columns
|
||||
|
||||
|
||||
struct Obiviews_infos_all_t :
|
||||
Obiviews_header_p header
|
||||
Obiview_infos_p view_infos
|
||||
|
||||
ctypedef Obiviews_infos_all_t* Obiviews_infos_all_p
|
||||
ctypedef Obiview_t* Obiview_p
|
||||
|
||||
|
||||
Obiview_p obi_new_view_nuc_seqs(OBIDMS_p dms, const_char_p view_name, Obiview_p view_to_clone, index_t* line_selection, const_char_p comments)
|
||||
@ -85,6 +65,10 @@ cdef extern from "obiview.h" nogil:
|
||||
|
||||
Obiview_p obi_new_view_nuc_seqs_cloned_from_name(OBIDMS_p dms, const_char_p view_name, const_char_p view_to_clone_name, index_t* line_selection, const_char_p comments)
|
||||
|
||||
Obiview_infos_p obi_view_map_file(OBIDMS_p dms, const char* view_name)
|
||||
|
||||
int obi_view_unmap_file(OBIDMS_p dms, Obiview_infos_p view_infos)
|
||||
|
||||
Obiview_p obi_open_view(OBIDMS_p dms, const_char_p view_name)
|
||||
|
||||
int obi_view_add_column(Obiview_p view,
|
||||
@ -113,10 +97,6 @@ cdef extern from "obiview.h" nogil:
|
||||
int obi_close_view(Obiview_p view)
|
||||
|
||||
int obi_save_and_close_view(Obiview_p view)
|
||||
|
||||
Obiviews_infos_all_p obi_read_view_infos(OBIDMS_p dms)
|
||||
|
||||
int obi_close_view_infos(Obiviews_infos_all_p views)
|
||||
|
||||
int obi_column_set_obiint_with_elt_name_in_view(Obiview_p view,
|
||||
OBIDMS_column_p column,
|
||||
|
@ -1,5 +1,6 @@
|
||||
#cython: language_level=3
|
||||
|
||||
from ..utils cimport str2bytes
|
||||
from .header cimport parseHeader
|
||||
from ..files.universalopener cimport uopen
|
||||
from ..files.linebuffer cimport LineBuffer
|
||||
|
@ -6,12 +6,15 @@ Created on 30 mars 2016
|
||||
@author: coissac
|
||||
'''
|
||||
|
||||
|
||||
def fastaIterator(lineiterator, int buffersize=100000000):
|
||||
cdef LineBuffer lb
|
||||
cdef str ident
|
||||
cdef str definition
|
||||
cdef dict tags
|
||||
cdef list s
|
||||
cdef bytes sequence
|
||||
cdef bytes quality
|
||||
|
||||
if isinstance(lineiterator,(str,bytes)):
|
||||
lineiterator=uopen(lineiterator)
|
||||
@ -31,12 +34,12 @@ def fastaIterator(lineiterator, int buffersize=100000000):
|
||||
|
||||
try:
|
||||
while line[0]!='>':
|
||||
s.append(line[0:-1])
|
||||
s.append(str2bytes(line)[0:-1])
|
||||
line = next(i)
|
||||
except StopIteration:
|
||||
pass
|
||||
|
||||
sequence = "".join(s)
|
||||
sequence = b"".join(s)
|
||||
quality = None
|
||||
|
||||
yield { "id" : ident,
|
||||
|
@ -1,5 +1,7 @@
|
||||
#cython: language_level=3
|
||||
|
||||
from ..utils cimport str2bytes
|
||||
|
||||
from .header cimport parseHeader
|
||||
from ..files.universalopener cimport uopen
|
||||
from ..files.linebuffer cimport LineBuffer
|
||||
|
@ -6,15 +6,13 @@ Created on 30 mars 2016
|
||||
@author: coissac
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def fastqIterator(lineiterator, int buffersize=100000000):
|
||||
cdef LineBuffer lb
|
||||
cdef str ident
|
||||
cdef str definition
|
||||
cdef dict tags
|
||||
cdef bytes sequence
|
||||
cdef bytes quality
|
||||
|
||||
if isinstance(lineiterator,(str,bytes)):
|
||||
lineiterator=uopen(lineiterator)
|
||||
@ -27,9 +25,9 @@ def fastqIterator(lineiterator, int buffersize=100000000):
|
||||
i = iter(lb)
|
||||
for line in i:
|
||||
ident,tags,definition = parseHeader(line)
|
||||
sequence = next(i)[0:-1]
|
||||
sequence = str2bytes(next(i)[0:-1])
|
||||
next(i)
|
||||
quality = next(i)[0:-1]
|
||||
quality = str2bytes(next(i)[0:-1])
|
||||
|
||||
yield { "id" : ident,
|
||||
"definition" : definition,
|
||||
|
Reference in New Issue
Block a user