f110fe9448ad3774780121c523c27ed25fcd6dff markd Thu Aug 20 10:20:27 2015 -0700 pslClone needs to clone the statistics as well (no redmine) diff --git src/lib/psl.c src/lib/psl.c index db75b2e..db0c111 100644 --- src/lib/psl.c +++ src/lib/psl.c @@ -1968,29 +1968,37 @@ float pslQueryAligned(struct psl *psl) /* compute fraction of query that was aligned */ { float aligned = psl->match + psl->misMatch + psl->repMatch; return aligned/(float)psl->qSize; } struct psl* pslClone(struct psl *psl) /* clone a psl */ { struct psl* pslCp = pslNew(psl->qName, psl->qSize, psl->qStart, psl->qEnd, psl->tName, psl->tSize, psl->tStart, psl->tEnd, psl->strand, psl->blockCount, ((psl->tSequence != NULL) ? PSL_XA_FORMAT : 0)); +pslCp->match = psl->match; +pslCp->misMatch = psl->misMatch; +pslCp->repMatch = psl->repMatch; +pslCp->nCount = psl->nCount; +pslCp->qNumInsert = psl->qNumInsert; +pslCp->qBaseInsert = psl->qBaseInsert; +pslCp->tNumInsert = psl->tNumInsert; +pslCp->tBaseInsert = psl->tBaseInsert; int iBlk; for (iBlk = 0; iBlk < psl->blockCount; iBlk++) { pslCp->blockSizes[iBlk] = psl->blockSizes[iBlk]; pslCp->qStarts[iBlk] = psl->qStarts[iBlk]; pslCp->tStarts[iBlk] = psl->tStarts[iBlk]; if (psl->qSequence != NULL) pslCp->qSequence[iBlk] = cloneString(psl->qSequence[iBlk]); if (psl->tSequence != NULL) pslCp->tSequence[iBlk] = cloneString(psl->tSequence[iBlk]); pslCp->blockCount++; } return pslCp; }