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;
}
// BamAlignment.Qualities
m_out << "@" << a.Name << endl
- << a.QueryBases << endl
- << "+" << endl
- << a.Qualities << endl;
+ << a.QueryBases << endl
+ << "+" << endl
+ << a.Qualities << endl;
}
// print BamAlignment in JSON format
m_out << "\"queryBases\":\"" << a.QueryBases << "\",";
// write qualities
- if ( !a.Qualities.empty() )
- m_out << "\"qualities\":\"" << a.Qualities << "\",";
+ if ( !a.Qualities.empty() ) {
+ string::const_iterator s = a.Qualities.begin();
+ m_out << "\"qualities\":[" << static_cast<short>(*s) - 33;
+ ++s;
+ for (; s != a.Qualities.end(); ++s) {
+ m_out << "," << static_cast<short>(*s) - 33;
+ }
+ m_out << "],";
+ }
// write tag data
const char* tagData = a.TagData.c_str();
void ConvertTool::ConvertToolPrivate::PrintWiggle(const BamAlignment& a) {
;
-}
\ No newline at end of file
+}