code: def _comparison_stats_from_merge(in_file, stats, svcaller, data):
      
      truth_stats = {"tp": [], "fn": [], "fp": []}
  
      samples = ["truth" if x.endswith("-truth") else "eval" for x in vcfutils.get_samples(in_file)]
      with open(in_file) as in_handle:
          for call in (l.rstrip().split("\t") for l in in_handle if not l.startswith("#")):
              supp_vec_str = [x for x in call[7].split(";") if x.startswith("SUPP_VEC=")][0]
              _, supp_vec = supp_vec_str.split("=")
              calls = dict(zip(samples, [int(x) for x in supp_vec]))
              if calls["truth"] and calls["eval"]:
                  metric = "tp"
              elif calls["truth"]:
                  metric = "fn"
              else:
                  metric = "fp"
              truth_stats[metric].append(_summarize_call(call))
      return _to_csv(truth_stats, stats, dd.get_sample_name(data), svcaller)
docs: Extract true/false positive/negatives from a merged SURIVOR VCF.