bpp-phyl3 3.0.0
NucleotideFrequencySet.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: The Bio++ Development Group
2//
3// SPDX-License-Identifier: CECILL-2.1
4
5#ifndef BPP_PHYL_MODEL_FREQUENCYSET_NUCLEOTIDEFREQUENCYSET_H
6#define BPP_PHYL_MODEL_FREQUENCYSET_NUCLEOTIDEFREQUENCYSET_H
7
9
10#include "FrequencySet.h"
11
12namespace bpp
13{
18 public virtual FrequencySetInterface
19{
20public:
22
23 virtual std::shared_ptr<const NucleicAlphabet> getNucleicAlphabet() const = 0;
24};
25
34{
35public:
36 GCFrequencySet(std::shared_ptr<const NucleicAlphabet> alphabet) :
37 AbstractFrequencySet(std::make_shared<const CanonicalStateMap>(alphabet, false), "GC.", "GC")
38 {
40 getFreq_(0) = getFreq_(1) = getFreq_(2) = getFreq_(3) = 0.25;
41 }
42
43 GCFrequencySet(std::shared_ptr<const NucleicAlphabet> alphabet, double theta) :
44 AbstractFrequencySet(std::make_shared<const CanonicalStateMap>(alphabet, false), "GC.", "GC")
45 {
47 getFreq_(0) = getFreq_(3) = (1. - theta) / 2.;
48 getFreq_(1) = getFreq_(2) = theta / 2.;
49 }
50
51 GCFrequencySet* clone() const override
52 {
53 return new GCFrequencySet(*this);
54 }
55
58 {}
59
60public:
61 std::shared_ptr<const NucleicAlphabet> getNucleicAlphabet() const override
62 {
63 return std::dynamic_pointer_cast<const NucleicAlphabet>(getAlphabet());
64 }
65
66 void setFrequencies(const std::vector<double>& frequencies) override;
67
68protected:
69 void fireParameterChanged(const ParameterList& parameters) override;
70};
71
96{
97public:
99 std::shared_ptr<const NucleicAlphabet> alphabet,
100 bool allowNullFreqs = false,
101 const std::string& name = "Full");
102
104 std::shared_ptr<const NucleicAlphabet> alphabet,
105 double theta, double theta1, double theta2,
106 bool allowNullFreqs = false,
107 const std::string& name = "Full");
108
109 FullNucleotideFrequencySet* clone() const override { return new FullNucleotideFrequencySet(*this); }
110
111public:
112 std::shared_ptr<const NucleicAlphabet> getNucleicAlphabet() const override
113 {
114 return std::dynamic_pointer_cast<const NucleicAlphabet>(getAlphabet());
115 }
116
117 void setFrequencies(const std::vector<double>& frequencies) override;
118
119protected:
120 void fireParameterChanged(const ParameterList& parameters) override;
121};
122
123
130 public virtual NucleotideFrequencySetInterface,
131 public FixedFrequencySet
132{
133public:
135 std::shared_ptr<const NucleicAlphabet> alphabet,
136 const std::vector<double>& initFreqs,
137 const std::string& name = "Fixed") :
138 FixedFrequencySet(std::make_shared<const CanonicalStateMap>(alphabet, false), initFreqs, name) {}
139
145 std::shared_ptr<const NucleicAlphabet> alphabet,
146 const std::string& name = "Fixed") :
147 FixedFrequencySet(std::make_shared<const CanonicalStateMap>(alphabet, false), name) {}
148
149 FixedNucleotideFrequencySet* clone() const override { return new FixedNucleotideFrequencySet(*this); }
150
151 std::shared_ptr<const NucleicAlphabet> getNucleicAlphabet() const override
152 {
153 return std::dynamic_pointer_cast<const NucleicAlphabet>(getAlphabet());
154 }
155};
156
163 public virtual NucleotideFrequencySetInterface,
164 public UserFrequencySet
165{
166public:
168 std::shared_ptr<const NucleicAlphabet> alphabet,
169 const std::string& path,
170 size_t nCol = 1) :
171 UserFrequencySet(std::make_shared<const CanonicalStateMap>(alphabet, false), path, nCol) {}
172
173 UserNucleotideFrequencySet* clone() const override { return new UserNucleotideFrequencySet(*this); }
174
175 std::shared_ptr<const NucleicAlphabet> getNucleicAlphabet() const override
176 {
177 return std::dynamic_pointer_cast<const NucleicAlphabet>(getAlphabet());
178 }
179};
180} // end of namespace bpp.
181#endif // BPP_PHYL_MODEL_FREQUENCYSET_NUCLEOTIDEFREQUENCYSET_H
Basic implementation of the FrequencySet interface.
Definition: FrequencySet.h:102
const Alphabet & alphabet() const override
Definition: FrequencySet.h:142
double & getFreq_(size_t i)
Definition: FrequencySet.h:179
std::shared_ptr< const Alphabet > getAlphabet() const override
Definition: FrequencySet.h:140
void addParameter_(Parameter *parameter)
This class implements a state map where all resolved states are modeled.
Definition: StateMap.h:168
FrequencySet useful for homogeneous and stationary models.
Definition: FrequencySet.h:347
FrequencySet useful for homogeneous and stationary models, nucleotide implementation.
FixedNucleotideFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet, const std::string &name="Fixed")
Construction with uniform frequencies on the letters of the alphabet.
FixedNucleotideFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet, const std::vector< double > &initFreqs, const std::string &name="Fixed")
FixedNucleotideFrequencySet * clone() const override
std::shared_ptr< const NucleicAlphabet > getNucleicAlphabet() const override
Parametrize a set of state frequencies.
Definition: FrequencySet.h:29
virtual const Alphabet & alphabet() const =0
virtual std::shared_ptr< const Alphabet > getAlphabet() const =0
Nucleotide FrequencySet using three independent parameters (theta, theta1, theta2) to modelize the fo...
void fireParameterChanged(const ParameterList &parameters) override
std::shared_ptr< const NucleicAlphabet > getNucleicAlphabet() const override
FullNucleotideFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet, bool allowNullFreqs=false, const std::string &name="Full")
void setFrequencies(const std::vector< double > &frequencies) override
Set the parameters in order to match a given set of frequencies.
FullNucleotideFrequencySet * clone() const override
Nucleotide FrequencySet using only one parameter, the GC content (denoted as 'GC.theta')
GCFrequencySet(const GCFrequencySet &gcf)
GCFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet, double theta)
std::shared_ptr< const NucleicAlphabet > getNucleicAlphabet() const override
void setFrequencies(const std::vector< double > &frequencies) override
Set the parameters in order to match a given set of frequencies.
void fireParameterChanged(const ParameterList &parameters) override
GCFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet)
GCFrequencySet * clone() const override
Parametrize a set of state frequencies for nucleotides.
virtual std::shared_ptr< const NucleicAlphabet > getNucleicAlphabet() const =0
NucleotideFrequencySetInterface * clone() const override=0
static const std::shared_ptr< IntervalConstraint > PROP_CONSTRAINT_IN
FrequencySet to be read in a file. More specifically, a frequency set is read in a column of a given ...
Definition: FrequencySet.h:386
FrequencySet useful for homogeneous and stationary models, nucleotide implementation.
UserNucleotideFrequencySet(std::shared_ptr< const NucleicAlphabet > alphabet, const std::string &path, size_t nCol=1)
UserNucleotideFrequencySet * clone() const override
std::shared_ptr< const NucleicAlphabet > getNucleicAlphabet() const override
Defines the basic types of data flow nodes.