LocARNA-1.8.11
ribosum.hh
1 #ifndef LOCARNA_RIBOSUM_HH
2 #define LOCARNA_RIBOSUM_HH
3 
4 #ifdef HAVE_CONFIG_H
5 # include <config.h>
6 #endif
7 
8 #include <cstdlib>
9 #include <string>
10 #include <fstream>
11 #include <math.h>
12 
13 #include "matrix.hh"
14 #include "alphabet.hh"
15 
16 namespace LocARNA {
17 
22  class Ribosum {
23  public:
25  protected:
27 
28  std::string name;
29  matrix_t bm;
30  matrix_t am;
31 
33 
34  alphabet_type basename_alphabet;
35  alphabet_type arcname_alphabet;
36 
38 
39 
40  protected:
41 
42 
52  std::istream &
53  read_matrix(std::istream &in,
54  matrix_t &mat,
55  const alphabet_type &names) const;
56 
66  std::ostream &
67  write_matrix(std::ostream &out,
68  const matrix_t &mat,
69  const alphabet_type &alph) const;
70 
72  Ribosum();
73 
76  void
77  read_ribosum(std::istream &in);
78 
79 
80  protected:
81 
84 
91  void set_basename_alphabet(const std::string a[]) {
92  basename_alphabet=alphabet_type(std::vector<std::string>(&a[0],&a[4]));
93  char_basename_alphabet = make_char_alphabet();
94  }
95 
102  void set_arcname_alphabet(const std::string a[]) {
103  arcname_alphabet=alphabet_type(std::vector<std::string>(&a[0],&a[16]));
104  }
105 
106  public:
112  explicit
113  Ribosum(const std::string &filename);
114 
116  virtual
117  ~Ribosum();
118 
123  const matrix_t &get_basematch_scores() const {return bm;}
124 
129  const matrix_t &get_arcmatch_scores() const {return am;}
130 
133  const alphabet_type &string_alphabet() const {return basename_alphabet;}
134 
138 
141  const std::string & get_name() const {return name;}
142 
148  double basematch_score(char i,char j) const {
149  return bm(alphabet().idx(i),alphabet().idx(j));
150  }
151 
160  double arcmatch_score(char i,char j,char k,char l) const {
161  return am(alphabet().idx(i)*4+alphabet().idx(j), alphabet().idx(k)*4+alphabet().idx(l));
162  }
163 
164  friend std::ostream & operator << (std::ostream &out, const Ribosum &ribosum);
165 
166  };
167 
168 
175  class RibosumFreq : public Ribosum {
176  public:
177 
187  explicit
188  RibosumFreq(const std::string &filename);
189 
190  protected:
191  RibosumFreq();
192 
198 
199  public:
200 
204  double
205  base_prob(char i) const {
206  return base_probs_(alphabet().idx(i),0);
207  }
208 
213  double
214  base_nonstruct_prob(char i) const {
215  return base_nonstruct_probs_(alphabet().idx(i),0);
216  }
217 
220  const matrix_t &
221  get_base_probs() const {
222  return base_probs_;
223  }
224 
228  const matrix_t &
230  return base_nonstruct_probs_;
231  }
232 
237  double
238  basepair_prob(char i,char j) const {
239  return basepair_probs_(alphabet().idx(i),alphabet().idx(j));
240  }
241 
244  const matrix_t &
246  return basepair_probs_;
247  }
248 
253  double
254  basematch_prob(char i,char j) const {
255  return basematch_probs_(alphabet().idx(i),alphabet().idx(j));
256  }
257 
260  const matrix_t &
262  return basematch_probs_;
263  }
264 
273  double
274  arcmatch_prob(char i, char j, char k, char l) const {
275  return arcmatch_probs_(alphabet().idx(i)*4+alphabet().idx(j), alphabet().idx(k)*4+alphabet().idx(l));
276  }
277 
280  const matrix_t &
282  return arcmatch_probs_;
283  }
284 
285 
289  double
290  base_unpaired_prob(char i) const;
291 
292 
305  double
306  basematch_score_corrected(char i,char j) const;
307 
308 
311  void
312  print_basematch_scores_corrected(std::ostream &out) const;
313 
323  void
324  read_matrix(std::istream &in, const std::string &header, matrix_t &mat, size_t xdim, size_t ydim);
325 
333  void
334  write_ICC_code(std::ostream &out, const std::string &ribname) const;
335 
345  std::ostream &
346  write_matrix(std::ostream &out, const std::string &name, const Matrix<double> &mat) const;
347 
348  friend std::ostream & operator << (std::ostream &out, const RibosumFreq &ribosum);
349 
350  private:
351 
352  void write_CC_matrix(std::ostream &out,
353  const std::string &ribname,
354  const std::string &matname,
355  int x, int y, const Ribosum::matrix_t &m) const;
356 
357  void
358  read_frequencies(std::istream &in);
359  };
360 
361 } // end namespace LocARNA
362 
363 #endif //LOCARNA_RIBOSUM_HH
void set_arcname_alphabet(const std::string a[])
Definition: ribosum.hh:102
const std::string & get_name() const
Definition: ribosum.hh:141
matrix_t arcmatch_probs_
matrix of arc match probabilities
Definition: ribosum.hh:197
const matrix_t & get_basepair_probs() const
Definition: ribosum.hh:245
const matrix_t & get_base_nonstruct_probs() const
Definition: ribosum.hh:229
Alphabet< char > make_char_alphabet() const
transform the basename alphabet to alphabet over characters
Definition: ribosum.cc:101
matrix_t base_probs_
matrix of base probabilities
Definition: ribosum.hh:193
double basepair_prob(char i, char j) const
Definition: ribosum.hh:238
double arcmatch_prob(char i, char j, char k, char l) const
Definition: ribosum.hh:274
std::string name
name of ribosum
Definition: ribosum.hh:28
const matrix_t & get_basematch_scores() const
Get base match scores.
Definition: ribosum.hh:123
const matrix_t & get_basematch_probs() const
Definition: ribosum.hh:261
std::ostream & write_matrix(std::ostream &out, const matrix_t &mat, const alphabet_type &alph) const
Definition: ribosum.cc:152
void set_basename_alphabet(const std::string a[])
Definition: ribosum.hh:91
Definition: aligner.cc:17
Ribosum()
Construct empty.
Definition: ribosum.cc:31
virtual ~Ribosum()
virtual destructor
Definition: ribosum.cc:41
alphabet_type arcname_alphabet
alphabet of arc names
Definition: ribosum.hh:35
matrix_t bm
scores for base matches, 4x4 matrix
Definition: ribosum.hh:29
double basematch_score(char i, char j) const
Get base match score.
Definition: ribosum.hh:148
matrix_t basematch_probs_
matrix of base match probabilties
Definition: ribosum.hh:196
const matrix_t & get_arcmatch_scores() const
Definition: ribosum.hh:129
double base_prob(char i) const
Definition: ribosum.hh:205
matrix_t basepair_probs_
matrix of base pair probabilities
Definition: ribosum.hh:195
Alphabet< std::string > alphabet_type
type of alphabet
Definition: ribosum.hh:26
double basematch_prob(char i, char j) const
Definition: ribosum.hh:254
matrix_t am
16x16 matrix
Definition: ribosum.hh:30
matrix_t base_nonstruct_probs_
matrix of base probabilities in non-structural context
Definition: ribosum.hh:194
const matrix_t & get_base_probs() const
Definition: ribosum.hh:221
std::istream & read_matrix(std::istream &in, matrix_t &mat, const alphabet_type &names) const
Definition: ribosum.cc:113
double arcmatch_score(char i, char j, char k, char l) const
Get arc match score.
Definition: ribosum.hh:160
const Alphabet< char > & alphabet() const
Definition: ribosum.hh:137
const alphabet_type & string_alphabet() const
Definition: ribosum.hh:133
void read_ribosum(std::istream &in)
Definition: ribosum.cc:45
friend std::ostream & operator<<(std::ostream &out, const Ribosum &ribosum)
Definition: ribosum.cc:166
Alphabet< char > char_basename_alphabet
alphabet of base names as characters
Definition: ribosum.hh:37
Represents ribosum similarity matrices including raw frequencies.
Definition: ribosum.hh:175
Matrix< double > matrix_t
type of a matrix
Definition: ribosum.hh:24
const matrix_t & get_arcmatch_probs() const
Definition: ribosum.hh:281
Represents ribosum similarity matrices.
Definition: ribosum.hh:22
double base_nonstruct_prob(char i) const
Definition: ribosum.hh:214
alphabet_type basename_alphabet
alphabet of base names
Definition: ribosum.hh:34