Open stiber opened 3 years ago
This umbrella issue needs to be broken down into actionable tasks.
Some questions to answer related to this:
Here is the start of this process:
Also includes #141
These whiteboard images might be relevant:
This is based on the discussion - why do we need recorder class reengineering. The overview of chain of commands
It is possible to break down this issue into a sequence of steps.
First step: migrate variable registration from the Recorder to other components
Based on the plan shown in the picture above, issue 240 can be broken down into a sequence of smaller issues. Here is the breakdown:
Part 1: Reengineering XmlRecorder (First, we work on the XmlRecorder)
1. Issue-452: Transitioning Variable Registration to Enable XML Recorder Recording of All Events for a Single/Random Neuron through EventBuffer here This initial step focuses on migrating the variable registration functionality from the Recorder class to the appropriate variable owner classes. You can find more details about this issue .
2. Issue-478: XmlRecorder records all events for all neurons instead of a single neuron here The goal here is to modify the Xml Recorder class to create a variable table, which will enable recording of events for all neurons.
3. Issue-502: Create a recordable template for EventBuffer class and modify the code in the XmlRecorder here The purpose of this issue is to create a recordable template for the EventBuffer class and modify the code in the XmlRecorder so that it can work with Recordable. This modification is necessary because the EventBuffer stores uint64_t, and if there is a need for the simulator to store other types of data such as double, the code needs to be updated accordingly.
4. Issue-503: Add an interface for recording constant variables such as X, Y location in the XmlRecorder here This issue involves adding an interface to the XmlRecorder so that it can record constant variables, such as X and Y location. These constant variables only need to be recorded once because these value do not change as the simulation runs.
5. Issue-504: Add an additional subclass/concrete class to the recordable and enable it working with the XmlRecorder here The objective of this issue is to add a new subclass/concrete class to the recordable framework so that the XmlRecorder can work with it effectively.
Added umbrella issue #535 for HDF5 recorders.
One possible solution if we want to use template in the Recorder
currently XMLRecorder UML class diagram
Right now, the Recorder classes are implemented specially for each model. However, the fundamental operation of a recorder is as follows:
Can we do something like the ParameterManager, where we register variables with a recorder object, providing whatever information is needed at that time (variable name as a string, variable update interval, variable dimensions)? The recorder would have a method that is periodically called to buffer/output variable contents. Using the above scheme, perhaps we would no longer need to provide a list of vertices to attach recorders to, since recording would be at a variable basis and so could be completely generic (we could record edge variables, for instance).