]> git.donarmstrong.com Git - bamtools.git/blob - bamtools_coverage.cpp
added warning for duplicate @RG tag in header
[bamtools.git] / bamtools_coverage.cpp
1 // ***************************************************************************
2 // bamtools_coverage.cpp (c) 2010 Derek Barnett, Erik Garrison
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 1 June 2010
7 // ---------------------------------------------------------------------------
8 // Prints coverage statistics for a single BAM file 
9 //
10 // ** Expand to multiple?? 
11 //
12 // ***************************************************************************
13
14 #include <iostream>
15 #include <string>
16 #include <vector>
17
18 #include "bamtools_coverage.h"
19 #include "bamtools_options.h"
20 #include "BamReader.h"
21
22 using namespace std;
23 using namespace BamTools; 
24   
25 // ---------------------------------------------  
26 // CoverageSettings implementation
27
28 struct CoverageTool::CoverageSettings {
29
30     // flags
31     bool HasInputBamFilename;
32
33     // filenames
34     std::string InputBamFilename;
35     
36     // constructor
37     CoverageSettings(void)
38         : HasInputBamFilename(false)
39         , InputBamFilename(Options::StandardIn())
40     { } 
41 };  
42
43 // ---------------------------------------------
44 // CoverageTool implementation
45
46 CoverageTool::CoverageTool(void) 
47     : AbstractTool()
48     , m_settings(new CoverageSettings)
49
50     // set program details
51     Options::SetProgramInfo("bamtools coverage", "prints coverage stats for a BAM file", "-in <filename> ");
52     
53     // set up options 
54     OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
55     Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputBamFilename, m_settings->InputBamFilename, IO_Opts, Options::StandardIn());
56 }
57
58 CoverageTool::~CoverageTool(void) { 
59     delete m_settings;
60     m_settings = 0;
61 }
62
63 int CoverageTool::Help(void) { 
64     Options::DisplayHelp();
65     return 0;
66
67
68 int CoverageTool::Run(int argc, char* argv[]) { 
69
70     // parse command line arguments
71     Options::Parse(argc, argv, 1);
72
73     //open our BAM reader
74     BamReader reader;
75     reader.Open(m_settings->InputBamFilename);
76
77     // generate coverage stats
78     cerr << "Generating coverage stats for " << m_settings->InputBamFilename << endl;
79     cerr << "FEATURE NOT YET IMPLEMENTED!" << endl;
80
81     // clean & exit
82     reader.Close();
83     return 0;
84 }