romain.caze wrote:the NEURON GUI despite its richness is underused
That's probably a result of lack of user knowledge more than anything else. Code tends to be better documented than GUI tools because writing code means exercising declarative knowledge, and declarative knowledge is inherently easy to communicate in words. Using GUI tools involves exercising procedural knowledge, description of which is hard to create without being either too concise or mindnumbingly detailed.
many new tools are developed without it
Could you please name three that are (or should be) widely known? Maybe we should start building a list of these.
Great for creating new tools. I'm not so sure it can be used to replicate the functionality of many existing tools, or whether the effort would be worth it. My particular favorites--which would be difficult to replicate or do without--are the Channel Builder, CellBuider, Impedance tools, Network Builder, Linear Circuit Builder, Model View, Import3D, Variable Step Control, and Parallel Computing tool. And I guess also the Print and File Window Manager.
Apropos of which, here's a challenge for any who wish to accept it: use any toolkit with Python or any other programming language to replicate the functionality of one of the most underrated tools--NEURON's built-in, Interviews-based Graph class. Specifically, create a new object class whose instances can display plots of one or more dependent variables against an independent variable, in the course of a simulation, and replicates the following features of the Graph class, which are accessible either by mousing around and clicking on the graph or by executing code:
Crosshair
Plot what? (which displays a browsable list of variable names and object classes that may have plottable attributes)
Pick vector
Color brush
Axis type
Keep lines
Erase
Move text
Change text
Delete
View = plot
Set view
Zoom in and out
New view
Translate
Scene = view
For the sake of fairness, that list omits about 10% of the Graph class's features, on the premise that "90% of the job takes 10% of the effort." That should make the job 90% easier! One more requirement: after a user customizes an instance of this new class, the user must be able to, at the click of a mouse button, export a text file that contains statements that, when executed, will recreate a duplicate instance with all customizations intact.
An example: there are many useful tools already existing in the GUI, but I spent quite an extensive time of my life fighting with the pointprocess manager. The number of synapses to be placed correlates exponentially, however, with the time (I) spend on this menu.
Avid GUI user that I am, I wouldn't imagine trying to use more than a very few PointProcessManagers with any model. Indeed, I can't recall ever using more than 4 instances of the PointProcessManager at one time. The PointProcessGroupManager
(NEURON Main Menu / Tools / Point Processes / Managers / Point Group)
is only a bit less cumbersome. Try to imagine painting a scene at a park using lots and lots of little pastel dots, one dot at a time . . . oh, somebody did that already.
A completely different metaphor is required. My opinion is that GUI-based direct management of N individual items becomes very tedious when N exceeds about 5. At that point I usually steal reusable code from the GUI, and switch to algorithms and object oriented programming using lists.