// ***************************************************************************
// bamtools_coverage.cpp (c) 2010 Derek Barnett, Erik Garrison
// Marth Lab, Department of Biology, Boston College
-// All rights reserved.
// ---------------------------------------------------------------------------
-// Last modified: 16 September 2010
+// Last modified: 7 April 2011
// ---------------------------------------------------------------------------
// Prints coverage data for a single BAM file
// ***************************************************************************
+#include "bamtools_coverage.h"
+
+#include <api/BamReader.h>
+#include <utils/bamtools_options.h>
+#include <utils/bamtools_pileup_engine.h>
+using namespace BamTools;
+
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
-#include "bamtools_coverage.h"
-#include "bamtools_options.h"
-#include "bamtools_pileup_engine.h"
-#include "BamReader.h"
using namespace std;
-using namespace BamTools;
namespace BamTools {
// PileupVisitor interface implementation
public:
-// void Visit(const int& refId, const int& position, const vector<BamAlignment>& alignments) {
+ // prints coverage results ( tab-delimited )
void Visit(const PileupPosition& pileupData) {
- // -----------------------------------------
- // print coverage results ( tab-delimited )
- // <refName> <0-based pos> <number of alleles>
-// *m_out << m_references[refId].RefName << "\t" << position << "\t" << alignments.size() << endl;
*m_out << m_references[pileupData.RefId].RefName << "\t"
<< pileupData.Position << "\t"
<< pileupData.PileupAlignments.size() << endl;
// ctor & dtor
public:
- CoverageToolPrivate(CoverageTool::CoverageSettings* settings);
- ~CoverageToolPrivate(void);
+ CoverageToolPrivate(CoverageTool::CoverageSettings* settings)
+ : m_settings(settings)
+ , m_out(cout.rdbuf())
+ { }
+
+ ~CoverageToolPrivate(void) { }
// interface
public:
RefVector m_references;
};
-CoverageTool::CoverageToolPrivate::CoverageToolPrivate(CoverageTool::CoverageSettings* settings)
- : m_settings(settings)
- , m_out(cout.rdbuf()) // default output to cout
-{ }
-
-CoverageTool::CoverageToolPrivate::~CoverageToolPrivate(void) { }
-
bool CoverageTool::CoverageToolPrivate::Run(void) {
// if output filename given
// open output file stream
outFile.open(m_settings->OutputFilename.c_str());
if ( !outFile ) {
- cerr << "Could not open " << m_settings->OutputFilename << " for output." << endl;
+ cerr << "bamtools coverage ERROR: could not open " << m_settings->OutputFilename
+ << " for output" << endl;
return false;
}
//open our BAM reader
BamReader reader;
- if (!reader.Open(m_settings->InputBamFilename)) {
- cerr << "Could not open " << m_settings->InputBamFilename << " for reading." << endl;
+ if ( !reader.Open(m_settings->InputBamFilename) ) {
+ cerr << "bamtools coverage ERROR: could not open input BAM file: " << m_settings->InputBamFilename << endl;
return false;
}
+
+ // retrieve references
m_references = reader.GetReferenceData();
// set up our output 'visitor'
// clean up
reader.Close();
- if ( m_settings->HasOutputFile ) outFile.close();
+ if ( m_settings->HasOutputFile )
+ outFile.close();
delete cv;
cv = 0;
}
CoverageTool::~CoverageTool(void) {
+
delete m_settings;
m_settings = 0;
// parse command line arguments
Options::Parse(argc, argv, 1);
- // run internal ConvertTool implementation, return success/fail
+ // initialize CoverageTool with settings
m_impl = new CoverageToolPrivate(m_settings);
+ // run CoverageTool, return success/fail
if ( m_impl->Run() )
return 0;
else