new mafft v 6.857 with extensions
[jabaws.git] / binaries / src / mafft / extensions / mxscarna_src / vienna / energy_param.hpp
1 /* 
2     Current free energy parameters are summarized in:
3
4     D.H.Mathews, J. Sabina, M. ZUker, D.H. Turner
5     "Expanded sequence dependence of thermodynamic parameters improves
6     prediction of RNA secondary structure"
7     JMB, 288, pp 911-940, 1999
8
9     Enthalpies taken from:
10     
11     A. Walter, D Turner, J Kim, M Lyttle, P M"uller, D Mathews, M Zuker
12     "Coaxial stckaing of helices enhances binding of oligoribonucleotides.."
13     PNAS, 91, pp 9218-9222, 1994
14     
15     D.H. Turner, N. Sugimoto, and S.M. Freier.
16     "RNA Structure Prediction",
17     Ann. Rev. Biophys. Biophys. Chem. 17, 167-192, 1988.
18
19     John A.Jaeger, Douglas H.Turner, and Michael Zuker.
20     "Improved predictions of secondary structures for RNA",
21     PNAS, 86, 7706-7710, October 1989.
22     
23     L. He, R. Kierzek, J. SantaLucia, A.E. Walter, D.H. Turner
24     "Nearest-Neughbor Parameters for GU Mismatches...."
25     Biochemistry 1991, 30 11124-11132
26
27     A.E. Peritz, R. Kierzek, N, Sugimoto, D.H. Turner
28     "Thermodynamic Study of Internal Loops in Oligoribonucleotides..."
29     Biochemistry 1991, 30, 6428--6435
30
31     
32 */
33
34 #ifndef ENERGY_PARAM_H
35 #define ENERGY_PARAM_H
36
37 #include <iostream>
38 #include <cstdlib> // by katoh
39
40 using namespace std;
41 namespace MXSCARNA {
42 class energy_param {
43
44     static const int    INF;
45     static const int    NST;
46     static const int    DEF;
47
48     static const double lxc37; /* parameter for logarithmic loop
49                              energy extrapolation            */
50     static const int stack37[8][8];
51     static const int enthalpies[8][8];
52     static const int oldhairpin37[31];
53     static const int hairpin37[31];
54     static const int oldbulge37[31];
55     static const int bulge37[31];
56     static const int oldinternal_loop37[31];
57     static const int internal_loop37[31];
58     static const int mismatchI37[8][5][5];
59     static const int mismatchH37[8][5][5];
60     static const int mism_H[8][5][5];
61     static const int dangle5_37[8][5];
62     static const int dangle3_37[8][5];
63     static const int dangle3_H[8][5];
64     static const int dangle5_H[8][5];
65     static const int ML_BASE37;
66     static const int ML_closing37;
67     static const int ML_intern37;
68     static const int MAX_NINIO;
69     static const int F_ninio37[5];
70     static const char Tetraloops[1400];
71     static const char Tetrastrings[30][7];
72     static const int TETRA_ENERGY37[200];
73     static const int TETRA_ENTH37;
74     static const int TerminalAU;
75     static const int DuplexInit;
76
77     static const int int11_37[8][8][5][5];
78     static const int int11_H[8][8][5][5];
79     static const int int21_37[8][8][5][5][5];
80     static const int int21_H[8][8][5][5][5];
81     static const int int22_37[8][8][5][5][5][5];
82     static const int int22_H[8][8][5][5][5][5];
83
84     int convertPairType(int type);
85     int convertBaseType(int type);
86     int convertLeftType(int type);
87     int convertRightType(int type);
88  
89  public:
90     int getMaxNinio();
91     int getNinio(int i);
92     int getDangle5(int i, int j);
93     int getDangle3(int i, int j);
94     int getHairpin(int i);
95     int getInternalLoop(int i);
96     int getBulge(int i);
97     const char *getTetraLoop(int i);
98     int getTetraLoopEnergy(int i);
99     int getStack(int i, int j);
100     int getTstackH(int i, int j);
101     int getTstackI(int i, int j);
102     int getInt11(int i, int j, int k);
103     int getInt21(int i, int j, int k, int l);
104     int getInt22(int i, int j, int k, int l);
105     int getMLintern();
106     int getMLBase();
107     int getMLclosing();
108     int getTerminalAU();
109 };
110 }
111 #endif