Features for debugging/verbosity/logging to verify model/simulation logic
When constructing nontrivial simulation, understanding (the interplay between) your own inputs becomes difficult to do in (human) memory. Some features that help a user verify their inputs will be useful. Apart from #952, some dynamic stuff might need to be verified. Some that users have mentioned so far:
- check that the connection I put in are put in correctly.
- Required because they'll be derived from density maps, so you want to verify that your clever function does what you think it does.
- Starting from a mismatched trace, can I verify mech settings are set? Temperature is defaulted etc.
- are global properties registered? Set to neuron_defaults?
- Can I verify the morphology?
- Arbor-GUI should be very helpful here. A text dump of
morphology()would be nice too.
- Arbor-GUI should be very helpful here. A text dump of
- can I check discretisation?
To be clear: the request isn't to debug/log Arbor, but the models people construct. Maybe logging isn't even required, because most inputs are static, and where they are dynamic (e.g. the timestamps of events of a particular poisson_schedule) can be obtained by accessing events(). But in principle, there may be dynamic info that needs to be queried.
- We need a list of objects that could be more verbose upon request
- We could use https://github.com/gabime/spdlog
check that the connection I put in are put in correctly.
Depends on what is meant by 'correct', if this is referring to the target indices and how they relate to the actual locations on the cell, then #1394 could help. If it's referring to the validity of a connection, an exception will be thrown for invalid connections during model initialization. Otherwise, the users can always query recipe::connections_on to check the connection on any cell.
can I verify mech settings are set? Temperature is defaulted etc. are global properties registered? Set to neuron_defaults?
We don't have this, but it could be useful. We allow a handful of parameters to be set at different levels: globally for all cells in a network, locally on a cell, and locally on a region of the cell. Being able to verify what these parameters value are on a region would be useful.
Can I verify the morphology?
#1423 will provide a textual representation of a morphology.
can I check discretisation?
Check how? I think this may be a job for Arbor-GUI
Will update as I go
- Have read access to all our instructions. (User code isn't always a flat list of instructions, we have our own routines for generating instructions to pass to arbor and may have to validate the results)
- [ ]
decor- [ ] Show what paint and place instructions are on it
- [ ]
cable_cell- [ ] View thingified results
- [ ] The
cablesfunction is pretty useless without knowing which labels you can pass as arg 0. - It's a thing you can pass to arbor but you don't know anymore what exactly it is that you're passing around.
- [ ]
probe- [ ] Location (cable location, not just gid and index or label)
- [ ] What it probes
- [ ]
- Have access to the instantiated elements in arbor to see if arbor created what we think we asked it to create:
- [ ] List of
cable_cells - [ ] List of all
probes - [ ] List of CVs and their computed properties and all mechanisms/synapses at that CV
- [ ] List of