+ parameter transfer to python layer works
[qpalma.git] / QPalmaDP / qpalma_dp.h
index 0825904..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,15 +53,36 @@ 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:
-      int SpliceAlign;
-      int EstAlign;
-      int WeightMatch;
-      int 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;
@@ -77,12 +97,25 @@ class Alignment {
 
    public:
       Alignment();
-      ~Alignment();
+      ~Alignment() {
+         if(splice_align != 0)
+            delete[] splice_align;
 
-      void myalign(int nr_paths, char* dna, int dna_len, char* est,
-      int est_len, struct penalty_struct h, double* matchmatrix, int mm_len,
-      double* donor, int d_len, double* acceptor, int a_len, 
-      bool remove_duplicate_scores, bool print_matrix);
+         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) { 
@@ -91,16 +124,11 @@ class Alignment {
             limits[i] = lts[i];
       }
       
-      void setQualityMatrix(double* qualityMat, int length);
-      void getSpliceAlign();
-      void getEstAlign();
-      void getWeightMatch();
-      void getTotalScores();
+      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_