|
template<typename ChainContainer > |
| NetGraph (const Visit &start, const Visit &end, const ChainContainer &child_chains_mixed, const HandleGraph *graph, bool use_internal_connectivity=false) |
|
template<typename ChainContainer , typename SnarlContainer > |
| NetGraph (const Visit &start, const Visit &end, const ChainContainer &child_chains, const SnarlContainer &child_unary_snarls, const HandleGraph *graph, bool use_internal_connectivity=false) |
| Make a net graph from the given chains and unary snarls (as pointers) in the given backing graph. More...
|
|
| NetGraph (const Visit &start, const Visit &end, const vector< vector< pair< Snarl, bool >>> &child_chains, const vector< Snarl > &child_unary_snarls, const HandleGraph *graph, bool use_internal_connectivity=false) |
|
virtual bool | has_node (id_t node_id) const |
| Method to check if a node exists by ID. More...
|
|
virtual handle_t | get_handle (const id_t &node_id, bool is_reverse=false) const |
| Look up the handle for the node with the given ID in the given orientation. More...
|
|
virtual id_t | get_id (const handle_t &handle) const |
| Get the ID from a handle. More...
|
|
virtual bool | get_is_reverse (const handle_t &handle) const |
| Get the orientation of a handle. More...
|
|
virtual handle_t | flip (const handle_t &handle) const |
| Invert the orientation of a handle (potentially without getting its ID) More...
|
|
virtual size_t | get_length (const handle_t &handle) const |
| Get the length of a node. More...
|
|
virtual string | get_sequence (const handle_t &handle) const |
|
virtual bool | follow_edges_impl (const handle_t &handle, bool go_left, const function< bool(const handle_t &)> &iteratee) const |
|
virtual bool | for_each_handle_impl (const function< bool(const handle_t &)> &iteratee, bool parallel=false) const |
|
virtual size_t | get_node_count () const |
| Return the number of nodes in the graph. More...
|
|
virtual id_t | min_node_id () const |
| Return the smallest ID used. More...
|
|
virtual id_t | max_node_id () const |
| Return the largest ID used. More...
|
|
const handle_t & | get_start () const |
|
const handle_t & | get_end () const |
|
bool | is_child (const handle_t &handle) const |
|
handle_t | get_inward_backing_handle (const handle_t &child_handle) const |
|
handle_t | get_handle_from_inward_backing_handle (const handle_t &backing_handle) const |
|
Public Member Functions inherited from handlegraph::HandleGraph |
virtual | ~HandleGraph ()=default |
|
template<typename Iteratee > |
bool | follow_edges (const handle_t &handle, bool go_left, const Iteratee &iteratee) const |
|
template<typename Iteratee > |
bool | for_each_handle (const Iteratee &iteratee, bool parallel=false) const |
|
virtual size_t | get_degree (const handle_t &handle, bool go_left) const |
|
virtual bool | has_edge (const handle_t &left, const handle_t &right) const |
|
bool | has_edge (const edge_t &edge) const |
| Convenient wrapper of has_edge for edge_t argument. More...
|
|
virtual size_t | get_edge_count () const |
|
virtual size_t | get_total_length () const |
|
virtual char | get_base (const handle_t &handle, size_t index) const |
|
virtual std::string | get_subsequence (const handle_t &handle, size_t index, size_t size) const |
|
handle_t | forward (const handle_t &handle) const |
| Get the locally forward version of a handle. More...
|
|
edge_t | edge_handle (const handle_t &left, const handle_t &right) const |
|
handle_t | traverse_edge_handle (const edge_t &edge, const handle_t &left) const |
|
template<typename Iteratee > |
bool | for_each_edge (const Iteratee &iteratee, bool parallel=false) const |
|
Allow traversing a graph of nodes and child snarl chains within a snarl within another HandleGraph. Uses its own internal child index because it's used in the construction of snarls to feed to SnarlManagers.
Assumes that the snarls in the chains we get are in the order they occur in the graph.
We adapt the handle graph abstraction as follows:
A chain becomes a single node with the ID and local forward orientation of its first snarl's start.
A chain node connects on its left to everything connected to its first start and on its right to everything connected to its last end.
A unary snarl becomes a single node, too. It is identified by its boundary node's ID.
If you're not using internal connectivity, a chain node or a unary snarl node behaves just like an ordinary node.
If you are using internal connectivity, edges are slightly faked:
A chain node also sees out its right everything that is out its left if it has a left-left connected snarl before any disconnected snarl.
And similarly for the mirror case.
All the edges on either side of a unary snarl node are the same.
In this part of the code we talk about "heads" (the inward-facing base graph handles used to represent child snarls/chains), and "tails" (the inward-facing ending handles of child chains).