Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / muscle / aligntwomsas.cpp
1 #include "muscle.h"\r
2 #include "msa.h"\r
3 #include "profile.h"\r
4 #include "pwpath.h"\r
5 #include "textfile.h"\r
6 #include "timing.h"\r
7 \r
8 SCORE AlignTwoMSAs(const MSA &msa1, const MSA &msa2, MSA &msaOut, PWPath &Path,\r
9   bool bLockLeft, bool bLockRight)\r
10         {\r
11         const unsigned uLengthA = msa1.GetColCount();\r
12         const unsigned uLengthB = msa2.GetColCount();\r
13 \r
14         ProfPos *PA = ProfileFromMSA(msa1);\r
15         ProfPos *PB = ProfileFromMSA(msa2);\r
16 \r
17         if (bLockLeft)\r
18                 {\r
19                 PA[0].m_scoreGapOpen = MINUS_INFINITY;\r
20                 PB[0].m_scoreGapOpen = MINUS_INFINITY;\r
21                 }\r
22 \r
23         if (bLockRight)\r
24                 {\r
25                 PA[uLengthA-1].m_scoreGapClose = MINUS_INFINITY;\r
26                 PB[uLengthB-1].m_scoreGapClose = MINUS_INFINITY;\r
27                 }\r
28 \r
29         float r = (float) uLengthA/ (float) (uLengthB + 1); // +1 to prevent div 0\r
30         if (r < 1)\r
31                 r = 1/r;\r
32 \r
33         SCORE Score = GlobalAlign(PA, uLengthA, PB, uLengthB, Path);\r
34 \r
35         AlignTwoMSAsGivenPath(Path, msa1, msa2, msaOut);\r
36 \r
37         delete[] PA;\r
38         delete[] PB;\r
39 \r
40         return Score;\r
41         }\r