string Allele::tojson(void) { stringstream out; if (!genotypeAllele) { out << "{\"id\":\"" << readID << "\"" << ",\"type\":\"" << typeStr() << "\"" << ",\"length\":" << ((type == ALLELE_REFERENCE) ? 1 : length) << ",\"position\":" << position << ",\"strand\":\"" << (strand == STRAND_FORWARD ? "+" : "-") << "\""; if (type == ALLELE_REFERENCE ) { out << ",\"base\":\"" << alternateSequence.at(referenceOffset()) << "\"" //<< ",\"reference\":\"" << allele.referenceSequence.at(referenceOffset) << "\"" << ",\"quality\":" << currentQuality(); } else { out << ",\"base\":\"" << alternateSequence << "\"" //<< ",\"reference\":\"" << allele.referenceSequence << "\"" << ",\"quality\":" << quality; } out << "}"; } else { out << "{\"type\":\"" << typeStr() << "\""; switch (type) { case ALLELE_REFERENCE: out << "}"; break; default: out << "\",\"length\":" << length << ",\"alt\":\"" << alternateSequence << "\"}"; break; } } return out.str(); }
// called prior to using the allele in analysis void Allele::update(void) { quality = currentQuality(); lnquality = phred2ln(quality); if (type == ALLELE_REFERENCE) { currentBase = string(1, *currentReferenceBase); basesLeft = bpLeft + referenceOffset(); basesRight = bpRight - referenceOffset(); } else { currentBase = base(); } }
const long double Allele::lncurrentQuality(void) const { return phred2ln(currentQuality()); }
void Allele::setQuality(void) { quality = currentQuality(); lnquality = phred2ln(quality); }