+ parameter transfer to python layer works
[qpalma.git] / QPalmaDP / qpalma_dp.h
index c019466..80173a7 100644 (file)
@@ -29,12 +29,11 @@ typedef struct Align_pair { //24B
   char dna_char;
 };
 
-
-void fill_matrix (int nr_paths, Pre_score* matrices[], int len_est, int len_dna, char* est, char* dna, penalty_struct* functions, double* matchmatrix, double* donor, double* acceptor, bool remove_duplicate_scores, int nr_donor_sites, int* donor_sites, int* max_score_positions);
+void fill_matrix (int nr_paths, Pre_score* matrices[], int len_est, int len_dna, char* est, char* dna, penalty_struct* functions, double* matchmatrix, penalty_struct* qualityScores, double* donor, double* acceptor, bool remove_duplicate_scores, int nr_donor_sites, int* donor_sites, int* max_score_positions, mode currentMode);
 
 int check_char(char base);
 
-bool result_align (Pre_score* matrices[], int matrixnr, int i,  int j, int* result_length_ptr, char* est, char* dna, int* s_align, int* e_align, int* m_param, double* alignmentscores, int* max_score_positions );
+bool result_align (Pre_score* matrices[], int matrixnr, int i,  int j, int* result_length_ptr, char* est, char* dna, double* prb, double* chastity,  int* s_align, int* e_align, int* m_param, double* alignmentscores, int* max_score_positions, penalty_struct* qparam);
 
 extern void print_align(Pre_score* matrix, int length_est,  int length_dna, Align_pair* vektor, int result_length, int print_matrix);
 
@@ -54,30 +53,82 @@ extern void print_align(Pre_score* matrix, int length_est,  int length_dna, Alig
  * print_matrix               -> a boolean
  *
  * [SpliceAlign, EstAlign, weightMatch, Gesamtscores, dnaest] = myalign_local(...
+ *
+ * the idea of the qualityScores array is as follows
+ *
+ * consider a matrix of 24 plifs
+ * 
+ * -> row major
+ *
  */
 
 class Alignment {
 
    private:
-      SpliceAlign
-      EstAlign;
-      WeightMatch;
-      TotalScores;
+      int* splice_align;
+      int* est_align;
+      int* mmatrix_param;
+      double* alignmentscores;
+      double* qualityMatrix;
+
+      int dna_len;
+      int est_len;
+      int mlen;
+      int nr_paths;
+
+      uint splice_align_size ;
+      uint est_align_size ;
+      uint mmatrix_param_size ;
+      uint alignmentscores_size ;
+      uint qScores_size ;
+
+      struct penalty_struct* qualityScoresAllPaths;
+
+      INT len;
+      REAL *limits;
+      REAL *penalties;
+      INT max_len;
+      INT min_len;
+      REAL *cache;
+      enum ETransformType transform ;
+      INT id;
+      char * name;
+      INT use_svm;
 
    public:
       Alignment();
-      ~Alignment();
-
-      void myalign(int nr_paths, dna, est, h, matchmatrix, double* donor, double* acceptor, bool remove_duplicate_scores, bool print_matrix);
-      getSpliceAlign()
-      getEstAlign();
-      getWeightMatch();
-      getTotalScores();
-      getDNAEST();
-       
-
+      ~Alignment() {
+         if(splice_align != 0)
+            delete[] splice_align;
+
+         if(est_align != 0)
+            delete[] est_align;
+
+         if(mmatrix_param != 0)
+            delete[] mmatrix_param;
+
+         if(alignmentscores != 0)
+            delete[] alignmentscores;
+      }
+
+      void myalign(int nr_paths_p, char* dna, int dna_len_p, char* est,
+      int est_len_p, double* prb, double* chastity, struct penalty_struct h, 
+      double* matchmatrix, int mm_len, double* donor, int d_len, double* acceptor,
+      int a_len, struct penalty_struct* qualityScores, bool remove_duplicate_scores,
+      bool print_matrix);
+
+      void penSetLength(int l) { len = l; }
+      void penSetLimits(REAL* lts) { 
+         limits = new REAL[len];
+         for(int i=0; i<len; i++)
+            limits[i] = lts[i];
+      }
+      
+      void setQualityMatrix(double* qMat, int length);
+      void getDNAEST();
+      void getAlignmentResults(int* s_align, int* e_align,
+      int* mmatrix_p, double* alignscores, penalty_struct* qScores);
 };
 
-
 #endif  // _QPALMA_DP_H_