vg
tools for working with variation graphs
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vg::ExtraNodeGraph Class Reference

#include <extra_node_graph.hpp>

Inheritance diagram for vg::ExtraNodeGraph:
handlegraph::HandleGraph

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 HandleGraphbacking
 What backing graph do we overlay? More...
 
unordered_set< handle_tin_from
 What are the handles in the backing graph that read into our new node forward? More...
 
unordered_set< handle_tout_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)
 

Detailed Description

Present a HandleGraph that is a backing HandleGraph with an additional node and edges to/from it added.

Constructor & Destructor Documentation

◆ ExtraNodeGraph()

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.

Member Function Documentation

◆ flip()

handle_t vg::ExtraNodeGraph::flip ( const handle_t handle) const
virtual

Invert the orientation of a handle (potentially without getting its ID)

Implements handlegraph::HandleGraph.

◆ follow_edges_impl()

bool vg::ExtraNodeGraph::follow_edges_impl ( const handle_t handle,
bool  go_left,
const function< bool(const handle_t &)> &  iteratee 
) const
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.

◆ for_each_handle_impl()

bool vg::ExtraNodeGraph::for_each_handle_impl ( const function< bool(const handle_t &)> &  iteratee,
bool  parallel = false 
) const
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.

◆ from_backing()

handle_t vg::ExtraNodeGraph::from_backing ( const handle_t backing_handle) const
inline

Convert a backing graph handle to our handle to the same node.

◆ get_created_handle()

handle_t vg::ExtraNodeGraph::get_created_handle ( ) const

Expose the handle to the new extra node.

◆ get_degree()

size_t vg::ExtraNodeGraph::get_degree ( const handle_t handle,
bool  go_left 
) const
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.

◆ get_handle()

handle_t vg::ExtraNodeGraph::get_handle ( const id_t node_id,
bool  is_reverse 
) const
virtual

Look up the handle for the node with the given ID in the given orientation.

Implements handlegraph::HandleGraph.

◆ get_id()

id_t vg::ExtraNodeGraph::get_id ( const handle_t handle) const
virtual

Get the ID from a handle.

Implements handlegraph::HandleGraph.

◆ get_is_reverse()

bool vg::ExtraNodeGraph::get_is_reverse ( const handle_t handle) const
virtual

Get the orientation of a handle.

Implements handlegraph::HandleGraph.

◆ get_length()

size_t vg::ExtraNodeGraph::get_length ( const handle_t handle) const
virtual

Get the length of a node.

Implements handlegraph::HandleGraph.

◆ get_node_count()

size_t vg::ExtraNodeGraph::get_node_count ( ) const
virtual

Return the number of nodes in the graph.

Implements handlegraph::HandleGraph.

◆ get_sequence()

string vg::ExtraNodeGraph::get_sequence ( const handle_t handle) const
virtual

Get the sequence of a node, presented in the handle's local forward orientation.

Implements handlegraph::HandleGraph.

◆ has_node()

bool vg::ExtraNodeGraph::has_node ( id_t  node_id) const
virtual

Check if a node exists by ID.

Implements handlegraph::HandleGraph.

◆ is_ours()

bool vg::ExtraNodeGraph::is_ours ( const handle_t our_handle) const
inlineprotected

Determine if a handle points to an overlay-added node or not.

◆ max_node_id()

id_t vg::ExtraNodeGraph::max_node_id ( ) const
virtual

Return the largest ID in the graph.

Implements handlegraph::HandleGraph.

◆ min_node_id()

id_t vg::ExtraNodeGraph::min_node_id ( ) const
virtual

Return the smallest ID in the graph.

Implements handlegraph::HandleGraph.

◆ to_backing()

handle_t vg::ExtraNodeGraph::to_backing ( const handle_t our_handle) const
inlineprotected

Convert our handle to a backing graph node into a backing graph handle to the same node.

Member Data Documentation

◆ added_fwd

const handle_t vg::ExtraNodeGraph::added_fwd = as_handle(0)
protected

◆ added_id

id_t vg::ExtraNodeGraph::added_id
protected

What is our projected node ID?

◆ added_rev

const handle_t vg::ExtraNodeGraph::added_rev = as_handle(1)
protected

◆ backing

const HandleGraph* vg::ExtraNodeGraph::backing
protected

What backing graph do we overlay?

◆ in_from

unordered_set<handle_t> vg::ExtraNodeGraph::in_from
protected

What are the handles in the backing graph that read into our new node forward?

◆ out_to

unordered_set<handle_t> vg::ExtraNodeGraph::out_to
protected

And where do we go after our new node forward?

◆ sequence

string vg::ExtraNodeGraph::sequence
protected

The documentation for this class was generated from the following files: