code: def sort_by_ref(vcf_file, data):
      
      out_file = "%s-prep.vcf.gz" % utils.splitext_plus(vcf_file)[0]
      if not utils.file_uptodate(out_file, vcf_file):
          with file_transaction(data, out_file) as tx_out_file:
              header_file = "%s-header.txt" % utils.splitext_plus(tx_out_file)[0]
              with open(header_file, "w") as out_handle:
                  for region in ref.file_contigs(dd.get_ref_file(data), data["config"]):
                      out_handle.write("##contig=<ID=%s,length=%s>\n" % (region.name, region.size))
              cat_cmd = "zcat" if vcf_file.endswith("vcf.gz") else "cat"
              cmd = ("{cat_cmd} {vcf_file} | grep -v ^##contig | bcftools annotate -h {header_file} | "
                     "vt sort -m full -o {tx_out_file} -")
              with utils.chdir(os.path.dirname(tx_out_file)):
                  do.run(cmd.format(**locals()), "Sort VCF by reference")
      return bgzip_and_index(out_file, data["config"])
docs: Sort a VCF file by genome reference and position, adding contig information.