コード例 #1
0
ファイル: alignchime.cpp プロジェクト: Cryomics-Lab/mothur
void AlignChime3SDRealign(const SeqData &QSD3, const SeqData &ASD3, const SeqData &BSD3,
  ChimeHit2 &Hit)
	{
	SeqData QSD;
	SeqData ASD;
	SeqData BSD;
	StripGapsAlloc(QSD3, QSD);
	StripGapsAlloc(ASD3, ASD);
	StripGapsAlloc(BSD3, BSD);

	string PathQA;
	string PathQB;
	bool FoundQA = GlobalAlign(QSD, ASD, PathQA);
	bool FoundQB = GlobalAlign(QSD, BSD, PathQB);
	if (!FoundQA || !FoundQB)
		{
		Hit.Clear();
		Hit.QLabel = QSD3.Label;
		return;
		}

	AlignChime(QSD, ASD, BSD, PathQA, PathQB, Hit);

	myfree((void *) QSD.Seq);
	myfree((void *) ASD.Seq);
	myfree((void *) BSD.Seq);
	}
コード例 #2
0
ファイル: aligntwomsas.cpp プロジェクト: Unode/ext_apps
SCORE AlignTwoMSAs(const MSA &msa1, const MSA &msa2, MSA &msaOut, PWPath &Path,
  bool bLockLeft, bool bLockRight)
	{
	const unsigned uLengthA = msa1.GetColCount();
	const unsigned uLengthB = msa2.GetColCount();

	ProfPos *PA = ProfileFromMSA(msa1);
	ProfPos *PB = ProfileFromMSA(msa2);

	if (bLockLeft)
		{
		PA[0].m_scoreGapOpen = MINUS_INFINITY;
		PB[0].m_scoreGapOpen = MINUS_INFINITY;
		}

	if (bLockRight)
		{
		PA[uLengthA-1].m_scoreGapClose = MINUS_INFINITY;
		PB[uLengthB-1].m_scoreGapClose = MINUS_INFINITY;
		}

	float r = (float) uLengthA/ (float) (uLengthB + 1); // +1 to prevent div 0
	if (r < 1)
		r = 1/r;

	SCORE Score = GlobalAlign(PA, uLengthA, PB, uLengthB, Path);

	AlignTwoMSAsGivenPath(Path, msa1, msa2, msaOut);

	delete[] PA;
	delete[] PB;

	return Score;
	}
コード例 #3
0
ファイル: glbalign.cpp プロジェクト: Unode/ext_apps
SCORE GlobalAlignNoDiags(const ProfPos *PA, unsigned uLengthA, const ProfPos *PB,
  unsigned uLengthB, PWPath &Path)
	{
	return GlobalAlign(PA, uLengthA, PB, uLengthB, Path);
	}