code: def exclude_by_ends(in_file, exclude_file, data, in_params=None):
      
      params = {"end_buffer": 50,
                "rpt_pct": 0.9,
                "total_rpt_pct": 0.2,
                "sv_pct": 0.5}
      if in_params:
          params.update(in_params)
      assert in_file.endswith(".bed")
      out_file = "%s-norepeats%s" % utils.splitext_plus(in_file)
      to_filter = collections.defaultdict(list)
      removed = 0
      if not utils.file_uptodate(out_file, in_file):
          with file_transaction(data, out_file) as tx_out_file:
              with shared.bedtools_tmpdir(data):
                  for coord, end_name in [(1, "end1"), (2, "end2")]:
                      base, ext = utils.splitext_plus(tx_out_file)
                      end_file = _create_end_file(in_file, coord, params, "%s-%s%s" % (base, end_name, ext))
                      to_filter = _find_to_filter(end_file, exclude_file, params, to_filter)
              with open(tx_out_file, "w") as out_handle:
                  with open(in_file) as in_handle:
                      for line in in_handle:
                          key = "%s:%s-%s" % tuple(line.strip().split("\t")[:3])
                          total_rpt_size = sum(to_filter.get(key, [0]))
                          if total_rpt_size <= (params["total_rpt_pct"] * params["end_buffer"]):
                              out_handle.write(line)
                          else:
                              removed += 1
      return out_file, removed
docs: Exclude calls based on overlap of the ends with exclusion regions.
  
      Removes structural variants with either end being in a repeat: a large
      source of false positives.
  
      Parameters tuned based on removal of LCR overlapping false positives in DREAM
      synthetic 3 data.