code: def fix_nonref_positions(in_file, ref_file):
      
      ignore_chrs = ["."]
      ref2bit = twobit.TwoBitFile(open(ref_file))
      out_file = in_file.replace("-raw.vcf", ".vcf")
  
      with open(in_file) as in_handle:
          with open(out_file, "w") as out_handle:
              for line in in_handle:
                  if line.startswith("#"):
                      out_handle.write(line)
                  else:
                      parts = line.rstrip("\r\n").split("\t")
                      pos = int(parts[1])
                      # handle chr/non-chr naming
                      if parts[0] not in ref2bit.keys() and parts[0].replace("chr", "") in ref2bit.keys():
                          parts[0] = parts[0].replace("chr", "")
                      # handle X chromosome
                      elif parts[0] not in ref2bit.keys() and parts[0] == "23":
                          for test in ["X", "chrX"]:
                              if test in ref2bit.keys():
                                  parts[0] == test
                      ref_base = None
                      if parts[0] not in ignore_chrs:
                          try:
                              ref_base = ref2bit[parts[0]].get(pos-1, pos).upper()
                          except Exception as msg:
                              print "Skipping line. Failed to retrieve reference base for %s\n%s" % (str(parts), msg)
                      parts = fix_vcf_line(parts, ref_base)
                      if parts is not None:
                          out_handle.write("\t".join(parts) + "\n")
          return out_file
docs: Fix Genotyping VCF positions where the bases are all variants.
  
      The plink/pseq output does not handle these correctly, and
      has all reference/variant bases reversed.