// Marth Lab, Department of Biology, Boston College
// All rights reserved.
// ---------------------------------------------------------------------------
-// Last modified: 30 August 2010
+// Last modified: 31 August 2010
// ---------------------------------------------------------------------------
// Filters a single BAM file (or filters multiple BAM files and merges)
// according to some user-specified criteria.
bool HasOutputBamFilename;
bool HasRegion;
bool HasScriptFilename;
+ bool IsForceCompression;
// filenames
vector<string> InputFiles;
, HasOutputBamFilename(false)
, HasRegion(false)
, HasScriptFilename(false)
+ , IsForceCompression(false)
, OutputFilename(Options::StandardOut())
, HasAlignmentFlagFilter(false)
, HasInsertSizeFilter(false)
Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputBamFilename, m_settings->OutputFilename, IO_Opts, Options::StandardOut());
Options::AddValueOption("-region", "REGION", "only read data from this genomic region (see README for more details)", "", m_settings->HasRegion, m_settings->Region, IO_Opts);
Options::AddValueOption("-script", "filename", "the filter script file (see README for more details)", "", m_settings->HasScriptFilename, m_settings->ScriptFilename, IO_Opts);
+ 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);
OptionGroup* FilterOpts = Options::CreateOptionGroup("General Filters");
Options::AddValueOption("-alignmentFlag", "int", "keep reads with this *exact* alignment flag (for more detailed queries, see below)", "", m_settings->HasAlignmentFlagFilter, m_settings->AlignmentFlagFilter, FilterOpts);
// open writer
BamWriter writer;
- writer.Open(m_settings->OutputFilename, headerText, m_references);
+ bool writeUncompressed = ( m_settings->OutputFilename == Options::StandardOut() && !m_settings->IsForceCompression );
+ writer.Open(m_settings->OutputFilename, headerText, m_references, writeUncompressed);
// set up error handling
ostringstream errorStream("");
// Marth Lab, Department of Biology, Boston College
// All rights reserved.
// ---------------------------------------------------------------------------
-// Last modified: 2 June 2010
+// Last modified: 31 August 2010
// ---------------------------------------------------------------------------
// Merges multiple BAM files into one.
//
// flags
bool HasInputBamFilename;
bool HasOutputBamFilename;
+ bool IsForceCompression;
// bool HasRegion;
// filenames
MergeSettings(void)
: HasInputBamFilename(false)
, HasOutputBamFilename(false)
+ , IsForceCompression(false)
// , HasRegion(false)
, OutputFilename(Options::StandardOut())
{ }
OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInputBamFilename, m_settings->InputFiles, IO_Opts);
Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputBamFilename, m_settings->OutputFilename, IO_Opts);
+ 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);
// OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters");
// Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, FilterOpts);
std::string mergedHeader = reader.GetHeaderText();
RefVector references = reader.GetReferenceData();
- // open BamWriter
+ // open writer
BamWriter writer;
- writer.Open(m_settings->OutputFilename, mergedHeader, references);
+ bool writeUncompressed = ( m_settings->OutputFilename == Options::StandardOut() && !m_settings->IsForceCompression );
+ writer.Open(m_settings->OutputFilename, mergedHeader, references, writeUncompressed);
// store alignments to output file
BamAlignment bAlignment;
bool HasInput;
bool HasOutput;
bool HasRegion;
+ bool IsForceCompression;
// parameters
unsigned int AlignmentCount;
, HasInput(false)
, HasOutput(false)
, HasRegion(false)
+ , IsForceCompression(false)
, AlignmentCount(RANDOM_MAX_ALIGNMENT_COUNT)
+ , OutputFilename(Options::StandardOut())
{ }
};
OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts, Options::StandardIn());
Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts, Options::StandardOut());
+ 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);
OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters");
Options::AddValueOption("-n", "count", "number of alignments to grab. Note - no duplicate checking is performed (currently)", "", m_settings->HasAlignmentCount, m_settings->AlignmentCount, FilterOpts, RANDOM_MAX_ALIGNMENT_COUNT);
reader.SetRegion(region);
}
- // open out BAM writer
+ // open writer
BamWriter writer;
- writer.Open(m_settings->OutputFilename, headerText, references);
+ bool writeUncompressed = ( m_settings->OutputFilename == Options::StandardOut() && !m_settings->IsForceCompression );
+ writer.Open(m_settings->OutputFilename, headerText, references, writeUncompressed);
// seed our random number generator
srand (time(NULL) );