本文整理汇总了C++中Allele类的典型用法代码示例。如果您正苦于以下问题:C++ Allele类的具体用法?C++ Allele怎么用?C++ Allele使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Allele类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ComputeAllBPs
int Locus :: ComputeAllBPs () {
list <Allele*>::const_iterator AIterator;
Allele* nextAllele = mAlleleList.front ();
STRAlleleName firstCore (nextAllele->GetName ());
STRAlleleName* nextRep;
int bpDisp;
for (AIterator = mAlleleList.begin(); AIterator != mAlleleList.end(); AIterator++) {
nextAllele = *AIterator;
nextRep = new STRAlleleName (nextAllele->GetName ());
bpDisp = nextRep->GetBPDifferenceFrom (firstCore, mCoreRepeat);
nextAllele->SetBP (bpDisp + mFirstCoreLocusBP);
delete nextRep;
}
nextRep = new STRAlleleName (mLastExtendedAllele);
bpDisp = nextRep->GetBPDifferenceFrom (firstCore, mCoreRepeat);
mMaxLocusBP = bpDisp + mFirstCoreLocusBP;
delete nextRep;
nextRep = new STRAlleleName (mFirstExtendedAllele);
bpDisp = firstCore.GetBPDifferenceFrom (*nextRep, mCoreRepeat);
mMinLocusBP = mFirstCoreLocusBP - bpDisp;
delete nextRep;
return 0;
}
示例2: calculateStatistics
void Caller::calculateStatistics()
{
std::unordered_map<std::string, Location>::iterator iter;
for( iter = locationTable.begin(); iter != locationTable.end(); ++iter)
{
std::vector<double> variantPercentages;
std::vector<Sample> sampleList = ( iter->second).getSamples();
for( int i = 0; i < sampleList.size(); i++)
{
ReadcountEntry re = sampleList[i].getReadcountEntry();
Allele mostFreqVariant = re.getMostFreqVariantAllele();
variantPercentages.push_back( mostFreqVariant.getPercentage());
}
// Calculate mean
double mean = Statistics::mean( variantPercentages);
// Calculate variance
double variance = Statistics::variance( variantPercentages, mean);
// Calculate std
double std = Statistics::standardDeviation( variance);
// Calculate snr
double cov = Statistics::coefficientOfVariation( mean, std);
// Set statistics for the current Location
( iter->second).setMeanVAP( mean);
( iter->second).setVarianceVAP( variance);
( iter->second).setStdVAP( std);
( iter->second).setCOV( cov);
}
}
示例3: stringForAllele
string stringForAllele(const Allele &allele) {
stringstream out;
if (!allele.genotypeAllele) {
out.precision(1);
out
<< allele.sampleID << ":"
<< allele.readID << ":"
<< allele.typeStr() << ":"
<< allele.cigar << ":"
<< scientific << fixed << allele.position << ":"
<< allele.length << ":"
<< (allele.strand == STRAND_FORWARD ? "+" : "-") << ":"
<< allele.referenceSequence << ":"
<< allele.alternateSequence << ":"
<< allele.quality << ":"
<< allele.basesLeft << ":"
<< allele.basesRight;
} else {
out << allele.typeStr() << ":"
<< allele.cigar << ":"
<< scientific << fixed << allele.position << ":"
<< allele.length << ":"
<< allele.alternateSequence;
}
return out.str();
}
示例4: OutputTo
void Locus :: OutputTo (RGTextOutput& xmlFile) {
xmlFile << "\t\t\t<Locus>\n";
xmlFile << "\t\t\t\t<Name>" << mName.GetData () << "</Name>\n";
xmlFile << "\t\t\t\t<Channel>" << mChannel << "</Channel>\n";
if (mDoNotExtend)
xmlFile << "\t\t\t\t<NoExtension>true</NoExtension>\n";
xmlFile << "\t\t\t\t<MinBP>" << mMinLocusBP << "</MinBP>\n";
xmlFile << "\t\t\t\t<MaxBP>" << mMaxLocusBP << "</MaxBP>\n";
if (GetGenerateILSFamilies ()) {
xmlFile << "\t\t\t\t<SearchRegions>\n";
xmlFile << "\t\t\t\t\t<Region>\n";
xmlFile << "\t\t\t\t\t\t<ILSName>" << GetILSName () << "</ILSName>\n";
xmlFile << "\t\t\t\t\t\t<MinGrid>" << 0.01 * floor (100.0 * mMinSearchILSBP + 0.5) << "</MinGrid>\n";
xmlFile << "\t\t\t\t\t\t<MaxGrid>" << 0.01 * floor (100.0 * mMaxSearchILSBP + 0.5) << "</MaxGrid>\n";
xmlFile << "\t\t\t\t\t</Region>\n";
xmlFile << "\t\t\t\t</SearchRegions>\n";
}
else {
xmlFile << "\t\t\t\t<MinGridLSBasePair>" << 0.01 * floor (100.0 * mMinSearchILSBP + 0.5) << "</MinGridLSBasePair>\n";
xmlFile << "\t\t\t\t<MaxGridLSBasePair>" << 0.01 * floor (100.0 * mMaxSearchILSBP + 0.5) << "</MaxGridLSBasePair>\n";
}
if (mCoreRepeat != 4)
xmlFile << "\t\t\t\t<CoreRepeatNumber>" << mCoreRepeat << "</CoreRepeatNumber>\n";
if (mYLinked)
xmlFile << "\t\t\t\t<YLinked>true</YLinked>\n";
if (mMaxExpectedAlleles != 2)
xmlFile << "\t\t\t\t<MaxExpectedAlleles>" << mMaxExpectedAlleles << "</MaxExpectedAlleles>\n";
if (mMinExpectedAlleles != 1)
xmlFile << "\t\t\t\t<MinExpectedAlleles>" << mMinExpectedAlleles << "</MinExpectedAlleles>\n";
xmlFile << "\t\t\t\t<LadderAlleles>\n";
list <Allele*>::const_iterator AIterator;
Allele* nextAllele;
for (AIterator = mAlleleList.begin(); AIterator != mAlleleList.end(); AIterator++) {
nextAllele = *AIterator;
if (mNeedsRelativeHeightInfo)
nextAllele->SetRelativeHeight ("H");
nextAllele->OutputTo (xmlFile);
}
xmlFile << "\t\t\t\t</LadderAlleles>\n";
xmlFile << "\t\t\t</Locus>\n";
}
示例5: isUnflankedIndel
// returns true if this indel is not properly flanked by reference-matching sequence
bool isUnflankedIndel(const Allele& allele) {
if (allele.isReference() || allele.isSNP() || allele.isMNP()) {
return false;
} else {
vector<pair<int, string> > cigarV = splitCigar(allele.cigar);
if (cigarV.back().second == "D"
|| cigarV.back().second == "I"
|| cigarV.front().second == "D"
|| cigarV.front().second == "I") {
return true;
} else {
return false;
}
}
}
示例6: addMutation
void addMutation(const string& chrom, Pos pos, unsigned numReplaced,
const Allele &replacement) {
Mutation mutation = {numReplaced, replacement};
chromMutators[chrom].addMutation(pos, mutation);
unsigned numReplacements = (unsigned)replacement.size();
if (numReplacements > numReplaced) // Overcounting is okay.
basesGained += numReplacements - numReplaced;
}
示例7: hasAmbiguous
bool hasAmbiguous(Allele & allele) {
if (allele.seq().find_first_of("N") != string::npos) {
return true;
} else {
return false;
}
}
示例8: getAlleleStringAttribute
string getAlleleStringAttribute(Allele & allele, const string attribute) {
auto att_value = allele.info().getValue<string>(attribute);
if (att_value.second) {
if (att_value.first == ".") {
return "NoValue";
} else {
assert(!(allele.isMissing()));
return att_value.first;
}
} else {
return "Reference";
}
}
示例9:
std::vector<Location> Caller::callPoissonDist( double poissonLambda, int minQScore)
{
std::vector<Location> newCandidateLocations;
std::unordered_map<std::string, Location>::iterator iter;
std::string altBase;
for( iter = locationTable.begin(); iter != locationTable.end(); ++iter)
{
Location newLocation = iter->second;
// Clear the Sample list of the copy of the location
newLocation.clearSamples();
bool keepLocation = false;
std::vector<Sample> sampleList = ( iter->second).getSamples();
for( int i = 0; i < sampleList.size(); i++)
{
ReadcountEntry readcountEntry = sampleList[i].getReadcountEntry();
Allele mostFreqVariantAllele = readcountEntry.getMostFreqVariantAllele();
int mostFreqNonRefCount = mostFreqVariantAllele.getCount();
double lambda = readcountEntry.getReadDepth() * poissonLambda;
// call illuminaPoissonFilter
double pValue = Filter::illuminaPoissonFilter( mostFreqNonRefCount, lambda);
double qScore = -10 * std::log10( pValue);
// if at least one Sample passes through the filter, keep the location
if( qScore > minQScore)
{
//mostFreqVariantAllele.setPValue( pValue);
//mostFreqVariantAllele.setQScore( qScore);
// Add only the called Samples to the emptied list
newLocation.addSample( sampleList[i]);
keepLocation = true;
}
}
std::vector<Sample> newSamples = newLocation.getSamples();
double highestVAP = -1;
for( int i = 0; i < newSamples.size(); i++)
{
ReadcountEntry readcountEntry = newSamples[i].getReadcountEntry();
Allele variantAllele = readcountEntry.getMostFreqVariantAllele();
if( variantAllele.getPercentage() > highestVAP)
{
highestVAP = variantAllele.getPercentage();
altBase = variantAllele.getBase();
}
}
( iter->second).setMutatedBase( altBase);
if( keepLocation)
{
newCandidateLocations.push_back( newLocation);
}
}
return newCandidateLocations;
}
示例10: alleleAttributes
AlleleAttributes alleleAttributes(Allele & main_allele, Allele & reference_allele) {
assert(!(main_allele.seq().empty()));
assert(!(reference_allele.seq().empty()));
assert(!(reference_allele.isMissing()));
if (main_allele.isMissing()) {
return AlleleAttributes(Type::Missing, 0, 0, 0);
}
if (main_allele == reference_allele) {
return AlleleAttributes(Type::Reference, main_allele.seq().size(), count(main_allele.seq().begin(), main_allele.seq().end(), 'N'), 0);
}
Allele trimmed_main_allele = main_allele;
Allele trimmed_reference_allele = reference_allele;
fullTrimAllelePair(&trimmed_main_allele, &trimmed_reference_allele);
assert(!(trimmed_main_allele.seq().empty()) or !(trimmed_reference_allele.seq().empty()));
uint trimmed_main_allele_length = trimmed_main_allele.seq().size();
uint trimmed_reference_allele_length = trimmed_reference_allele.seq().size();
uint trimmed_main_allele_num_ambiguous = count(trimmed_main_allele.seq().begin(), trimmed_main_allele.seq().end(), 'N');
if (trimmed_main_allele_length == trimmed_reference_allele_length) {
auto allele_type = Type::Complex;
if (trimmed_main_allele_length == 1) {
allele_type = Type::SNP;
} else if (isInversion(trimmed_main_allele, trimmed_reference_allele, 0.95, 10)) {
allele_type = Type::Inversion;
}
return AlleleAttributes(allele_type, trimmed_main_allele_length, trimmed_main_allele_num_ambiguous, 0);
} else {
auto allele_type = Type::Complex;
if (trimmed_main_allele_length == 0) {
allele_type = Type::Deletion;
} else if (trimmed_reference_allele_length == 0) {
allele_type = Type::Insertion;
}
return AlleleAttributes(allele_type, trimmed_main_allele_length, trimmed_main_allele_num_ambiguous, trimmed_main_allele_length - trimmed_reference_allele_length);
}
}
示例11: OutputTo
void Locus :: OutputTo (RGTextOutput& xmlFile) {
xmlFile << "\t\t\t<Locus>\n";
xmlFile << "\t\t\t\t<Name>" << mName.GetData () << "</Name>\n";
xmlFile << "\t\t\t\t<Channel>" << mChannel << "</Channel>\n";
xmlFile << "\t\t\t\t<MinBP>" << mMinLocusBP << "</MinBP>\n";
xmlFile << "\t\t\t\t<MaxBP>" << mMaxLocusBP << "</MaxBP>\n";
xmlFile << "\t\t\t\t<MinGridLSBasePair>" << 0.01 * floor (100.0 * mMinSearchILSBP + 0.5) << "</MinGridLSBasePair>\n";
xmlFile << "\t\t\t\t<MaxGridLSBasePair>" << 0.01 * floor (100.0 * mMaxSearchILSBP + 0.5) << "</MaxGridLSBasePair>\n";
if (mCoreRepeat != 4)
xmlFile << "\t\t\t\t<CoreRepeatNumber>" << mCoreRepeat << "</CoreRepeatNumber>\n";
if (mYLinked)
xmlFile << "\t\t\t\t<YLinked>true</YLinked>\n";
if (mMaxExpectedAlleles != 2)
xmlFile << "\t\t\t\t<MaxExpectedAlleles>" << mMaxExpectedAlleles << "</MaxExpectedAlleles>\n";
if (mMinExpectedAlleles != 1)
xmlFile << "\t\t\t\t<MinExpectedAlleles>" << mMinExpectedAlleles << "</MinExpectedAlleles>\n";
xmlFile << "\t\t\t\t<LadderAlleles>\n";
list <Allele*>::const_iterator AIterator;
Allele* nextAllele;
for (AIterator = mAlleleList.begin(); AIterator != mAlleleList.end(); AIterator++) {
nextAllele = *AIterator;
nextAllele->OutputTo (xmlFile);
}
xmlFile << "\t\t\t\t</LadderAlleles>\n";
xmlFile << "\t\t\t</Locus>\n";
}
示例12: AddAllele
int Locus :: AddAllele (Allele* newAllele) {
// returns -1 if identical to existing allele
list <Allele*>::const_iterator AIterator;
Allele* nextAllele;
int status = 0;
for (AIterator = mAlleleList.begin(); AIterator != mAlleleList.end(); AIterator++) {
nextAllele = *AIterator;
if (nextAllele->isEqual (newAllele)) {
status = -1;
break;
}
}
if (status == 0)
mAlleleList.push_back (newAllele);
return status;
}
示例13: isAlleleCalled
bool isAlleleCalled(Allele & allele, const float min_acp) {
auto acp = allele.info().getValue<float>("ACP");
if (acp.second) {
if (acp.first >= min_acp) {
return true;
} else {
return false;
}
} else {
return false;
}
}
示例14: isInversion
bool isInversion(Allele & main_allele, Allele & reference_allele, const float min_match_fraction, const uint min_size) {
if (main_allele.seq().size() != reference_allele.seq().size()) {
return false;
}
if (main_allele.seq().size() < min_size) {
return false;
}
string main_allele_rv = reverseComplementSequence(main_allele.seq());
assert(main_allele_rv.size() == reference_allele.seq().size());
auto main_rv_it = main_allele_rv.begin();
auto reference_rit = reference_allele.seq().begin();
uint num_correct_bases = 0;
while (main_rv_it != main_allele_rv.end()) {
if ((*main_rv_it == *reference_rit) and (*main_rv_it != 'N')) {
num_correct_bases++;
}
main_rv_it++;
reference_rit++;
}
assert(num_correct_bases <= main_allele_rv.size());
assert(reference_rit == reference_allele.seq().end());
if ((static_cast<float>(num_correct_bases)/main_allele_rv.size()) < min_match_fraction) {
return false;
} else {
return true;
}
}
示例15: isAlleleAnnotated
bool isAlleleAnnotated(Allele & allele) {
auto annotation = allele.info().getValue<string>("AAI");
if (annotation.second) {
assert(!(annotation.first.empty()));
if (annotation.first != ".") {
return true;
} else {
return false;
}
} else {
return false;
}
}