-
Notifications
You must be signed in to change notification settings - Fork 32
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
Save model parameters as JSON objects #811
Comments
@GoFroggyRun said
Ok, that makes sense. We can display the reform and assumptions files going back to PB 1.0.2 which is in August. That's when we started converting GUI parameters into reform files and storing them.
We could only guarantee that you can edit GUI parameters back 6 months or something like that. This time period could be revisited we get a more stable GUI interface. |
It would be nice to know how important archiving all of this information is for the users. My questions are:
@MattHJensen @MaxGhenis if you could weigh in on this, then that would be very helpful. |
@hdoupe I agree that we definitely want to have a "grace period" that allows users to re-edit their runs, I'm not sure, however, whether it is necessary to make it 6 months. It seems to me that 6 months are kinda too long. On the other hand, I'm also not sure how hard it would be to guarantee backward compatibility for a 6-month period. If a shorter "grace period" would make it easier to maintain backward compatibility, I would personally prefer the shorted one. Of course, it's really up to how frequent users would re-edit their previous runs. |
The primary goal should be to ensure that results are archived and that users can see exactly how to replicate any given set of results. Actually allowing the user to edit and rerun parameters on an old reform is very nice, but not strictly necessary. Note that "edit parameters and rerun an old reform" can actually mean two different things: (a) it could mean mean being able to rerun an old reform in the same environment and get the exact same results, or (b) it could mean to be able to run the same parameters in an updated model. These are actually two separate things and both are good but both are difficult. (a) means needing to be able to install any version of the models on a node at any moment. My sense is that (a) is probably not worth the effort if we provide sufficient information on how to replicate the results using the models locally. (It is worth being aware that this won't entirely satisfy users who don't have access to necessary private data). |
Thanks for your input @MattHJensen. It seems like (a) is a reach goal. Maybe we will be there someday, but with our current setup, it seems pretty difficult. Approach (b) is what we have now. We run the same parameters on updated versions of models. This is not a problem when models are updated for minor internal patches. However, for larger changes, the backwards compatibility required in this approach becomes pretty cumbersome. To accomplish this, you have to deal with a few challenges regarding the parameters: Technical Challenges
Qualitative Challenges
For now, I think our best approach is to go with (b), but I don't think we should work as hard to keep long-term (> 4-6 months) backwards compatibility w.r.t. viewing and editing the GUI parameters. I do think that we should give the user more documentation on the results page so that they have enough information to replicate the results. Now that all GUI input reforms are parsed into JSON files, we should display those on the results page. For results prior to adding this functionality (before 8/2017), we should provide a similar view of the parameters used to run the model. This last part is the most challenging part. One solution is to keep all of the current parameter fields and parse them dynamically as the results page is loaded. However, it doesn't make much sense to keep 200+ columns in a database for what is probably low usage relative to running new reforms. What could work is a two step solution where we do:
After working on issue #812, I feel more comfortable working on the database directly. I don't want to do this often because django discourages you from modifying the database directly and it just seems risky. However, for cases like this where we don't have many other choices, I'm willing to work on it directly. I'm open to other solutions and critiques on this plan. @GoFroggyRun @codekansas what are your thoughts? @MattHJensen Does this provide enough replicability? |
In PR #808, we discovered a bug involving how model parameters are saved. That sparked the following conversation:
@hdoupe said
@GoFroggyRun said:
@hdoupe said:
@hdoupe responded:
@GoFroggyRun said:
The text was updated successfully, but these errors were encountered: