Mercurial > repos > chrisd > testshed
view snp_caller/src/Alignment.h @ 0:0fd352f62446 draft default tip
planemo upload for repository https://github.com/ChrisD11/Duplicon commit 3ee0594c692faac542ffa58f4339d79b9b8aefbd-dirty
author | chrisd |
---|---|
date | Sun, 21 Feb 2016 06:05:24 -0500 |
parents | |
children |
line wrap: on
line source
#ifndef ALIGNMENT_H #define ALIGNMENT_H #include <string> #include <vector> #include <algorithm> struct bit_flag { /* SAM flags in English */ bool read_paired = false; bool read_mapped_in_proper_pair = false; bool read_unmapped = false; bool mate_unmapped = false; bool read_reverse_strand = false; bool mate_reverse_strand = false; bool first_in_pair = false; bool second_in_pair = false; }; struct alignment_fields { std::string QNAME; int FLAG; std::string RNAME; int POS; std::string MAPQ; std::string CIGAR; std::string RNEXT; int PNEXT; int TLEN; std::string SEQ; std::string QUAL; }; class Alignment { public: Alignment(std::string alignment); void fill_alignment_fields(const std::string &alignment); void fill_bit_flag(const int &flag); bool fill_xa_field(const std::string &alignment); std::vector<std::pair<int,char> > get_cigar(); inline std::string alignment() const { return _alignment; }; inline std::string qname() const { return field.QNAME; }; inline std::string rname() const { return field.RNAME; }; inline std::string mapq() const { return field.MAPQ; }; inline std::string cigar() const { return field.CIGAR; }; inline std::string seq() const { return field.SEQ; }; inline std::string rnext() const { return field.RNEXT; }; inline int flag() const { return field.FLAG; }; inline int pos() const { return field.POS; }; inline int pnext() const { return field.PNEXT; }; inline int tlen() const { return field.TLEN; }; inline bool read_paired() const { return b_flag.read_paired; }; inline bool read_mapped_in_proper_pair() const { return b_flag.read_mapped_in_proper_pair; }; inline bool read_unmapped() const { return b_flag.read_unmapped; }; inline bool mate_unmapped() const { return b_flag.mate_unmapped; }; inline bool read_reverse_strand() const { return b_flag.read_reverse_strand; } inline bool mate_reverse_strand() const { return b_flag.mate_reverse_strand; }; inline bool first_in_pair() const { return b_flag.first_in_pair; }; inline bool second_in_pair() const { return b_flag.second_in_pair; }; inline void set_rname(std::string rname) { field.RNAME = rname; } inline void set_cigar(std::string cigar) { field.CIGAR = cigar; } inline void set_pos(int pos) { field.POS = pos; } struct xa_fields { std::string rname; std::string cigar; int pos; int edit; }; std::vector<xa_fields> alternate_hits; private: std::vector<std::pair<int,char> > get_cigar_operations(const std::string &cigar); std::string _alignment; alignment_fields field; bit_flag b_flag; }; #endif // ALIGNMENT_H