vg
tools for working with variation graphs
Public Member Functions | Protected Member Functions | List of all members
handlegraph::PathHandleGraph Class Referenceabstract

#include <path_handle_graph.hpp>

Inheritance diagram for handlegraph::PathHandleGraph:
handlegraph::HandleGraph handlegraph::MutablePathHandleGraph handlegraph::PathPositionHandleGraph vg::PathSubgraphOverlay handlegraph::MutablePathMutableHandleGraph vg::MemoizingGraph xg::XG handlegraph::MutablePathDeletableHandleGraph bdsg::HashGraph bdsg::ODGI bdsg::PackedGraph vg::VG

Public Member Functions

virtual ~PathHandleGraph ()=default
 
virtual size_t get_path_count () const =0
 Returns the number of paths stored in the graph. More...
 
virtual bool has_path (const std::string &path_name) const =0
 Determine if a path name exists and is legal to get a path handle for. More...
 
virtual path_handle_t get_path_handle (const std::string &path_name) const =0
 
virtual std::string get_path_name (const path_handle_t &path_handle) const =0
 Look up the name of a path from a handle to it. More...
 
virtual bool get_is_circular (const path_handle_t &path_handle) const =0
 Look up whether a path is circular. More...
 
virtual size_t get_step_count (const path_handle_t &path_handle) const =0
 Returns the number of node steps in the path. More...
 
virtual handle_t get_handle_of_step (const step_handle_t &step_handle) const =0
 Get a node handle (node ID and orientation) from a handle to an step on a path. More...
 
virtual path_handle_t get_path_handle_of_step (const step_handle_t &step_handle) const =0
 Returns a handle to the path that an step is on. More...
 
virtual step_handle_t path_begin (const path_handle_t &path_handle) const =0
 
virtual step_handle_t path_end (const path_handle_t &path_handle) const =0
 
virtual step_handle_t path_back (const path_handle_t &path_handle) const =0
 
virtual step_handle_t path_front_end (const path_handle_t &path_handle) const =0
 
virtual bool has_next_step (const step_handle_t &step_handle) const =0
 Returns true if the step is not the last step in a non-circular path. More...
 
virtual bool has_previous_step (const step_handle_t &step_handle) const =0
 Returns true if the step is not the first step in a non-circular path. More...
 
virtual step_handle_t get_next_step (const step_handle_t &step_handle) const =0
 
virtual step_handle_t get_previous_step (const step_handle_t &step_handle) const =0
 
template<typename Iteratee >
bool for_each_path_handle (const Iteratee &iteratee) const
 
template<typename Iteratee >
bool for_each_step_on_handle (const handle_t &handle, const Iteratee &iteratee) const
 
virtual std::vector< step_handle_tsteps_of_handle (const handle_t &handle, bool match_orientation=false) const
 
virtual bool is_empty (const path_handle_t &path_handle) const
 Returns true if the given path is empty, and false otherwise. More...
 
PathForEachSocket scan_path (const path_handle_t &path) const
 
template<typename Iteratee >
bool for_each_step_in_path (const path_handle_t &path, const Iteratee &iteratee) const
 
- Public Member Functions inherited from handlegraph::HandleGraph
virtual ~HandleGraph ()=default
 
virtual bool has_node (nid_t node_id) const =0
 Method to check if a node exists by ID. More...
 
virtual handle_t get_handle (const nid_t &node_id, bool is_reverse=false) const =0
 Look up the handle for the node with the given ID in the given orientation. More...
 
virtual nid_t get_id (const handle_t &handle) const =0
 Get the ID from a handle. More...
 
virtual bool get_is_reverse (const handle_t &handle) const =0
 Get the orientation of a handle. More...
 
virtual handle_t flip (const handle_t &handle) const =0
 Invert the orientation of a handle (potentially without getting its ID) More...
 
virtual size_t get_length (const handle_t &handle) const =0
 Get the length of a node. More...
 
virtual std::string get_sequence (const handle_t &handle) const =0
 
virtual size_t get_node_count () const =0
 Return the number of nodes in the graph. More...
 
virtual nid_t min_node_id () const =0
 
virtual nid_t max_node_id () const =0
 
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
 

Protected Member Functions

virtual bool for_each_path_handle_impl (const std::function< bool(const path_handle_t &)> &iteratee) const =0
 
virtual bool for_each_step_on_handle_impl (const handle_t &handle, const std::function< bool(const step_handle_t &)> &iteratee) const =0
 
- 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
 

Detailed Description

This is the interface for a handle graph that stores embedded paths.

Constructor & Destructor Documentation

◆ ~PathHandleGraph()

virtual handlegraph::PathHandleGraph::~PathHandleGraph ( )
virtualdefault

Member Function Documentation

◆ for_each_path_handle()

template<typename Iteratee >
bool handlegraph::PathHandleGraph::for_each_path_handle ( const Iteratee &  iteratee) const

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

◆ for_each_path_handle_impl()

virtual bool handlegraph::PathHandleGraph::for_each_path_handle_impl ( const std::function< bool(const path_handle_t &)> &  iteratee) const
protectedpure virtual

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.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, vg::PathSubgraphOverlay, bdsg::ODGI, and vg::MemoizingGraph.

◆ for_each_step_in_path()

template<typename Iteratee >
bool handlegraph::PathHandleGraph::for_each_step_in_path ( const path_handle_t path,
const Iteratee &  iteratee 
) const

Loop over all the steps (step_handle_t) along a path. In a non-circular path, iterates from first through last step. In a circular path, iterates from the step returned by path_begin forward around to the step immediately before it. If the iteratee returns bool, and it returns false, stop. Returns true if we finished and false if we stopped early.

◆ for_each_step_on_handle()

template<typename Iteratee >
bool handlegraph::PathHandleGraph::for_each_step_on_handle ( const handle_t handle,
const Iteratee &  iteratee 
) const

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

◆ for_each_step_on_handle_impl()

virtual bool handlegraph::PathHandleGraph::for_each_step_on_handle_impl ( const handle_t handle,
const std::function< bool(const step_handle_t &)> &  iteratee 
) const
protectedpure virtual

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.

Implemented in xg::XG, vg::PathSubgraphOverlay, bdsg::ODGI, and vg::MemoizingGraph.

◆ get_handle_of_step()

virtual handle_t handlegraph::PathHandleGraph::get_handle_of_step ( const step_handle_t step_handle) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_is_circular()

virtual bool handlegraph::PathHandleGraph::get_is_circular ( const path_handle_t path_handle) const
pure virtual

Look up whether a path is circular.

Implemented in xg::XG, bdsg::ODGI, bdsg::PackedGraph, bdsg::HashGraph, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_next_step()

virtual step_handle_t handlegraph::PathHandleGraph::get_next_step ( const step_handle_t step_handle) const
pure 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.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_path_count()

virtual size_t handlegraph::PathHandleGraph::get_path_count ( ) const
pure virtual

Returns the number of paths stored in the graph.

Implemented in xg::XG, bdsg::ODGI, bdsg::PackedGraph, bdsg::HashGraph, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_path_handle()

virtual path_handle_t handlegraph::PathHandleGraph::get_path_handle ( const std::string &  path_name) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_path_handle_of_step()

virtual path_handle_t handlegraph::PathHandleGraph::get_path_handle_of_step ( const step_handle_t step_handle) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::ODGI, bdsg::HashGraph, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_path_name()

virtual std::string handlegraph::PathHandleGraph::get_path_name ( const path_handle_t path_handle) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, vg::VG, bdsg::ODGI, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_previous_step()

virtual step_handle_t handlegraph::PathHandleGraph::get_previous_step ( const step_handle_t step_handle) const
pure 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.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ get_step_count()

virtual size_t handlegraph::PathHandleGraph::get_step_count ( const path_handle_t path_handle) const
pure virtual

Returns the number of node steps in the path.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, vg::VG, bdsg::ODGI, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ has_next_step()

virtual bool handlegraph::PathHandleGraph::has_next_step ( const step_handle_t step_handle) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::ODGI, bdsg::HashGraph, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ has_path()

virtual bool handlegraph::PathHandleGraph::has_path ( const std::string &  path_name) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ has_previous_step()

virtual bool handlegraph::PathHandleGraph::has_previous_step ( const step_handle_t step_handle) const
pure virtual

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

Implemented in xg::XG, bdsg::PackedGraph, bdsg::ODGI, bdsg::HashGraph, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ is_empty()

bool handlegraph::PathHandleGraph::is_empty ( const path_handle_t path_handle) const
virtual

Returns true if the given path is empty, and false otherwise.

Reimplemented in bdsg::ODGI, and vg::MemoizingGraph.

◆ path_back()

virtual step_handle_t handlegraph::PathHandleGraph::path_back ( const path_handle_t path_handle) const
pure 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().

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ path_begin()

virtual step_handle_t handlegraph::PathHandleGraph::path_begin ( const path_handle_t path_handle) const
pure 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().

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ path_end()

virtual step_handle_t handlegraph::PathHandleGraph::path_end ( const path_handle_t path_handle) const
pure 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.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ path_front_end()

virtual step_handle_t handlegraph::PathHandleGraph::path_front_end ( const path_handle_t path_handle) const
pure 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.

Implemented in xg::XG, bdsg::PackedGraph, bdsg::HashGraph, bdsg::ODGI, vg::VG, vg::PathSubgraphOverlay, and vg::MemoizingGraph.

◆ scan_path()

PathForEachSocket handlegraph::PathHandleGraph::scan_path ( const path_handle_t path) const

Returns a class with an STL-style iterator interface that can be used directly in a for each loop like: for (handle_t handle : graph->scan_path(path)) { }

◆ steps_of_handle()

std::vector< step_handle_t > handlegraph::PathHandleGraph::steps_of_handle ( const handle_t handle,
bool  match_orientation = false 
) const
virtual

Returns a vector of all steps of a node on paths. Optionally restricts to steps that match the handle in orientation.

Reimplemented in bdsg::ODGI, and vg::MemoizingGraph.


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