Slice Tools
  • Home
  • SourceForge Page


  • libSlice
  • Home
  • Modules
  • Files
  • Examples
  • Additional Information


  • SourceForge.net Logo
     

    ConsensusData.cc

    Go 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 }