static void reConnectAnnotation(IDnum * currentPreNodeID, Annotation * annot, Coordinate * currentPosition, IDnum sequenceIndex, PreGraph * preGraph, PreMarker ** previous) { IDnum nextPreNodeID = getStartID(annot); *previous = addPreMarker_pg(preGraph, nextPreNodeID, sequenceIndex, currentPosition, *previous); while (*currentPreNodeID != getFinishID(annot)) { nextPreNodeID = (*currentPreNodeID) + 1; *previous = addPreMarker_pg(preGraph, nextPreNodeID, sequenceIndex, currentPosition, *previous); *currentPreNodeID = nextPreNodeID; } }
static void convertInsertionMarkers(InsertionMarker * insertionMarkers, InsertionMarker * veryLastMarker, IDnum * chains) { InsertionMarker *marker; Annotation *annot; for (marker = insertionMarkers; marker != veryLastMarker; marker++) { annot = marker->annot; if (getAnnotSequenceID(annot) > 0) { if (marker->isStart) { if (getStartID(annot) == 0) setStartID(annot, chains [getAnnotSequenceID (annot)]); else setStartID(annot, getStartID(annot) + 1); } } else { if (marker->isStart) setStartID(annot, -getStartID(annot)); else { if (getFinishID(annot) == 0) setFinishID(annot, -chains [-getAnnotSequenceID (annot)]); else setFinishID(annot, -getFinishID(annot) - 1); } } } free(insertionMarkers); }
static void connectAnnotation(IDnum * currentPreNodeID, Annotation * annot, Coordinate * currentPosition, IDnum sequenceIndex, boolean isReference, PreGraph * preGraph) { IDnum nextPreNodeID = getStartID(annot); connectPreNodeToTheNext(currentPreNodeID, nextPreNodeID, currentPosition, sequenceIndex, isReference, preGraph); while (*currentPreNodeID != getFinishID(annot)) { nextPreNodeID = (*currentPreNodeID) + 1; connectPreNodeToTheNext(currentPreNodeID, nextPreNodeID, currentPosition, sequenceIndex, isReference, preGraph); } }