1 // ***************************************************************************
2 // bamtools_count.cpp (c) 2010 Derek Barnett, Erik Garrison
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 2 June 2010
7 // ---------------------------------------------------------------------------
8 // Prints alignment count for BAM file
10 // ** Expand to multiple??
12 // ***************************************************************************
18 #include "bamtools_count.h"
19 #include "bamtools_options.h"
20 #include "bamtools_utilities.h"
21 #include "BamReader.h"
24 using namespace BamTools;
26 // ---------------------------------------------
27 // CountSettings implementation
29 struct CountTool::CountSettings {
32 bool HasInputBamFilename;
36 std::string InputBamFilename;
41 : HasInputBamFilename(false)
43 , InputBamFilename(Options::StandardIn())
47 // ---------------------------------------------
48 // CountTool implementation
50 CountTool::CountTool(void)
52 , m_settings(new CountSettings)
54 // set program details
55 Options::SetProgramInfo("bamtools count", "prints alignment counts for a BAM file", "-in <filename> ");
58 OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
59 Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputBamFilename, m_settings->InputBamFilename, IO_Opts, Options::StandardIn());
61 OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters");
62 Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, FilterOpts);
65 CountTool::~CountTool(void) {
70 int CountTool::Help(void) {
71 Options::DisplayHelp();
75 int CountTool::Run(int argc, char* argv[]) {
77 // parse command line arguments
78 Options::Parse(argc, argv, 1);
82 // reader.Open(m_settings.InputBamFilename);
90 if ( !m_settings->HasRegion ) {
91 cerr << "Counting all alignments " << endl;
93 if ( Utilities::ParseRegionString(m_settings->Region, startChrom, startPos, stopChrom, stopPos) ) {
94 cerr << "Counting only alignments in region " << m_settings->Region << endl;
95 cerr << "StartChrom: " << startChrom << endl;
96 cerr << "StartPos: " << startPos << endl;
97 cerr << "StopChrom: " << stopChrom << endl;
98 cerr << "StopPos: " << stopPos << endl;
102 cerr << " from " << m_settings->InputBamFilename << endl;
103 cerr << "FEATURE NOT YET IMPLEMENTED!" << endl;