X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=binaries%2Fsrc%2FViennaRNA%2FRNAforester%2Fsrc%2Frna_algebra.cpp;fp=binaries%2Fsrc%2FViennaRNA%2FRNAforester%2Fsrc%2Frna_algebra.cpp;h=8fd7dc0a416359b906620b7277cc1230fb2edbf5;hb=7522ace91fc0804a9719dbac9f68bc8154da3132;hp=0000000000000000000000000000000000000000;hpb=8116c0444fe98e8eb21bcdd8ded06e1429085823;p=jabaws.git diff --git a/binaries/src/ViennaRNA/RNAforester/src/rna_algebra.cpp b/binaries/src/ViennaRNA/RNAforester/src/rna_algebra.cpp new file mode 100644 index 0000000..8fd7dc0 --- /dev/null +++ b/binaries/src/ViennaRNA/RNAforester/src/rna_algebra.cpp @@ -0,0 +1,89 @@ +#include "rna_algebra.h" + +Score::Score(RNAforesterOptions &options) +{ + m_isLocal=options.has(RNAforesterOptions::LocalSimilarity); + m_isRIBOSUM=options.has(RNAforesterOptions::RIBOSUMScore); + + // distance or similarity ? + if(options.has(RNAforesterOptions::CalculateDistance)) + { + m_isDistance=true; + m_bp_rep_score = 0; + m_bp_del_score = 3; + m_b_match_score = 0; + m_b_rep_score =1; + m_b_del_score =2; + } + else + { + m_isDistance=false; + + if(options.has(RNAforesterOptions::RIBOSUMScore)) + { + m_bp_del_score=-100; + m_b_del_score=-200; + } + else + { + m_bp_rep_score = 10; + m_bp_del_score =-5; + m_b_match_score = 1; + m_b_rep_score = 0; + m_b_del_score =-10; + } + } + + // read scores + options.get(RNAforesterOptions::BpRepScore,m_bp_rep_score,m_bp_rep_score); + options.get(RNAforesterOptions::BpDelScore,m_bp_del_score,m_bp_del_score); + options.get(RNAforesterOptions::BMatchScore,m_b_match_score,m_b_match_score); + options.get(RNAforesterOptions::BRepScore,m_b_rep_score,m_b_rep_score); + options.get(RNAforesterOptions::BDelScore,m_b_del_score,m_b_del_score); +} + +Score::Score(const Score &s) +{ + // copy scores + m_isDistance = s.m_isDistance; + m_isLocal = s.m_isLocal; + m_bp_rep_score = s.m_bp_rep_score; + m_bp_del_score = s.m_bp_del_score; + m_b_match_score = s.m_b_match_score; + m_b_rep_score = s.m_b_rep_score; + m_b_del_score = s.m_b_del_score; +} + +void Score::print() +{ + // show score parameters + cout << "*** Scoring parameters ***" << endl << endl; + + cout << "Scoring type: "; + if(m_isDistance) + cout << "distance" << endl; + else + { + if(m_isLocal) + cout << "local "; + + cout << "similarity" << endl; + } + + cout << "Scoring parameters:" << endl; + + if(m_isRIBOSUM) + { + cout << "RIBOSUM85-60 Scoring matrix" << endl; + cout << "pd: " << m_bp_del_score << endl; + cout << "bd: " << m_b_del_score << endl << endl; + } + else + { + cout << "pm: " << m_bp_rep_score << endl; + cout << "pd: " << m_bp_del_score << endl; + cout << "bm: " << m_b_match_score << endl; + cout << "br: " << m_b_rep_score << endl; + cout << "bd: " << m_b_del_score << endl << endl; + } +}