vg
tools for working with variation graphs
|
#include <extra_node_graph.hpp>
Public Member Functions | |
ExtraNodeGraph (const HandleGraph *backing, const string &sequence, const vector< handle_t > &edges_in, const vector< handle_t > &edges_out) | |
handle_t | get_created_handle () const |
Expose the handle to the new extra node. More... | |
virtual bool | has_node (id_t node_id) const |
Check if a node exists by ID. More... | |
virtual handle_t | get_handle (const id_t &node_id, bool is_reverse) 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 in the graph. More... | |
virtual id_t | max_node_id () const |
Return the largest ID in the graph. More... | |
virtual size_t | get_degree (const handle_t &handle, bool go_left) const |
handle_t | from_backing (const handle_t &backing_handle) const |
Convert a backing graph handle to our handle to the same node. More... | |
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 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 |
Protected Member Functions | |
handle_t | to_backing (const handle_t &our_handle) const |
Convert our handle to a backing graph node into a backing graph handle to the same node. More... | |
bool | is_ours (const handle_t &our_handle) const |
Determine if a handle points to an overlay-added node or not. More... | |
Protected Member Functions inherited from handlegraph::HandleGraph | |
virtual bool | follow_edges_impl (const handle_t &handle, bool go_left, const std::function< bool(const handle_t &)> &iteratee) const =0 |
virtual bool | for_each_handle_impl (const std::function< bool(const handle_t &)> &iteratee, bool parallel=false) const =0 |
Protected Attributes | |
const HandleGraph * | backing |
What backing graph do we overlay? More... | |
unordered_set< handle_t > | in_from |
What are the handles in the backing graph that read into our new node forward? More... | |
unordered_set< handle_t > | out_to |
And where do we go after our new node forward? More... | |
id_t | added_id |
What is our projected node ID? More... | |
string | sequence |
const handle_t | added_fwd = as_handle(0) |
const handle_t | added_rev = as_handle(1) |
Present a HandleGraph that is a backing HandleGraph with an additional node and edges to/from it added.
vg::ExtraNodeGraph::ExtraNodeGraph | ( | const HandleGraph * | backing, |
const string & | sequence, | ||
const vector< handle_t > & | edges_in, | ||
const vector< handle_t > & | edges_out | ||
) |
Make a new ExtraNodeGraph. The backing graph must not be modified while the overlay exists.
Creates a new handle with the given sequence, with edges from all the edges_in handles to it, and edges from it to all the edges_out handles.
Self loops on the new node are not supported.
Invert the orientation of a handle (potentially without getting its ID)
Implements handlegraph::HandleGraph.
|
virtual |
Loop over all the handles to next/previous (right/left) nodes. Passes them to a callback which returns false to stop iterating and true to continue. Returns true if we finished and false if we stopped early.
|
virtual |
Loop over all the nodes in the graph in their local forward orientations, in their internal stored order. Stop if the iteratee returns false.
Convert a backing graph handle to our handle to the same node.
handle_t vg::ExtraNodeGraph::get_created_handle | ( | ) | const |
Expose the handle to the new extra node.
|
virtual |
Compute the degree of one side of a handle in O(1) time, if the backing graph also provides this facility in O(1) time. Takes O(n) time otherwise in the returned degree.
Reimplemented from handlegraph::HandleGraph.
Look up the handle for the node with the given ID in the given orientation.
Implements handlegraph::HandleGraph.
Get the ID from a handle.
Implements handlegraph::HandleGraph.
|
virtual |
Get the orientation of a handle.
Implements handlegraph::HandleGraph.
|
virtual |
Get the length of a node.
Implements handlegraph::HandleGraph.
|
virtual |
Return the number of nodes in the graph.
Implements handlegraph::HandleGraph.
|
virtual |
Get the sequence of a node, presented in the handle's local forward orientation.
Implements handlegraph::HandleGraph.
|
virtual |
Check if a node exists by ID.
Implements handlegraph::HandleGraph.
|
inlineprotected |
Determine if a handle points to an overlay-added node or not.
|
virtual |
Return the largest ID in the graph.
Implements handlegraph::HandleGraph.
|
virtual |
Return the smallest ID in the graph.
Implements handlegraph::HandleGraph.
Convert our handle to a backing graph node into a backing graph handle to the same node.
|
protected |
|
protected |
What is our projected node ID?
|
protected |
|
protected |
What backing graph do we overlay?
|
protected |
What are the handles in the backing graph that read into our new node forward?
|
protected |
And where do we go after our new node forward?
|
protected |