void splicing_gff_destroy(splicing_gff_t *gff) { splicing_strvector_destroy(&gff->seqids); splicing_strvector_destroy(&gff->sources); splicing_strvector_destroy(&gff->ID); splicing_vector_int_destroy(&gff->genes); splicing_vector_int_destroy(&gff->transcripts); splicing_vector_int_destroy(&gff->seqid); splicing_vector_int_destroy(&gff->source); splicing_vector_int_destroy(&gff->strand); splicing_vector_int_destroy(&gff->type); splicing_vector_int_destroy(&gff->start); splicing_vector_int_destroy(&gff->end); splicing_vector_destroy(&gff->score); splicing_vector_int_destroy(&gff->phase); splicing_vector_int_destroy(&gff->parent); }
static PyObject* pysplicing_simulate_paired_reads(PyObject *self, PyObject *args) { PyObject *gff, *expression; int gene, noreads, readlength; double normalMean, normalVar, numDevs; splicing_gff_t *mygff; splicing_vector_t myexpression; splicing_vector_int_t isoform, position; splicing_strvector_t cigar; PyObject *r1, *r2, *r3; if (!PyArg_ParseTuple(args, "OiOiiddd", &gff, &gene, &expression, &noreads, &readlength, &normalMean, &normalVar, &numDevs)) { return NULL; } mygff=PyCObject_AsVoidPtr(gff); if (pysplicing_to_vector(expression, &myexpression)) { return NULL; } SPLICING_FINALLY(splicing_vector_destroy, &myexpression); SPLICING_PYCHECK(splicing_vector_int_init(&isoform, 0)); SPLICING_FINALLY(splicing_vector_int_destroy, &isoform); SPLICING_PYCHECK(splicing_vector_int_init(&position, 0)); SPLICING_FINALLY(splicing_vector_int_destroy, &position); SPLICING_PYCHECK(splicing_strvector_init(&cigar, 0)); SPLICING_FINALLY(splicing_strvector_destroy, &cigar); SPLICING_PYCHECK(splicing_simulate_paired_reads(mygff, gene, &myexpression, noreads, readlength, /*insertProb=*/ 0, /*insertStart=*/ 0, normalMean, normalVar, numDevs, &isoform, &position, &cigar, 0)); r1=pysplicing_from_vector_int(&isoform); r2=pysplicing_from_vector_int(&position); r3=pysplicing_from_strvector(&cigar); splicing_strvector_destroy(&cigar); splicing_vector_int_destroy(&position); splicing_vector_int_destroy(&isoform); splicing_vector_destroy(&myexpression); SPLICING_FINALLY_CLEAN(4); return Py_BuildValue("OOO", r1, r2, r3); }
static PyObject* pysplicing_solve_gene(PyObject *self, PyObject *args) { PyObject *gff, *readcigar, *position; int gene, readLength; splicing_gff_t *mygff; splicing_vector_int_t myposition; splicing_strvector_t myreadcigar; splicing_matrix_t match_matrix, assignment_matrix; splicing_vector_t expression; PyObject *r1, *r2, *r3; if (!PyArg_ParseTuple(args, "OiiOO", &gff, &gene, &readLength, &position, &readcigar)) { return NULL; } mygff=PyCObject_AsVoidPtr(gff); if (pysplicing_to_vector_int(position, &myposition)) { return NULL; } SPLICING_FINALLY(splicing_vector_int_destroy, &myposition); if (pysplicing_to_strvector(readcigar, &myreadcigar)) { return NULL; } SPLICING_FINALLY(splicing_strvector_destroy, &myreadcigar); SPLICING_PYCHECK(splicing_matrix_init(&match_matrix, 0, 0)); SPLICING_FINALLY(splicing_matrix_destroy, &match_matrix); SPLICING_PYCHECK(splicing_matrix_init(&assignment_matrix, 0, 0)); SPLICING_FINALLY(splicing_matrix_destroy, &assignment_matrix); SPLICING_PYCHECK(splicing_vector_init(&expression, 0)); SPLICING_FINALLY(splicing_vector_destroy, &expression); SPLICING_PYCHECK(splicing_solve_gene(mygff, gene, readLength, &myposition, (const char **) myreadcigar.table, &match_matrix, &assignment_matrix, &expression)); r1=pysplicing_from_matrix(&match_matrix); r2=pysplicing_from_matrix(&assignment_matrix); r3=pysplicing_from_vector(&expression); splicing_vector_destroy(&expression); splicing_matrix_destroy(&assignment_matrix); splicing_matrix_destroy(&match_matrix); splicing_strvector_destroy(&myreadcigar); splicing_vector_int_destroy(&myposition); SPLICING_FINALLY_CLEAN(5); return Py_BuildValue("OOO", r1, r2, r3); }
static PyObject* pysplicing_simulate_reads(PyObject *self, PyObject *args) { PyObject *gff, *expression; int gene, noreads, readLength; splicing_vector_t myexpression; splicing_gff_t *mygff; splicing_vector_int_t isoform, position; splicing_strvector_t cigar; PyObject *risoform, *rposition, *rcigar; if (!PyArg_ParseTuple(args, "OiOii", &gff, &gene, &expression, &noreads, &readLength)) { return NULL; } mygff=PyCObject_AsVoidPtr(gff); if (pysplicing_to_vector(expression, &myexpression)) { return NULL; } SPLICING_FINALLY(splicing_vector_destroy, &myexpression); SPLICING_PYCHECK(splicing_strvector_init(&cigar, 0)); SPLICING_FINALLY(splicing_strvector_destroy, &cigar); SPLICING_PYCHECK(splicing_vector_int_init(&position, 0)); SPLICING_FINALLY(splicing_vector_int_destroy, &position); SPLICING_PYCHECK(splicing_vector_int_init(&isoform, 0)); SPLICING_FINALLY(splicing_vector_int_destroy, &isoform); SPLICING_PYCHECK(splicing_simulate_reads(mygff, gene, &myexpression, noreads, readLength, &isoform, &position, &cigar)); risoform = pysplicing_from_vector_int(&isoform); splicing_vector_int_destroy(&isoform); SPLICING_FINALLY_CLEAN(1); rposition = pysplicing_from_vector_int(&position); splicing_vector_int_destroy(&position); SPLICING_FINALLY_CLEAN(1); rcigar = pysplicing_from_strvector(&cigar); splicing_strvector_destroy(&cigar); SPLICING_FINALLY_CLEAN(1); splicing_vector_destroy(&myexpression); SPLICING_FINALLY_CLEAN(1); return Py_BuildValue("OOO", risoform, rposition, rcigar); }
static PyObject* pysplicing_miso(PyObject *self, PyObject *args) { PyObject *gff, *readpos, *readcigar, *hyperp=0; int gene, readLength, noIterations=5000, noBurnIn=500, noLag=10; splicing_gff_t *mygff; splicing_strvector_t myreadcigar; splicing_vector_int_t myreadpos; splicing_vector_t myhyperp; splicing_matrix_t samples; splicing_vector_t logLik; splicing_matrix_t class_templates; splicing_vector_t class_counts; splicing_vector_int_t assignment; splicing_miso_rundata_t rundata; PyObject *r1, *r2, *r3, *r4, *r5, *r6; if (!PyArg_ParseTuple(args, "OiOOi|iiiO", &gff, &gene, &readpos, &readcigar, &readLength, &noIterations, &noBurnIn, &noLag, &hyperp)) { return NULL; } mygff=PyCObject_AsVoidPtr(gff); SPLICING_PYCHECK(splicing_matrix_init(&samples, 0, 0)); SPLICING_FINALLY(splicing_matrix_destroy, &samples); SPLICING_PYCHECK(splicing_vector_init(&logLik, 0)); SPLICING_FINALLY(splicing_vector_destroy, &logLik); SPLICING_PYCHECK(splicing_matrix_init(&class_templates, 0, 0)); SPLICING_FINALLY(splicing_matrix_destroy, &class_templates); SPLICING_PYCHECK(splicing_vector_init(&class_counts, 0)); SPLICING_FINALLY(splicing_vector_destroy, &class_counts); SPLICING_PYCHECK(splicing_vector_int_init(&assignment, 0)); SPLICING_FINALLY(splicing_vector_int_destroy, &assignment); if (pysplicing_to_vector_int(readpos, &myreadpos)) { return NULL; } SPLICING_FINALLY(splicing_vector_int_destroy, &myreadpos); if (hyperp) { if (pysplicing_to_vector(hyperp, &myhyperp)) { return NULL; } SPLICING_FINALLY(splicing_vector_destroy, &myhyperp); } else { size_t i, noiso; SPLICING_PYCHECK(splicing_gff_noiso_one(mygff, gene, &noiso)); SPLICING_PYCHECK(splicing_vector_init(&myhyperp, noiso)); SPLICING_FINALLY(splicing_vector_destroy, &myhyperp); for (i=0; i<noiso; i++) { VECTOR(myhyperp)[i] = 1.0; } } if (pysplicing_to_strvector(readcigar, &myreadcigar)) { return NULL; }; SPLICING_FINALLY(splicing_strvector_destroy, &myreadcigar); SPLICING_PYCHECK(splicing_miso(mygff, gene, &myreadpos, (const char**) myreadcigar.table, readLength, noIterations, noBurnIn, noLag, &myhyperp, &samples, &logLik, /*match_matrix=*/ 0, &class_templates, &class_counts, &assignment, &rundata)); splicing_vector_destroy(&myhyperp); splicing_vector_int_destroy(&myreadpos); splicing_strvector_destroy(&myreadcigar); SPLICING_FINALLY_CLEAN(3); r6=pysplicing_from_miso_rundata(&rundata); r5=pysplicing_from_vector_int(&assignment); splicing_vector_int_destroy(&assignment); SPLICING_FINALLY_CLEAN(1); r4=pysplicing_from_vector(&class_counts); splicing_vector_destroy(&class_counts); SPLICING_FINALLY_CLEAN(1); splicing_matrix_transpose(&class_templates); r3=pysplicing_from_matrix(&class_templates); splicing_matrix_destroy(&class_templates); SPLICING_FINALLY_CLEAN(1); r2=pysplicing_from_vector(&logLik); splicing_vector_destroy(&logLik); SPLICING_FINALLY_CLEAN(1); r1=pysplicing_from_matrix(&samples); splicing_matrix_destroy(&samples); SPLICING_FINALLY_CLEAN(1); return Py_BuildValue("OOOOOO", r1, r2, r3, r4, r5, r6); }
void splicing_exonset_destroy(splicing_exonset_t *ex) { splicing_strvector_destroy(&ex->seqids); splicing_vector_int_destroy(&ex->seqid); splicing_vector_int_destroy(&ex->start); splicing_vector_int_destroy(&ex->end); }