docs: function SRA (command) {
    command = command || 'fastq-dump'
  
    return sraStream
  
    function sraStream (srcFileDestDir, callback) {
      var stream = through.obj(transform)
      if (srcFileDestDir) { stream.write(srcFileDestDir); stream.end() }
      if (callback) {
        stream.on('data', function (data) {
          callback(null, data)
        })
        stream.on('error', callback)
      }
      return stream
  
      function transform (obj, enc, next) {
        var self = this
  
        try {
          var parsedObj = JSON.parse(obj)
          if (parsedObj.status === 'completed') {
            obj = [parsedObj.path, path.dirname(parsedObj.path)]
          } else {
            return next()
          }
        } catch (e) {}
  
        if (typeof obj === 'string') { obj = obj.split(' ') }
  
        if (obj.length > 2) { self.emit('error', new Error('Too many arguments')); next() }
  
        if (obj.length === 1) { obj.push('.') }
  
        // var sraPath = path.join(__dirname, '../sra/bin/' + command)
        var srcFile = obj[0]
        var destDir = obj[1]
        var options
        if (destDir === '.') {
          options = [srcFile]
        } else {
          options = [srcFile, '-O', destDir]
        }
        var sra = spawn(command, options)
  
        sra.stderr.on('data', function (data) {
          self.emit('error', new Error(data.toString()))
          next()
        })
  
        sra.on('close', function (code) {
          if (code) {
            self.emit('error', new Error('Unknown error, check that "' + obj[0] + '" exists'))
          } else {
            var output = {
              srcFile: obj[0],
              command: command,
              destDir: obj[1]
            }
            if (command === 'fastq-dump') {
              output.destFile = output.srcFile.replace('.sra', '.fastq')
            }
            self.push(output)
            next()
          }
        })
      }
    }
  }