From 857a5198e4dc33c46c1abf33b819cc10dd1c01a2 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Fri, 16 Dec 2016 19:40:36 +0100 Subject: [PATCH] Updated ``obi lcs`` for the LCS alignment of two columns --- python/obitools3/commands/lcs.pyx | 45 ++++++++++++++++------- python/obitools3/obidms/capi/obialign.pxd | 18 +++++++++ 2 files changed, 49 insertions(+), 14 deletions(-) diff --git a/python/obitools3/commands/lcs.pyx b/python/obitools3/commands/lcs.pyx index 0a8b3b0..8a8bea9 100644 --- a/python/obitools3/commands/lcs.pyx +++ b/python/obitools3/commands/lcs.pyx @@ -4,7 +4,8 @@ from obitools3.apps.progress cimport ProgressBar # @UnresolvedImport from obitools3.obidms._obidms cimport OBIDMS # TODO cimport doesn't work from obitools3.utils cimport str2bytes -from obitools3.obidms.capi.obialign cimport obi_lcs_align_one_column +from obitools3.obidms.capi.obialign cimport obi_lcs_align_one_column, \ + obi_lcs_align_two_columns import time @@ -161,19 +162,35 @@ cpdef align(str dms_n, cdef OBIDMS d d = OBIDMS(dms_n) - # Align 1 column (2 columns not implemented yet) - if obi_lcs_align_one_column(d._pointer, \ - str2bytes(input_view_1_n), \ - str2bytes(input_column_1_n), \ - str2bytes(input_elt_1_n), \ - str2bytes(id_column_1_n), \ - str2bytes(output_view_n), \ - str2bytes(comments), \ - print_seq, \ - print_count, \ - threshold, normalize, reference, similarity_mode) < 0 : - raise Exception("Error aligning sequences") - + if input_view_2_n == "" and input_column_2_n == "" : + if obi_lcs_align_one_column(d._pointer, \ + str2bytes(input_view_1_n), \ + str2bytes(input_column_1_n), \ + str2bytes(input_elt_1_n), \ + str2bytes(id_column_1_n), \ + str2bytes(output_view_n), \ + str2bytes(comments), \ + print_seq, \ + print_count, \ + threshold, normalize, reference, similarity_mode) < 0 : + raise Exception("Error aligning sequences") + else : + if obi_lcs_align_two_columns(d._pointer, \ + str2bytes(input_view_1_n), \ + str2bytes(input_view_2_n), \ + str2bytes(input_column_1_n), \ + str2bytes(input_column_2_n), \ + str2bytes(input_elt_1_n), \ + str2bytes(input_elt_2_n), \ + str2bytes(id_column_1_n), \ + str2bytes(id_column_2_n), \ + str2bytes(output_view_n), \ + str2bytes(comments), \ + print_seq, \ + print_count, \ + threshold, normalize, reference, similarity_mode) < 0 : + raise Exception("Error aligning sequences") + d.close() diff --git a/python/obitools3/obidms/capi/obialign.pxd b/python/obitools3/obidms/capi/obialign.pxd index e9c105c..e76cabe 100644 --- a/python/obitools3/obidms/capi/obialign.pxd +++ b/python/obitools3/obidms/capi/obialign.pxd @@ -20,3 +20,21 @@ cdef extern from "obi_align.h" nogil: int reference, bint similarity_mode) + + int obi_lcs_align_two_columns(OBIDMS_p dms, + const_char_p seq1_view_name, + const_char_p seq2_view_name, + const_char_p seq1_column_name, + const_char_p seq2_column_name, + const_char_p seq1_elt_name, + const_char_p seq2_elt_name, + const_char_p id1_column_name, + const_char_p id2_column_name, + const_char_p output_view_name, + const_char_p output_view_comments, + bint print_seq, + bint print_count, + double threshold, + bint normalize, + int reference, + bint similarity_mode);