Next version of JABA
[jabaws.git] / binaries / src / muscle / hydro.cpp
1 #include "muscle.h"\r
2 #include "profile.h"\r
3 \r
4 extern void TomHydro(ProfPos *Prof, unsigned Length);\r
5 \r
6 // Apply hydrophobicity heuristic to a profile\r
7 void Hydro(ProfPos *Prof, unsigned uLength)\r
8         {\r
9         if (ALPHA_Amino != g_Alpha)\r
10                 return;\r
11 \r
12         if (g_bTomHydro)\r
13                 {\r
14                 TomHydro(Prof, uLength);\r
15                 return;\r
16                 }\r
17 \r
18         if (0 == g_uHydrophobicRunLength)\r
19                 return;\r
20 \r
21         if (uLength <= g_uHydrophobicRunLength)\r
22                 return;\r
23 \r
24         unsigned uRunLength = 0;\r
25         unsigned L2 = g_uHydrophobicRunLength/2;\r
26         for (unsigned uColIndex = L2; uColIndex < uLength - L2; ++uColIndex)\r
27                 {\r
28                 ProfPos &PP = Prof[uColIndex];\r
29                 bool bHydro = IsHydrophobic(PP.m_fcCounts);\r
30                 if (bHydro)\r
31                         {\r
32                         ++uRunLength;\r
33                         if (uRunLength >= g_uHydrophobicRunLength)\r
34                                 {\r
35                                 Prof[uColIndex-L2].m_scoreGapOpen *= (SCORE) g_dHydroFactor;\r
36                                 Prof[uColIndex-L2].m_scoreGapClose *= (SCORE) g_dHydroFactor;\r
37                                 }\r
38                         }\r
39                 else\r
40                         uRunLength = 0;\r
41                 }\r
42         }\r