File: addtargets2.cpp

package info (click to toggle)
mothur 1.48.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 13,684 kB
  • sloc: cpp: 161,854; makefile: 122; sh: 31
file content (38 lines) | stat: -rwxr-xr-x 1,095 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#if	UCHIMES

#include "myutils.h"
#include "chime.h"
#include "ultra.h"
#include <set>

const float MAX_WORD_COUNT_DROP = 1;

void SortDescending(const vector<float> &Values, vector<unsigned> &Order);
bool GlobalAlign(const SeqData &Query, const SeqData &Target, string &Path);
double GetFractIdGivenPath(const byte *A, const byte *B, const char *Path);
void USort(const SeqData &Query, const SeqDB &DB, vector<float> &WordCounts,
  vector<unsigned> &Order);

void AddTargets(SeqDB &DB, const SeqData &Query, set<unsigned> &TargetIndexes)
	{
	const unsigned SeqCount = DB.GetSeqCount();
	if (SeqCount == 0)
		return;

	vector<float> WordCounts;
	vector<unsigned> Order;
	USort(Query, DB, WordCounts, Order);
	asserta(SIZE(Order) == SeqCount);
	unsigned TopSeqIndex = Order[0];
	float TopWordCount = WordCounts[TopSeqIndex];
	for (unsigned i = 0; i < SeqCount; ++i)
		{
		unsigned SeqIndex = Order[i];
		float WordCount = WordCounts[SeqIndex];
		if (TopWordCount - WordCount > MAX_WORD_COUNT_DROP)
			return;
		TargetIndexes.insert(SeqIndex);
		}
	}

#endif