Generated by Cython 0.29.23
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: _hpc.c
001: # coding: utf-8
002: # cython: language_level=3, linetrace=True
003:
004: cimport openmp
005: from cython.parallel import prange
006: from libc.stdlib cimport malloc, free
007: from libc.stdio cimport printf
008: from libeasel.sq cimport ESL_SQ
009:
010: IF HMMER_IMPL == "VMX":
011: from libhmmer.impl_vmx cimport p7_oprofile
012: ELIF HMMER_IMPL == "SSE":
013: from libhmmer.impl_sse cimport p7_oprofile
014:
015: from .easel cimport Alphabet, SequenceFile, DigitalSequence
016: from .plan7 cimport Background, HMM, Pipeline, Profile, OptimizedProfile, TopHits
017:
+018: import queue
__Pyx_TraceLine(18,0,__PYX_ERR(0, 18, __pyx_L1_error)) __pyx_t_1 = __Pyx_Import(__pyx_n_s_queue, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_queue, __pyx_t_1) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+019: from .utils import peekable
__Pyx_TraceLine(19,0,__PYX_ERR(0, 19, __pyx_L1_error)) __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_peekable); __Pyx_GIVEREF(__pyx_n_s_peekable); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_peekable); __pyx_t_2 = __Pyx_Import(__pyx_n_s_utils, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_peekable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_peekable, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
020:
021:
022:
023: cdef class _HMMSearch:
024:
+025: def __init__(self, queries, sequences, cpus=0, callback=None, blocksize=100, **options):
/* Python wrapper */
static int __pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_queries = 0;
PyObject *__pyx_v_sequences = 0;
PyObject *__pyx_v_cpus = 0;
PyObject *__pyx_v_callback = 0;
PyObject *__pyx_v_blocksize = 0;
PyObject *__pyx_v_options = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
__pyx_v_options = PyDict_New(); if (unlikely(!__pyx_v_options)) return -1;
__Pyx_GOTREF(__pyx_v_options);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_queries,&__pyx_n_s_sequences,&__pyx_n_s_cpus,&__pyx_n_s_callback,&__pyx_n_s_blocksize,0};
PyObject* values[5] = {0,0,0,0,0};
values[2] = ((PyObject *)__pyx_int_0);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queries)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sequences)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); __PYX_ERR(0, 25, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cpus);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocksize);
if (value) { values[4] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_options, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 25, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_queries = values[0];
__pyx_v_sequences = values[1];
__pyx_v_cpus = values[2];
__pyx_v_callback = values[3];
__pyx_v_blocksize = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 25, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_options); __pyx_v_options = 0;
__Pyx_AddTraceback("pyhmmer._hpc._HMMSearch.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7pyhmmer_4_hpc_10_HMMSearch___init__(((struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *)__pyx_v_self), __pyx_v_queries, __pyx_v_sequences, __pyx_v_cpus, __pyx_v_callback, __pyx_v_blocksize, __pyx_v_options);
/* function exit code */
__Pyx_XDECREF(__pyx_v_options);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7pyhmmer_4_hpc_10_HMMSearch___init__(struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *__pyx_v_self, PyObject *__pyx_v_queries, PyObject *__pyx_v_sequences, PyObject *__pyx_v_cpus, PyObject *__pyx_v_callback, PyObject *__pyx_v_blocksize, PyObject *__pyx_v_options) {
struct __pyx_obj_7pyhmmer_5easel_DigitalSequence *__pyx_v_seq = 0;
struct __pyx_obj_7pyhmmer_5plan7_Profile *__pyx_v_profile = 0;
struct __pyx_obj_7pyhmmer_5plan7_OptimizedProfile *__pyx_v_oprofile = 0;
struct __pyx_obj_7pyhmmer_5plan7_Pipeline *__pyx_v_pipeline = 0;
PyObject *__pyx_v_i = NULL;
int __pyx_r;
__Pyx_TraceDeclarations
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
__Pyx_TraceCall("__init__", __pyx_f[0], 25, 0, __PYX_ERR(0, 25, __pyx_L1_error));
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyhmmer._hpc._HMMSearch.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_seq);
__Pyx_XDECREF((PyObject *)__pyx_v_profile);
__Pyx_XDECREF((PyObject *)__pyx_v_oprofile);
__Pyx_XDECREF((PyObject *)__pyx_v_pipeline);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_TraceReturn(Py_None, 0);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
026:
027: cdef DigitalSequence seq
028: cdef Profile profile
029: cdef OptimizedProfile oprofile
030: cdef Pipeline pipeline
031:
+032: self.queries = peekable(queries)
__Pyx_TraceLine(32,0,__PYX_ERR(0, 32, __pyx_L1_error)) __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_peekable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_queries) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_queries); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->queries); __Pyx_DECREF(__pyx_v_self->queries); __pyx_v_self->queries = __pyx_t_1; __pyx_t_1 = 0;
+033: self.sequences = list(sequences)
__Pyx_TraceLine(33,0,__PYX_ERR(0, 33, __pyx_L1_error)) __pyx_t_1 = PySequence_List(__pyx_v_sequences); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->sequences); __Pyx_DECREF(__pyx_v_self->sequences); __pyx_v_self->sequences = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+034: self.alphabet = self.queries.peek().alphabet
__Pyx_TraceLine(34,0,__PYX_ERR(0, 34, __pyx_L1_error)) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->queries, __pyx_n_s_peek); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_alphabet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_7pyhmmer_5easel_Alphabet))))) __PYX_ERR(0, 34, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->alphabet); __Pyx_DECREF(((PyObject *)__pyx_v_self->alphabet)); __pyx_v_self->alphabet = ((struct __pyx_obj_7pyhmmer_5easel_Alphabet *)__pyx_t_2); __pyx_t_2 = 0;
+035: self.cpus = cpus if cpus > 0 else openmp.omp_get_max_threads()
__Pyx_TraceLine(35,0,__PYX_ERR(0, 35, __pyx_L1_error)) __pyx_t_2 = PyObject_RichCompare(__pyx_v_cpus, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_5) { __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_cpus); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 35, __pyx_L1_error) __pyx_t_4 = __pyx_t_6; } else { __pyx_t_4 = omp_get_max_threads(); } __pyx_v_self->cpus = __pyx_t_4;
+036: self.callback = callback
__Pyx_TraceLine(36,0,__PYX_ERR(0, 36, __pyx_L1_error)) __Pyx_INCREF(__pyx_v_callback); __Pyx_GIVEREF(__pyx_v_callback); __Pyx_GOTREF(__pyx_v_self->callback); __Pyx_DECREF(__pyx_v_self->callback); __pyx_v_self->callback = __pyx_v_callback;
+037: self.blocksize = blocksize
__Pyx_TraceLine(37,0,__PYX_ERR(0, 37, __pyx_L1_error)) __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_blocksize); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L1_error) __pyx_v_self->blocksize = __pyx_t_4;
038:
039: # create one pipeline for each CPU
+040: self._pipelines = <P7_PIPELINE**> malloc(sizeof(P7_PIPELINE*) * self.cpus * self.blocksize)
__Pyx_TraceLine(40,0,__PYX_ERR(0, 40, __pyx_L1_error)) __pyx_v_self->_pipelines = ((P7_PIPELINE **)malloc((((sizeof(P7_PIPELINE *)) * __pyx_v_self->cpus) * __pyx_v_self->blocksize)));
+041: self.pipelines = []
__Pyx_TraceLine(41,0,__PYX_ERR(0, 41, __pyx_L1_error)) __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->pipelines); __Pyx_DECREF(__pyx_v_self->pipelines); __pyx_v_self->pipelines = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+042: for i in range(self.cpus * self.blocksize):
__Pyx_TraceLine(42,0,__PYX_ERR(0, 42, __pyx_L1_error)) __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_self->cpus * __pyx_v_self->blocksize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 42, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 42, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 42, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_8(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 42, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ __Pyx_TraceLine(42,0,__PYX_ERR(0, 42, __pyx_L1_error)) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+043: pipeline = Pipeline(alphabet=self.alphabet, **options)
__Pyx_TraceLine(43,0,__PYX_ERR(0, 43, __pyx_L1_error)) __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_alphabet, ((PyObject *)__pyx_v_self->alphabet)) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; if (__Pyx_MergeKeywords(__pyx_t_1, __pyx_v_options) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_Pipeline), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_pipeline, ((struct __pyx_obj_7pyhmmer_5plan7_Pipeline *)__pyx_t_3)); __pyx_t_3 = 0;
+044: self.pipelines.append(pipeline)
__Pyx_TraceLine(44,0,__PYX_ERR(0, 44, __pyx_L1_error)) if (unlikely(__pyx_v_self->pipelines == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); __PYX_ERR(0, 44, __pyx_L1_error) } __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->pipelines, ((PyObject *)__pyx_v_pipeline)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 44, __pyx_L1_error)
+045: self._pipelines[i] = pipeline._pli
__Pyx_TraceLine(45,0,__PYX_ERR(0, 45, __pyx_L1_error)) __pyx_t_10 = __pyx_v_pipeline->_pli; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 45, __pyx_L1_error) (__pyx_v_self->_pipelines[__pyx_t_11]) = __pyx_t_10;
046:
047: # store background model
+048: self.background = Background(self.alphabet)
__Pyx_TraceLine(48,0,__PYX_ERR(0, 48, __pyx_L1_error)) __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_Background), ((PyObject *)__pyx_v_self->alphabet)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->background); __Pyx_DECREF(((PyObject *)__pyx_v_self->background)); __pyx_v_self->background = ((struct __pyx_obj_7pyhmmer_5plan7_Background *)__pyx_t_2); __pyx_t_2 = 0;
+049: self._background = self.background._bg
__Pyx_TraceLine(49,0,__PYX_ERR(0, 49, __pyx_L1_error)) __pyx_t_12 = __pyx_v_self->background->_bg; __pyx_v_self->_background = __pyx_t_12;
050:
051: # store sequences
+052: self._sequences = <ESL_SQ**> malloc(sizeof(ESL_SQ*) * (len(self.sequences) + 1))
__Pyx_TraceLine(52,0,__PYX_ERR(0, 52, __pyx_L1_error)) __pyx_t_2 = __pyx_v_self->sequences; __Pyx_INCREF(__pyx_t_2); if (unlikely(__pyx_t_2 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 52, __pyx_L1_error) } __pyx_t_7 = PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->_sequences = ((ESL_SQ **)malloc(((sizeof(ESL_SQ *)) * (__pyx_t_7 + 1))));
+053: for i, seq in enumerate(sequences):
__Pyx_TraceLine(53,0,__PYX_ERR(0, 53, __pyx_L1_error)) __Pyx_INCREF(__pyx_int_0); __pyx_t_2 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_sequences)) || PyTuple_CheckExact(__pyx_v_sequences)) { __pyx_t_3 = __pyx_v_sequences; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_sequences); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 53, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 53, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyhmmer_5easel_DigitalSequence))))) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_seq, ((struct __pyx_obj_7pyhmmer_5easel_DigitalSequence *)__pyx_t_1)); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = __pyx_t_1; __pyx_t_1 = 0; /* … */ __Pyx_TraceLine(53,0,__PYX_ERR(0, 53, __pyx_L1_error)) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+054: self._sequences[i] = seq._sq
__Pyx_TraceLine(54,0,__PYX_ERR(0, 54, __pyx_L1_error)) __pyx_t_13 = __pyx_v_seq->__pyx_base._sq; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L1_error) (__pyx_v_self->_sequences[__pyx_t_11]) = __pyx_t_13;
+055: self._sequences[len(self.sequences)] = NULL
__Pyx_TraceLine(55,0,__PYX_ERR(0, 55, __pyx_L1_error)) __pyx_t_2 = __pyx_v_self->sequences; __Pyx_INCREF(__pyx_t_2); if (unlikely(__pyx_t_2 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 55, __pyx_L1_error) } __pyx_t_7 = PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; (__pyx_v_self->_sequences[__pyx_t_7]) = NULL;
056:
057: # create buffers to store profiles
+058: self._profiles = <P7_PROFILE**> malloc(sizeof(P7_PROFILE*) * self.cpus * self.blocksize)
__Pyx_TraceLine(58,0,__PYX_ERR(0, 58, __pyx_L1_error)) __pyx_v_self->_profiles = ((P7_PROFILE **)malloc((((sizeof(P7_PROFILE *)) * __pyx_v_self->cpus) * __pyx_v_self->blocksize)));
+059: self.profiles = []
__Pyx_TraceLine(59,0,__PYX_ERR(0, 59, __pyx_L1_error)) __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->profiles); __Pyx_DECREF(__pyx_v_self->profiles); __pyx_v_self->profiles = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+060: for i in range(self.cpus * self.blocksize):
__Pyx_TraceLine(60,0,__PYX_ERR(0, 60, __pyx_L1_error)) __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_self->cpus * __pyx_v_self->blocksize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 60, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 60, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 60, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_8(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 60, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; /* … */ __Pyx_TraceLine(60,0,__PYX_ERR(0, 60, __pyx_L1_error)) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+061: profile = Profile(200, self.alphabet)
__Pyx_TraceLine(61,0,__PYX_ERR(0, 61, __pyx_L1_error)) __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_int_200); __Pyx_GIVEREF(__pyx_int_200); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_200); __Pyx_INCREF(((PyObject *)__pyx_v_self->alphabet)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->alphabet)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->alphabet)); __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_Profile), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_profile, ((struct __pyx_obj_7pyhmmer_5plan7_Profile *)__pyx_t_1)); __pyx_t_1 = 0;
+062: self.profiles.append(profile)
__Pyx_TraceLine(62,0,__PYX_ERR(0, 62, __pyx_L1_error)) if (unlikely(__pyx_v_self->profiles == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); __PYX_ERR(0, 62, __pyx_L1_error) } __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->profiles, ((PyObject *)__pyx_v_profile)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 62, __pyx_L1_error)
+063: self._profiles[i] = profile._gm
__Pyx_TraceLine(63,0,__PYX_ERR(0, 63, __pyx_L1_error)) __pyx_t_14 = __pyx_v_profile->_gm; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L1_error) (__pyx_v_self->_profiles[__pyx_t_11]) = __pyx_t_14;
064:
065: # create buffers to store optimized profiles
+066: self._oprofiles = <P7_OPROFILE**> malloc(sizeof(P7_OPROFILE*) * self.cpus * self.blocksize)
__Pyx_TraceLine(66,0,__PYX_ERR(0, 66, __pyx_L1_error)) __pyx_v_self->_oprofiles = ((P7_OPROFILE **)malloc((((sizeof(P7_OPROFILE *)) * __pyx_v_self->cpus) * __pyx_v_self->blocksize)));
+067: self.oprofiles = []
__Pyx_TraceLine(67,0,__PYX_ERR(0, 67, __pyx_L1_error)) __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->oprofiles); __Pyx_DECREF(__pyx_v_self->oprofiles); __pyx_v_self->oprofiles = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+068: for i in range(self.cpus * self.blocksize):
__Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error)) __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_self->cpus * __pyx_v_self->blocksize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 68, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 68, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 68, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_8(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 68, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ __Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error)) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+069: oprofile = self.profiles[i].optimized()
__Pyx_TraceLine(69,0,__PYX_ERR(0, 69, __pyx_L1_error)) if (unlikely(__pyx_v_self->profiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 69, __pyx_L1_error) } __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_self->profiles, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_optimized); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_15); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7pyhmmer_5plan7_OptimizedProfile))))) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_oprofile, ((struct __pyx_obj_7pyhmmer_5plan7_OptimizedProfile *)__pyx_t_1)); __pyx_t_1 = 0;
+070: self.oprofiles.append(oprofile)
__Pyx_TraceLine(70,0,__PYX_ERR(0, 70, __pyx_L1_error)) if (unlikely(__pyx_v_self->oprofiles == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); __PYX_ERR(0, 70, __pyx_L1_error) } __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->oprofiles, ((PyObject *)__pyx_v_oprofile)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 70, __pyx_L1_error)
+071: self._oprofiles[i] = oprofile._om
__Pyx_TraceLine(71,0,__PYX_ERR(0, 71, __pyx_L1_error)) __pyx_t_16 = __pyx_v_oprofile->_om; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error) (__pyx_v_self->_oprofiles[__pyx_t_11]) = __pyx_t_16;
072:
073: # create buffers to store results
+074: self._results = <P7_TOPHITS**> malloc(sizeof(P7_TOPHITS*) * self.cpus * self.blocksize)
__Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error)) __pyx_v_self->_results = ((P7_TOPHITS **)malloc((((sizeof(P7_TOPHITS *)) * __pyx_v_self->cpus) * __pyx_v_self->blocksize)));
+075: self.results = []
__Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error)) __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->results); __Pyx_DECREF(__pyx_v_self->results); __pyx_v_self->results = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
076:
+077: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_3__dealloc__(PyObject *__pyx_v_self) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_2__dealloc__(((struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_2__dealloc__(struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *__pyx_v_self) {
__Pyx_TraceDeclarations
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__", 0);
__Pyx_TraceCall("__dealloc__", __pyx_f[0], 77, 0, __PYX_ERR(0, 77, __pyx_L1_error));
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_WriteUnraisable("pyhmmer._hpc._HMMSearch.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_TraceReturn(Py_None, 0);
__Pyx_RefNannyFinishContext();
}
+078: free(self._sequences)
__Pyx_TraceLine(78,0,__PYX_ERR(0, 78, __pyx_L1_error)) free(__pyx_v_self->_sequences);
+079: free(self._results)
__Pyx_TraceLine(79,0,__PYX_ERR(0, 79, __pyx_L1_error)) free(__pyx_v_self->_results);
+080: free(self._oprofiles)
__Pyx_TraceLine(80,0,__PYX_ERR(0, 80, __pyx_L1_error)) free(__pyx_v_self->_oprofiles);
+081: free(self._profiles)
__Pyx_TraceLine(81,0,__PYX_ERR(0, 81, __pyx_L1_error)) free(__pyx_v_self->_profiles);
082:
+083: def __iter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_5__iter__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
__pyx_r = __pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_4__iter__(((struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_4__iter__(struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_TraceDeclarations
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__", 0);
__Pyx_TraceCall("__iter__", __pyx_f[0], 83, 0, __PYX_ERR(0, 83, __pyx_L1_error));
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("pyhmmer._hpc._HMMSearch.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_TraceReturn(__pyx_r, 0);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+084: return self
__Pyx_TraceLine(84,0,__PYX_ERR(0, 84, __pyx_L1_error)) __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
085:
+086: def __next__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyhmmer_4_hpc_10_HMMSearch_7__next__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
__pyx_r = __pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_6__next__(((struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7pyhmmer_4_hpc_10_HMMSearch_6__next__(struct __pyx_obj_7pyhmmer_4_hpc__HMMSearch *__pyx_v_self) {
Py_ssize_t __pyx_v_i;
struct __pyx_obj_7pyhmmer_5plan7_Profile *__pyx_v_profile = 0;
struct __pyx_obj_7pyhmmer_5plan7_OptimizedProfile *__pyx_v_oprofile = 0;
struct __pyx_obj_7pyhmmer_5plan7_TopHits *__pyx_v_top_hits = 0;
int __pyx_v_cpus;
int __pyx_v_blocksize;
P7_OPROFILE **__pyx_v__oprofiles;
P7_BG *__pyx_v__background;
ESL_SQ **__pyx_v__sequences;
P7_PIPELINE **__pyx_v__pipelines;
P7_TOPHITS **__pyx_v__results;
PyObject *__pyx_v_hmm = NULL;
PyObject *__pyx_r = NULL;
__Pyx_TraceDeclarations
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__next__", 0);
__Pyx_TraceCall("__next__", __pyx_f[0], 86, 0, __PYX_ERR(0, 86, __pyx_L1_error));
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyhmmer._hpc._HMMSearch.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_profile);
__Pyx_XDECREF((PyObject *)__pyx_v_oprofile);
__Pyx_XDECREF((PyObject *)__pyx_v_top_hits);
__Pyx_XDECREF(__pyx_v_hmm);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_TraceReturn(__pyx_r, 0);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
087:
088: cdef ssize_t i
089: cdef ssize_t j
090: # cdef HMM hmm
091: cdef Profile profile
092: cdef OptimizedProfile oprofile
093: cdef TopHits top_hits
094:
095: # cdef list hmms = []
+096: cdef int cpus = self.cpus
__Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error)) __pyx_t_1 = __pyx_v_self->cpus; __pyx_v_cpus = __pyx_t_1;
+097: cdef int blocksize = self.blocksize
__Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error)) __pyx_t_1 = __pyx_v_self->blocksize; __pyx_v_blocksize = __pyx_t_1;
+098: cdef P7_OPROFILE** _oprofiles = self._oprofiles
__Pyx_TraceLine(98,0,__PYX_ERR(0, 98, __pyx_L1_error)) __pyx_t_2 = __pyx_v_self->_oprofiles; __pyx_v__oprofiles = __pyx_t_2;
+099: cdef P7_BG* _background = self._background
__Pyx_TraceLine(99,0,__PYX_ERR(0, 99, __pyx_L1_error)) __pyx_t_3 = __pyx_v_self->_background; __pyx_v__background = __pyx_t_3;
+100: cdef ESL_SQ** _sequences = self._sequences
__Pyx_TraceLine(100,0,__PYX_ERR(0, 100, __pyx_L1_error)) __pyx_t_4 = __pyx_v_self->_sequences; __pyx_v__sequences = __pyx_t_4;
+101: cdef P7_PIPELINE** _pipelines = self._pipelines
__Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error)) __pyx_t_5 = __pyx_v_self->_pipelines; __pyx_v__pipelines = __pyx_t_5;
+102: cdef P7_TOPHITS** _results = self._results
__Pyx_TraceLine(102,0,__PYX_ERR(0, 102, __pyx_L1_error)) __pyx_t_6 = __pyx_v_self->_results; __pyx_v__results = __pyx_t_6;
103:
104:
+105: if self.results:
__Pyx_TraceLine(105,0,__PYX_ERR(0, 105, __pyx_L1_error)) __pyx_t_7 = (__pyx_v_self->results != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->results) != 0); if (__pyx_t_7) { /* … */ }
+106: return self.results.pop(0)
__Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error)) __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_self->results == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); __PYX_ERR(0, 106, __pyx_L1_error) } __pyx_t_8 = __Pyx_PyList_PopIndex(__pyx_v_self->results, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
107:
+108: for i in range(cpus*blocksize):
__Pyx_TraceLine(108,0,__PYX_ERR(0, 108, __pyx_L1_error)) __pyx_t_1 = (__pyx_v_cpus * __pyx_v_blocksize); __pyx_t_9 = __pyx_t_1; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10;
+109: hmm = next(self.queries, None)
__Pyx_TraceLine(109,0,__PYX_ERR(0, 109, __pyx_L1_error)) __pyx_t_8 = __pyx_v_self->queries; __Pyx_INCREF(__pyx_t_8); __pyx_t_11 = __Pyx_PyIter_Next2(__pyx_t_8, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_hmm, __pyx_t_11); __pyx_t_11 = 0;
+110: if hmm is not None:
__Pyx_TraceLine(110,0,__PYX_ERR(0, 110, __pyx_L1_error)) __pyx_t_7 = (__pyx_v_hmm != Py_None); __pyx_t_12 = (__pyx_t_7 != 0); if (__pyx_t_12) { /* … */ goto __pyx_L6; }
+111: if hmm.M > self._profiles[i].M:
__Pyx_TraceLine(111,0,__PYX_ERR(0, 111, __pyx_L1_error)) __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_hmm, __pyx_n_s_M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = __Pyx_PyInt_From_int((__pyx_v_self->_profiles[__pyx_v_i])->M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_13 = PyObject_RichCompare(__pyx_t_11, __pyx_t_8, Py_GT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_12) { /* … */ }
+112: profile = Profile(hmm.M, self.alphabet)
__Pyx_TraceLine(112,0,__PYX_ERR(0, 112, __pyx_L1_error)) __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_hmm, __pyx_n_s_M); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __Pyx_INCREF(((PyObject *)__pyx_v_self->alphabet)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->alphabet)); PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_v_self->alphabet)); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_Profile), __pyx_t_8, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_profile, ((struct __pyx_obj_7pyhmmer_5plan7_Profile *)__pyx_t_13)); __pyx_t_13 = 0;
+113: self.profiles[i] = profile
__Pyx_TraceLine(113,0,__PYX_ERR(0, 113, __pyx_L1_error)) if (unlikely(__pyx_v_self->profiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 113, __pyx_L1_error) } if (unlikely(__Pyx_SetItemInt(__pyx_v_self->profiles, __pyx_v_i, ((PyObject *)__pyx_v_profile), Py_ssize_t, 1, PyInt_FromSsize_t, 1, 0, 0) < 0)) __PYX_ERR(0, 113, __pyx_L1_error)
+114: self._profiles[i] = profile._gm
__Pyx_TraceLine(114,0,__PYX_ERR(0, 114, __pyx_L1_error)) __pyx_t_14 = __pyx_v_profile->_gm; (__pyx_v_self->_profiles[__pyx_v_i]) = __pyx_t_14;
+115: oprofile = OptimizedProfile(hmm.M, self.alphabet)
__Pyx_TraceLine(115,0,__PYX_ERR(0, 115, __pyx_L1_error)) __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_hmm, __pyx_n_s_M); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __Pyx_INCREF(((PyObject *)__pyx_v_self->alphabet)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->alphabet)); PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_v_self->alphabet)); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_OptimizedProfile), __pyx_t_8, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_oprofile, ((struct __pyx_obj_7pyhmmer_5plan7_OptimizedProfile *)__pyx_t_13)); __pyx_t_13 = 0;
+116: self.oprofiles[i] = oprofile
__Pyx_TraceLine(116,0,__PYX_ERR(0, 116, __pyx_L1_error)) if (unlikely(__pyx_v_self->oprofiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 116, __pyx_L1_error) } if (unlikely(__Pyx_SetItemInt(__pyx_v_self->oprofiles, __pyx_v_i, ((PyObject *)__pyx_v_oprofile), Py_ssize_t, 1, PyInt_FromSsize_t, 1, 0, 0) < 0)) __PYX_ERR(0, 116, __pyx_L1_error)
+117: self._oprofiles[i] = oprofile._om
__Pyx_TraceLine(117,0,__PYX_ERR(0, 117, __pyx_L1_error)) __pyx_t_15 = __pyx_v_oprofile->_om; (__pyx_v_self->_oprofiles[__pyx_v_i]) = __pyx_t_15;
118:
+119: profile = self.profiles[i]
__Pyx_TraceLine(119,0,__PYX_ERR(0, 119, __pyx_L1_error)) if (unlikely(__pyx_v_self->profiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 119, __pyx_L1_error) } if (!(likely(((PyList_GET_ITEM(__pyx_v_self->profiles, __pyx_v_i)) == Py_None) || likely(__Pyx_TypeTest(PyList_GET_ITEM(__pyx_v_self->profiles, __pyx_v_i), __pyx_ptype_7pyhmmer_5plan7_Profile))))) __PYX_ERR(0, 119, __pyx_L1_error) __pyx_t_13 = PyList_GET_ITEM(__pyx_v_self->profiles, __pyx_v_i); __Pyx_INCREF(__pyx_t_13); __Pyx_XDECREF_SET(__pyx_v_profile, ((struct __pyx_obj_7pyhmmer_5plan7_Profile *)__pyx_t_13)); __pyx_t_13 = 0;
+120: profile._configure(hmm, self.pipelines[i].background, len(self.sequences[0]))
__Pyx_TraceLine(120,0,__PYX_ERR(0, 120, __pyx_L1_error)) if (!(likely(((__pyx_v_hmm) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_hmm, __pyx_ptype_7pyhmmer_5plan7_HMM))))) __PYX_ERR(0, 120, __pyx_L1_error) if (unlikely(__pyx_v_self->pipelines == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 120, __pyx_L1_error) } __pyx_t_13 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_self->pipelines, __pyx_v_i), __pyx_n_s_background); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_7pyhmmer_5plan7_Background))))) __PYX_ERR(0, 120, __pyx_L1_error) if (unlikely(__pyx_v_self->sequences == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 120, __pyx_L1_error) } __pyx_t_8 = PyList_GET_ITEM(__pyx_v_self->sequences, 0); __Pyx_INCREF(__pyx_t_8); __pyx_t_16 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_17 = ((struct __pyx_vtabstruct_7pyhmmer_5plan7_Profile *)__pyx_v_profile->__pyx_vtab)->_configure(__pyx_v_profile, ((struct __pyx_obj_7pyhmmer_5plan7_HMM *)__pyx_v_hmm), ((struct __pyx_obj_7pyhmmer_5plan7_Background *)__pyx_t_13), __pyx_t_16, NULL); if (unlikely(__pyx_t_17 == ((int)1))) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+121: p7_oprofile.p7_oprofile_Convert(self._profiles[i], self._oprofiles[i])
__Pyx_TraceLine(121,0,__PYX_ERR(0, 121, __pyx_L1_error)) (void)(p7_oprofile_Convert((__pyx_v_self->_profiles[__pyx_v_i]), (__pyx_v_self->_oprofiles[__pyx_v_i])));
122:
+123: top_hits = TopHits()
__Pyx_TraceLine(123,0,__PYX_ERR(0, 123, __pyx_L1_error)) __pyx_t_13 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7pyhmmer_5plan7_TopHits)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_XDECREF_SET(__pyx_v_top_hits, ((struct __pyx_obj_7pyhmmer_5plan7_TopHits *)__pyx_t_13)); __pyx_t_13 = 0;
+124: self.results.append(top_hits)
__Pyx_TraceLine(124,0,__PYX_ERR(0, 124, __pyx_L1_error)) if (unlikely(__pyx_v_self->results == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); __PYX_ERR(0, 124, __pyx_L1_error) } __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_self->results, ((PyObject *)__pyx_v_top_hits)); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 124, __pyx_L1_error)
+125: self._results[i] = top_hits._th
__Pyx_TraceLine(125,0,__PYX_ERR(0, 125, __pyx_L1_error)) __pyx_t_19 = __pyx_v_top_hits->_th; (__pyx_v_self->_results[__pyx_v_i]) = __pyx_t_19;
126: # hmms.append(hmm)
127: else:
+128: self.profiles[i] = self.oprofiles[i] = None
__Pyx_TraceLine(128,0,__PYX_ERR(0, 128, __pyx_L1_error)) /*else*/ { if (unlikely(__pyx_v_self->profiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 128, __pyx_L1_error) } if (unlikely(__Pyx_SetItemInt(__pyx_v_self->profiles, __pyx_v_i, Py_None, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 0, 0) < 0)) __PYX_ERR(0, 128, __pyx_L1_error) if (unlikely(__pyx_v_self->oprofiles == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 128, __pyx_L1_error) } if (unlikely(__Pyx_SetItemInt(__pyx_v_self->oprofiles, __pyx_v_i, Py_None, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 0, 0) < 0)) __PYX_ERR(0, 128, __pyx_L1_error)
+129: self._profiles[i] = self._oprofiles[i] = self._results[i] = NULL
__Pyx_TraceLine(129,0,__PYX_ERR(0, 129, __pyx_L1_error)) (__pyx_v_self->_profiles[__pyx_v_i]) = NULL; (__pyx_v_self->_oprofiles[__pyx_v_i]) = NULL; (__pyx_v_self->_results[__pyx_v_i]) = NULL; } __pyx_L6:; }
130:
+131: if not self.results:
__Pyx_TraceLine(131,0,__PYX_ERR(0, 131, __pyx_L1_error)) __pyx_t_12 = (__pyx_v_self->results != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->results) != 0); __pyx_t_7 = ((!__pyx_t_12) != 0); if (unlikely(__pyx_t_7)) { /* … */ }
+132: raise StopIteration
__Pyx_TraceLine(132,0,__PYX_ERR(0, 132, __pyx_L1_error)) __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); __PYX_ERR(0, 132, __pyx_L1_error)
133:
+134: for i in prange(cpus*blocksize, nogil=True, schedule="dynamic"):
__Pyx_TraceLine(134,0,__PYX_ERR(0, 134, __pyx_L1_error)) { #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { __pyx_t_1 = (__pyx_v_cpus * __pyx_v_blocksize); if ((1 == 0)) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) (x) #define unlikely(x) (x) #endif __pyx_t_20 = (__pyx_t_1 - 0 + 1 - 1/abs(1)) / 1; if (__pyx_t_20 > 0) { #ifdef _OPENMP #pragma omp parallel #endif /* _OPENMP */ { #ifdef _OPENMP #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(dynamic) #endif /* _OPENMP */ for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_20; __pyx_t_10++){ { __pyx_v_i = (Py_ssize_t)(0 + 1 * __pyx_t_10); /* … */ __Pyx_TraceLine(134,1,__PYX_ERR(0, 134, __pyx_L10_error)) /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L11; } __pyx_L10_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L11:; } }
+135: if _oprofiles[i] != NULL:
__Pyx_TraceLine(135,1,__PYX_ERR(0, 135, __pyx_L14_error)) __pyx_t_7 = (((__pyx_v__oprofiles[__pyx_v_i]) != NULL) != 0); if (__pyx_t_7) { /* … */ } goto __pyx_L18; __pyx_L14_error:; { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif #ifdef _OPENMP #pragma omp flush(__pyx_parallel_exc_type) #endif /* _OPENMP */ if (!__pyx_parallel_exc_type) { __Pyx_ErrFetchWithState(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb); __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno; __Pyx_GOTREF(__pyx_parallel_exc_type); } #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } __pyx_parallel_why = 4; goto __pyx_L17; __pyx_L17:; #ifdef _OPENMP #pragma omp critical(__pyx_parallel_lastprivates0) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_i; } __pyx_L18:; #ifdef _OPENMP #pragma omp flush(__pyx_parallel_why) #endif /* _OPENMP */ } } #ifdef _OPENMP Py_END_ALLOW_THREADS #else { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif #endif /* _OPENMP */ /* Clean up any temporaries */ #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif #ifndef _OPENMP } #endif /* _OPENMP */ } } if (__pyx_parallel_exc_type) { /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */ __pyx_parallel_why = 4; } if (__pyx_parallel_why) { __pyx_v_i = __pyx_parallel_temp0; switch (__pyx_parallel_why) { case 4: { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif __Pyx_GIVEREF(__pyx_parallel_exc_type); __Pyx_ErrRestoreWithState(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb); __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno; #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif } goto __pyx_L10_error; } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #endif }
+136: Pipeline._search_loop(
__Pyx_TraceLine(136,1,__PYX_ERR(0, 136, __pyx_L14_error)) __pyx_t_9 = __pyx_vtabptr_7pyhmmer_5plan7_Pipeline->_search_loop((__pyx_v__pipelines[__pyx_v_i]), (__pyx_v__oprofiles[__pyx_v_i]), __pyx_v__background, __pyx_v__sequences, (__pyx_v__results[__pyx_v_i])); if (unlikely(__pyx_t_9 == ((int)1))) __PYX_ERR(0, 136, __pyx_L14_error)
137: _pipelines[i],
138: _oprofiles[i],
139: _background,
140: _sequences,
141: _results[i],
142: )
143:
+144: for i in range(cpus * blocksize):
__Pyx_TraceLine(144,0,__PYX_ERR(0, 144, __pyx_L1_error)) __pyx_t_1 = (__pyx_v_cpus * __pyx_v_blocksize); __pyx_t_9 = __pyx_t_1; for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_9; __pyx_t_20+=1) { __pyx_v_i = __pyx_t_20;
145: # sort and threshold results
+146: if _oprofiles[i] != NULL:
__Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error)) __pyx_t_7 = (((__pyx_v__oprofiles[__pyx_v_i]) != NULL) != 0); if (__pyx_t_7) { /* … */ }
+147: top_hits = self.results[i]
__Pyx_TraceLine(147,0,__PYX_ERR(0, 147, __pyx_L1_error)) if (unlikely(__pyx_v_self->results == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 147, __pyx_L1_error) } if (!(likely(((PyList_GET_ITEM(__pyx_v_self->results, __pyx_v_i)) == Py_None) || likely(__Pyx_TypeTest(PyList_GET_ITEM(__pyx_v_self->results, __pyx_v_i), __pyx_ptype_7pyhmmer_5plan7_TopHits))))) __PYX_ERR(0, 147, __pyx_L1_error) __pyx_t_13 = PyList_GET_ITEM(__pyx_v_self->results, __pyx_v_i); __Pyx_INCREF(__pyx_t_13); __Pyx_XDECREF_SET(__pyx_v_top_hits, ((struct __pyx_obj_7pyhmmer_5plan7_TopHits *)__pyx_t_13)); __pyx_t_13 = 0;
+148: top_hits._sort_by_key()
__Pyx_TraceLine(148,0,__PYX_ERR(0, 148, __pyx_L1_error)) __pyx_t_17 = ((struct __pyx_vtabstruct_7pyhmmer_5plan7_TopHits *)__pyx_v_top_hits->__pyx_vtab)->_sort_by_key(__pyx_v_top_hits); if (unlikely(__pyx_t_17 == ((int)1))) __PYX_ERR(0, 148, __pyx_L1_error)
+149: top_hits._threshold(self.pipelines[i])
__Pyx_TraceLine(149,0,__PYX_ERR(0, 149, __pyx_L1_error)) if (unlikely(__pyx_v_self->pipelines == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 149, __pyx_L1_error) } if (!(likely(((PyList_GET_ITEM(__pyx_v_self->pipelines, __pyx_v_i)) == Py_None) || likely(__Pyx_TypeTest(PyList_GET_ITEM(__pyx_v_self->pipelines, __pyx_v_i), __pyx_ptype_7pyhmmer_5plan7_Pipeline))))) __PYX_ERR(0, 149, __pyx_L1_error) __pyx_t_13 = PyList_GET_ITEM(__pyx_v_self->pipelines, __pyx_v_i); __Pyx_INCREF(__pyx_t_13); __pyx_t_17 = ((struct __pyx_vtabstruct_7pyhmmer_5plan7_TopHits *)__pyx_v_top_hits->__pyx_vtab)->_threshold(__pyx_v_top_hits, ((struct __pyx_obj_7pyhmmer_5plan7_Pipeline *)__pyx_t_13)); if (unlikely(__pyx_t_17 == ((int)1))) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
150: # reset pipelines for next run
+151: self.pipelines[i].clear()
__Pyx_TraceLine(151,0,__PYX_ERR(0, 151, __pyx_L1_error)) if (unlikely(__pyx_v_self->pipelines == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 151, __pyx_L1_error) } __pyx_t_8 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_self->pipelines, __pyx_v_i), __pyx_n_s_clear); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_13 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_8); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; }
152:
+153: return self.results.pop(0)
__Pyx_TraceLine(153,0,__PYX_ERR(0, 153, __pyx_L1_error)) __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_self->results == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); __PYX_ERR(0, 153, __pyx_L1_error) } __pyx_t_13 = __Pyx_PyList_PopIndex(__pyx_v_self->results, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_r = __pyx_t_13; __pyx_t_13 = 0; goto __pyx_L0;