diff BEDTools-Version-2.14.3/src/genomeCoverageBed/genomeCoverageBed.h @ 0:dfcd8b6c1bda

Uploaded
author aaronquinlan
date Thu, 03 Nov 2011 10:25:04 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BEDTools-Version-2.14.3/src/genomeCoverageBed/genomeCoverageBed.h	Thu Nov 03 10:25:04 2011 -0400
@@ -0,0 +1,104 @@
+/*****************************************************************************
+genomeCoverage.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.
+******************************************************************************/
+#include "bedFile.h"
+#include "genomeFile.h"
+
+#include "BamAncillary.h"
+#include "api/BamReader.h"
+#include "api/BamAux.h"
+using namespace BamTools;
+
+#include <vector>
+#include <set>
+#include <iostream>
+#include <fstream>
+using namespace std;
+
+
+//***********************************************
+// Typedefs
+//***********************************************
+typedef map<int, DEPTH, less<int> > depthMap;
+typedef map<string, depthMap, less<string> > chromDepthMap;
+
+typedef map<int, unsigned int, less<int> > histMap;
+typedef map<string, histMap, less<string> > chromHistMap;
+
+//************************************************
+// Class methods and elements
+//************************************************
+class BedGenomeCoverage {
+
+public:
+
+    // constructor
+    BedGenomeCoverage(string bedFile, string genomeFile, 
+                      bool eachBase, bool startSites,
+                      bool bedGraph, bool bedGraphAll, 
+                      int max, float scale, 
+                      bool bamInput, bool obeySplits,
+                      bool filterByStrand, string requestedStrand,
+                      bool only_5p_end, bool only_3p_end,
+                      bool eachBaseZeroBased,
+                      bool add_gb_track_line, string gb_track_line_opts);
+
+    // destructor
+    ~BedGenomeCoverage(void);
+
+private:
+
+    // data (parms)
+    string _bedFile;
+    string _genomeFile;
+    bool _bamInput;
+    bool _eachBase;
+    bool _eachBaseZeroBased;
+    bool _startSites;
+    bool _bedGraph;
+    bool _bedGraphAll;
+    int _max;
+    float _scale;
+    bool _obeySplits;
+    bool _filterByStrand;
+    bool _only_5p_end;
+    bool _only_3p_end;
+    bool _add_gb_track_line;
+    string _gb_track_line_opts;
+    string _requestedStrand;
+
+    BedFile *_bed;
+    GenomeFile *_genome;
+
+    // data for internal processing
+    chromDepthMap _chromCov;
+    string _currChromName ;
+    vector<DEPTH> _currChromCoverage;
+    chromHistMap _currChromDepthHist;
+    int _currChromSize ;
+    set<string> _visitedChromosomes;
+
+
+    // methods
+    void CoverageBed();
+    void CoverageBam(string bamFile);
+    void LoadBamHeaderIntoGenomeFile(const string &bamFile);
+    void ReportChromCoverage(const vector<DEPTH> &, const int &chromSize, const string &chrom, chromHistMap&);
+    void ReportGenomeCoverage(chromHistMap &chromDepthHist);
+    void ReportChromCoverageBedGraph(const vector<DEPTH> &chromCov, const int &chromSize, const string &chrom);
+    void ResetChromCoverage();
+    void StartNewChrom (const string& chrom);
+    void AddCoverage (int start, int end);
+    void AddBlockedCoverage(const vector<BED> &bedBlocks);
+    void PrintFinalCoverage();
+    void PrintTrackDefinitionLine();
+};
+