We slightly changed the way this worked a few months ago, and we neither made a discourse post (naughty!) nor changed the docs (unforgivable!).
When a VCF is imported with Hail, the FILTER field is read into va.filters
, which is of type Set[String]
. This needs to be a set because a variant can have multiple filters applied. PASS means that no filters were applied, and produces an empty set in va.filters
. The best way to filter to PASS variants is:
pass_vds = vds.filter_variants_expr('va.filters.isEmpty()', keep=True)