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
if msg == "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?