#ifndef __ENERGY_PARAMS__ #define __ENERGY_PARAMS__ //---------------------------------------------------------------------- class CEnergyParams { public: // Bases enum { A = 0, C = 1, G = 2, T = 3 }; static int Base2Index( char cBase ) { switch( cBase ) { case 'A': return CEnergyParams::A; case 'C': return CEnergyParams::C; case 'G': return CEnergyParams::G; case 'T': return CEnergyParams::T; } return CEnergyParams::A; } // indexes are Base i / Base j / Param i / Param j static float m_fSpringStep [4][4][6][6]; static float m_fAverageStep[4][4][6]; // indexes are AT|CG / Param i / Param j static float m_fSpringBase [2][6][6]; static float m_fAverageBase[2][6]; }; //---------------------------------------------------------------------- float CEnergyParams::m_fSpringStep[4][4][6][6] = { // 0 { // 0/0 { // 0/0/0 { 21.748, 0.087, 1.868, 1.330, -0.288, 0.072 }, // 0/0/1 { 0.087, 0.049, 0.017, -0.137, -0.001, 0.031 }, // 0/0/2 { 1.868, 0.017, 3.978, 1.559, -0.149, 0.175 }, // 0/0/3 { 1.330, -0.137, 1.559, 6.160, -0.098, 0.022 }, // 0/0/4 { -0.288, -0.001, -0.149, -0.098, 0.100, 0.001 }, // 0/0/5 { 0.072, 0.031, 0.175, 0.022, 0.001, 0.092 } }, // 0/1 { // 0/1/0 { 23.860, 0.245, -0.412, 2.510, 0.396, -0.276 }, // 0/1/1 { 0.245, 0.080, -0.041, 0.049, 0.014, 0.027 }, // 0/1/2 { -0.412, -0.041, 2.944, -0.102, -0.033, -0.044 }, // 0/1/3 { 2.510, 0.049, -0.102, 6.366, -0.010, -0.048 }, // 0/1/4 { 0.396, 0.014, -0.033, -0.010, 0.111, 0.004 }, // 0/1/5 { -0.276, 0.027, -0.044, -0.048, 0.004, 0.073 } }, // 0/2 { // 0/2/0 { 29.496, -0.018, 2.580, 4.501, -1.044, -0.147 }, // 0/2/1 { -0.018, 0.096, 0.003, 0.100, 0.026, 0.015 }, // 0/2/2 { 2.580, 0.003, 3.205, 1.380, -0.282, 0.164 }, // 0/2/3 { 4.501, 0.100, 1.380, 7.187, -0.124, 0.102 }, // 0/2/4 { -1.044, 0.026, -0.282, -0.124, 0.149, 0.005 }, // 0/2/5 { -0.147, 0.015, 0.164, 0.102, 0.005, 0.064 } }, // 0/3 { // 0/3/0 { 25.547, -0.030, 0.000, 0.487, 0.000, -0.409 }, // 0/3/1 { -0.030, 0.055, 0.000, -0.060, 0.000, 0.029 }, // 0/3/2 { 0.000, 0.000, 3.172, 0.000, -0.151, 0.000 }, // 0/3/3 { 0.487, -0.060, 1.750, 10.694, 0.000, -0.090 }, // 0/3/4 { 0.000, 0.000, -0.151, 0.000, 0.166, 0.000 }, // 0/3/5 { -0.409, 0.029, 0.000, -0.090, 0.000, 0.070 } } }, // 1 { // 1/0 { // 1/0/0 { 18.235, 0.004, 1.747, 2.369, 0.189, -0.321 }, // 1/0/1 { 0.004, 0.048, 0.018, 0.082, -0.001, 0.007 }, // 1/0/2 { 1.747, 0.018, 3.733, 0.871, -0.037, -0.087 }, // 1/0/3 { 2.369, 0.082, 0.871, 2.395, 0.062, -0.183 }, // 1/0/4 { 0.189, -0.001, -0.037, 0.062, 0.082, -0.016 }, // 1/0/5 { -0.321, 0.007, -0.087, -0.183, -0.016, 0.043 } }, // 1/1 same as 2/2 { // 1/1/0 { 30.312, 0.427, 1.563, 5.423, -0.851, -0.196 }, // 1/1/1 { 0.427, 0.064, 0.119, 0.143, -0.003, -0.001 }, // 1/1/2 { 1.563, 0.119, 2.425, 0.309, -0.227, 0.040 }, // 1/1/3 { 5.423, 0.143, 0.309, 3.542, -0.160, -0.061 }, // 1/1/4 { -0.851, -0.003, -0.227, -0.160, 0.119, -0.008 }, // 1/1/5 { -0.196, -0.001, 0.040, -0.061, -0.008, 0.041 } }, // 1/2 { // 1/2/0 { 14.164, -0.020, 0.000, 0.191, 0.000, -0.162 }, // 1/2/1 { -0.020, 0.050, 0.000, 0.005, 0.000, 0.005 }, // 1/2/2 { 0.000, 0.000, 1.586, 0.000, -0.137, 0.000 }, // 1/2/3 { 0.191, 0.005, 0.000, 3.301, 0.000, 0.056 }, // 1/2/4 { 0.000, 0.000, -0.137, 0.000, 0.068, 0.000 }, // 1/2/5 { -0.162, 0.005, 0.000, 0.056, 0.000, 0.047 } }, // 1/3 same as 2/0 { // 1/3/0 { 22.820, 0.362, 0.148, -0.270, -0.502, -0.408 }, // 1/3/1 { 0.362, 0.046, -0.009, -0.050, -0.010, 0.011 }, // 1/3/2 { 0.148, -0.009, 6.542, 1.750, -0.132, 0.087 }, // 1/3/3 { -0.270, -0.050, 1.750, 2.780, 0.068, -0.069 }, // 1/3/4 { -0.502, -0.010, -0.132, 0.068, 0.087, 0.000 }, // 1/3/5 { -0.408, 0.011, 0.087, -0.069, 0.000, 0.071 } } }, // 2 { // 2/0 same as 1/3 { // 1/3/0 { 22.820, 0.362, 0.148, -0.270, -0.502, -0.408 }, // 1/3/1 { 0.362, 0.046, -0.009, -0.050, -0.010, 0.011 }, // 1/3/2 { 0.148, -0.009, 6.542, 1.750, -0.132, 0.087 }, // 1/3/3 { -0.270, -0.050, 1.750, 2.780, 0.068, -0.069 }, // 1/3/4 { -0.502, -0.010, -0.132, 0.068, 0.087, 0.000 }, // 1/3/5 { -0.408, 0.011, 0.087, -0.069, 0.000, 0.071 } }, // 2/1 { // 2/1/0 { 25.860, 0.630, 0.000, 6.804, 0.000, -0.239 }, // 2/1/1 { 0.630, 0.082, 0.000, 0.412, 0.000, 0.005 }, // 2/1/2 { 0.000, 0.000, 3.350, 0.000, -0.236, 0.000 }, // 2/1/3 { 6.804, 0.412, 0.000, 6.244, 0.000, -0.159 }, // 2/1/4 { 0.000, 0.000, -0.236, 0.000, 0.082, 0.000 }, // 2/1/5 { -0.239, 0.005, 0.000, -0.159, 0.000, 0.055 } }, // 2/2 same as 1/1 { // 1/1/0 { 30.312, 0.427, 1.563, 5.423, -0.851, -0.196 }, // 1/1/1 { 0.427, 0.064, 0.119, 0.143, -0.003, -0.001 }, // 1/1/2 { 1.563, 0.119, 2.425, 0.309, -0.227, 0.040 }, // 1/1/3 { 5.423, 0.143, 0.309, 3.542, -0.160, -0.061 }, // 1/1/4 { -0.851, -0.003, -0.227, -0.160, 0.119, -0.008 }, // 1/1/5 { -0.196, -0.001, 0.040, -0.061, -0.008, 0.041 } }, // 2/3 same as 1/0 { // 1/0/0 { 18.235, 0.004, 1.747, 2.369, 0.189, -0.321 }, // 1/0/1 { 0.004, 0.048, 0.018, 0.082, -0.001, 0.007 }, // 1/0/2 { 1.747, 0.018, 3.733, 0.871, -0.037, -0.087 }, // 1/0/3 { 2.369, 0.082, 0.871, 2.395, 0.062, -0.183 }, // 1/0/4 { 0.189, -0.001, -0.037, 0.062, 0.082, -0.016 }, // 1/0/5 { -0.321, 0.007, -0.087, -0.183, -0.016, 0.043 } } }, // 3 { // 3/0 { // 3/0/0 { 21.914, -0.102, 0.000, 0.234, 0.000, -0.500 }, // 3/0/1 { -0.102, 0.029, 0.000, 0.061, 0.000, 0.013 }, // 3/0/2 { 0.000, 0.000, 3.860, 0.000, -0.176, 0.000 }, // 3/0/3 { 0.234, 0.061, 0.000, 2.350, 0.000, -0.067 }, // 3/0/4 { 0.000, 0.000, -0.176, 0.000, 0.148, 0.000 }, // 3/0/5 { -0.500, 0.013, 0.000, -0.067, 0.000, 0.052 } }, // 3/1 same as 0/2 { // 0/2/0 { 29.496, -0.018, 2.580, 4.501, -1.044, -0.147 }, // 0/2/1 { -0.018, 0.096, 0.003, 0.100, 0.026, 0.015 }, // 0/2/2 { 2.580, 0.003, 3.205, 1.380, -0.282, 0.164 }, // 0/2/3 { 4.501, 0.100, 1.380, 7.187, -0.124, 0.102 }, // 0/2/4 { -1.044, 0.026, -0.282, -0.124, 0.149, 0.005 }, // 0/2/5 { -0.147, 0.015, 0.164, 0.102, 0.005, 0.064 } }, // 3/2 same as 0/1 { // 0/1/0 { 23.860, 0.245, -0.412, 2.510, 0.396, -0.276 }, // 0/1/1 { 0.245, 0.080, -0.041, 0.049, 0.014, 0.027 }, // 0/1/2 { -0.412, -0.041, 2.944, -0.102, -0.033, -0.044 }, // 0/1/3 { 2.510, 0.049, -0.102, 6.366, -0.010, -0.048 }, // 0/1/4 { 0.396, 0.014, -0.033, -0.010, 0.111, 0.004 }, // 0/1/5 { -0.276, 0.027, -0.044, -0.048, 0.004, 0.073 } }, // 3/3 same as 0/0 { // 0/0/0 { 21.748, 0.087, 1.868, 1.330, -0.288, 0.072 }, // 0/0/1 { 0.087, 0.049, 0.017, -0.137, -0.001, 0.031 }, // 0/0/2 { 1.868, 0.017, 3.978, 1.559, -0.149, 0.175 }, // 0/0/3 { 1.330, -0.137, 1.559, 6.160, -0.098, 0.022 }, // 0/0/4 { -0.288, -0.001, -0.149, -0.098, 0.100, 0.001 }, // 0/0/5 { 0.072, 0.031, 0.175, 0.022, 0.001, 0.092 } } } }; //---------------------------------------------------------------------- float CEnergyParams::m_fAverageStep[4][4][6] = { // 0 { // 0/0 { 3.27, 0.7, -0.03, -0.08, -1.4, 35.1 }, // 0/1 { 3.36, 0.7, 0.13, -0.58, -0.1, 31.5 }, // 0/2 { 3.34, 4.5, 0.09, -0.25, -1.7, 31.9 }, // 0/3 { 3.31, 1.1, 0.00, -0.59, 0.0, 29.3 } }, // 1 { // 1/0 { 3.33, 4.7, 0.09, 0.53, 0.5, 37.3 }, // 1/1 same as 2/2 { 3.42, 3.6, 0.05, -0.22, -0.1, 32.9 }, // 1/2 { 3.39, 5.4, 0.00, 0.41, 0.0, 36.1 }, // 1/3 same as 2/0 { 3.37, 1.9, -0.28, 0.09, -1.5, 36.3 } }, // 2 { // 2/0 { 3.37, 1.9, -0.28, 0.09, -1.5, 36.3 }, // 2/1 { 3.40, 0.3, 0.00, -0.38, 0.0, 33.6 }, // 2/2 { 3.42, 3.6, 0.05, -0.22, -0.1, 32.9 }, // 2/3 same as 1/0 { 3.33, 4.7, 0.09, 0.53, 0.5, 37.3 } }, // 3 { // 3/0 { 3.42, 3.3, 0.00, 0.05, 0.0, 37.8 }, // 3/1 same as 0/2 { 3.34, 4.5, 0.09, -0.25, -1.7, 31.9 }, // 3/2 same as 0/1 { 3.36, 0.7, 0.13, -0.58, -0.1, 31.5 }, // 3/3 same as 0/0 { 3.27, 0.7, -0.03, -0.08, -1.4, 35.1 } } }; //---------------------------------------------------------------------- float CEnergyParams::m_fSpringBase[2][6][6] = { { { 0.0066, 0.0001, -0.0001, 0.0034, 0.0150, -0.0026 }, { 0.0001, 0.0098, 0.0022, 0.0026, 0.0046, -0.0002 }, { -0.0001, 0.0022, 0.0222, 0.0010, -0.1313, -0.0320 }, { 0.0034, 0.0026, 0.0010, 8.4574, -0.1458, 0.0757 }, { 0.0150, 0.0046, -0.1313, -0.1458, 42.2256, 0.1039 }, { -0.0026, -0.0002, -0.0320, 0.0757, 0.1039, 4.0306 } }, { { 0.0090, -0.0004, -0.0008, -0.0014, 0.0140, -0.0197 }, { -0.0004, 0.0105, 0.0057, 0.0030, -0.0998, 0.0638 }, { -0.0008, 0.0057, 0.0846, 0.0276, -1.2550, 0.0813 }, { -0.0014, 0.0030, 0.0276, 8.1138, -1.0603, 0.1676 }, { 0.0140, -0.0998, -1.2550, -1.0603, 72.4022, -1.6914 }, { -0.0197, 0.0638, 0.0813, 0.1676, -1.6914, 5.9009 } } }; // personal communication: // from Filip Lankas // to Marc Parisien // about article: //Lankas F, Sponer J, Langowski J, Cheatham TE 3rd. // DNA deformability at the base pair level. // J Am Chem Soc. 2004 Apr 7;126(13):4124-5. // PMID: 15053599 // here is a small table showing the average values of the base-pair // parameters and their standard deviations (the s.d. are calculated from // the average values of the different instances of a given base pair in // our sequences - they thus reflect the dispersion of the average values // and NOT thermal fluctuations in the simulations). // // Angles are in degrees, distances in angstroms. As you see, apart from // propeller (and perhaps opening in AT), it is quite safe to take the // averages equal to zero. // // AT // Buck : -1.60 +/- 4.39 // Prop : -10.30 +/- 2.24 // Open : 1.05 +/- 0.68 // Shear: 0.01 +/- 0.08 // Stre : 0.02 +/- 0.01 // Stagg: 0.01 +/- 0.08 // // GC // Buck : 0.10 +/- 5.30 // Prop : -7.82 +/- 3.27 // Open : -0.03 +/- 0.32 // Shear: -0.02 +/- 0.17 // Stre : -0.06 +/- 0.01 // Stagg: -0.01 +/- 0.09 //---------------------------------------------------------------------- float CEnergyParams::m_fAverageBase[2][6] = { { -1.60, -10.30, 1.05, 0.01, 0.02, 0.01 }, { 0.10, -7.82, -0.03, -0.02, -0.06, -0.01 } }; #endif