new mafft v 6.857 with extensions
[jabaws.git] / binaries / src / mafft / extensions / mxscarna_src / AlifoldMEA.h
diff --git a/binaries/src/mafft/extensions/mxscarna_src/AlifoldMEA.h b/binaries/src/mafft/extensions/mxscarna_src/AlifoldMEA.h
new file mode 100644 (file)
index 0000000..02c06c5
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef _ALIFOLDMEA_H_
+#define _ALIFOLDMEA_H_
+
+#include <iostream>
+#include <string>
+#include <cassert>
+#include "scarna.hpp"
+#include "nrutil.h"
+#include "Util.hpp"
+#include "Beta.hpp"
+#include "BPPMatrix.hpp"
+#include "MultiSequence.h"
+#include "Sequence.h"
+#include "SafeVector.h"
+
+using namespace std;
+
+namespace MXSCARNA {
+class AlifoldMEA {
+    MultiSequence *alignment;
+    SafeVector<BPPMatrix*> BPPMatrices;
+    float BasePairConst;
+    Trimat<float> M;
+    Trimat<int> traceI;
+    Trimat<int> traceJ;
+    Trimat<float> bppMat;
+    NRVec<float>  Qi;
+    NRVec<float>  Qj;
+    NRVec<char> ssCons;
+    
+    static const int TURN;
+
+    void Initialization();
+    void makeProfileBPPMatrix(const MultiSequence *Sequences);
+    void DP();
+    void TraceBack();
+ public:
+    AlifoldMEA(MultiSequence *inalignment, SafeVector<BPPMatrix*> &inBPPMatrices, float inBasePairConst = 6) :
+       alignment(inalignment), BPPMatrices(inBPPMatrices),
+       BasePairConst(inBasePairConst),
+       M(inalignment->GetSequence(0)->GetLength()+1), 
+       traceI(inalignment->GetSequence(0)->GetLength()+1),
+       traceJ(inalignment->GetSequence(0)->GetLength()+1),
+       bppMat(inalignment->GetSequence(0)->GetLength() + 1), 
+       Qi(inalignment->GetSequence(0)->GetLength() + 1), 
+       Qj(inalignment->GetSequence(0)->GetLength() + 1), 
+       ssCons(inalignment->GetSequence(0)->GetLength() + 1){}
+
+    void Run();
+
+    string *getSScons() {
+       string *sscons = new string();
+       sscons->push_back(' ');
+       int length = alignment->GetSequence(0)->GetLength();
+       for (int i = 1; i <= length; i++) {
+           sscons->push_back(ssCons[i]);
+       }
+       
+       return sscons;
+    }
+};
+}
+#endif // _ALIFOLDMEA_H_