LocARNA-2.0.0
rna_data.hh
1 #ifndef LOCARNA_RNA_DATA_HH
2 #define LOCARNA_RNA_DATA_HH
3 
4 #ifdef HAVE_CONFIG_H
5 #include <config.h>
6 #endif
7 
8 #include <memory>
9 #include <iosfwd>
10 #include "aux.hh"
11 #include "sparse_matrix.hh"
12 
13 extern "C" {
14 #include <ViennaRNA/data_structures.h>
15 }
16 
17 namespace LocARNA {
18 
19  class MultipleAlignment;
20  class Sequence;
21  class Alignment;
22  class RnaEnsemble;
23  class RnaDataImpl;
24  class PFoldParams;
25  class SequenceAnnotation;
26  class RnaStructure;
27 
44  class RnaData {
45  friend class RnaDataImpl;
46  friend class ExtRnaDataImpl;
47 
48  public:
51 
52  typedef size_t size_type;
53 
66  RnaData(const RnaEnsemble &rna_ensemble,
67  double p_bpcut,
68  double max_bps_length_ratio,
69  const PFoldParams &pfoldparams);
70 
102  RnaData(const std::string &filename,
103  double p_bpcut,
104  double max_bps_length_ratio,
105  const PFoldParams &pfoldparams);
106 
126  RnaData(const RnaData &rna_dataA,
127  const RnaData &rna_dataB,
128  const Alignment &alignment,
129  double p_expA,
130  double p_expB,
131  bool only_local = false);
132 
136  virtual ~RnaData();
137 
142  const Sequence &
143  sequence() const;
144 
149  const MultipleAlignment &
150  multiple_alignment() const;
151 
156  size_type
157  length() const;
158 
163  double
164  arc_cutoff_prob() const;
165 
174  double
175  arc_prob(pos_type i, pos_type j) const;
176 
189  std::string
190  mea_structure(double gamma = 1.) const;
191 
199  std::unique_ptr<vrna_plist_t []>
200  plist() const;
201 
210  double
211  joint_arc_prob(pos_type i, pos_type j) const;
212 
223  double
224  stacked_arc_prob(pos_type i, pos_type j) const;
225 
226  // some computed probabilities (for convenience)
236  double
238 
248  double
250 
257  double
258  prob_unpaired(pos_type i) const;
259 
260  // IO
272  std::ostream &
273  write_pp(std::ostream &out, double p_outbpcut = 0) const;
274 
282  std::ostream &
283  write_size_info(std::ostream &out) const;
284 
290  bool
291  has_stacking() const;
292 
298  void
299  set_anchors(const SequenceAnnotation &anchors);
300 
301  protected:
303  std::unique_ptr<RnaDataImpl> pimpl_;
304 
311  explicit RnaData(double p_bpcut, size_t max_bp_span);
312 
316  const arc_prob_matrix_t &
317  arc_probs() const;
318 
329  virtual void
330  init_from_fixed_structure(const RnaStructure &structure,
331  const PFoldParams &pfoldparams);
332 
346  virtual void
347  init_from_rna_ensemble(const RnaEnsemble &rna_ensemble,
348  const PFoldParams &pfoldparams);
349 
371  bool
372  read_autodetect(const std::string &filename,
373  const PFoldParams &pfoldparams);
374 
383  virtual bool
384  inloopprobs_ok() const {
385  return true;
386  }
387 
411  virtual void
412  read_pp(const std::string &filename);
413 
421  virtual std::istream &
422  read_pp(std::istream &in);
423 
447  void
448  read_old_pp(const std::string &filename);
449 
467  void
468  read_ps(const std::string &filename);
469 
470  private:
474  RnaData(const RnaData &);
475 
476 
480  RnaData &
481  operator=(const RnaData &);
482 
483 
484  }; // end class RnaData
485 }
486 
487 #endif // LOCARNA_RNA_DATA_HH
Represents a structure-annotated sequence alignment.
Definition: alignment.hh:83
Implementation of ExtRnaData.
Definition: ext_rna_data_impl.hh:24
Represents a multiple alignment.
Definition: multiple_alignment.hh:65
Parameters for partition folding.
Definition: pfold_params.hh:32
Implementation of RnaData.
Definition: rna_data_impl.hh:21
represent sparsified data of RNA ensemble
Definition: rna_data.hh:44
double prob_paired_downstream(pos_type i) const
Probability that a position is paired downstream.
Definition: rna_data.cc:724
SparseMatrix< double > arc_prob_matrix_t
arc probability matrix
Definition: rna_data.hh:50
virtual bool inloopprobs_ok() const
check in loop probabilities
Definition: rna_data.hh:384
double prob_paired_upstream(pos_type i) const
Probability that a position is paired upstream.
Definition: rna_data.cc:713
void read_old_pp(const std::string &filename)
Definition: rna_data.cc:881
std::unique_ptr< RnaDataImpl > pimpl_
pointer to corresponding implementation object
Definition: rna_data.hh:303
std::unique_ptr< vrna_plist_t[]> plist() const
Construct plist (pair list of Vienna RNA)
Definition: rna_data.cc:1732
virtual void init_from_rna_ensemble(const RnaEnsemble &rna_ensemble, const PFoldParams &pfoldparams)
initialize from rna ensemble
Definition: rna_data.cc:496
virtual void init_from_fixed_structure(const RnaStructure &structure, const PFoldParams &pfoldparams)
initialize from fixed structure
Definition: rna_data.cc:386
double stacked_arc_prob(pos_type i, pos_type j) const
Get arc probability.
Definition: rna_data.cc:706
bool has_stacking() const
Availability of stacking terms.
Definition: rna_data.cc:94
const MultipleAlignment & multiple_alignment() const
Get the multiple alignment.
Definition: rna_data.cc:676
virtual void read_pp(const std::string &filename)
Definition: rna_data.cc:979
size_type length() const
Get the sequence length.
Definition: rna_data.cc:681
const arc_prob_matrix_t & arc_probs() const
arcs with probability above cutoff
Definition: rna_data.cc:696
std::ostream & write_size_info(std::ostream &out) const
Write object size information.
Definition: rna_data.cc:1441
void set_anchors(const SequenceAnnotation &anchors)
Write access to alignment anchors.
Definition: rna_data.cc:99
std::ostream & write_pp(std::ostream &out, double p_outbpcut=0) const
Definition: rna_data.cc:1242
double arc_prob(pos_type i, pos_type j) const
Get arc probability.
Definition: rna_data.cc:691
RnaData(const RnaEnsemble &rna_ensemble, double p_bpcut, double max_bps_length_ratio, const PFoldParams &pfoldparams)
Construct from RnaEnsemble with cutoff probability.
Definition: rna_data.cc:30
const Sequence & sequence() const
Get the multiple alignment as sequence.
Definition: rna_data.cc:671
bool read_autodetect(const std::string &filename, const PFoldParams &pfoldparams)
read and initialize from file, autodetect format
Definition: rna_data.cc:207
double arc_cutoff_prob() const
Get base pair cutoff probability.
Definition: rna_data.cc:686
double joint_arc_prob(pos_type i, pos_type j) const
Get arc probability.
Definition: rna_data.cc:701
virtual ~RnaData()
destructor
Definition: rna_data.cc:89
size_t size_type
usual size type
Definition: rna_data.hh:52
void read_ps(const std::string &filename)
Definition: rna_data.cc:783
std::string mea_structure(double gamma=1.) const
maximum expected accuracy structure
Definition: rna_data.cc:1763
double prob_unpaired(pos_type i) const
Unpaired probability.
Definition: rna_data.cc:735
Represents the raw structure ensemble data for an RNA.
Definition: rna_ensemble.hh:41
An RNA secondary structure.
Definition: rna_structure.hh:32
Annotation of a sequence.
Definition: sequence_annotation.hh:24
"Sequence View" of multiple alignment as array of column vectors
Definition: sequence.hh:17
Definition: aligner.cc:15
size_type pos_type
type of a sequence position
Definition: aux.hh:126