/***************************************************************************** multiBamCov.h (c) 2009 - Aaron Quinlan Hall Laboratory Department of Biochemistry and Molecular Genetics University of Virginia aaronquinlan@gmail.com Licenced under the GNU General Public License 2.0 license. ******************************************************************************/ #ifndef MULTICOVBAM_H #define MULTICOVBAM_H #include "bedFile.h" #include "api/BamMultiReader.h" #include "BlockedIntervals.h" using namespace BamTools; #include #include #include #include using namespace std; class MultiCovBam { public: // constructor MultiCovBam(const vector &bam_files, const string bed_file, int minQual, bool properOnly, bool keepDuplicates, bool keepFailedQC, bool obeySplits, bool sameStrand, bool diffStrand, float overlapFraction, bool reciprocal); // destructor ~MultiCovBam(void); void CollectCoverage(); private: //------------------------------------------------ // private attributes //------------------------------------------------ vector _bam_files; string _bed_file; BedFile *_bed; // attributes to control what is counted int _minQual; bool _properOnly; bool _keepDuplicates; bool _keepFailedQC; bool _obeySplits; bool _sameStrand; bool _diffStrand; float _overlapFraction; bool _reciprocal; map bamFileMap; bool FindBlockedOverlaps(const BED &a, const vector &a_blocks, const BED &hit); void LoadBamFileMap(void); void ReportCounts(const vector &counts); }; #endif /* MULTIBAMCOV_H */