bpp-phyl3 3.0.0
CodonFrequencySet.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_CODONFREQUENCYSET_H
6#define BPP_PHYL_MODEL_FREQUENCYSET_CODONFREQUENCYSET_H
7
11
12#include "FrequencySet.h"
13#include "ProteinFrequencySet.h"
14#include "WordFrequencySet.h"
15
16namespace bpp
17{
22 public virtual FrequencySetInterface
23{
24public:
25 CodonFrequencySetInterface* clone() const override = 0;
26
27 virtual std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const = 0;
28
29public:
33 virtual std::shared_ptr<const GeneticCode> getGeneticCode() const = 0;
34
56 static std::unique_ptr<CodonFrequencySetInterface> getFrequencySetForCodons(
57 short option,
58 std::shared_ptr<const GeneticCode> gCode,
59 const std::string& mgmtStopCodon = "quadratic",
60 unsigned short method = 1);
61
62 static const short F0;
63 static const short F1X4;
64 static const short F3X4;
65 static const short F61;
66};
67
68
77 public virtual CodonFrequencySetInterface,
79{
80protected:
81 std::shared_ptr<const GeneticCode> pgc_;
82
83private:
88
89public:
95 std::shared_ptr<const GeneticCode> gCode,
96 bool allowNullFreqs = false,
97 unsigned short method = 1,
98 const std::string& name = "Full");
99
101 std::shared_ptr<const GeneticCode> gCode,
102 const std::vector<double>& initFreqs,
103 bool allowNullFreqs = false,
104 unsigned short method = 1,
105 const std::string& name = "Full");
106
109
110 FullCodonFrequencySet* clone() const override { return new FullCodonFrequencySet(*this); }
111
112public:
113 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
114
119 void setFrequencies(const std::vector<double>& frequencies) override;
120
121 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override
122 {
123 return std::dynamic_pointer_cast<const CodonAlphabet>(getAlphabet());
124 }
125
126 void setNamespace(const std::string& nameSpace) override;
127
128 unsigned short getMethod() const
129 {
130 return sFreq_.getMethod();
131 }
132
133protected:
134 void fireParameterChanged(const ParameterList& parameters) override;
135
136 void updateFreq_();
137};
138
139
145 public virtual CodonFrequencySetInterface,
147{
148protected:
149 std::shared_ptr<const GeneticCode> pgc_;
150
151public:
153 std::shared_ptr<const GeneticCode> gCode,
154 const std::vector<double>& initFreqs,
155 const std::string& name = "Fixed");
156
162 std::shared_ptr<const GeneticCode> gCode,
163 const std::string& name = "Fixed");
164
167 pgc_(fcfs.pgc_)
168 {}
169
171 {
173 pgc_ = fcfs.pgc_;
174 return *this;
175 }
176
177 FixedCodonFrequencySet* clone() const override { return new FixedCodonFrequencySet(*this); }
178
179public:
180 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
181
182 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override
183 {
184 return std::dynamic_pointer_cast<const CodonAlphabet>(getAlphabet());
185 }
186
191 void setFrequencies(const std::vector<double>& frequencies) override;
192
193protected:
194 void fireParameterChanged(const ParameterList& parameters) override {}
195};
196
197
199 public virtual CodonFrequencySetInterface,
200 public UserFrequencySet
201{
202protected:
203 std::shared_ptr<const GeneticCode> pgc_;
204
205public:
207 std::shared_ptr<const GeneticCode> gCode,
208 const std::string& path,
209 size_t nCol = 1);
210
212 UserFrequencySet(fcfs),
213 pgc_(fcfs.pgc_)
214 {}
215
217 {
219 pgc_ = fcfs.pgc_;
220 return *this;
221 }
222
223 UserCodonFrequencySet* clone() const override { return new UserCodonFrequencySet(*this); }
224
225public:
226 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
227
228 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override
229 {
230 return std::dynamic_pointer_cast<const CodonAlphabet>(getAlphabet());
231 }
232
237 void setFrequencies(const std::vector<double>& frequencies) override;
238
239protected:
240 void fireParameterChanged(const ParameterList& parameters) override {}
241};
242
243
244
245
260 public virtual CodonFrequencySetInterface,
262{
263private:
264 std::shared_ptr<const GeneticCode> pgc_;
265 std::unique_ptr<ProteinFrequencySetInterface> ppfs_;
266
270 std::vector<Simplex> vS_;
271
272 void updateFrequencies_();
273
274public:
285 std::shared_ptr<const GeneticCode> gencode,
286 std::unique_ptr<ProteinFrequencySetInterface> ppfs,
287 unsigned short method = 1);
288
296 std::shared_ptr<const GeneticCode> gencode,
297 unsigned short method = 1);
298
300
302
304
305 FullPerAACodonFrequencySet* clone() const override { return new FullPerAACodonFrequencySet(*this); }
306
307public:
308 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override
309 {
310 return std::dynamic_pointer_cast<const CodonAlphabet>(getAlphabet());
311 }
312
313 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
314
319 void setFrequencies(const std::vector<double>& frequencies) override;
320
321 void setNamespace(const std::string& prefix) override;
322
324 {
325 return ppfs_ != nullptr;
326 }
327
329 {
330 return *ppfs_;
331 }
332
333 unsigned short getMethod() const
334 {
335 return vS_.size() > 0 ? vS_[0].getMethod() : static_cast<unsigned short>(1);
336 }
337
338protected:
339 void fireParameterChanged(const ParameterList& parameters) override;
340};
341
342
343
388 public virtual CodonFrequencySetInterface,
390{
391private:
392 // a map associating stop codons numbers with numbers of neighbour non-stop codons
393 std::map<int, Vint> mStopNeigh_;
394
395 unsigned short mgmtStopCodon_;
396
397 std::shared_ptr<const GeneticCode> pgc_;
398
399public:
412 std::shared_ptr<const GeneticCode> gCode,
413 std::vector<std::unique_ptr<FrequencySetInterface>>& freqvector,
414 const std::string& name = "Codon",
415 const std::string& mgmtStopCodon = "quadratic");
416
418
420
422
424
425 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override;
426
427 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
428
432 void updateFrequencies() override;
433
437 std::string getMgmtStopCodon() const
438 {
439 switch (mgmtStopCodon_)
440 {
441 case 0:
442 return "uniform";
443 case 1:
444 return "linear";
445 case 2:
446 return "quadratic";
447 }
448 return "";
449 }
450};
451
452
497 public virtual CodonFrequencySetInterface,
499{
500private:
501 // a map associating stop codons numbers with numbers of neighbour non-stop codons
502 std::map<int, Vint> mStopNeigh_;
503
504 unsigned short mgmtStopCodon_;
505
506 std::shared_ptr<const GeneticCode> pgc_;
507
508public:
521 std::shared_ptr<const GeneticCode> gCode,
522 std::unique_ptr<FrequencySetInterface> pfreq,
523 const std::string& name = "Codon",
524 const std::string& mgmtStopCodon = "quadratic");
525
527
529
531
532 CodonFromUniqueFrequencySet* clone() const override { return new CodonFromUniqueFrequencySet(*this); }
533
534 std::shared_ptr<const CodonAlphabet> getCodonAlphabet() const override;
535
536 std::shared_ptr<const GeneticCode> getGeneticCode() const override { return pgc_; }
537
541 void updateFrequencies() override;
542
546 std::string getMgmtStopCodon() const
547 {
548 switch (mgmtStopCodon_)
549 {
550 case 0:
551 return "uniform";
552 case 1:
553 return "linear";
554 case 2:
555 return "quadratic";
556 }
557 return "";
558 }
559};
560} // end of namespace bpp.
561#endif // BPP_PHYL_MODEL_FREQUENCYSET_CODONFREQUENCYSET_H
Basic implementation of the FrequencySet interface.
Definition: FrequencySet.h:102
std::shared_ptr< const Alphabet > getAlphabet() const override
Definition: FrequencySet.h:140
AbstractFrequencySet & operator=(const AbstractFrequencySet &af)
Definition: FrequencySet.h:129
Parametrize a set of state frequencies for codons.
virtual std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const =0
static std::unique_ptr< CodonFrequencySetInterface > getFrequencySetForCodons(short option, std::shared_ptr< const GeneticCode > gCode, const std::string &mgmtStopCodon="quadratic", unsigned short method=1)
A helper function that provide frequencies set for codon models according to PAML option.
CodonFrequencySetInterface * clone() const override=0
virtual std::shared_ptr< const GeneticCode > getGeneticCode() const =0
the Frequencies in codons are the product of Independent Frequencies in letters with the frequencies ...
std::shared_ptr< const GeneticCode > getGeneticCode() const override
std::string getMgmtStopCodon() const
Retrieve the mgmt method for the stop codons.
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
void updateFrequencies() override
Update the frequencies given the parameters.
std::shared_ptr< const GeneticCode > pgc_
CodonFromIndependentFrequencySet(std::shared_ptr< const GeneticCode > gCode, std::vector< std::unique_ptr< FrequencySetInterface > > &freqvector, const std::string &name="Codon", const std::string &mgmtStopCodon="quadratic")
Constructor from a CodonAlphabet* and a vector of different std::shared_ptr<FrequencySet>....
CodonFromIndependentFrequencySet * clone() const override
CodonFromIndependentFrequencySet & operator=(const CodonFromIndependentFrequencySet &iwfs)
the Frequencies in codons are the product of the frequencies for a unique FrequencySet in letters,...
void updateFrequencies() override
Update the frequencies given the parameters.
CodonFromUniqueFrequencySet(std::shared_ptr< const GeneticCode > gCode, std::unique_ptr< FrequencySetInterface > pfreq, const std::string &name="Codon", const std::string &mgmtStopCodon="quadratic")
Constructor from a CodonAlphabet* and a std::shared_ptr<FrequencySet> repeated three times.
std::string getMgmtStopCodon() const
Retrieve the mgmt method for the stop codons.
std::shared_ptr< const GeneticCode > getGeneticCode() const override
std::shared_ptr< const GeneticCode > pgc_
CodonFromUniqueFrequencySet & operator=(const CodonFromUniqueFrequencySet &iwfs)
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
CodonFromUniqueFrequencySet * clone() const override
FrequencySet for codons, with no parameter.
void setFrequencies(const std::vector< double > &frequencies) override
the given frequencies are normalized such thaat the sum of the frequencies on the non-stop codons equ...
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
std::shared_ptr< const GeneticCode > getGeneticCode() const override
std::shared_ptr< const GeneticCode > pgc_
FixedCodonFrequencySet & operator=(const FixedCodonFrequencySet &fcfs)
void fireParameterChanged(const ParameterList &parameters) override
FixedCodonFrequencySet * clone() const override
FixedCodonFrequencySet(std::shared_ptr< const GeneticCode > gCode, const std::vector< double > &initFreqs, const std::string &name="Fixed")
FixedCodonFrequencySet(const FixedCodonFrequencySet &fcfs)
Parametrize a set of state frequencies.
Definition: FrequencySet.h:29
virtual std::shared_ptr< const Alphabet > getAlphabet() const =0
A generic FrequencySet for Full Codon alphabets.
FullCodonFrequencySet & operator=(const FullCodonFrequencySet &fcfs)
unsigned short getMethod() const
FullCodonFrequencySet(std::shared_ptr< const GeneticCode > gCode, bool allowNullFreqs=false, unsigned short method=1, const std::string &name="Full")
Construction with uniform frequencies on the letters of the alphabet. The stop codon frequencies are ...
Simplex sFreq_
Simplex to handle the probabilities and the parameters.
std::shared_ptr< const GeneticCode > getGeneticCode() const override
FullCodonFrequencySet * clone() const override
std::shared_ptr< const GeneticCode > pgc_
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
void setFrequencies(const std::vector< double > &frequencies) override
the given frequencies are normalized such that the sum of the frequencies on the non-stop codons equa...
void fireParameterChanged(const ParameterList &parameters) override
void setNamespace(const std::string &nameSpace) override
FrequencySet integrating ProteinFrequencySet inside CodonFrequencySet. In this case,...
std::unique_ptr< ProteinFrequencySetInterface > ppfs_
std::shared_ptr< const GeneticCode > pgc_
FullPerAACodonFrequencySet * clone() const override
void setFrequencies(const std::vector< double > &frequencies) override
the given frequencies are normalized such thaat the sum of the frequencies on the non-stop codons equ...
unsigned short getMethod() const
void setNamespace(const std::string &prefix) override
std::vector< Simplex > vS_
vector of the simplexes, one for each AA
const ProteinFrequencySetInterface & proteinFrequencySet() const
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
std::shared_ptr< const GeneticCode > getGeneticCode() const override
FullPerAACodonFrequencySet(std::shared_ptr< const GeneticCode > gencode, std::unique_ptr< ProteinFrequencySetInterface > ppfs, unsigned short method=1)
Create a new FullPerAACodonFrequencySet object.
FullPerAACodonFrequencySet & operator=(const FullPerAACodonFrequencySet &ffs)
void fireParameterChanged(const ParameterList &parameters) override
Parametrize a set of state frequencies for proteins.
unsigned short getMethod() const
UserCodonFrequencySet(std::shared_ptr< const GeneticCode > gCode, const std::string &path, size_t nCol=1)
UserCodonFrequencySet(const UserCodonFrequencySet &fcfs)
std::shared_ptr< const GeneticCode > pgc_
UserCodonFrequencySet & operator=(const UserCodonFrequencySet &fcfs)
UserCodonFrequencySet * clone() const override
std::shared_ptr< const CodonAlphabet > getCodonAlphabet() const override
void setFrequencies(const std::vector< double > &frequencies) override
the given frequencies are normalized such thaat the sum of the frequencies on the non-stop codons equ...
void fireParameterChanged(const ParameterList &parameters) override
std::shared_ptr< const GeneticCode > getGeneticCode() const override
FrequencySet to be read in a file. More specifically, a frequency set is read in a column of a given ...
Definition: FrequencySet.h:386
UserFrequencySet & operator=(const UserFrequencySet &fmfs)
the Frequencies in words are the product of Independent Frequencies in letters
Defines the basic types of data flow nodes.