--- /dev/null
+#include "muscle.h"\r
+#include "textfile.h"\r
+#include "seqvect.h"\r
+#include "distfunc.h"\r
+#include "msa.h"\r
+#include "tree.h"\r
+#include "clust.h"\r
+#include "profile.h"\r
+#include "clustsetmsa.h"\r
+\r
+void ProfDB()\r
+ {\r
+ SetOutputFileName(g_pstrOutFileName);\r
+ SetInputFileName(g_pstrFileName2);\r
+ SetStartTime();\r
+\r
+ TextFile file1(g_pstrFileName1);\r
+ TextFile file2(g_pstrFileName2);\r
+\r
+ SetMaxIters(g_uMaxIters);\r
+ SetSeqWeightMethod(g_SeqWeight1);\r
+\r
+ TextFile fileIn(g_pstrFileName1);\r
+ MSA msa1;\r
+ msa1.FromFile(fileIn);\r
+\r
+ const unsigned uSeqCount1 = msa1.GetSeqCount();\r
+ if (0 == uSeqCount1)\r
+ Quit("No sequences in input alignment");\r
+\r
+ SeqVect v;\r
+ v.FromFASTAFile(file2);\r
+ const unsigned uSeqCount2 = v.Length();\r
+ if (0 == uSeqCount2)\r
+ Quit("No sequences in input alignment");\r
+\r
+ MSA::SetIdCount(uSeqCount1 + uSeqCount2);\r
+ SetProgressDesc("Align sequence database to profile");\r
+ for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount2; ++uSeqIndex)\r
+ {\r
+ Progress(uSeqIndex, uSeqCount2);\r
+ Seq &s = *(v[uSeqIndex]);\r
+ s.SetId(0);\r
+ MSA msaTmp;\r
+ msaTmp.FromSeq(s);\r
+ MSA msaOut;\r
+ ProfileProfile(msa1, msaTmp, msaOut);\r
+ msa1.Copy(msaOut);\r
+ }\r
+ ProgressStepsDone();\r
+\r
+ TextFile fileOut(g_pstrOutFileName, true);\r
+ msa1.ToFile(fileOut);\r
+ }\r