+++ /dev/null
-#include "muscle.h"\r
-#include "textfile.h"\r
-#include "msa.h"\r
-#include "tree.h"\r
-#include "profile.h"\r
-#include "objscore.h"\r
-\r
-bool TreeNeededForWeighting(SEQWEIGHT s)\r
- {\r
- switch (s)\r
- {\r
- case SEQWEIGHT_ClustalW:\r
- case SEQWEIGHT_ThreeWay:\r
- return true;\r
- default:\r
- return false;\r
- }\r
- }\r
-\r
-static ProfPos *ProfileFromMSALocal(MSA &msa, Tree &tree)\r
- {\r
- const unsigned uSeqCount = msa.GetSeqCount();\r
- for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
- msa.SetSeqId(uSeqIndex, uSeqIndex);\r
-\r
- if (TreeNeededForWeighting(g_SeqWeight2))\r
- {\r
- TreeFromMSA(msa, tree, g_Cluster2, g_Distance2, g_Root1);\r
- SetMuscleTree(tree);\r
- }\r
- return ProfileFromMSA(msa);\r
- }\r
-\r
-void ProfileProfile(MSA &msa1, MSA &msa2, MSA &msaOut)\r
- {\r
- //ALPHA Alpha = ALPHA_Undefined;\r
- //switch (g_SeqType)\r
- // {\r
- //case SEQTYPE_Auto:\r
- // Alpha = msa1.GuessAlpha();\r
- // break;\r
-\r
- //case SEQTYPE_Protein:\r
- // Alpha = ALPHA_Amino;\r
- // break;\r
-\r
- //case SEQTYPE_DNA:\r
- // Alpha = ALPHA_DNA;\r
- // break;\r
-\r
- //case SEQTYPE_RNA:\r
- // Alpha = ALPHA_RNA;\r
- // break;\r
-\r
- //default:\r
- // Quit("Invalid SeqType");\r
- // }\r
- //SetAlpha(Alpha);\r
-\r
- //msa1.FixAlpha();\r
- //msa2.FixAlpha();\r
-\r
- unsigned uLength1;\r
- unsigned uLength2;\r
-\r
- uLength1 = msa1.GetColCount();\r
- uLength2 = msa2.GetColCount();\r
-\r
- Tree tree1;\r
- Tree tree2;\r
- ProfPos *Prof1 = ProfileFromMSALocal(msa1, tree1);\r
- ProfPos *Prof2 = ProfileFromMSALocal(msa2, tree2);\r
-\r
- PWPath Path;\r
- ProfPos *ProfOut;\r
- unsigned uLengthOut;\r
- Progress("Aligning profiles");\r
- AlignTwoProfs(Prof1, uLength1, 1.0, Prof2, uLength2, 1.0, Path, &ProfOut, &uLengthOut);\r
-\r
- Progress("Building output");\r
- AlignTwoMSAsGivenPath(Path, msa1, msa2, msaOut);\r
- }\r
-\r
-// Do profile-profile alignment\r
-void Profile()\r
- {\r
- if (0 == g_pstrFileName1 || 0 == g_pstrFileName2)\r
- Quit("-profile needs -in1 and -in2");\r
-\r
- SetSeqWeightMethod(g_SeqWeight1);\r
-\r
- TextFile file1(g_pstrFileName1);\r
- TextFile file2(g_pstrFileName2);\r
-\r
- MSA msa1;\r
- MSA msa2;\r
- MSA msaOut;\r
-\r
- Progress("Reading %s", g_pstrFileName1);\r
- msa1.FromFile(file1);\r
- Progress("%u seqs %u cols", msa1.GetSeqCount(), msa1.GetColCount());\r
-\r
- Progress("Reading %s", g_pstrFileName2);\r
- msa2.FromFile(file2);\r
- Progress("%u seqs %u cols", msa2.GetSeqCount(), msa2.GetColCount());\r
-\r
- ALPHA Alpha = ALPHA_Undefined;\r
- switch (g_SeqType)\r
- {\r
- case SEQTYPE_Auto:\r
- Alpha = msa1.GuessAlpha();\r
- break;\r
-\r
- case SEQTYPE_Protein:\r
- Alpha = ALPHA_Amino;\r
- break;\r
-\r
- case SEQTYPE_DNA:\r
- Alpha = ALPHA_DNA;\r
- break;\r
-\r
- case SEQTYPE_RNA:\r
- Alpha = ALPHA_RNA;\r
- break;\r
-\r
- default:\r
- Quit("Invalid seq type");\r
- }\r
- SetAlpha(Alpha);\r
-\r
- msa1.FixAlpha();\r
- msa2.FixAlpha();\r
-\r
- SetPPScore();\r
- if (ALPHA_DNA == Alpha || ALPHA_RNA == Alpha)\r
- SetPPScore(PPSCORE_SPN);\r
-\r
- const unsigned uSeqCount1 = msa1.GetSeqCount();\r
- const unsigned uSeqCount2 = msa2.GetSeqCount();\r
- const unsigned uSumSeqCount = uSeqCount1 + uSeqCount2;\r
- MSA::SetIdCount(uSumSeqCount);\r
-\r
- ProfileProfile(msa1, msa2, msaOut);\r
-\r
- Progress("Writing output");\r
- MuscleOutput(msaOut);\r
- }\r