8fd7dc0a416359b906620b7277cc1230fb2edbf5
[jabaws.git] / binaries / src / ViennaRNA / RNAforester / src / rna_algebra.cpp
1 #include "rna_algebra.h"
2
3 Score::Score(RNAforesterOptions &options)
4 {
5   m_isLocal=options.has(RNAforesterOptions::LocalSimilarity);
6   m_isRIBOSUM=options.has(RNAforesterOptions::RIBOSUMScore);
7
8   // distance or similarity ?
9   if(options.has(RNAforesterOptions::CalculateDistance))
10     {
11       m_isDistance=true;
12       m_bp_rep_score = 0;
13       m_bp_del_score = 3;
14       m_b_match_score = 0;
15       m_b_rep_score =1;
16       m_b_del_score =2;      
17     }
18   else
19     {
20       m_isDistance=false;
21
22           if(options.has(RNAforesterOptions::RIBOSUMScore))
23           {
24                   m_bp_del_score=-100;
25                   m_b_del_score=-200;
26           }
27           else
28           {
29                 m_bp_rep_score = 10;
30                 m_bp_del_score =-5;
31                 m_b_match_score = 1;
32                 m_b_rep_score = 0;
33                 m_b_del_score =-10;
34           }
35     }
36   
37   // read scores
38   options.get(RNAforesterOptions::BpRepScore,m_bp_rep_score,m_bp_rep_score);
39   options.get(RNAforesterOptions::BpDelScore,m_bp_del_score,m_bp_del_score);
40   options.get(RNAforesterOptions::BMatchScore,m_b_match_score,m_b_match_score);
41   options.get(RNAforesterOptions::BRepScore,m_b_rep_score,m_b_rep_score);
42   options.get(RNAforesterOptions::BDelScore,m_b_del_score,m_b_del_score);
43 }
44
45 Score::Score(const Score &s)
46 {
47   // copy scores
48   m_isDistance = s.m_isDistance;
49   m_isLocal = s.m_isLocal;
50   m_bp_rep_score = s.m_bp_rep_score;
51   m_bp_del_score = s.m_bp_del_score;
52   m_b_match_score = s.m_b_match_score;
53   m_b_rep_score = s.m_b_rep_score;
54   m_b_del_score = s.m_b_del_score;   
55 }
56
57 void Score::print()
58 {
59   // show score parameters
60   cout << "*** Scoring parameters ***" << endl << endl; 
61
62       cout << "Scoring type: ";
63       if(m_isDistance)
64         cout << "distance" << endl;
65       else
66         {
67           if(m_isLocal)
68             cout << "local ";
69           
70           cout << "similarity" << endl;  
71         }
72            
73       cout << "Scoring parameters:" << endl;
74
75           if(m_isRIBOSUM)
76           {
77                   cout << "RIBOSUM85-60 Scoring matrix" << endl;
78                   cout << "pd:  " << m_bp_del_score << endl;
79                   cout << "bd:  " << m_b_del_score << endl << endl;
80           }
81           else
82           {
83                   cout << "pm:   " << m_bp_rep_score << endl;
84                   cout << "pd:   " << m_bp_del_score << endl;
85                   cout << "bm:   " << m_b_match_score << endl;
86                   cout << "br:   " << m_b_rep_score << endl;
87                   cout << "bd:   " << m_b_del_score << endl << endl;
88           }
89 }