-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG]: Failing test cases #51
Comments
@danbryce @dmosaphir |
Hi @liunelson , thanks for bringing these to our attention! I'm taking a look at Case 3 and I'm going to try simulating it at a coarser granularity to see if it's a numerical precision issue. I just have a question about the rate equations in The initials seem to have |
I don't actually know where the Case 3 model originated. I think the main issue is still the discrepancy between Funman's solution and the PyCIEMSS one. A lack of numerical precision could be the reason; however, Case 2's "number of time steps > 5" bug prevents us from testing that idea out directly in Terarium. |
In Case 1, the In order to shrink the bounds, the constraints need to limit the maximum or minimum true box value in some dimension. |
@liunelson The second test case uses timepoints that differ from those that are pictured in the screenshot. The file
We don't support timepoints that are floats. After changing to ints, I found that it was causing our subsolver dreal to segfault in a hard to reproduce manner. I'll diagnose. |
In case 3, with
I get:
When I set:
I get:
This suggests that we are returning a choice of beta and gamma you aren't expecting, and that is not identical to the one used by pyciems. I don't think this is a bug. Is there something different you want? |
Case 4 may have been fixed by my recent changes. It completed for me in about 2.25 minutes. |
You're right about the mistake of mine. I do still get the same empty-list box response when I use integer timepoints. For example, 0-1-2-3-..-10. |
I found a slight wrinkle in the logic for computing the contracted model. It is implemented correctly, except that it uses the bounds on boxes that are true at any timepoint. Typically, all parameter values are encapsulated by a true box in the initial state. This would cause the contracted model to have the same bounds as the original. I have updated the logic so that the contracted model only uses true boxes at the latest time step. The true boxes collectively diminish in volume over time, so the true boxes at the last time step will correspond to true boxes at earlier time steps. If you access the contracted model before funman has finished, it may look like the parameter bounds are overly narrow. This is because the algorithm will continue to add true boxes at the last time step until it is done. New commit coming soon. |
@liunelson I have just merged a fix into |
We have three test cases for which Funman fails to produce expected results.
Case 1
I start with a simple SIR model and got a reasonable response from Funman. However, the parameter distributions in the
contracted_model
do not match with the parameter lower & upper bounds in the only true box (beta ~ [0.1, 0.49], gamma ~ [0.05, 0.355]
). In fact, thecontracted_model
distributions appear to be identical to those from the input model.response1.json
Case 2
Using the same settings as Case 1, except where the number of timesteps is increased from 5 to 6 (or any integer > 5), Funman responds with
[]
for all types of boxes.response2.json
Case 3
Here, I use a non-normalized SIR model - that is, the state variables are in units of person, not dimensionless fractions of the total population. Funman responds with trajectories that do not correspond to those produced by
pyciemss.sample
.For example,
I(t = 35)
should be around 1000, not 400.response3.json
Case 4
This request, which seems to perfectly acceptable, causes Funman to hang forever for no apparent reason.
request4.json
The text was updated successfully, but these errors were encountered: