Scaffolding  0.1
This program can assemble genome scaffolds using the pairing information in paired-end reads.
Functions
ambigous_paths.hpp File Reference
#include "utils/scaffolding_typedefs.hpp"
#include "utils/predicates.hpp"

Go to the source code of this file.

Functions

bool scaffold::maybe_ambigous_path_extremity_local (const ScafVertex &u, const ScaffoldGraph &sg)
 check locally whether u may be an endpoint of an ambigous path in sg More...
 
std::pair< ScafVertex, bool > scaffold::is_ambigous_path_extremity (const ScafVertex &_u, const ScaffoldGraph &sg)
 return (v, true) iff u is an endpoint of an ambigous path & the other endpoint is v
 
void scaffold::kill_ambigous_paths_brutal (ScaffoldGraph &sg)
 find and destroy ambigous paths in sg by deleting edges More...
 

Detailed Description

tools to remove ambigous paths in a solution graph with multiplicities

A solution graph with multiplicities is not necessarily degree-2, but may contain multiforcations. In this case, it may not be obvious how to split the graph into paths and cycles. Indeed, it may not even be unambigous. It has been shown that such a graph can be unambigously split into paths and cycles if and only if it does not contain "ambigous paths". An ambigous path is an alternating path between two vertices u, v such that both u and v are incident to edges of different multiplicity.

Ambigous paths can be removed by deleting edges, but minimizing the number of deleted edges to make a solution graph unambigous is basically VERTEX COVER (and, thus, NP-hard). Here, we use a simple heuristic for the problem that just selects one of the two necessary vertices for each edge & removes all covered edges.