void readCoherentGraph(Graph * inGraph, boolean(*isUnique) (Node * node), double coverage, ReadSet * reads) { IDnum nodeIndex; Node *node; IDnum previousNodeCount = 0; graph = inGraph; listMemory = newRecycleBin(sizeof(PassageMarkerList), 100000); expected_coverage = coverage; sequences = reads->tSequences; velvetLog("Read coherency...\n"); resetNodeStatus(graph); identifyUniqueNodes(isUnique); trimLongReadTips(); previousNodeCount = 0; while (previousNodeCount != nodeCount(graph)) { previousNodeCount = nodeCount(graph); for (nodeIndex = 1; nodeIndex <= nodeCount(graph); nodeIndex++) { node = getNodeInGraph(graph, nodeIndex); if (node == NULL || !getUniqueness(node)) continue; while (uniqueNodesConnect(node)) node = bypass(); node = getTwinNode(node); while (uniqueNodesConnect(node)) node = bypass(); } renumberNodes(graph); } destroyRecycleBin(listMemory); destroyRecycleBin(nodeListMemory); velvetLog("Confronted to %li multiple hits and %li null over %li\n", (long) multCounter, (long) nullCounter, (long) dbgCounter); velvetLog("Read coherency over!\n"); }
void dfh_deleteheap(DFibHeap * h) { destroyRecycleBin(h->nodeMemory); if (h->dfh_cons != NULL) free(h->dfh_cons); free(h); }
void destroyAllSplayTrees() { #ifdef OPENMP destroyRecycleBinArray(treeMemory); #else destroyRecycleBin(treeMemory); #endif treeMemory = NULL; }
static void cleanMemory() { velvetLog("Cleaning memory\n"); cleanScaffoldMemory(); destroyRecycleBin(nodeListMemory); nodeListMemory = NULL; free(localScaffold); }
static void destroySmallNodeListMemmory(void) { if (smallNodeListMemory != NULL) { #ifdef OPENMP destroyRecycleBinArray(smallNodeListMemory); #else destroyRecycleBin(smallNodeListMemory); #endif smallNodeListMemory = NULL; } }
void cleanTranscriptMemory(Locus * loci, IDnum locusCount) { IDnum index; Transcript *transcript; for (index = 0; index < locusCount; index++) { Locus * locus = getLocus(loci, index); for (transcript = getTranscript(locus); transcript; transcript = transcript->next) { free(transcript->contigs); free(transcript->distances); } } destroyRecycleBin(transcriptMemory); transcriptMemory = NULL; }
static void fillUpGraph(ReadSet * reads, KmerOccurenceTable * kmerOccurences, Graph * graph, boolean readTracking, boolean double_strand) { IDnum readIndex; Category category; resetNodeStatus(graph); for (readIndex = 0; readIndex < reads->readCount; readIndex++) { category = reads->categories[readIndex]; ghostThreadSequenceThroughGraph(reads-> tSequences[readIndex], kmerOccurences, graph, readIndex + 1, category, readTracking, double_strand); } createNodeReadStartArrays(graph); for (readIndex = 0; readIndex < reads->readCount; readIndex++) { category = reads->categories[readIndex]; if (readIndex % 100000 == 0) printf("Threading through reads %d / %d\n", readIndex, reads->readCount); threadSequenceThroughGraph(reads->tSequences[readIndex], kmerOccurences, graph, readIndex + 1, category, readTracking, double_strand); } orderNodeReadStartArrays(graph); if (smallNodeListMemory != NULL) destroyRecycleBin(smallNodeListMemory); free(kmerOccurences->kmerTable); free(kmerOccurences->accelerationTable); free(kmerOccurences); }