vg
tools for working with variation graphs
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
vg::MEMClusterer::HitGraph Class Reference

#include <cluster.hpp>

Public Member Functions

 HitGraph (const vector< MaximalExactMatch > &mems, const Alignment &alignment, const GSSWAligner *aligner, size_t min_mem_length=1, bool track_components=false, const match_fanouts_t *fanouts=nullptr)
 Initializes nodes in the hit graph, but does not add edges. More...
 
void add_edge (size_t from, size_t to, int32_t weight, int64_t distance)
 Add an edge. More...
 
vector< cluster_tclusters (const Alignment &alignment, const GSSWAligner *aligner, int32_t max_qual_score, int32_t log_likelihood_approx_factor, size_t min_median_mem_coverage_for_split, double suboptimal_edge_pruning_factor, double cluster_multiplicity_diff)
 Returns the top scoring connected components. More...
 

Public Attributes

vector< HitNodenodes
 

Private Member Functions

void connected_components (vector< vector< size_t >> &components_out) const
 Identify weakly connected components in the graph. More...
 
void prune_low_scoring_edges (vector< vector< size_t >> &components, size_t component_idx, double score_factor)
 
void perform_dp ()
 Perform dynamic programming and store scores in nodes. More...
 
void identify_sources_and_sinks (vector< size_t > &sources_out, vector< size_t > &sinks_out) const
 Fills input vectors with indices of source and sink nodes. More...
 
void topological_order (vector< size_t > &order_out) const
 Fills the input vector with the indices of a topological sort. More...
 
void component_topological_order (const vector< size_t > &component, vector< size_t > &order_out) const
 Computes the topological order of. More...
 
size_t median_mem_coverage (const vector< size_t > &component, const Alignment &aln) const
 

Private Attributes

bool track_components
 Should we actively keep track of connected components? More...
 
UnionFind components
 Keeps track of the connected components. More...
 

Constructor & Destructor Documentation

◆ HitGraph()

vg::MEMClusterer::HitGraph::HitGraph ( const vector< MaximalExactMatch > &  mems,
const Alignment alignment,
const GSSWAligner aligner,
size_t  min_mem_length = 1,
bool  track_components = false,
const match_fanouts_t fanouts = nullptr 
)

Initializes nodes in the hit graph, but does not add edges.

Member Function Documentation

◆ add_edge()

void vg::MEMClusterer::HitGraph::add_edge ( size_t  from,
size_t  to,
int32_t  weight,
int64_t  distance 
)

Add an edge.

◆ clusters()

vector< MEMClusterer::cluster_t > vg::MEMClusterer::HitGraph::clusters ( const Alignment alignment,
const GSSWAligner aligner,
int32_t  max_qual_score,
int32_t  log_likelihood_approx_factor,
size_t  min_median_mem_coverage_for_split,
double  suboptimal_edge_pruning_factor,
double  cluster_multiplicity_diff 
)

Returns the top scoring connected components.

◆ component_topological_order()

void vg::MEMClusterer::HitGraph::component_topological_order ( const vector< size_t > &  component,
vector< size_t > &  order_out 
) const
private

Computes the topological order of.

◆ connected_components()

void vg::MEMClusterer::HitGraph::connected_components ( vector< vector< size_t >> &  components_out) const
private

Identify weakly connected components in the graph.

◆ identify_sources_and_sinks()

void vg::MEMClusterer::HitGraph::identify_sources_and_sinks ( vector< size_t > &  sources_out,
vector< size_t > &  sinks_out 
) const
private

Fills input vectors with indices of source and sink nodes.

◆ median_mem_coverage()

size_t vg::MEMClusterer::HitGraph::median_mem_coverage ( const vector< size_t > &  component,
const Alignment aln 
) const
private

Returns the median coverage of bases in the reads by bases in the cluster, attempts to remove apparent redundant sub-MEMs

◆ perform_dp()

void vg::MEMClusterer::HitGraph::perform_dp ( )
private

Perform dynamic programming and store scores in nodes.

◆ prune_low_scoring_edges()

void vg::MEMClusterer::HitGraph::prune_low_scoring_edges ( vector< vector< size_t >> &  components,
size_t  component_idx,
double  score_factor 
)
private

Prune edges that are not on any traceback that scores highly compared to the best score in the component, splits up the components (adding some to the end of the vector) if doing so splits a component

◆ topological_order()

void vg::MEMClusterer::HitGraph::topological_order ( vector< size_t > &  order_out) const
private

Fills the input vector with the indices of a topological sort.

Member Data Documentation

◆ components

UnionFind vg::MEMClusterer::HitGraph::components
private

Keeps track of the connected components.

◆ nodes

vector<HitNode> vg::MEMClusterer::HitGraph::nodes

◆ track_components

bool vg::MEMClusterer::HitGraph::track_components
private

Should we actively keep track of connected components?


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