41 struct Sites::SitesImpl
47 void siteinc (
const RedundancyCom95 & sitesObj,
48 const std::string & codon1,
const std::string &codon2);
51 const RedundancyCom95 & sitesObj,
53 SitesImpl() :_L0(0.),_L2S(0.),_L2V(0.0),_L4(0.0)
56 void zero_out() { _L0=_L2S=_L2V=_L4=0.; }
60 Sites::SitesImpl::count_sites (
const Sequence::Seq & sequence1,
62 const RedundancyCom95 & sitesObj,
66 std::string codon1,codon2;
69 for (i = 0; i <= sequence1.
length() - 3; i += 3)
71 for (j = 0; j <= 2; ++j)
73 codon1[j] = char(std::toupper(sequence1[i + j]));
74 codon2[j] = char(std::toupper(sequence2[i + j]));
81 siteinc (sitesObj,codon1, codon2);
82 else if (maxdiffs <= 3 && nc == 1)
83 siteinc (sitesObj,codon1, codon2);
84 else if (maxdiffs == 2 && nc <= 2)
85 siteinc (sitesObj,codon1, codon2);
86 else if (maxdiffs == 3 && nc <= 3)
87 siteinc (sitesObj,codon1, codon2);
92 Sites::SitesImpl::siteinc (
const RedundancyCom95 & sitesObj,
93 const std::string & codon1,
94 const std::string & codon2)
98 if ( std::find_if(codon1.begin(),codon1.end(),ambiguousNucleotide()) == codon1.end() &&
99 std::find_if(codon2.begin(),codon2.end(),ambiguousNucleotide()) == codon2.end() )
101 _L0 += (sitesObj.L0_vals(codon1) + sitesObj.L0_vals(codon2))/2.0;
102 _L2S += (sitesObj.L2S_vals(codon1) + sitesObj.L2S_vals(codon2))/2.0;
103 _L2V += (sitesObj.L2V_vals(codon1) + sitesObj.L2V_vals(codon2))/2.0;
104 _L4 += (sitesObj.L4_vals(codon1) + sitesObj.L4_vals(codon2))/2.0;
110 const RedundancyCom95 & sitesObj,
111 int maxdiffs) : impl(
std::unique_ptr<SitesImpl>(new SitesImpl()))
113 this->
operator()(seq1,seq2,sitesObj,maxdiffs);
117 impl(
std::unique_ptr<SitesImpl>(new SitesImpl()))
126 const RedundancyCom95 & sitesObj,
130 impl->count_sites(seq1,seq2,sitesObj,maxdiffs);
class Sequence::Seq, an abstract base class for Sequences
Abstract interface to sequence objects.
class Sequence::Sites calculates the length of a pairwise alignment between coding sequences in terms...
The namespace in which this library resides.
int NumDiffs(const std::string &seq1, const std::string &seq2, const bool &skip_missing=true, const bool &nucleic_acid=true)
declares Sequence::Translate,a function to translate CDS sequences into peptide sequences ...
class Sequence::RedundancyCom95
size_type length(void) const
delcaration of routines for comparing DNA sequences This file declares a set of functions useful for ...
void operator()(const RedundancyCom95 &sitesObj, const std::string &cod1, const std::string &cod2)