1 // ***************************************************************************
2 // bamtools_resolve.cpp (c) 2011
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 7 April 2011
7 // ---------------------------------------------------------------------------
8 // Resolves paired-end reads (marking the IsProperPair flag as needed)
9 // ***************************************************************************
11 #include "bamtools_resolve.h"
13 #include <api/BamReader.h>
14 #include <api/BamWriter.h>
15 #include <utils/bamtools_options.h>
16 #include <utils/bamtools_utilities.h>
17 using namespace BamTools;
23 // ---------------------------------------------
24 // ResolveSettings implementation
26 struct ResolveTool::ResolveSettings {
31 bool IsForceCompression;
35 string OutputFilename;
41 , IsForceCompression(false)
42 , InputFilename(Options::StandardIn())
43 , OutputFilename(Options::StandardOut())
47 // ---------------------------------------------
48 // ResolveToolPrivate implementation
50 struct ResolveTool::ResolveToolPrivate {
54 ResolveToolPrivate(ResolveTool::ResolveSettings* settings)
55 : m_settings(settings)
58 ~ResolveToolPrivate(void) { }
69 ResolveTool::ResolveSettings* m_settings;
72 bool ResolveTool::ResolveToolPrivate::Run(void) {
73 cerr << "Resoling BAM file..." << endl;
77 // ---------------------------------------------
78 // ResolveTool implementation
80 ResolveTool::ResolveTool(void)
82 , m_settings(new ResolveSettings)
85 // set program details
86 Options::SetProgramInfo("bamtools resolve", "resolves paired-end reads (marking the IsProperPair flag as needed)", "[-in <filename> -in <filename> ...] [-out <filename> | [-forceCompression]] [resolveOptions]");
89 OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
90 Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInput, m_settings->InputFilename, IO_Opts, Options::StandardIn());
91 Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts, Options::StandardOut());
92 Options::AddOption("-forceCompression", "if results are sent to stdout (like when piping to another tool), default behavior is to leave output uncompressed. Use this flag to override and force compression", m_settings->IsForceCompression, IO_Opts);
95 ResolveTool::~ResolveTool(void) {
104 int ResolveTool::Help(void) {
105 Options::DisplayHelp();
109 int ResolveTool::Run(int argc, char* argv[]) {
111 // parse command line arguments
112 Options::Parse(argc, argv, 1);
114 // initialize ResolveTool
115 m_impl = new ResolveToolPrivate(m_settings);
117 // run ResolveTool, return success/failure
118 if ( m_impl->Run() ) return 0;