+++ /dev/null
-#include "muscle.h"\r
-#include "profile.h"\r
-\r
-// Original:\r
-//HYDROPHILIC_CONTEXT 0 6 -0.3969495574
-//HYDROPHILIC_CONTEXT 1 6 -0.9407126603
-//HYDROPHILIC_CONTEXT 2 6 -0.4968150972
-//HYDROPHILIC_CONTEXT 3 6 -0.271646023
-//HYDROPHILIC_CONTEXT 4 6 0.006990406416
-//HYDROPHILIC_CONTEXT 5 6 0.1381111256
-//HYDROPHILIC_CONTEXT 6 6 0.2541439872
-\r
-// Blosum62:\r
-//HYDROPHILIC_CONTEXT 0 6 -0.2448419585
-//HYDROPHILIC_CONTEXT 1 6 -0.8734889946
-//HYDROPHILIC_CONTEXT 2 6 -0.5724336598
-//HYDROPHILIC_CONTEXT 3 6 -0.2670439975
-//HYDROPHILIC_CONTEXT 4 6 0.004844647323
-//HYDROPHILIC_CONTEXT 5 6 0.1812057148
-//HYDROPHILIC_CONTEXT 6 6 0.1036540864
-
-static SCORE Factors[7] =\r
- {\r
- (SCORE) -0.2448419585,
- (SCORE) -0.8734889946,
- (SCORE) -0.5724336598,
- (SCORE) -0.2670439975,
- (SCORE) 0.004844647323,
- (SCORE) 0.1812057148,
- (SCORE) 0.1036540864
- };\r
-\r
-static bool Hydrophilic[20] =\r
- {\r
- false, // A\r
- false, // C\r
- true, // D\r
- true, // E\r
- false, // F\r
- true, // G\r
- false, // H\r
- false, // I\r
- true, // K\r
- false, // L\r
- false, // M\r
- true, // N\r
- true, // P\r
- true, // Q\r
- true, // R\r
- true, // S\r
- false, // T\r
- false, // V\r
- false, // Y\r
- false, // W\r
- };\r
-\r
-bool IsHydrophilic(const FCOUNT fcCounts[])\r
- {\r
- for (unsigned uLetter = 0; uLetter < 20; ++uLetter)\r
- if (fcCounts[uLetter] > 0.0 && Hydrophilic[uLetter])\r
- return false;\r
- return true;\r
- }\r
-\r
-static double HydrophilicFraction(const FCOUNT fcCounts[])\r
- {\r
- double TotalAll = 0.0;\r
- double TotalHydrophilic = 0.0;\r
- for (unsigned uLetter = 0; uLetter < 20; ++uLetter)\r
- {\r
- FCOUNT Freq = fcCounts[uLetter];\r
- TotalAll += Freq;\r
- if (Hydrophilic[uLetter])\r
- TotalHydrophilic += Freq;\r
- }\r
- return TotalHydrophilic / TotalAll;\r
- }\r
-\r
-void TomHydro(ProfPos *Prof, unsigned uLength)\r
- {\r
- if (ALPHA_Amino != g_Alpha)\r
- return;\r
- if (uLength < 6)\r
- return;\r
-\r
- for (unsigned uColIndex = 3; uColIndex < uLength - 2; ++uColIndex)\r
- {\r
- // 6-residue window:\r
- // xxxxxx\r
- // AARNCARNGTAGCATNAC\r
- // AARN----------TNAC\r
-\r
- double dCount = 0.0;\r
- for (unsigned uColIndexW = uColIndex - 3; uColIndexW < uColIndex + 3;\r
- ++uColIndexW)\r
- {\r
- const ProfPos &PP = Prof[uColIndexW];\r
- dCount += HydrophilicFraction(PP.m_fcCounts);\r
- }\r
- // Round to nearest integer\r
- unsigned uCount = (unsigned) (dCount + 0.5);\r
- if (uCount > 6)\r
- uCount = 6;\r
- SCORE dFactor = Factors[uCount];\r
- ProfPos &PP = Prof[uColIndex];\r
- PP.m_scoreGapOpen += dFactor;\r
- PP.m_scoreGapClose += dFactor;\r
- }\r
- }\r