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

#include <legacy_caller.hpp>

Inheritance diagram for vg::LegacyCaller:
vg::GraphCaller vg::VCFOutputCaller

Public Member Functions

 LegacyCaller (const PathPositionHandleGraph &graph, SupportBasedSnarlCaller &snarl_caller, SnarlManager &snarl_manager, const string &sample_name, const vector< string > &ref_paths={}, const vector< size_t > &ref_path_offsets={}, const vector< int > &ref_path_ploidies={})
virtual ~LegacyCaller ()
virtual bool call_snarl (const Snarl &snarl)
 Call a given snarl, and print the output to out_stream.
virtual string vcf_header (const PathHandleGraph &graph, const vector< string > &contigs, const vector< size_t > &contig_length_overrides={}) const
 Write the vcf header (version and contigs and basic info).
Public Member Functions inherited from vg::GraphCaller
 GraphCaller (SnarlCaller &snarl_caller, SnarlManager &snarl_manager)
virtual ~GraphCaller ()
virtual void call_top_level_snarls (const HandleGraph &graph, RecurseType recurse_type=RecurseOnFail)
virtual void call_top_level_chains (const HandleGraph &graph, size_t max_edges, size_t max_trivial, RecurseType recurise_type=RecurseOnFail)
void set_show_progress (bool show_progress)
 toggle progress messages
Public Member Functions inherited from vg::VCFOutputCaller
 VCFOutputCaller (const string &sample_name)
virtual ~VCFOutputCaller ()
bool add_variant (vcflib::Variant &var) const
void write_variants (ostream &out_stream, const SnarlManager *snarl_manager=nullptr)
void vcf_fixup (vcflib::Variant &var) const
 Run vcffixup from vcflib.
void set_translation (const unordered_map< nid_t, pair< string, size_t > > *translation)
 Add a translation map.
void set_nested (bool nested)
 Assume writing nested snarls is enabled.
void set_allele_merge (double threshold, int64_t min_len)
unordered_set< string > get_output_contigs () const
string prune_header_contigs (const string &header, const unordered_set< string > &keep) const

Protected Member Functions

pair< vector< SnarlTraversal >, vector< int > > top_down_genotype (const Snarl &snarl, TraversalFinder &trav_finder, int ploidy, const string &ref_path_name, pair< size_t, size_t > ref_interval) const
SnarlTraversal get_reference_traversal (const Snarl &snarl, TraversalFinder &trav_finder) const
 we need the reference traversal for VCF, but if the ref is not called, the above method won't find it.
tuple< vector< SnarlTraversal >, vector< int >, unique_ptr< SnarlCaller::CallInfo > > re_genotype (const Snarl &snarl, TraversalFinder &trav_finder, const vector< SnarlTraversal > &in_traversals, const vector< int > &in_genotype, int ploidy, const string &ref_path_name, pair< size_t, size_t > ref_interval) const
bool is_traversable (const Snarl &snarl)
 check if a site can be handled by the RepresentativeTraversalFinder
pair< string, PathIndex * > find_index (const Snarl &snarl, const vector< PathIndex * > path_indexes) const
 look up a path index for a site and return its name too
Protected Member Functions inherited from vg::GraphCaller
vector< Chain > break_chain (const HandleGraph &graph, const Chain &chain, size_t max_edges, size_t max_trivial)
 Break up a chain into bits that we want to call using size heuristics.
Protected Member Functions inherited from vg::VCFOutputCaller
void add_allele_path_to_info (const HandleGraph *graph, vcflib::Variant &v, int allele, const Traversal &trav, bool reversed, bool one_based) const
 add a traversal to the VCF info field in the format of a GFA W-line or GAF path
void add_allele_path_to_info (vcflib::Variant &v, int allele, const SnarlTraversal &trav, bool reversed, bool one_based) const
 legacy version of above
string trav_string (const HandleGraph &graph, const SnarlTraversal &trav) const
 convert a traversal into an allele string
bool merge_similar_alleles (const PathPositionHandleGraph &graph, const vector< SnarlTraversal > &site_traversals, vector< int > &site_genotype, const string &sample_name, vcflib::Variant &out_variant) const
bool emit_variant (const PathPositionHandleGraph &graph, SnarlCaller &snarl_caller, const Snarl &snarl, const vector< SnarlTraversal > &called_traversals, const vector< int > &genotype, int ref_trav_idx, const unique_ptr< SnarlCaller::CallInfo > &call_info, const string &ref_path_name, int ref_offset, bool genotype_snarls, int ploidy, function< string(const vector< SnarlTraversal > &, const vector< int > &, int, int, int)> trav_to_string=nullptr)
tuple< int64_t, int64_t, bool, step_handle_t, step_handle_t > get_ref_interval (const PathPositionHandleGraph &graph, const Snarl &snarl, const string &ref_path_name) const
pair< string, int64_t > get_ref_position (const PathPositionHandleGraph &graph, const Snarl &snarl, const string &ref_path_name, int64_t ref_path_offset) const
 used for making gaf traversal names
void flatten_common_allele_ends (vcflib::Variant &variant, bool backward, size_t len_override) const
string print_snarl (const HandleGraph *grpah, const handle_t &snarl_start, const handle_t &snarl_end, bool in_brackets=false) const
string print_snarl (const Snarl &snarl, bool in_brackets=false) const
 legacy version of above
string print_flipped_snarl (const Snarl &snarl, bool in_brackets=false) const
 The same as above, but print the snarl as if its orientation has been flipped.
void scan_snarl (const string &allele_string, function< void(const string &, Snarl &)> callback) const
void update_nesting_info_tags (const SnarlManager *snarl_manager)

Protected Attributes

const PathPositionHandleGraph & graph
 the graph
bool is_vg
RepresentativeTraversalFinder * traversal_finder
vector< PathIndex * > path_indexes
 Needed by above (only used when working on vg inputs – generated on the fly otherwise).
vector< string > ref_paths
 keep track of the reference paths
map< string, size_t > ref_offsets
 keep track of offsets in the reference paths
map< string, int > ref_ploidies
 keep track of ploidies in the reference paths
int max_search_depth = 1000
 Tuning.
int max_search_width = 1000
size_t max_bubble_paths = 100
Protected Attributes inherited from vg::GraphCaller
SnarlCaller & snarl_caller
 Our Genotyper.
SnarlManager & snarl_manager
 Our snarls.
bool show_progress
 Toggle progress messages.
Protected Attributes inherited from vg::VCFOutputCaller
vcflib::VariantCallFile output_vcf
 output vcf
string sample_name
 Sample name.
vector< vector< pair< pair< string, size_t >, string > > > output_variants
vector< unordered_map< string, SuppressedRef > > suppressed_ref_info
size_t max_uncalled_alleles = 5
 print up to this many uncalled alleles when doing ref-genotpes in -a mode
const unordered_map< nid_t, pair< string, size_t > > * translation
bool include_nested
double allele_merge_threshold = 1.0
int64_t allele_merge_min_len = 0

Additional Inherited Members

Public Types inherited from vg::GraphCaller
enum  RecurseType { RecurseOnFail , RecurseAlways , RecurseNever }
Static Protected Member Functions inherited from vg::VCFOutputCaller
static bool snarl_traversal_to_handles (const HandleGraph &graph, const SnarlTraversal &trav, Traversal &out_trav)
static int64_t allele_core_length (const vector< string > &alleles)
static string nesting_info_headers ()
Static Protected Attributes inherited from vg::VCFOutputCaller
static const int64_t max_vcf_line_length = 2000000000

Detailed Description

LegacyCaller : Preserves (most of) the old vg call logic by using the RepresentativeTraversalFinder to recursively find traversals through arbitrary sites.

Constructor & Destructor Documentation

◆ LegacyCaller()

vg::LegacyCaller::LegacyCaller ( const PathPositionHandleGraph & graph,
SupportBasedSnarlCaller & snarl_caller,
SnarlManager & snarl_manager,
const string & sample_name,
const vector< string > & ref_paths = {},
const vector< size_t > & ref_path_offsets = {},
const vector< int > & ref_path_ploidies = {} )

◆ ~LegacyCaller()

vg::LegacyCaller::~LegacyCaller ( )
virtual

Member Function Documentation

◆ call_snarl()

bool vg::LegacyCaller::call_snarl ( const Snarl & snarl)
virtual

Call a given snarl, and print the output to out_stream.

Implements vg::GraphCaller.

◆ find_index()

pair< string, PathIndex * > vg::LegacyCaller::find_index ( const Snarl & snarl,
const vector< PathIndex * > path_indexes ) const
protected

look up a path index for a site and return its name too

◆ get_reference_traversal()

SnarlTraversal vg::LegacyCaller::get_reference_traversal ( const Snarl & snarl,
TraversalFinder & trav_finder ) const
protected

we need the reference traversal for VCF, but if the ref is not called, the above method won't find it.

◆ is_traversable()

bool vg::LegacyCaller::is_traversable ( const Snarl & snarl)
protected

check if a site can be handled by the RepresentativeTraversalFinder

◆ re_genotype()

tuple< vector< SnarlTraversal >, vector< int >, unique_ptr< SnarlCaller::CallInfo > > vg::LegacyCaller::re_genotype ( const Snarl & snarl,
TraversalFinder & trav_finder,
const vector< SnarlTraversal > & in_traversals,
const vector< int > & in_genotype,
int ploidy,
const string & ref_path_name,
pair< size_t, size_t > ref_interval ) const
protected

re-genotype output of top_down_genotype. it may give slightly different results as it's working with fully-defined traversals and can exactly determine lengths and supports it will also make sure the reference traversal is in the beginning of the output

◆ top_down_genotype()

pair< vector< SnarlTraversal >, vector< int > > vg::LegacyCaller::top_down_genotype ( const Snarl & snarl,
TraversalFinder & trav_finder,
int ploidy,
const string & ref_path_name,
pair< size_t, size_t > ref_interval ) const
protected

recursively genotype a snarl todo: can this be pushed to a more generic class?

◆ vcf_header()

string vg::LegacyCaller::vcf_header ( const PathHandleGraph & graph,
const vector< string > & contigs,
const vector< size_t > & contig_length_overrides = {} ) const
virtual

Write the vcf header (version and contigs and basic info).

Reimplemented from vg::VCFOutputCaller.

Member Data Documentation

◆ graph

const PathPositionHandleGraph& vg::LegacyCaller::graph
protected

the graph

◆ is_vg

bool vg::LegacyCaller::is_vg
protected

non-vg inputs are converted into vg as-needed, at least until we get the traversal finding ported

◆ max_bubble_paths

size_t vg::LegacyCaller::max_bubble_paths = 100
protected

What's the maximum number of bubble path combinations we can explore while finding one with maximum support?

◆ max_search_depth

int vg::LegacyCaller::max_search_depth = 1000
protected

Tuning.

How many nodes should we be willing to look at on our path back to the primary path? Keep in mind we need to look at all valid paths (and all combinations thereof) until we find a valid pair.

◆ max_search_width

int vg::LegacyCaller::max_search_width = 1000
protected

How many search states should we allow on the DFS stack when searching for traversals?

◆ path_indexes

vector<PathIndex*> vg::LegacyCaller::path_indexes
protected

Needed by above (only used when working on vg inputs – generated on the fly otherwise).

◆ ref_offsets

map<string, size_t> vg::LegacyCaller::ref_offsets
protected

keep track of offsets in the reference paths

◆ ref_paths

vector<string> vg::LegacyCaller::ref_paths
protected

keep track of the reference paths

◆ ref_ploidies

map<string, int> vg::LegacyCaller::ref_ploidies
protected

keep track of ploidies in the reference paths

◆ traversal_finder

RepresentativeTraversalFinder* vg::LegacyCaller::traversal_finder
protected

The old vg call traversal finder. It is fairly efficient but daunting to maintain. We keep it around until a better replacement is implemented. It is not compatible with the Handle Graph API because it relise on PathIndex. We convert to VG as needed in order to use it.


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