Affects Version/s: None
Fix Version/s: 2.0
Sprint:TVB release 2.0
TVB-C Task:8.2 Pipeline Integration
We want to keep neoforms as simple as possible, especially the UI params serialization and deserialization. Thus we are thinking a list of steps to be done in GUI for configuring a simulation will help us.
The middle part of the Simulation-Burst page should be iteratively populated, as the user goes through the flow of configuring a Simulation.
- first choose a connectivity DT, plus coupling and conduction speed (this would be the first form)
- once submitted the input data for this form, the values chosen by the user are collected on the server, in session, in a HasTraits object.
- The user will choose next if she wants a surface-based simulation or not, and based on this decision, we will analyze the decision on the server, and return as next form the one for choosing a RM plus Local Connectivity (if surface based sim).
- stimulus will be a third step, because we will need to know if it is surface based or not, to filter available Sensors. (for surface-based simulations both Region Stimulus and Surface Stimulus can be applied).
- next the use could see the combo box with the Model classes, plus the documentation text for each class, and 3 buttons to proceed: "manual fill params", "setup region model" or "surface setup model" (if surface based)
- if "manual fill" the subform for the currently selected Model class will appear next
- A following step should be selection of monitored SV, regardless of the previous choice
- Integrator list + subform based on choice
- integration step, as being a common param could be displayed at this level directly?
- if stohastic, maybe merge the next 2 levels in forms: "Aditive", "Multiplicative - Linear", "Multiplicative *" .... to avoid too many steps
- Bold will be the only one with extra config step
- Finally length and "Simulation name", and RUN
I advice a completely new Controller class (e.g. SimulatorController), for simplicity.
Open question: currently the way we use controllers in cherrypy is as Singletons. Is it possible to have easily a new controller instance for each user session. Otherwise, we should put in cherrypy session the "SimulationConfiguration(hasTraits)" object and retrieve it between requests.