diff --git a/python/obitools3/commands/export.pyx b/python/obitools3/commands/export.pyx index cabcd82..e4b0e2b 100644 --- a/python/obitools3/commands/export.pyx +++ b/python/obitools3/commands/export.pyx @@ -67,16 +67,16 @@ def run(config): for seq in iview : pb(i) - toprint = ">"+seq.get_id()+" " + toprint = ">"+seq.id+" " for col_name in seq : if col_name not in special_columns : toprint = toprint + col_name + "=" + str(seq[col_name]) + "; " if DEFINITION_COLUMN in seq : - toprint = toprint + seq.get_definition() + toprint = toprint + seq.definition - nucseq = bytes2str(seq.get_sequence()) + nucseq = bytes2str(seq.nuc_seq) if config['export']['format'] == "fasta" : nucseq = re.sub("(.{60})", "\\1\n", nucseq, 0, re.DOTALL) diff --git a/python/obitools3/commands/import.pyx b/python/obitools3/commands/import.pyx index fb0c7cd..76cc8e3 100644 --- a/python/obitools3/commands/import.pyx +++ b/python/obitools3/commands/import.pyx @@ -90,7 +90,7 @@ def addOptions(parser): # TODO: Handling of NA values def run(config): - pb = ProgressBar(35000000, config, seconde=5) + pb = ProgressBar(10000, config, seconde=5) # TODO should be number of records in file inputs = uopen(config['import']['filename']) @@ -107,25 +107,24 @@ def run(config): # Create DMS d = OBIDMS(config['obi']['defaultdms']) - + # Create view view = d.new_view(config['import']['destview'], view_type=view_type, quality_column=get_quality) i = 0 for seq in iseq: pb(i) - view[i].set_id(seq['id']) - view[i].set_definition(seq['definition']) - view[i].set_sequence(seq['sequence']) + view[i].id = seq['id'] + view[i].definition = seq['definition'] + view[i].nuc_seq = seq['sequence'] if get_quality : - view[i].set_quality(seq['quality']) + view[i].quality = seq['quality'] for tag in seq['tags'] : view[i][tag] = seq['tags'][tag] i+=1 - print(view.__repr__()) + #print(view.__repr__()) view.close() d.close() - print("Done.") diff --git a/python/obitools3/obidms/_obiseq.pxd b/python/obitools3/obidms/_obiseq.pxd index 4c79b1d..0ac065e 100644 --- a/python/obitools3/obidms/_obiseq.pxd +++ b/python/obitools3/obidms/_obiseq.pxd @@ -4,35 +4,16 @@ from ._obidms cimport OBIView_line cdef class OBI_Seq(dict) : - cdef object id - cdef object definition - cdef object sequence - - 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 str _id + cdef object _seq + cdef str _definition cdef class OBI_Nuc_Seq(OBI_Seq) : - cdef object quality - + cdef object _quality #cpdef object reverse_complement(self) - cpdef set_sequence(self, object sequence) - cpdef set_quality(self, object quality) - cpdef object get_quality(self) cdef class OBI_Nuc_Seq_Stored(OBIView_line) : - 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 object get_quality(self) cpdef object get_str_quality(self) - - # cpdef object reverse_complement(self) + #cpdef object reverse_complement(self) diff --git a/python/obitools3/obidms/_obiseq.pyx b/python/obitools3/obidms/_obiseq.pyx index 4eb9ac4..1e4709e 100644 --- a/python/obitools3/obidms/_obiseq.pyx +++ b/python/obitools3/obidms/_obiseq.pyx @@ -10,45 +10,59 @@ from .capi.obiview cimport NUC_SEQUENCE_COLUMN, \ cdef class OBI_Seq(dict) : - 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, object id) : + def __init__(self, str id, object seq, object definition=None) : self.id = id - self[bytes2str(ID_COLUMN)] = id - - cpdef get_id(self) : - return self.id - - cpdef set_definition(self, object definition) : - self.definition = definition - self[bytes2str(DEFINITION_COLUMN)] = definition - - cpdef get_definition(self) : - return self.definition + self.seq = seq + if definition is not None : + self.definition = definition - cpdef get_sequence(self) : - return self.sequence + # sequence id property getter and setter + @property + def id(self): + return self._id + @id.setter + def id(self, str new_id): + self._id = new_id + self[bytes2str(ID_COLUMN)] = new_id - def __str__(self) : - return self.sequence # or not + # sequence property getter and setter + @property + def seq(self): + return self._seq + @seq.setter + def seq(self, object new_seq): + self._seq = new_seq + self["SEQ"] = new_seq # TODO discuss + + # sequence definition property getter and setter + @property + def definition(self): + return self._definition + @definition.setter + def definition(self, object new_definition): + self._definition = new_definition + self[bytes2str(DEFINITION_COLUMN)] = new_definition cdef class OBI_Nuc_Seq(OBI_Seq) : - cpdef set_sequence(self, object sequence) : - self.sequence = sequence - self[bytes2str(NUC_SEQUENCE_COLUMN)] = sequence + # nuc sequence property getter and setter + @property + def seq(self): + return self._seq + @seq.setter + def seq(self, object new_seq): + self._seq = new_seq + self[bytes2str(NUC_SEQUENCE_COLUMN)] = new_seq - cpdef set_quality(self, object quality) : - self.quality = quality - self[bytes2str(QUALITY_COLUMN)] = quality - - cpdef get_quality(self) : - return self.quality + # sequence quality property getter and setter + @property + def quality(self): + return self._quality + @quality.setter + def quality(self, object new_quality): + self._quality = new_quality + self[bytes2str(QUALITY_COLUMN)] = new_quality # cpdef str reverse_complement(self) : TODO in C ? # pass @@ -58,41 +72,46 @@ cdef class OBI_Nuc_Seq_Stored(OBIView_line) : # TODO store the str version of column name macros? - cpdef set_id(self, object id) : - self[bytes2str(ID_COLUMN)] = id - - cpdef object get_id(self) : + # sequence id property getter and setter + @property + def id(self): return self[bytes2str(ID_COLUMN)] - - cpdef set_definition(self, object definition) : - self[bytes2str(DEFINITION_COLUMN)] = definition + @id.setter + def id(self, str new_id): + self[bytes2str(ID_COLUMN)] = new_id - cpdef object get_definition(self) : + # sequence definition property getter and setter + @property + def definition(self): return self[bytes2str(DEFINITION_COLUMN)] + @definition.setter + def definition(self, str new_def): + self[bytes2str(DEFINITION_COLUMN)] = new_def - cpdef set_sequence(self, object sequence) : - self[bytes2str(NUC_SEQUENCE_COLUMN)] = sequence - - cpdef object get_sequence(self) : + # nuc_seq property getter and setter + @property + def nuc_seq(self): return self[bytes2str(NUC_SEQUENCE_COLUMN)] - - cpdef set_quality(self, object quality) : - 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) + @nuc_seq.setter + def nuc_seq(self, object new_seq): + self[bytes2str(NUC_SEQUENCE_COLUMN)] = new_seq - cpdef object get_quality(self) : + # quality property getter and setter + @property + def quality(self): return self[bytes2str(QUALITY_COLUMN)] + @quality.setter + def quality(self, object new_qual): + if (type(new_qual) == list) or (new_qual is None) : + self[bytes2str(QUALITY_COLUMN)] = new_qual + else : # Quality is in str form + (((self._view).columns)[bytes2str(QUALITY_COLUMN)]).set_str_line(self._index, new_qual) - cpdef object get_str_quality(self) : + cpdef object get_str_quality(self) : # TODO not ideal return ((self._view).columns)[bytes2str(QUALITY_COLUMN)].get_str_line(self._index) - -# def __str__(self) : -# return self[bytes2str(NUC_SEQUENCE_COLUMN)] # or not # cpdef str reverse_complement(self) : TODO in C ? # pass - # TODO static method to import? + # TODO static method to import OBI_Nuc_Seq to OBI_Nuc_Seq_Stored ?