vg
tools for working with variation graphs
Loading...
Searching...
No Matches
vg::PathSubgraphOverlay Class Reference

#include <subgraph_overlay.hpp>

Inheritance diagram for vg::PathSubgraphOverlay:
vg::SubgraphOverlay

Public Member Functions

 PathSubgraphOverlay (const PathHandleGraph *backing, const unordered_set< nid_t > *node_subset)
virtual ~PathSubgraphOverlay ()
virtual size_t get_path_count () const
 Returns the number of paths stored in the graph.
virtual bool has_path (const std::string &path_name) const
 Determine if a path name exists and is legal to get a path handle for.
virtual path_handle_t get_path_handle (const std::string &path_name) const
virtual std::string get_path_name (const path_handle_t &path_handle) const
 Look up the name of a path from a handle to it.
virtual bool get_is_circular (const path_handle_t &path_handle) const
 Look up whether a path is circular.
virtual size_t get_step_count (const path_handle_t &path_handle) const
 Returns the number of node steps in the path.
virtual handle_t get_handle_of_step (const step_handle_t &step_handle) const
 Get a node handle (node ID and orientation) from a handle to an step on a path.
virtual path_handle_t get_path_handle_of_step (const step_handle_t &step_handle) const
 Returns a handle to the path that an step is on.
virtual step_handle_t path_begin (const path_handle_t &path_handle) const
virtual step_handle_t path_end (const path_handle_t &path_handle) const
virtual step_handle_t path_back (const path_handle_t &path_handle) const
virtual step_handle_t path_front_end (const path_handle_t &path_handle) const
virtual bool has_next_step (const step_handle_t &step_handle) const
 Returns true if the step is not the last step in a non-circular path.
virtual bool has_previous_step (const step_handle_t &step_handle) const
 Returns true if the step is not the first step in a non-circular path.
virtual step_handle_t get_next_step (const step_handle_t &step_handle) const
virtual step_handle_t get_previous_step (const step_handle_t &step_handle) const
Public Member Functions inherited from vg::SubgraphOverlay
 SubgraphOverlay (const HandleGraph *backing, const unordered_set< nid_t > *node_subset)
virtual ~SubgraphOverlay ()
virtual bool has_node (nid_t node_id) const
 Method to check if a node exists by ID.
virtual handle_t get_handle (const nid_t &node_id, bool is_reverse=false) const
 Look up the handle for the node with the given ID in the given orientation.
virtual nid_t get_id (const handle_t &handle) const
 Get the ID from a handle.
virtual bool get_is_reverse (const handle_t &handle) const
 Get the orientation of a handle.
virtual handle_t flip (const handle_t &handle) const
 Invert the orientation of a handle (potentially without getting its ID).
virtual size_t get_length (const handle_t &handle) const
 Get the length of a node.
virtual std::string get_sequence (const handle_t &handle) const
virtual size_t get_node_count () const
 Return the number of nodes in the graph.
virtual nid_t min_node_id () const
virtual nid_t max_node_id () const

Protected Member Functions

virtual bool for_each_path_handle_impl (const std::function< bool(const path_handle_t &)> &iteratee) const
virtual bool for_each_step_on_handle_impl (const handle_t &handle, const std::function< bool(const step_handle_t &)> &iteratee) const
Protected Member Functions inherited from vg::SubgraphOverlay
virtual bool follow_edges_impl (const handle_t &handle, bool go_left, const std::function< bool(const handle_t &)> &iteratee) const
virtual bool for_each_handle_impl (const std::function< bool(const handle_t &)> &iteratee, bool parallel=false) const

Protected Attributes

const PathHandleGraph * backing_path_graph
 the backing path graph, just to not have to bother with dynamic cast
unordered_set< path_handle_t > path_subset
 the subset of paths from the backing graph that are entirely contained within our subgraph
Protected Attributes inherited from vg::SubgraphOverlay
const HandleGraph * backing_graph
 the backing graph
const unordered_set< nid_t > * node_subset
nid_t min_node = 0
 keep min_node_id() and max_node_id() constant
nid_t max_node = 0

Detailed Description

Present a PathHandleGraph that is a backing HandleGraph but restricted to a subset of nodes.

Warning: we don't yet have a subgraph interface. So we only consider paths from the backing graph that are fully contained in the subgraph.

Constructor & Destructor Documentation

◆ PathSubgraphOverlay()

vg::PathSubgraphOverlay::PathSubgraphOverlay ( const PathHandleGraph * backing,
const unordered_set< nid_t > * node_subset )

Make a new PathSubgraphOverlay. The backing graph must not be modified while the overlay exists.

◆ ~PathSubgraphOverlay()

vg::PathSubgraphOverlay::~PathSubgraphOverlay ( )
virtual

Member Function Documentation

◆ for_each_path_handle_impl()

bool vg::PathSubgraphOverlay::for_each_path_handle_impl ( const std::function< bool(const path_handle_t &)> & iteratee) const
protectedvirtual

Execute a function on each path in the graph. If it returns false, stop iteration. Returns true if we finished and false if we stopped early.

◆ for_each_step_on_handle_impl()

bool vg::PathSubgraphOverlay::for_each_step_on_handle_impl ( const handle_t & handle,
const std::function< bool(const step_handle_t &)> & iteratee ) const
protectedvirtual

Execute a function on each step of a handle in any path. If it returns false, stop iteration. Returns true if we finished and false if we stopped early.

◆ get_handle_of_step()

handle_t vg::PathSubgraphOverlay::get_handle_of_step ( const step_handle_t & step_handle) const
virtual

Get a node handle (node ID and orientation) from a handle to an step on a path.

◆ get_is_circular()

bool vg::PathSubgraphOverlay::get_is_circular ( const path_handle_t & path_handle) const
virtual

Look up whether a path is circular.

◆ get_next_step()

step_handle_t vg::PathSubgraphOverlay::get_next_step ( const step_handle_t & step_handle) const
virtual

Returns a handle to the next step on the path. If the given step is the final step of a non-circular path, this method has undefined behavior. In a circular path, the "last" step will loop around to the "first" step.

◆ get_path_count()

size_t vg::PathSubgraphOverlay::get_path_count ( ) const
virtual

Returns the number of paths stored in the graph.

◆ get_path_handle()

path_handle_t vg::PathSubgraphOverlay::get_path_handle ( const std::string & path_name) const
virtual

Look up the path handle for the given path name. The path with that name must exist.

◆ get_path_handle_of_step()

path_handle_t vg::PathSubgraphOverlay::get_path_handle_of_step ( const step_handle_t & step_handle) const
virtual

Returns a handle to the path that an step is on.

◆ get_path_name()

std::string vg::PathSubgraphOverlay::get_path_name ( const path_handle_t & path_handle) const
virtual

Look up the name of a path from a handle to it.

◆ get_previous_step()

step_handle_t vg::PathSubgraphOverlay::get_previous_step ( const step_handle_t & step_handle) const
virtual

Returns a handle to the previous step on the path. If the given step is the first step of a non-circular path, this method has undefined behavior. In a circular path, it will loop around from the "first" step (i.e. the one returned by path_begin) to the "last" step.

◆ get_step_count()

size_t vg::PathSubgraphOverlay::get_step_count ( const path_handle_t & path_handle) const
virtual

Returns the number of node steps in the path.

◆ has_next_step()

bool vg::PathSubgraphOverlay::has_next_step ( const step_handle_t & step_handle) const
virtual

Returns true if the step is not the last step in a non-circular path.

◆ has_path()

bool vg::PathSubgraphOverlay::has_path ( const std::string & path_name) const
virtual

Determine if a path name exists and is legal to get a path handle for.

◆ has_previous_step()

bool vg::PathSubgraphOverlay::has_previous_step ( const step_handle_t & step_handle) const
virtual

Returns true if the step is not the first step in a non-circular path.

◆ path_back()

step_handle_t vg::PathSubgraphOverlay::path_back ( const path_handle_t & path_handle) const
virtual

Get a handle to the last step, which will be an arbitrary step in a circular path that we consider "last" based on our construction of the path. If the path is empty then the implementation must return the same value as path_front_end().

◆ path_begin()

step_handle_t vg::PathSubgraphOverlay::path_begin ( const path_handle_t & path_handle) const
virtual

Get a handle to the first step, which will be an arbitrary step in a circular path that we consider "first" based on our construction of the path. If the path is empty, then the implementation must return the same value as path_end().

◆ path_end()

step_handle_t vg::PathSubgraphOverlay::path_end ( const path_handle_t & path_handle) const
virtual

Get a handle to a fictitious position past the end of a path. This position is returned by get_next_step for the final step in a path in a non-circular path. Note: get_next_step will NEVER return this value for a circular path.

◆ path_front_end()

step_handle_t vg::PathSubgraphOverlay::path_front_end ( const path_handle_t & path_handle) const
virtual

Get a handle to a fictitious position before the beginning of a path. This position is return by get_previous_step for the first step in a path in a non-circular path. Note: get_previous_step will NEVER return this value for a circular path.

Member Data Documentation

◆ backing_path_graph

const PathHandleGraph* vg::PathSubgraphOverlay::backing_path_graph
protected

the backing path graph, just to not have to bother with dynamic cast

◆ path_subset

unordered_set<path_handle_t> vg::PathSubgraphOverlay::path_subset
protected

the subset of paths from the backing graph that are entirely contained within our subgraph


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