Next version of JABA
[jabaws.git] / binaries / src / muscle / profdb.cpp
1 #include "muscle.h"\r
2 #include "textfile.h"\r
3 #include "seqvect.h"\r
4 #include "distfunc.h"\r
5 #include "msa.h"\r
6 #include "tree.h"\r
7 #include "clust.h"\r
8 #include "profile.h"\r
9 #include "clustsetmsa.h"\r
10 \r
11 void ProfDB()\r
12         {\r
13         SetOutputFileName(g_pstrOutFileName);\r
14         SetInputFileName(g_pstrFileName2);\r
15         SetStartTime();\r
16 \r
17         TextFile file1(g_pstrFileName1);\r
18         TextFile file2(g_pstrFileName2);\r
19 \r
20         SetMaxIters(g_uMaxIters);\r
21         SetSeqWeightMethod(g_SeqWeight1);\r
22 \r
23         TextFile fileIn(g_pstrFileName1);\r
24         MSA msa1;\r
25         msa1.FromFile(fileIn);\r
26 \r
27         const unsigned uSeqCount1 = msa1.GetSeqCount();\r
28         if (0 == uSeqCount1)\r
29                 Quit("No sequences in input alignment");\r
30 \r
31         SeqVect v;\r
32         v.FromFASTAFile(file2);\r
33         const unsigned uSeqCount2 = v.Length();\r
34         if (0 == uSeqCount2)\r
35                 Quit("No sequences in input alignment");\r
36 \r
37         MSA::SetIdCount(uSeqCount1 + uSeqCount2);\r
38         SetProgressDesc("Align sequence database to profile");\r
39         for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount2; ++uSeqIndex)\r
40                 {\r
41                 Progress(uSeqIndex, uSeqCount2);\r
42                 Seq &s = *(v[uSeqIndex]);\r
43                 s.SetId(0);\r
44                 MSA msaTmp;\r
45                 msaTmp.FromSeq(s);\r
46                 MSA msaOut;\r
47                 ProfileProfile(msa1, msaTmp, msaOut);\r
48                 msa1.Copy(msaOut);\r
49                 }\r
50         ProgressStepsDone();\r
51 \r
52         TextFile fileOut(g_pstrOutFileName, true);\r
53         msa1.ToFile(fileOut);\r
54         }\r