2020 infer_rejection_parallel ,
2121 infer_smc ,
2222 infer_smc_parallel ,
23+ infer_independent_mh ,
2324)
2425from .pdl_utils import validate_scope
2526
@@ -28,7 +29,13 @@ class PpdlConfig(TypedDict, total=False):
2829 """Configuration parameters of the PDL interpreter."""
2930
3031 algo : Literal [
31- "is" , "parallel-is" , "smc" , "parallel-smc" , "rejection" , "parallel-rejection"
32+ "is" ,
33+ "parallel-is" ,
34+ "smc" ,
35+ "parallel-smc" ,
36+ "rejection" ,
37+ "parallel-rejection" ,
38+ "imh" ,
3239 ]
3340 num_particles : int
3441 max_workers : int
@@ -58,7 +65,7 @@ def exec_program(
5865 config ["event_loop" ] = _LOOP
5966
6067 match algo :
61- case "is" | "rejection" | "parallel-rejection" :
68+ case "is" | "rejection" | "parallel-rejection" | "imh" :
6269 config ["with_resample" ] = False
6370 case "smc" | "parallel-smc" | "parallel-is" :
6471 config ["with_resample" ] = True
@@ -87,6 +94,8 @@ def model(replay, score):
8794 dist = infer_rejection (num_particles , model )
8895 case "parallel-rejection" :
8996 dist = infer_rejection_parallel (num_particles , model , max_workers = 4 )
97+ case "imh" :
98+ dist = infer_independent_mh (num_particles , model )
9099 case _:
91100 assert False , f"Unexpected algo: { algo } "
92101 return dist
@@ -155,6 +164,7 @@ def main():
155164 "parallel-smc" ,
156165 "rejection" ,
157166 "parallel-rejection" ,
167+ "imh" ,
158168 ],
159169 help = "Choose inference algorithm." ,
160170 default = "smc" ,
0 commit comments