Beispiel #1
0
bool BamTemplate::filterLowQualityFragments(const unsigned mapqThreshold)
{
    bool ret = false;
    unsigned alignmentScore = 0;
    for (unsigned i = 0; getFragmentCount() > i; ++i)
    {
        FragmentMetadata &fragment = getFragmentMetadata(i);
        if (mapqThreshold > fragment.getAlignmentScore())
        {
            fragment.cigarLength = 0;
            fragment.cigarOffset = 0;
            fragment.alignmentScore = 0;
            const FragmentMetadata &mate = getFragmentMetadata((i+1) % getFragmentCount());
            fragment.position = mate.position;
            fragment.contigId = mate.contigId;
        }
        else if (fragment.isAligned())
        {
            ret = true;
        }
        // update the alignment score of the templates that didn't resolve into a proper pair
        alignmentScore += fragment.alignmentScore;
    }
    setAlignmentScore(alignmentScore);
    return ret;
}
Beispiel #2
0
 std::string UUID_TrackFragmentReference::toPrettyString(uint32_t indent) {
   std::stringstream r;
   r << std::string(indent, ' ') << "[d4807ef2-ca39-4695-8e54-26cb9e46a79f] Track Fragment Reference (" << boxedSize() << ")" << std::endl;
   r << std::string(indent + 1, ' ') << "Version: " << getVersion() << std::endl;
   r << std::string(indent + 1, ' ') << "Fragments: " << getFragmentCount() << std::endl;
   int j = getFragmentCount();
   for (int i = 0; i < j; ++i) {
     r << std::string(indent + 2, ' ') << "[" << i << "] Time = " << getTime(i) << ", Duration = " << getDuration(i) << std::endl;
   }
   return r.str();
 }