コード例 #1
0
ファイル: readCoherentGraph.c プロジェクト: Debian/velvet
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");
}
コード例 #2
0
ファイル: dfib.c プロジェクト: Debian/velvet
void dfh_deleteheap(DFibHeap * h)
{
	destroyRecycleBin(h->nodeMemory);
	if (h->dfh_cons != NULL)
		free(h->dfh_cons);
	free(h);
}
コード例 #3
0
ファイル: splay.c プロジェクト: GunioRobot/velvet
void destroyAllSplayTrees()
{
#ifdef OPENMP
	destroyRecycleBinArray(treeMemory);
#else
	destroyRecycleBin(treeMemory);
#endif
	treeMemory = NULL;
}
コード例 #4
0
static void cleanMemory()
{
	velvetLog("Cleaning memory\n");

	cleanScaffoldMemory();

	destroyRecycleBin(nodeListMemory);
	nodeListMemory = NULL;

	free(localScaffold);
}
コード例 #5
0
static void destroySmallNodeListMemmory(void)
{
	if (smallNodeListMemory != NULL)
	{
#ifdef OPENMP
		destroyRecycleBinArray(smallNodeListMemory);
#else
		destroyRecycleBin(smallNodeListMemory);
#endif
		smallNodeListMemory = NULL;
	}
}
コード例 #6
0
ファイル: transcript.cpp プロジェクト: zixiaojindao/velvet
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;
}
コード例 #7
0
ファイル: graphReConstruction.c プロジェクト: macmanes/velvet
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);
}