code: def batchlobstr(args):
      
      p = OptionParser(batchlobstr.__doc__)
      p.add_option("--sep", default=",", help="Separator for building commandline")
      p.set_home("lobstr", default="s3://hli-mv-data-science/htang/str-build/lobSTR/")
      p.set_aws_opts(store="hli-mv-data-science/htang/str-data")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      samplesfile, = args
      store = opts.output_path
      computed = ls_s3(store)
      fp = open(samplesfile)
      skipped = total = 0
      for row in fp:
          total += 1
          sample, s3file = row.strip().split(",")[:2]
          exec_id, sample_id = sample.split("_")
          bamfile = s3file.replace(".gz", "").replace(".vcf", ".bam")
  
          gzfile = sample + ".{0}.vcf.gz".format("hg38")
          if gzfile in computed:
              skipped += 1
              continue
  
          print(opts.sep.join("python -m jcvi.variation.str lobstr".split() + \
                              ["hg38",
                              "--input_bam_path", bamfile,
                              "--output_path", store,
                              "--sample_id", sample_id,
                              "--workflow_execution_id", exec_id,
                              "--lobstr_home", opts.lobstr_home,
                              "--workdir", opts.workdir]))
      fp.close()
      logging.debug("Total skipped: {0}".format(percentage(skipped, total)))
docs: %prog batchlobstr samples.csv
  
      Run lobSTR sequentially on list of samples. Each line contains:
      sample-name,s3-location