/* global alignment with linear gapcosts in linear space * with constant cost values */ GtUword gt_computelinearspace(LinspaceManagement *spacemanager, GtAlignment *align, const GtUchar *useq, GtUword ustart, GtUword ulen, const GtUchar *vseq, GtUword vstart, GtUword vlen, GtUword matchcost, GtUword mismatchcost, GtUword gapcost) { GtUword distance; GtScoreHandler *scorehandler; gt_assert(spacemanager && align); scorehandler = gt_scorehandler_new_DNA(matchcost, mismatchcost, 0, gapcost); distance = gt_computelinearspace_generic(spacemanager, scorehandler, align, useq, ustart, ulen, vseq, vstart, vlen); gt_scorehandler_delete(scorehandler); return distance; }
static void gt_show_seed_extend_plain(GtSequencepairbuffer *seqpairbuf, GtLinspaceManagement *linspace_spacemanager, GtScoreHandler *linspace_scorehandler, GtAlignment *alignment, GtUchar *alignment_show_buffer, GtUword alignmentwidth, bool showeoplist, const GtUchar *characters, GtUchar wildcardshow, const GtEncseq *aencseq, const GtEncseq *bencseq, const GtQuerymatch *querymatchptr) { GtUword edist; GtReadmode query_readmode = gt_querymatch_query_readmode(querymatchptr); const GtUword distance = gt_querymatch_distance(querymatchptr), dblen = gt_querymatch_dblen(querymatchptr), queryseqnum = gt_querymatch_queryseqnum(querymatchptr), querystart_fwdstrand = gt_querymatch_querystart_fwdstrand(querymatchptr), querylen = gt_querymatch_querylen(querymatchptr); const GtUword apos_ab = gt_querymatch_dbstart(querymatchptr); const GtUword bpos_ab = gt_encseq_seqstartpos(bencseq, queryseqnum) + querystart_fwdstrand; gt_querymatch_coordinates_out(querymatchptr); if (dblen >= seqpairbuf->a_allocated) { seqpairbuf->a_sequence = gt_realloc(seqpairbuf->a_sequence, sizeof *seqpairbuf->a_sequence * dblen); seqpairbuf->a_allocated = dblen; } if (querylen >= seqpairbuf->b_allocated) { seqpairbuf->b_sequence = gt_realloc(seqpairbuf->b_sequence, sizeof *seqpairbuf->b_sequence * querylen); seqpairbuf->b_allocated = querylen; } gt_encseq_extract_encoded(aencseq, seqpairbuf->a_sequence, apos_ab, apos_ab + dblen - 1); gt_encseq_extract_encoded(bencseq, seqpairbuf->b_sequence, bpos_ab, bpos_ab + querylen - 1); if (query_readmode != GT_READMODE_FORWARD) { gt_assert(query_readmode == GT_READMODE_REVCOMPL); gt_inplace_reverse_complement(seqpairbuf->b_sequence,querylen); } edist = gt_computelinearspace_generic(linspace_spacemanager, linspace_scorehandler, alignment, seqpairbuf->a_sequence, 0, dblen, seqpairbuf->b_sequence, 0, querylen); if (edist < distance) { printf("# edist=" GT_WU " (smaller by " GT_WU ")\n",edist,distance - edist); } gt_assert(edist <= distance); if (alignmentwidth > 0) { gt_alignment_show_generic(alignment_show_buffer, false, alignment, stdout, alignmentwidth, characters, wildcardshow); } if (showeoplist && distance > 0) { gt_alignment_show_multieop_list(alignment, stdout); } if (alignmentwidth > 0 || showeoplist) { gt_alignment_reset(alignment); } }