Slice Tools libSlice |
ConsensusData.ccGo to the documentation of this file.00001 #include "ConsensusData.hh" 00002 00003 namespace libSlice 00004 { 00005 00010 00011 00017 ConsensusData::ConsensusData(libSlice_Consensus * consensusResults, 00018 char ambiguityCode, 00019 char qualityClass, 00020 int doAmbiguity) 00021 { 00022 memcpy(&m_consensusResults, consensusResults, sizeof(m_consensusResults)); 00023 m_qualityClass = qualityClass; 00024 m_ambiguityCode = ambiguityCode; 00025 m_doAmbiguity = doAmbiguity; 00026 } 00027 00029 ConsensusData::~ConsensusData() 00030 { 00031 } 00032 00034 char ConsensusData::getConsensus() const 00035 { 00036 if (m_doAmbiguity) return getAmbiguityCode(); 00037 return getConsensusBase(); 00038 } 00039 00041 char ConsensusData::getAmbiguityCode() const 00042 { 00043 return m_ambiguityCode; 00044 } 00045 00047 char ConsensusData::getConsensusBase() const 00048 { 00049 return m_consensusResults.consensus; 00050 } 00051 00053 char ConsensusData::getAmbiguityFlags() const 00054 { 00055 return m_consensusResults.ambiguityFlags; 00056 } 00057 00059 int ConsensusData::getQualityClass() const 00060 { 00061 return (int) m_qualityClass; 00062 } 00063 00065 int ConsensusData::getQualityValue() const 00066 { 00067 return m_consensusResults.qvConsensus; 00068 } 00069 00071 00077 int ConsensusData::getQualityValue(char base) const 00078 { 00079 int retval; 00080 00081 switch (base) 00082 { 00083 case 'A': retval = m_consensusResults.qvA; break; 00084 case 'C': retval = m_consensusResults.qvC; break; 00085 case 'G': retval = m_consensusResults.qvG; break; 00086 case 'T': retval = m_consensusResults.qvT; break; 00087 case '-': retval = m_consensusResults.qvGap; break; 00088 00089 default: retval = m_consensusResults.qvConsensus; break; 00090 }; 00091 00092 return retval; 00093 } 00094 00096 00103 int ConsensusData::testAmbiguityCode(char base) const 00104 { 00105 int retval = 0; 00106 00107 switch (base) 00108 { 00109 case 'A': 00110 retval = m_consensusResults.ambiguityFlags & AMBIGUITY_FLAGBIT_A; 00111 break; 00112 case 'C': 00113 retval = m_consensusResults.ambiguityFlags & AMBIGUITY_FLAGBIT_C; 00114 break; 00115 case 'G': 00116 retval = m_consensusResults.ambiguityFlags & AMBIGUITY_FLAGBIT_G; 00117 break; 00118 case 'T': 00119 retval = m_consensusResults.ambiguityFlags & AMBIGUITY_FLAGBIT_T; 00120 break; 00121 case '-': 00122 retval = m_consensusResults.ambiguityFlags & AMBIGUITY_FLAGBIT_GAP; 00123 break; 00124 00125 default: 00126 retval = 0; 00127 } 00128 00129 return (retval != 0); 00130 } 00131 00133 00137 long double ConsensusData::getProbability(char base) const 00138 { 00139 long double retval; 00140 00141 switch (base) 00142 { 00143 case 'A': retval = m_consensusResults.cpA; break; 00144 case 'C': retval = m_consensusResults.cpC; break; 00145 case 'G': retval = m_consensusResults.cpG; break; 00146 case 'T': retval = m_consensusResults.cpT; break; 00147 case '-': retval = m_consensusResults.cpGap; break; 00148 00149 default: retval = getProbability(getConsensusBase()); 00150 }; 00151 00152 return retval; 00153 } 00154 00155 } |