ConditionalPriorDict should only be resolved if all JointPrior's are "complete" #1024
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses the issue described in the second item of #1026
To reiterate, issues arise if not all names associated with a JointPrior are sampled/requested for probability calculation or rescaling.
JointPriorandBaseJointPriorDistkeep track of the names that have been requested internally. Once all names associated with aBaseJointPriorDist-instance have been requested, this internal storage is reset. This can lead to unexpected behavior if only a subset of the the names are requested. For instance, if one wants to sample a subset of the JointPrior-names repeatedly, the returned samples would never change (even if the requested size changes). The easiest solution would be to only considerConditionalPriorDicts resolved if for any includedJointPriorall names associated withJointPrior.distare also included.This PR fixes this.
Note: The solution does not solve a similar issue in
PriorDict(which would also not necessarily rescale to the correct order). Since any individualJointPrioris essentially a conditional random variable, I'd suggest to limit joint priors toConditionalPriorDict.