From 2d65db4ebc3faff85aa0b8ba9bba69711b66d8f8 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Fri, 21 Apr 2017 15:15:12 +0200 Subject: [PATCH] Goes with c2af955b : forgotten files for NUC_SEQS views --- .../obitools3/dms/view/typed_view/__init__.py | 0 .../dms/view/typed_view/view_NUC_SEQS.pxd | 8 ++ .../dms/view/typed_view/view_NUC_SEQS.pyx | 76 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 python/obitools3/dms/view/typed_view/__init__.py create mode 100644 python/obitools3/dms/view/typed_view/view_NUC_SEQS.pxd create mode 100644 python/obitools3/dms/view/typed_view/view_NUC_SEQS.pyx diff --git a/python/obitools3/dms/view/typed_view/__init__.py b/python/obitools3/dms/view/typed_view/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pxd b/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pxd new file mode 100644 index 0000000..a5ec324 --- /dev/null +++ b/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pxd @@ -0,0 +1,8 @@ +#cython: language_level=3 + + +from ..view cimport View + + +cdef class View_NUC_SEQS(View): + pass diff --git a/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pyx b/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pyx new file mode 100644 index 0000000..693b43e --- /dev/null +++ b/python/obitools3/dms/view/typed_view/view_NUC_SEQS.pyx @@ -0,0 +1,76 @@ +#cython: language_level=3 + +from obitools3.dms.capi.obiview cimport obi_new_view_nuc_seqs, \ + obi_new_view_nuc_seqs_cloned_from_name, \ + VIEW_TYPE_NUC_SEQS + +from ..view cimport register_view_class + +from obitools3.dms.obiseq cimport Nuc_Seq, Nuc_Seq_Stored + +from obitools3.dms.dms cimport DMS + +from obitools3.dms.capi.obitypes cimport index_t + +from obitools3.utils cimport tobytes, bytes2str + +from obitools3.dms.capi.obidms cimport OBIDMS_p + +from obitools3.dms.object cimport OBIWrapper + + + +cdef class View_NUC_SEQS(View): + + @staticmethod + def new(DMS dms, + object view_name, + object comments=None, + bint quality=False): + + cdef bytes view_name_b = tobytes(view_name) + cdef bytes comments_b + cdef str message + cdef void* pointer + + cdef View_NUC_SEQS view + + if comments is not None: + comments_b = tobytes(comments) + else: + comments_b = b'' + + pointer = obi_new_view_nuc_seqs(dms._pointer, + view_name_b, + NULL, + NULL, + comments_b, + quality) + + if pointer == NULL : + message = "Error : Cannot create view %s" % bytes2str(view_name_b) + raise RuntimeError(message) + + view = OBIWrapper.new(View_NUC_SEQS, pointer) + view._dms = dms + dms.register(view) + + return view + + + def __getitem__(self, object item) : + if type(item) == str : + return self.get_column(item) # TODO hyper lent dans la pratique + elif type(item) == int : + return Nuc_Seq_Stored(self, item) + + + def __setitem__(self, index_t line_idx, Nuc_Seq sequence_obj) : + for key in sequence_obj : + self[line_idx][key] = sequence_obj[key] + + + +def register_class() : + register_view_class(VIEW_TYPE_NUC_SEQS, View_NUC_SEQS) +