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

#include <surjector.hpp>

Inheritance diagram for vg::Surjector:
vg::AlignerClient

Public Types

using path_chunk_t = pair< pair< string::const_iterator, string::const_iterator >, Path >
 a local type that represents a read interval matched to a portion of the alignment path More...
 

Public Member Functions

 Surjector (const PathPositionHandleGraph *graph)
 
Alignment surject (const Alignment &source, const set< string > &path_names, string &path_name_out, int64_t &path_pos_out, bool &path_rev_out, bool allow_negative_scores=false) const
 
Alignment surject (const Alignment &source, const set< string > &path_names, bool allow_negative_scores=false) const
 

Private Member Functions

unordered_map< path_handle_t, vector< path_chunk_t > > extract_overlapping_paths (const PathPositionHandleGraph *graph, const Alignment &source, const unordered_set< path_handle_t > &surjection_paths) const
 get the chunks of the alignment path that follow the given reference paths More...
 
pair< size_t, size_t > compute_path_interval (const PathPositionHandleGraph *graph, const Alignment &source, path_handle_t path_handle, const vector< path_chunk_t > &path_chunks) const
 compute the widest interval of path positions that the realigned sequence could align to More...
 
unordered_map< id_t, pair< id_t, bool > > extract_linearized_path_graph (const PathPositionHandleGraph *graph, MutableHandleGraph *into, path_handle_t path_handle, size_t first, size_t last) const
 make a linear graph that corresponds to a path interval, possibly duplicating nodes in case of cycles More...
 
void set_path_position (const PathPositionHandleGraph *graph, const Alignment &surjected, path_handle_t best_path_handle, string &path_name_out, int64_t &path_pos_out, bool &path_rev_out) const
 associate a path position and strand to a surjected alignment against this path More...
 
- Private Member Functions inherited from vg::AlignerClient
void set_alignment_scores (int8_t match, int8_t mismatch, int8_t gap_open, int8_t gap_extend, int8_t full_length_bonus, uint32_t xdrop_max_gap_length=default_xdrop_max_gap_length)
 Set all the aligner scoring parameters and create the stored aligner instances. More...
 
void load_scoring_matrix (std::ifstream &matrix_stream)
 Load a scoring amtrix from a file to set scores. More...
 
 AlignerClient (double gc_content_estimate=vg::default_gc_content)
 
const GSSWAlignerget_aligner (bool have_qualities=true) const
 
const QualAdjAlignerget_qual_adj_aligner () const
 
const Alignerget_regular_aligner () const
 

Static Private Member Functions

static Alignment make_null_alignment (const Alignment &source)
 

Private Attributes

const PathPositionHandleGraphgraph
 
- Private Attributes inherited from vg::AlignerClient
bool adjust_alignments_for_base_quality = false
 

Member Typedef Documentation

◆ path_chunk_t

using vg::Surjector::path_chunk_t = pair<pair<string::const_iterator, string::const_iterator>, Path>

a local type that represents a read interval matched to a portion of the alignment path

Constructor & Destructor Documentation

◆ Surjector()

vg::Surjector::Surjector ( const PathPositionHandleGraph graph)

Member Function Documentation

◆ compute_path_interval()

pair< size_t, size_t > vg::Surjector::compute_path_interval ( const PathPositionHandleGraph graph,
const Alignment source,
path_handle_t  path_handle,
const vector< path_chunk_t > &  path_chunks 
) const
private

compute the widest interval of path positions that the realigned sequence could align to

◆ extract_linearized_path_graph()

unordered_map< id_t, pair< id_t, bool > > vg::Surjector::extract_linearized_path_graph ( const PathPositionHandleGraph graph,
MutableHandleGraph into,
path_handle_t  path_handle,
size_t  first,
size_t  last 
) const
private

make a linear graph that corresponds to a path interval, possibly duplicating nodes in case of cycles

◆ extract_overlapping_paths()

unordered_map< path_handle_t, vector< Surjector::path_chunk_t > > vg::Surjector::extract_overlapping_paths ( const PathPositionHandleGraph graph,
const Alignment source,
const unordered_set< path_handle_t > &  surjection_paths 
) const
private

get the chunks of the alignment path that follow the given reference paths

◆ make_null_alignment()

Alignment vg::Surjector::make_null_alignment ( const Alignment source)
staticprivate

◆ set_path_position()

void vg::Surjector::set_path_position ( const PathPositionHandleGraph graph,
const Alignment surjected,
path_handle_t  best_path_handle,
string &  path_name_out,
int64_t &  path_pos_out,
bool &  path_rev_out 
) const
private

associate a path position and strand to a surjected alignment against this path

◆ surject() [1/2]

Alignment vg::Surjector::surject ( const Alignment source,
const set< string > &  path_names,
bool  allow_negative_scores = false 
) const

Extract the portions of an alignment that are on a chosen set of paths and try to align realign the portions that are off of the chosen paths to the intervening path segments to obtain an alignment that is fully restricted to the paths.

Replaces the alignment's refpos with the path name, position, and strand the alignment has been surjected to.

Optionally either allow softclips so that the alignment has a nonnegative score on the path or require the full-length alignment, possibly creating a negative score.

◆ surject() [2/2]

Alignment vg::Surjector::surject ( const Alignment source,
const set< string > &  path_names,
string &  path_name_out,
int64_t &  path_pos_out,
bool &  path_rev_out,
bool  allow_negative_scores = false 
) const

Extract the portions of an alignment that are on a chosen set of paths and try to align realign the portions that are off of the chosen paths to the intervening path segments to obtain an alignment that is fully restricted to the paths.

Also returns the path name, position, and strand of the new alignment.

Optionally either allow softclips so that the alignment has a nonnegative score on the path or require the full-length alignment, possibly creating a negative score.

Member Data Documentation

◆ graph

const PathPositionHandleGraph* vg::Surjector::graph
private

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