Note that this issue should probably have gone to our fork of loom; for some reason I don't have privileges to open issues there.
The problem: you can estimate mutual information with loom, but you can't simulate it because mi-values get aggregated by computing the mean in the loom backend already:
https://github.com/probcomp/loom/blob/32227b125d45f1435ff6e6f05df76b5161158bcf/loom/query.py#L281
This should be easy to fix (just remove the taking the mean) in the lines linked above.