LocARNA-2.0.0
confusion_matrix.hh
1 #ifndef LOCARNA_CONFUSION_MATRIX
2 #define LOCARNA_CONFUSION_MATRIX
3 
4 #ifdef HAVE_CONFIG_H
5 #include <config.h>
6 #endif
7 
8 #include <cstddef>
9 #include <cassert>
10 #include <string>
11 
12 #include "base_pair_filter.hh"
13 
14 namespace LocARNA {
15  class RnaStructure;
16 
36  public:
47  ConfusionMatrix(const std::string &ref,
48  const std::string &pred,
49  const bool slide,
50  const bool conflict,
51  const BasePairFilter::Filter &filter =
53 
64  ConfusionMatrix(const RnaStructure &ref,
65  const RnaStructure &pred,
66  const bool slide,
67  const bool conflict,
68  const BasePairFilter::Filter &filter =
70 
81  size_t
82  tp() const {
83  return tp_;
84  }
85 
94  size_t
95  tn() const {
96  return tn_;
97  }
98 
107  size_t
108  fp() const {
109  return fp_;
110  }
111 
120  size_t
121  fn() const {
122  return fn_;
123  }
124 
132  double
133  ppv() const;
134 
142  double
143  sens() const;
144 
150  double
151  spec() const;
152 
160  double
161  f1_score() const;
162 
169  double
170  mcc() const;
171 
172  protected:
184  size_t
185  count_common_bps(const RnaStructure &s1, const RnaStructure &s2);
186 
195  size_t
196  count_tps(const RnaStructure &pred, const RnaStructure &ref);
197 
209  size_t
211  const RnaStructure &s2);
218  size_t
219  count_potential_base_pairs(size_t length);
220 
227  size_t
228  count_base_pairs(const RnaStructure &s);
229 
230  private:
240  void
241  compute_confusion_matrix(const RnaStructure &ref,
242  const RnaStructure &pred);
243 
244  bool slide_;
245  bool conflict_;
246  const BasePairFilter::Filter &filter_;
247 
248  size_t tp_;
249  size_t tn_;
250  size_t fp_;
251  size_t fn_;
252  };
253 
254 } // end namespace LocARNA
255 
256 #endif // LOCARNA_CONFUSION_MATRIX
loop size base pair filter
Definition: base_pair_filter.hh:39
basic class for base pair filters (no filtering)
Definition: base_pair_filter.hh:17
Compare RNA secondary structure by their confusion matrix.
Definition: confusion_matrix.hh:35
double f1_score() const
Definition: confusion_matrix.cc:176
size_t count_common_bps(const RnaStructure &s1, const RnaStructure &s2)
Count common base pairs.
Definition: confusion_matrix.cc:11
double mcc() const
Definition: confusion_matrix.cc:183
size_t count_tps(const RnaStructure &pred, const RnaStructure &ref)
Count true positive base pairs.
Definition: confusion_matrix.cc:27
size_t tn() const
True negatives.
Definition: confusion_matrix.hh:95
size_t count_potential_base_pairs(size_t length)
Count potential base pairs.
Definition: confusion_matrix.cc:74
size_t tp() const
True positives.
Definition: confusion_matrix.hh:82
double ppv() const
Definition: confusion_matrix.cc:155
size_t count_conflicting_base_pairs(const RnaStructure &s1, const RnaStructure &s2)
Count conflicting base pairs (including common bps)
Definition: confusion_matrix.cc:55
double sens() const
Definition: confusion_matrix.cc:162
ConfusionMatrix(const std::string &ref, const std::string &pred, const bool slide, const bool conflict, const BasePairFilter::Filter &filter=BasePairFilter::BPMinLoopSize(3))
Definition: confusion_matrix.cc:125
size_t fp() const
False positives.
Definition: confusion_matrix.hh:108
double spec() const
Definition: confusion_matrix.cc:169
size_t count_base_pairs(const RnaStructure &s)
Count base pairs in a structure.
Definition: confusion_matrix.cc:87
size_t fn() const
Definition: confusion_matrix.hh:121
An RNA secondary structure.
Definition: rna_structure.hh:32
Definition: aligner.cc:15