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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#include "muscle.h"
#include "textfile.h"
#include "seqvect.h"
#include "distfunc.h"
#include "msa.h"
#include "tree.h"
#include "clust.h"
#include "profile.h"
#include "clustsetmsa.h"
void ProfDB()
{
SetOutputFileName(g_pstrOutFileName);
SetInputFileName(g_pstrFileName2);
SetStartTime();
TextFile file1(g_pstrFileName1);
TextFile file2(g_pstrFileName2);
SetMaxIters(g_uMaxIters);
SetSeqWeightMethod(g_SeqWeight1);
TextFile fileIn(g_pstrFileName1);
MSA msa1;
msa1.FromFile(fileIn);
const unsigned uSeqCount1 = msa1.GetSeqCount();
if (0 == uSeqCount1)
Quit("No sequences in input alignment");
SeqVect v;
v.FromFASTAFile(file2);
const unsigned uSeqCount2 = v.Length();
if (0 == uSeqCount2)
Quit("No sequences in input alignment");
MSA::SetIdCount(uSeqCount1 + uSeqCount2);
SetProgressDesc("Align sequence database to profile");
for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount2; ++uSeqIndex)
{
Progress(uSeqIndex, uSeqCount2);
Seq &s = *(v[uSeqIndex]);
s.SetId(0);
MSA msaTmp;
msaTmp.FromSeq(s);
MSA msaOut;
ProfileProfile(msa1, msaTmp, msaOut);
msa1.Copy(msaOut);
}
ProgressStepsDone();
TextFile fileOut(g_pstrOutFileName, true);
msa1.ToFile(fileOut);
}
|