code: def _cnvkit_prioritize(sample, genes, allele_file, metrics_file):
      
      mdf = pd.read_table(metrics_file)
      mdf.columns = [x.lower() for x in mdf.columns]
      if len(genes) > 0:
          mdf = mdf[mdf["gene"].str.contains("|".join(genes))]
      mdf = mdf[["chromosome", "start", "end", "gene", "log2", "ci_hi", "ci_lo"]]
      adf = pd.read_table(allele_file)
      if len(genes) > 0:
          adf = adf[adf["gene"].str.contains("|".join(genes))]
      if "cn1" in adf.columns and "cn2" in adf.columns:
          adf = adf[["chromosome", "start", "end", "cn", "cn1", "cn2"]]
      else:
          adf = adf[["chromosome", "start", "end", "cn"]]
      df = pd.merge(mdf, adf, on=["chromosome", "start", "end"])
      df = df[df["cn"] != 2]
      if len(df) > 0:
          def passes(row):
              spread = abs(row["ci_hi"] - row["ci_lo"])
              return spread < 0.25
          df["passes"] = df.apply(passes, axis=1)
      df.insert(0, "sample", [sample] * len(df))
      return df
docs: Summarize non-diploid calls with copy numbers and confidence intervals.