I was looking to handle errors in sampling where chains fail (more details if there’s interest), and to do so I was looking at this block of code in the recv_draw
static method in parallel_sampling.py
:
if msg[0] == "error":
warns, old_error = msg[1:]
if warns is not None:
error = ParallelSamplingError(str(old_error), proc.chain, warns)
else:
error = RuntimeError("Chain %s failed." % proc.chain)
raise error from old_error
msg
is evidently some message received from a subsidiary sampling process, but there’s no mention of what it is. What I would like to know is what distinguishes between the case where warns
is and is not None
. Why is it that a different error is signaled in each case? Why is the second case simply a RuntimeError
instead of a ParallelSamplingError
like the first?
Thanks!