diff --git a/modules/seq/base/src/hmm.cc b/modules/seq/base/src/hmm.cc index a89d3cf27b23613240d9ec5868cd8b6d9704ea5d..ef0ab66ca200ca733f39894e88252c028f7d69b6 100644 --- a/modules/seq/base/src/hmm.cc +++ b/modules/seq/base/src/hmm.cc @@ -60,6 +60,22 @@ Real HMMColumn::GetEntropy() const { return entropy; } +Real HMMColumn::GetFreq(char ch) const{ + int idx = this->GetIndex(ch); + if(idx == -1){ + throw std::runtime_error("Invalid One Letter Code observed when getting frequency in HMMColumn!"); + } + return freq_[idx]; +} + +void HMMColumn::SetFreq(char ch, Real freq){ + int idx = this->GetIndex(ch); + if(idx == -1){ + throw std::runtime_error("Invalid One Letter Code observed when setting frequency in HMMColumn!"); + } + freq_[idx] = freq; +} + HMMPtr HMM::Load(const std::string& filename) { HMMPtr hmm(new HMM); boost::iostreams::filtering_stream<boost::iostreams::input> in; diff --git a/modules/seq/base/src/hmm.hh b/modules/seq/base/src/hmm.hh index 357fc71159243384d41b474a65a50517bdba0dfb..5fc755797df853378f4a5aa1bbf790e5c9d77d31 100644 --- a/modules/seq/base/src/hmm.hh +++ b/modules/seq/base/src/hmm.hh @@ -59,13 +59,9 @@ class HMMColumn { Real GetNEffDel() const { return n_eff_del_; } - Real GetFreq(char ch) const { - return freq_[this->GetIndex(ch)]; - } + Real GetFreq(char ch) const; - void SetFreq(char ch, Real freq) { - freq_[this->GetIndex(ch)]=freq; - } + void SetFreq(char ch, Real freq); bool operator==(const HMMColumn& rhs) const { return !memcmp(freq_, rhs.freq_, sizeof(freq_)) &&