return result;
}
-// saves index data to BAM index files (".bai") where necessary, returns success/fail
+// saves index data to BAM index files (".bai"/".bti") where necessary, returns success/fail
bool BamMultiReader::CreateIndexes(bool useDefaultIndex) {
bool result = true;
for (vector<pair<BamReader*, BamAlignment*> >::iterator it = readers.begin(); it != readers.end(); ++it) {
struct ConvertTool::ConvertSettings {
// flags
- bool HasInputFilenames;
- bool HasOutputFilename;
+ bool HasInput;
+ bool HasOutput;
bool HasFormat;
bool HasRegion;
// constructor
ConvertSettings(void)
- : HasInputFilenames(false)
- , HasOutputFilename(false)
+ : HasInput(false)
+ , HasOutput(false)
, HasFormat(false)
, HasRegion(false)
, HasFastaFilename(false)
, m_impl(0)
{
// set program details
- Options::SetProgramInfo("bamtools convert", "converts between BAM and a number of other formats", "-in <filename> -out <filename> -format <FORMAT>");
+ Options::SetProgramInfo("bamtools convert", "converts BAM to a number of other formats", "-format <FORMAT> [-in <filename> -in <filename> ...] [-out <filename>] [other options]");
// set up options
OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
- Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInputFilenames, m_settings->InputFiles, IO_Opts, Options::StandardIn());
- Options::AddValueOption("-out", "BAM filename", "the output BAM file", "", m_settings->HasOutputFilename, m_settings->OutputFilename, IO_Opts, Options::StandardOut());
+ Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", 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::AddValueOption("-format", "FORMAT", "the output file format - see README for recognized formats", "", m_settings->HasFormat, m_settings->Format, IO_Opts);
OptionGroup* FilterOpts = Options::CreateOptionGroup("Filters");
// initialize conversion input/output
// set to default input if none provided
- if ( !m_settings->HasInputFilenames )
+ if ( !m_settings->HasInput )
m_settings->InputFiles.push_back(Options::StandardIn());
// open input files
// if output file given
ofstream outFile;
- if ( m_settings->HasOutputFilename ) {
+ if ( m_settings->HasOutput ) {
// open output file stream
outFile.open(m_settings->OutputFilename.c_str());
// ------------------------
// clean up & exit
reader.Close();
- if ( m_settings->HasOutputFilename ) outFile.close();
+ if ( m_settings->HasOutput ) outFile.close();
return convertedOk;
}
// set up options
OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
- //Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputBamFilename, m_settings->InputBamFilename, IO_Opts, Options::StandardIn());
Options::AddValueOption("-in", "BAM filename", "the input BAM file(s)", "", m_settings->HasInput, m_settings->InputFiles, IO_Opts);
//Options::AddValueOption("-index", "BAM index filename", "the BAM index file", "", m_settings->HasBamIndexFilename, m_settings->BamIndexFilename, IO_Opts);
// parse command line arguments
Options::Parse(argc, argv, 1);
+ if ( !m_settings->HasInput )
+ m_settings->InputFiles.push_back(Options::StandardIn());
+
BamMultiReader reader;
reader.Open(m_settings->InputFiles, false, true);
// open files
BamMultiReader reader;
- reader.Open(m_settings->InputFiles, false);
+ if ( reader.Open(m_settings->InputFiles, false) ) {
+ // dump header contents to stdout
+ cout << reader.GetHeaderText() << endl;
+ }
- // dump header contents to stdout
- cout << reader.GetHeaderText() << endl;
-
// clean up & exit
reader.Close();
return 0;
namespace BamTools {
#define ARGUMENT_LENGTH 35
-#define DESC_LENGTH_FIRST_ROW 42
+#define DESC_LENGTH_FIRST_ROW 50
#define DESC_LENGTH 39
#define MAX_LINE_LENGTH 78
// internal methods
private:
+ void ClearBuffer(vector<BamAlignment>& buffer);
bool GenerateSortedRuns(void);
bool HandleBufferContents(vector<BamAlignment>& buffer);
bool MergeSortedRuns(void);
// while data available
BamAlignment al;
- while ( inputReader.GetNextAlignmentCore(al) ) {
+ while ( inputReader.GetNextAlignmentCore(al)) {
// store alignments in buffer
buffer.push_back(al);
// while data available in temp files
BamAlignment al;
- while ( multiReader.GetNextAlignment(al) ) {
+ while ( multiReader.GetNextAlignmentCore(al) ) {
mergedWriter.SaveAlignment(al);
}
cout << "Singletons: " << numSingletons << "\t(" << ((float)numSingletons/numPaired)*100 << "%)" << endl;
}
-
if ( settings->IsShowingInsertSizeSummary ) {
double avgInsertSize = 0.0;