]> git.donarmstrong.com Git - bamtools.git/blobdiff - bamtools_convert.cpp
Minor formatting cleanup in BamIndex.*
[bamtools.git] / bamtools_convert.cpp
index de9cc369bab9c32762c8fb2f9e5d1457326970db..1c5ba4884ac73412f9e45a38575d9fba6de4dc88 100644 (file)
@@ -76,8 +76,8 @@ struct ConvertTool::ConvertToolPrivate {
 struct ConvertTool::ConvertSettings {
 
     // flags
-    bool HasInputFilenames;
-    bool HasOutputFilename;
+    bool HasInput;
+    bool HasOutput;
     bool HasFormat;
     bool HasRegion;
 
@@ -97,8 +97,8 @@ struct ConvertTool::ConvertSettings {
 
     // constructor
     ConvertSettings(void)
-        : HasInputFilenames(false)
-        , HasOutputFilename(false)
+        : HasInput(false)
+        , HasOutput(false)
         , HasFormat(false)
         , HasRegion(false)
         , HasFastaFilename(false)
@@ -117,12 +117,12 @@ ConvertTool::ConvertTool(void)
     , 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");
@@ -181,7 +181,7 @@ bool ConvertTool::ConvertToolPrivate::Run(void) {
     // 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
@@ -200,7 +200,7 @@ bool ConvertTool::ConvertToolPrivate::Run(void) {
         
     // 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());
@@ -274,7 +274,7 @@ bool ConvertTool::ConvertToolPrivate::Run(void) {
     // ------------------------
     // clean up & exit
     reader.Close();
-    if ( m_settings->HasOutputFilename ) outFile.close();
+    if ( m_settings->HasOutput ) outFile.close();
     return convertedOk;   
 }
 
@@ -342,9 +342,9 @@ void ConvertTool::ConvertToolPrivate::PrintFastq(const BamAlignment& a) {
     // 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
@@ -388,8 +388,15 @@ void ConvertTool::ConvertToolPrivate::PrintJson(const BamAlignment& a) {
         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();
@@ -609,4 +616,4 @@ void ConvertTool::ConvertToolPrivate::PrintSam(const BamAlignment& a) {
 
 void ConvertTool::ConvertToolPrivate::PrintWiggle(const BamAlignment& a) { 
     ; 
-}
\ No newline at end of file
+}