char base = (*sl)->m_base;
char base = toupper((*sl)->m_base);
void printSNPReport(ContigIterator_t ci){  Column_t column = ci.getColumn();  int dcov = column.m_depth;  int gindex = ci.gindex();  bool foundGoodSNP = false;  StatsList::iterator sl = column.m_basefrequencies.begin();  sl++; // skip the consensus, only look at conflicting bases  while (!foundGoodSNP && sl != column.m_basefrequencies.end())  {    foundGoodSNP = ((*sl)->m_count >= SR_MINAGREEINGCONFLICTS) &&                   ((*sl)->m_cumqv >= SR_MINAGREEINGQV) &&                   ((*sl)->m_maxqv >= SR_MINCONFLICTQV);    sl++;  }  if (foundGoodSNP)  {    if (USEEID) { cout << ci.getContig().getEID() << "\t"; }    else        { cout << ci.getContig().getIID() << "\t"; }    cout << gindex+1    << "\t"         << ci.uindex() << "\t"         << ci.cons()   << "\t"         << dcov        << "\t"         << dcov - column.m_basefrequencies[0]->m_count;    for (sl =  column.m_basefrequencies.begin();          sl != column.m_basefrequencies.end();          sl++)    {      char base = (*sl)->m_base;      ostringstream reads;      ostringstream quals;      ostringstream libs;      bool first = true;      BaseGroup_t::iterator ri;      for (ri = (*sl)->m_reads.begin(); ri != (*sl)->m_reads.end(); ri++)      {        if (!first) { reads << ":"; quals << ":"; libs << ":"; }        first = false;        if (SR_PRINTLIBS) { libs  << frg2lib[(*ri)->m_fragid]; }        if (SR_PRINTQUAL) { quals << (int) (*ri)->qv(gindex);        }        if (SR_PRINTREAD)         {          if (USEEID) { reads << (*ri)->m_eid;     } else          if (USEIID) { reads << (*ri)->m_iid;     } else                      { reads << (*ri)->m_readidx; }        }      }      if (SR_PRINTBASE) { cout << "\t" << base << "(" << (*sl)->m_count << ")"; }      if (SR_PRINTREAD) { cout << "\t{" << reads.str() << "}"; }      if (SR_PRINTLIBS) { cout << "\t<" << libs.str() << ">";  }      if (SR_PRINTQUAL) { cout << "\t[" << quals.str() << "]"; }    }    cout << endl;  }}