5 //HYDROPHILIC_CONTEXT 0 6 -0.3969495574
6 //HYDROPHILIC_CONTEXT 1 6 -0.9407126603
7 //HYDROPHILIC_CONTEXT 2 6 -0.4968150972
8 //HYDROPHILIC_CONTEXT 3 6 -0.271646023
9 //HYDROPHILIC_CONTEXT 4 6 0.006990406416
10 //HYDROPHILIC_CONTEXT 5 6 0.1381111256
11 //HYDROPHILIC_CONTEXT 6 6 0.2541439872
14 //HYDROPHILIC_CONTEXT 0 6 -0.2448419585
15 //HYDROPHILIC_CONTEXT 1 6 -0.8734889946
16 //HYDROPHILIC_CONTEXT 2 6 -0.5724336598
17 //HYDROPHILIC_CONTEXT 3 6 -0.2670439975
18 //HYDROPHILIC_CONTEXT 4 6 0.004844647323
19 //HYDROPHILIC_CONTEXT 5 6 0.1812057148
20 //HYDROPHILIC_CONTEXT 6 6 0.1036540864
22 static SCORE Factors[7] =
\r
24 (SCORE) -0.2448419585,
25 (SCORE) -0.8734889946,
26 (SCORE) -0.5724336598,
27 (SCORE) -0.2670439975,
28 (SCORE) 0.004844647323,
33 static bool Hydrophilic[20] =
\r
57 bool IsHydrophilic(const FCOUNT fcCounts[])
\r
59 for (unsigned uLetter = 0; uLetter < 20; ++uLetter)
\r
60 if (fcCounts[uLetter] > 0.0 && Hydrophilic[uLetter])
\r
65 static double HydrophilicFraction(const FCOUNT fcCounts[])
\r
67 double TotalAll = 0.0;
\r
68 double TotalHydrophilic = 0.0;
\r
69 for (unsigned uLetter = 0; uLetter < 20; ++uLetter)
\r
71 FCOUNT Freq = fcCounts[uLetter];
\r
73 if (Hydrophilic[uLetter])
\r
74 TotalHydrophilic += Freq;
\r
76 return TotalHydrophilic / TotalAll;
\r
79 void TomHydro(ProfPos *Prof, unsigned uLength)
\r
81 if (ALPHA_Amino != g_Alpha)
\r
86 for (unsigned uColIndex = 3; uColIndex < uLength - 2; ++uColIndex)
\r
88 // 6-residue window:
\r
90 // AARNCARNGTAGCATNAC
\r
91 // AARN----------TNAC
\r
93 double dCount = 0.0;
\r
94 for (unsigned uColIndexW = uColIndex - 3; uColIndexW < uColIndex + 3;
\r
97 const ProfPos &PP = Prof[uColIndexW];
\r
98 dCount += HydrophilicFraction(PP.m_fcCounts);
\r
100 // Round to nearest integer
\r
101 unsigned uCount = (unsigned) (dCount + 0.5);
\r
104 SCORE dFactor = Factors[uCount];
\r
105 ProfPos &PP = Prof[uColIndex];
\r
106 PP.m_scoreGapOpen += dFactor;
\r
107 PP.m_scoreGapClose += dFactor;
\r