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

#include <gfaz_to_handle.hpp>

Inheritance diagram for vg::algorithms::GFAzParser:
vg::algorithms::GFAParser

Classes

struct  PendingRGFAVisit

Public Member Functions

void parse (istream &in) override
void parse (const string &filename) override
Public Member Functions inherited from vg::algorithms::GFAParser
GFAIDMapInfo & id_map ()
const GFAIDMapInfo & id_map () const
virtual ~GFAParser ()=default

Static Public Member Functions

static bool looks_like_gfaz (const string &filename)
static bool has_magic (const char *buffer, size_t length)
Static Public Member Functions inherited from vg::algorithms::GFAParser
static string extract (const chars_t &range)
static size_t length (const chars_t &range)
static bool empty (const chars_t &range)
static chars_t as_chars (const string &value)

Private Member Functions

void prepare_decode ()
void finish_decode ()
void on_header (const string &header_line) override
void on_segment (uint32_t id, const string &sequence, const gfaz::GfaTagList &tags) override
void on_link (uint32_t from_id, bool from_is_reverse, uint32_t to_id, bool to_is_reverse, const string &overlap, const gfaz::GfaTagList &tags) override
void on_path (const string &name, const vector< gfaz::NodeId > &visits, const string &overlap, const gfaz::GfaTagList &tags) override
void on_walk (const string &sample_name, uint32_t haplotype, const string &contig_name, int64_t sequence_start, int64_t sequence_end, const vector< gfaz::NodeId > &visits) override
void handle_duplicate_paths (char line_type, const function< void(void)> &callback)

Static Private Member Functions

static visit_source_t make_visit_source (const vector< gfaz::NodeId > &visits)

Private Attributes

vector< PendingRGFAVisit > pending_rgfa_visits
unordered_map< string, int64_t > rgfa_path_ranks

Additional Inherited Members

Public Types inherited from vg::algorithms::GFAParser
using cursor_t = string::const_iterator
using chars_t = pair<cursor_t, cursor_t>
using tag_list_t = vector<string>
using visit_iteratee_t = function<bool(int64_t rank, nid_t node_id, bool is_reverse)>
using visit_source_t = function<void(const visit_iteratee_t&)>
Public Attributes inherited from vg::algorithms::GFAParser
vector< std::function< void(const tag_list_t &tags)> > header_listeners
 These listeners are called for the header line(s), if any.
vector< std::function< void(nid_t id, const chars_t &sequence, const tag_list_t &tags)> > node_listeners
vector< std::function< void(nid_t from, bool from_is_reverse, nid_t to, bool to_is_reverse, const chars_t &overlap, const tag_list_t &tags)> > edge_listeners
vector< std::function< void(const string &name, const visit_source_t &visits, const tag_list_t &tags)> > path_listeners
vector< std::function< void(const string &sample_name, int64_t haplotype, const string &contig_name, const pair< int64_t, int64_t > &subrange, const visit_source_t &visits, const tag_list_t &tags)> > walk_listeners
vector< std::function< void(nid_t id, int64_t offset, size_t length, const string &path_name, int64_t path_rank)> > rgfa_listeners
unique_ptr< GFAIDMapInfo > internal_id_map
GFAIDMapInfo * external_id_map = nullptr
int64_t max_rgfa_rank = -1
bool stop_on_duplicate_paths = false
Protected Types inherited from vg::algorithms::GFAParser
using text_visit_iteratee_t = function<bool(int64_t rank, const chars_t& node_name, bool is_reverse)>
 Callback shape for receiving path/walk visits internally.
using text_visit_source_t = function<void(const text_visit_iteratee_t&)>
 Callback shape for being a producer of path/walk visits.
Protected Member Functions inherited from vg::algorithms::GFAParser
text_visit_iteratee_t wrap (const visit_iteratee_t &iteratee) const
visit_source_t wrap (const text_visit_source_t &source) const
Static Protected Member Functions inherited from vg::algorithms::GFAParser
static tag_list_t parse_tags (const chars_t &tag_range)
static tuple< tag_list_t > parse_h (const string &h_line)
static tuple< string, chars_t, tag_list_t > parse_s (const string &s_line)
static tuple< string, bool, string, bool, chars_t, tag_list_t > parse_l (const string &l_line)
static tuple< string, chars_t, chars_t, tag_list_t > parse_p (const string &p_line)
static tuple< string, size_t, string, pair< int64_t, int64_t >, chars_t, tag_list_t > parse_w (const string &p_line)
static void scan_p_visits (const chars_t &visit_range, function< bool(int64_t rank, const chars_t &node_name, bool is_reverse)> visit_step)
static void scan_w_visits (const chars_t &visit_range, function< bool(int64_t rank, const chars_t &node_name, bool is_reverse)> visit_step)
static void scan_visits (const chars_t &visit_range, char line_type, function< bool(int64_t rank, const chars_t &node_name, bool is_reverse)> visit_step)
static bool decode_rgfa_tags (const tag_list_t &tags, string *out_name=nullptr, int64_t *out_offset=nullptr, int64_t *out_rank=nullptr)
static nid_t assign_new_sequence_id (const string &str, GFAIDMapInfo &id_map_info)
static nid_t find_existing_sequence_id (std::string_view str, const GFAIDMapInfo &id_map_info)

Detailed Description

GFAz parser implementation that adapts GFAz's decoded record visitor to vg's shared GFA listener interface.

Member Function Documentation

◆ finish_decode()

void vg::algorithms::GFAzParser::finish_decode ( )
private

◆ handle_duplicate_paths()

void vg::algorithms::GFAzParser::handle_duplicate_paths ( char line_type,
const function< void(void)> & callback )
private

Wrap a function in a handler for GFADuplicatePathError that reports that a line of the given type is being skipped.

◆ has_magic()

bool vg::algorithms::GFAzParser::has_magic ( const char * buffer,
size_t length )
static

Return true if the first sizeof(uint32_t) bytes of the buffer encode the GFAz magic number.

◆ looks_like_gfaz()

bool vg::algorithms::GFAzParser::looks_like_gfaz ( const string & filename)
static

Return true if the named file begins with the GFAz magic number. Returns false for stdin ("-") or empty filenames.

◆ make_visit_source()

GFAParser::visit_source_t vg::algorithms::GFAzParser::make_visit_source ( const vector< gfaz::NodeId > & visits)
staticprivate

Translate a vector of GFAz node IDs into a function that produces vg-style rank, id, orientation visit calls.

◆ on_header()

void vg::algorithms::GFAzParser::on_header ( const string & header_line)
overrideprivate

◆ on_link()

void vg::algorithms::GFAzParser::on_link ( uint32_t from_id,
bool from_is_reverse,
uint32_t to_id,
bool to_is_reverse,
const string & overlap,
const gfaz::GfaTagList & tags )
overrideprivate

◆ on_path()

void vg::algorithms::GFAzParser::on_path ( const string & name,
const vector< gfaz::NodeId > & visits,
const string & overlap,
const gfaz::GfaTagList & tags )
overrideprivate

◆ on_segment()

void vg::algorithms::GFAzParser::on_segment ( uint32_t id,
const string & sequence,
const gfaz::GfaTagList & tags )
overrideprivate

◆ on_walk()

void vg::algorithms::GFAzParser::on_walk ( const string & sample_name,
uint32_t haplotype,
const string & contig_name,
int64_t sequence_start,
int64_t sequence_end,
const vector< gfaz::NodeId > & visits )
overrideprivate

◆ parse() [1/2]

void vg::algorithms::GFAzParser::parse ( const string & filename)
overridevirtual

Parse GFA from the given filename. The default implementation opens the file as a text GFA stream and calls the stream parser.

Reimplemented from vg::algorithms::GFAParser.

◆ parse() [2/2]

void vg::algorithms::GFAzParser::parse ( istream & in)
overridevirtual

Parse GFA from the given stream.

Implements vg::algorithms::GFAParser.

◆ prepare_decode()

void vg::algorithms::GFAzParser::prepare_decode ( )
private

Member Data Documentation

◆ pending_rgfa_visits

vector<PendingRGFAVisit> vg::algorithms::GFAzParser::pending_rgfa_visits
private

◆ rgfa_path_ranks

unordered_map<string, int64_t> vg::algorithms::GFAzParser::rgfa_path_ranks
private

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