Exemplo n.º 1
0
void makePair(Alignment& a, Alignment& b, Alignment& x, Alignment& y)
{
    initMate(a, x);
    initMate(b, y);

    Feature spacer;
    getSpacer(a, b, spacer);
    int insert = a.Length + spacer.getLength() + b.Length;

    // Add in mate pair info
    x.MateRefID = b.RefID;
    x.matePosition(b.position());
    x.InsertSize = insert;

    y.MateRefID = a.RefID;
    y.matePosition(a.position());
    y.InsertSize = -1 * insert;

    // Update Mapping information appropriately
    x.SetIsReverseStrand(a.IsReverseStrand());
    x.SetIsMateReverseStrand(b.IsReverseStrand());

    y.SetIsReverseStrand(b.IsReverseStrand());
    y.SetIsMateReverseStrand(a.IsReverseStrand());
}
Exemplo n.º 2
0
void processGroupRange (GroupRange& range_a, GroupRange& range_b, int& valid_count)
{
    Group::iterator a_it;
    Group::iterator b_it;

    for (a_it = range_a.first; a_it != range_a.second; ++a_it)
    {
        for (b_it = range_b.first; b_it != range_b.second; ++b_it)
        {
            Alignment a = a_it->second;
            Alignment b = b_it->second;

            // ensure 'a' is the most 5' alignment
            if (b.position() < a.position())
            {
                std::swap(a, b);
            }

            if (isValidPair(a, b))
            {
                std::stringstream count_str;
                count_str << valid_count;
                Alignment x, y;
                makePair(a, b, x, y);
                x.Name += "-" + count_str.str();
                y.Name += "-" + count_str.str();
 
                ValidOut.SaveAlignment(x);
                ValidOut.SaveAlignment(y);

                valid_count++;
            }
        }
    }
}
Exemplo n.º 3
0
TEST(CoverageTest, Coverage_add_alignment)
{
    Alignment a;
    a.RefName = "foo";
    a.position(3);

    CigarOp op;

    a.CigarData.clear();  
    op.Type = 'M';
    op.Length = 2;
    a.CigarData.push_back(op);

    op.Type = 'N';
    op.Length = 3;
    a.CigarData.push_back(op);

    op.Type = 'M';
    op.Length = 2;
    a.CigarData.push_back(op);

    Coverage c;
    c.add(a);

    EXPECT_THAT(c.coverages.find("foo")->second, ElementsAre(0, 0, 1, 1, 0, 0, 0, 1, 1));
}