diff --git a/README.md b/README.md index 909178c..15da5df 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ python -m pip install -r requirements.txt ``` To run the app, use: ``` -panel serve --show src/project_browser.py --static-files assets=./assets +panel serve --show src/project_browser.py --static-dirs assets=./assets ``` This will open a browser window with the app. Firefox/Chrome based browsers are supported. diff --git a/requirements.txt b/requirements.txt index 9d59086..8d60e0a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -panel==1.0.4 +panel==1.3.7 PyYAML==6.0 diff --git a/simtools/ANNarchy.yaml b/simtools/ANNarchy.yaml index b5ffa03..75fe9df 100644 --- a/simtools/ANNarchy.yaml +++ b/simtools/ANNarchy.yaml @@ -1,8 +1,8 @@ - name: ANNarchy -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model -- computing_scale: Single Machine, GPU +- processing_support: Single Machine, GPU - interface_language: Python, C++ - summary: > ANNarchy (Artificial Neural Networks architect) is a neural simulator designed for distributed rate-coded or spiking diff --git a/simtools/Arbor-GUI.yaml b/simtools/Arbor-GUI.yaml index a2501da..dc4d948 100644 --- a/simtools/Arbor-GUI.yaml +++ b/simtools/Arbor-GUI.yaml @@ -1,10 +1,7 @@ - name: Arbor GUI - features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, GPU - interface_language: GUI -- model_description_language: NMODL, NeuroML/LEMS, SWC, Neurolucida, ACC - summary: > Arbor GUI is a comprehensive tool for building single cell models using Arbor. It strives to be self-contained, fast, and easy to use. @@ -29,3 +26,4 @@ chat: https://gitter.im/arbor-sim/gui - relations: - name: Arbor + description: GUI for diff --git a/simtools/Arbor-Playground.yaml b/simtools/Arbor-Playground.yaml index 36ad7d7..2835eea 100644 --- a/simtools/Arbor-Playground.yaml +++ b/simtools/Arbor-Playground.yaml @@ -1,10 +1,7 @@ - name: Arbor Playground -- features: frontend, backend +- features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine - interface_language: GUI, Python -- model_description_language: - summary: Arbor Playground is an Emscripten + Pyodide port of Arbor and is meant to be a simple showcase of neural modelling in Arbor. - urls: homepage: https://arbor-sim.org/playground @@ -14,5 +11,3 @@ issue tracker: https://github.com/arbor-sim/playground/issues forum: https://github.com/arbor-sim/arbor/discussions chat: https://gitter.im/arbor-sim/community -- relations: - - name: Arbor diff --git a/simtools/Arbor.yaml b/simtools/Arbor.yaml index 61597ac..7bfbab6 100644 --- a/simtools/Arbor.yaml +++ b/simtools/Arbor.yaml @@ -1,10 +1,9 @@ - name: Arbor -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster, Supercomputer, GPU +- processing_support: Single Machine, Cluster, Supercomputer, GPU - interface_language: Python, C++ -- model_description_language: NMODL, NeuroML/LEMS, SWC, Neurolucida, ACC - summary: > Arbor is a high-performance library for computational neuroscience simulations with multi-compartment, morphologically-detailed cells, from single cell models to very large networks. Arbor is written from the ground up with many-cpu and gpu architectures in mind, to help neuroscientists effectively use contemporary and future HPC systems to meet their simulation needs. @@ -27,6 +26,3 @@ download: https://pypi.org/project/arbor/ forum: https://github.com/arbor-sim/arbor/discussions chat: https://gitter.im/arbor-sim/community -- relations: - - name: Arbor GUI - - name: Arbor Playground diff --git a/simtools/BMTK.yaml b/simtools/BMTK.yaml index 2b3a050..cf1401e 100644 --- a/simtools/BMTK.yaml +++ b/simtools/BMTK.yaml @@ -1,10 +1,7 @@ - name: Brain Modelling Toolkit (BMTK) - features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster - interface_language: Python -- model_description_language: SONATA - summary: > The Brain Modeling Toolkit (BMTK) is a python-based software package for building, simulating and analyzing large-scale neural network models. It supports the building and simulation of models of varying levels-of-resolution; from multi-compartment biophysically detailed networks, to point-neuron models, to filter-based models, and even population-level firing rate models. @@ -24,3 +21,6 @@ We encourage others to use the BMTK for their own research, and suggestions and contributions to the BMTK are welcome. - urls: homepage: https://alleninstitute.github.io/bmtk/ +- relations: + - name: SONATA + description: exports to diff --git a/simtools/BluePyOpt.yaml b/simtools/BluePyOpt.yaml index c9f23a6..8b8cad7 100644 --- a/simtools/BluePyOpt.yaml +++ b/simtools/BluePyOpt.yaml @@ -1,10 +1,7 @@ - name: BluePyOpt - features: tool - operating_system: Linux, MacOS, Windows -- biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine - interface_language: Python -- model_description_language: NeuroML/LEMS - summary: > The Blue Brain Python Optimisation Library (BluePyOpt) is an extensible framework for data-driven model parameter optimisation that wraps and standardises several existing open-source tools. @@ -17,3 +14,6 @@ - urls: homepage: https://bluepyopt.readthedocs.io +- relations: + - name: NeuroML + description: exports to diff --git a/simtools/Brain-Scaffold-Builder.yaml b/simtools/Brain-Scaffold-Builder.yaml index 89e1a26..4b5f45b 100644 --- a/simtools/Brain-Scaffold-Builder.yaml +++ b/simtools/Brain-Scaffold-Builder.yaml @@ -1,10 +1,7 @@ - name: Brain Scaffold Builder -- features: frontend, backend +- features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: #TODO -- computing_scale: Single Machine - interface_language: Python -- model_description_language: - summary: > The Brain Scaffold Builder (BSB) is a black box component framework for multiparadigm neural modelling: we provide structure, architecture and organization, and you provide the use-case specific parts of your model. In our framework, your model is described in a code-free configuration of components with parameters. @@ -18,3 +15,10 @@ - urls: homepage: https://bsb.readthedocs.io +- relations: + - name: Neuron + description: simulates with + - name: NEST + description: simulates with + - name: Arbor + description: simulates with diff --git a/simtools/Brain-dynamics-toolbox.yaml b/simtools/Brain-dynamics-toolbox.yaml index 37da3c8..f4f7adc 100644 --- a/simtools/Brain-dynamics-toolbox.yaml +++ b/simtools/Brain-dynamics-toolbox.yaml @@ -1,10 +1,9 @@ - name: Brain dynamics toolbox -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: MATLAB -- model_description_language: - summary: > The Brain Dynamics Toolbox is open-source Matlab software for simulating bespoke dynamical systems in neuroscience and beyond. Users define their system of equations as a custom matlab function. diff --git a/simtools/Brian.yaml b/simtools/Brian.yaml index 7ec19f0..86c8b9e 100644 --- a/simtools/Brian.yaml +++ b/simtools/Brian.yaml @@ -1,8 +1,8 @@ - name: Brian -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster +- processing_support: Single Machine, Cluster - interface_language: Python - summary: > Brian is a free, open source simulator for spiking neural networks. It is written in the Python programming language @@ -20,6 +20,3 @@ download: https://pypi.org/project/Brian2/ forum: https://brian.discourse.group chat: https://gitter.im/brian-team/brian2 -- relations: - - name: Brian2CUDA - - name: Brian2GeNN diff --git a/simtools/Brian2CUDA.yaml b/simtools/Brian2CUDA.yaml index 9576004..baba6c8 100644 --- a/simtools/Brian2CUDA.yaml +++ b/simtools/Brian2CUDA.yaml @@ -1,8 +1,8 @@ - name: Brian2CUDA -- features: backend +- features: simulator - operating_system: Linux, MacOS - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: GPU +- processing_support: GPU - interface_language: Python - summary: > Brian2CUDA is a Python package for simulating spiking neural networks on graphics processing units (GPUs). @@ -11,6 +11,7 @@ then executed on NVIDIA GPUs. - relations: - name: Brian + description: simulates - urls: documentation: https://brian2cuda.readthedocs.io installation: https://brian2cuda.readthedocs.io/en/latest/introduction/install.html diff --git a/simtools/Brian2GeNN.yaml b/simtools/Brian2GeNN.yaml index 3082ce5..f643ee5 100644 --- a/simtools/Brian2GeNN.yaml +++ b/simtools/Brian2GeNN.yaml @@ -1,15 +1,15 @@ - name: Brian2GeNN -- features: backend +- features: library - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model -- computing_scale: Single Machine, GPU - interface_language: Python - summary: > Brian2GeNN connects Brian 2 to the GeNN simulator, so that users can make use of GeNN GPU acceleration when developing their models in Brian, without requiring any technical knowledge about GPUs, C++ or GeNN. - relations: - name: Brian + description: converts from - name: GeNN + description: exports to - urls: documentation: https://brian2genn.readthedocs.io installation: https://brian2genn.readthedocs.io/en/stable/introduction/index.html#installing-the-brian2genn-interface diff --git a/simtools/CoreNEURON.yaml b/simtools/CoreNEURON.yaml deleted file mode 100644 index 71e921e..0000000 --- a/simtools/CoreNEURON.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- name: CoreNEURON -- features: backend -- operating_system: Linux, MacOS, Windows -- biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster, Supercomputer, GPU -- interface_language: Python, HOC, C, C++ -- model_description_language: NMODL, HOC -- summary: > - CoreNEURON is designed as a library within the NEURON simulator and can transparently handle all spiking network simulations including gap junction coupling with the fixed time step method. - In order to run a NEURON model with CoreNEURON, MOD files should be THREADSAFE; If random number generator is used then Random123 should be used instead of MCellRan4; POINTER variables need to be converted to BBCOREPOINTER. -- relations: - - name: Neuron -- urls: - homepage: https://github.com/neuronsimulator/nrn/tree/master/src/coreneuron diff --git a/simtools/DiPDE.yaml b/simtools/DiPDE.yaml index f460b5b..163d3aa 100644 --- a/simtools/DiPDE.yaml +++ b/simtools/DiPDE.yaml @@ -1,10 +1,9 @@ - name: DiPDE -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: Python -- model_description_language: - summary: > DiPDE (dipde) is a simulation platform for numerically solving the time evolution of coupled networks of neuronal populations. Instead of solving the subthreshold dynamics of individual model leaky-integrate-and-fire (LIF) neurons, dipde models the voltage distribution of a population of neurons with a single population density equation. diff --git a/simtools/Eden.yaml b/simtools/Eden.yaml index 474228d..92dff0b 100644 --- a/simtools/Eden.yaml +++ b/simtools/Eden.yaml @@ -1,14 +1,11 @@ - name: EDEN -- features: backend +- features: simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster +- processing_support: Single Machine, Cluster - interface_language: CLI, Python -- model_description_language: NeuroML/LEMS - summary: > Extensible Dynamics Engine for Networks (EDEN) is a high-performance NeuroML-based neural simulator. -- relations: - - name: NeuroML - urls: source: https://gitlab.com/c7859/neurocomputing-lab/Inferior_OliveEMC/eden installation: https://gitlab.com/c7859/neurocomputing-lab/Inferior_OliveEMC/eden/-/tree/main#installing diff --git a/simtools/GeNN.yaml b/simtools/GeNN.yaml index d549dfe..3ad6dd4 100644 --- a/simtools/GeNN.yaml +++ b/simtools/GeNN.yaml @@ -1,13 +1,11 @@ - name: GeNN -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model -- computing_scale: Single Machine, GPU +- processing_support: Single Machine, GPU - interface_language: Python, C++ - summary: > GeNN is a GPU enhanced Neuronal Network simulation environment based on NVIDIA CUDA technology. -- relations: - - name: Brian2GeNN - urls: homepage: https://genn-team.github.io documentation: https://genn-team.github.io/genn/documentation/4/html/index.html diff --git a/simtools/Genesis.yaml b/simtools/Genesis.yaml index 600e778..7a3fc5f 100644 --- a/simtools/Genesis.yaml +++ b/simtools/Genesis.yaml @@ -1,10 +1,9 @@ - name: GEneral NEural SImulation System (GENESIS) -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: GUI, C -- model_description_language: - summary: > GENESIS (the GEneral NEural SImulation System) is a general purpose simululation platform that was developed to support the simulation of neural systems ranging from subcellular components and biochemical reactions to complex models of single neurons, simulations of large networks, and system-level models. - urls: diff --git a/simtools/Geppeto.yaml b/simtools/Geppeto.yaml index c7c29d5..bf9b09e 100644 --- a/simtools/Geppeto.yaml +++ b/simtools/Geppeto.yaml @@ -1,10 +1,7 @@ - name: Geppeto - features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: #TODO -- computing_scale: #TODO - interface_language: Python, Javascript -- model_description_language: #TODO - summary: > Geppetto is a web-based visualisation and simulation platform to build neuroscience software applications. Reuse best practices, best compomnents, best design. diff --git a/simtools/LFPy.yaml b/simtools/LFPy.yaml index 009a657..71a5889 100644 --- a/simtools/LFPy.yaml +++ b/simtools/LFPy.yaml @@ -1,10 +1,7 @@ - name: LFPy - features: tool - operating_system: Linux, MacOS, Windows -- biological_level: Multi-Compartment Model #TODO -- computing_scale: Single Machine - interface_language: Python -- model_description_language: NMODL - summary: > LFPy is a Python module for calculation of extracellular potentials from multicompartment neuron models. It relies on the NEURON simulator and uses the Python interface it provides. @@ -15,3 +12,4 @@ download: https://pypi.org/project/LFPy/ - relations: - name: Neuron + description: simulates with diff --git a/simtools/MOOSE.yaml b/simtools/MOOSE.yaml index b063a1d..37905e6 100644 --- a/simtools/MOOSE.yaml +++ b/simtools/MOOSE.yaml @@ -1,11 +1,9 @@ - name: MOOSE -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster, Supercomputer, GPU -- computing_scale: Single Machine +- processing_support: Single Machine, Cluster, Supercomputer, GPU - interface_language: Python, GUI, C++ -- model_description_language: NMODL, NeuroML/LEMS, SBML - summary: > MOOSE is the Multiscale Object-Oriented Simulation Environment. It is designed to simulate neural systems ranging from subcellular components and biochemical reactions to complex models of single neurons, circuits, and large networks. @@ -21,3 +19,4 @@ documentation: https://moose.ncbs.res.in/readthedocs/index.html - relations: - name: NeuroML + description: can import, can export to diff --git a/simtools/MUSIC-(MUlti-SImulation-Coordinator).yaml b/simtools/MUSIC-(MUlti-SImulation-Coordinator).yaml index 29ae1ca..7218bfe 100644 --- a/simtools/MUSIC-(MUlti-SImulation-Coordinator).yaml +++ b/simtools/MUSIC-(MUlti-SImulation-Coordinator).yaml @@ -1,10 +1,7 @@ - name: MUSIC (MUlti-SImulation Coordinator) -- features: standard +- features: API - operating_system: Linux, MacOS -- biological_level: #TODO -- computing_scale: Cluster - interface_language: C++ -- model_description_language: - summary: > MUSIC is an API allowing large scale neuron simulators using MPI internally to exchange data during runtime. MUSIC provides mechanisms to transfer massive amounts of event information and continuous values from one parallel application to another. @@ -13,3 +10,6 @@ - urls: homepage: https://github.com/INCF/MUSIC source: https://github.com/INCF/MUSIC +- relations: + - name: NEST + description: is used by diff --git a/simtools/Nest-Desktop.yaml b/simtools/Nest-Desktop.yaml index f4814e0..aef45ba 100644 --- a/simtools/Nest-Desktop.yaml +++ b/simtools/Nest-Desktop.yaml @@ -1,10 +1,7 @@ - name: NEST Desktop - features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model -- computing_scale: Single Machine, Cluster, Supercomputer - interface_language: GUI -- model_description_language: #TODO - summary: > NEST Desktop is a web-based GUI application for NEST Simulator, an advanced simulation tool for computational neuroscience. NEST Desktop enables to construct a neuronal network model graphically and to perform a simulation experiment. @@ -15,3 +12,4 @@ source: https://github.com/nest-desktop/nest-desktop - relations: - name: NEST + description: is GUI for diff --git a/simtools/Nest-GPU.yaml b/simtools/Nest-GPU.yaml index ee5a2fe..da94dcf 100644 --- a/simtools/Nest-GPU.yaml +++ b/simtools/Nest-GPU.yaml @@ -1,12 +1,14 @@ - name: NEST GPU -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux - biological_level: Population Model, Single-Compartment (Simple) Model -- computing_scale: GPU +- processing_support: GPU - interface_language: Python, C++, C -- model_description_language: #TODO - summary: > NEST GPU is a GPU-MPI library for simulation of large-scale networks of spiking neurons. + + With this library it is possible to run relatively fast simulations of large-scale networks of spiking neurons employing GPUs. For instance, on a single NVIDIA GeForce RTX 2080 Ti GPU board it is possible to simulate the activity of 1 million multisynapse AdEx neurons with 1000 synapse per neuron in little more than 70 seconds per second of neural activity using the fifth-order Runge-Kutta method with adaptive stepsize as differential equations solver. The MPI communication is also very efficient. The Python interface is very similar to that of the NEST simulator: the most used commands are practically identical, dictionaries are used to define neurons, connections and synapsis properties in the same way. + - urls: homepage: https://nest-gpu.readthedocs.io documentation: https://nest-gpu.readthedocs.io @@ -16,3 +18,4 @@ issue tracker: https://github.com/nest/nest-gpu/issues - relations: - name: NEST + description: has similar interface to # https://nest-gpu.readthedocs.io/en/latest/guides/differences_nest-gpu_nest.html diff --git a/simtools/Nest.yaml b/simtools/Nest.yaml index eaff503..4d92213 100644 --- a/simtools/Nest.yaml +++ b/simtools/Nest.yaml @@ -1,10 +1,9 @@ - name: NEST -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows #TODO: Python interface can be used in Windows, not the rest -- biological_level: Population Model, Single-Compartment (Simple) Model -- computing_scale: Single Machine, Cluster, Supercomputer +- biological_level: Population Model, Single-Compartment (Simple) Model, +- processing_support: Single Machine, Cluster, Supercomputer - interface_language: Python, CLI, C++ -- model_description_language: NestML - summary: > NEST is a simulator for spiking neural network models that focuses on the dynamics, size and structure of neural systems rather than on the exact morphology of individual neurons. - urls: @@ -17,6 +16,5 @@ issue tracker: https://nest-simulator.readthedocs.io/en/stable/developer_space/index.html#contribute forum: https://nest-simulator.readthedocs.io/en/stable/developer_space/guidelines/mailing_list_guidelines.html#mail-guidelines - relations: - - name: NEST GPU - - name: NEST Desktop - - name: NESTML + - name: SONATA + description: can import diff --git a/simtools/NestML.yaml b/simtools/NestML.yaml index 43e4f04..42321e5 100644 --- a/simtools/NestML.yaml +++ b/simtools/NestML.yaml @@ -1,10 +1,7 @@ - name: NESTML - features: standard - operating_system: Linux, MacOS, Windows -- biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model -- computing_scale: Single Machine - interface_language: Python -- model_description_language: NESTML - summary: > NESTML is a domain-specific language for neuron and synapse models. These dynamical models can be used in simulations of brain activity on several platforms, in particular the NEST Simulator. NESTML combines an easy to understand, yet powerful syntax; a flexible processing toolchain, written in Python; and good simulation performance by means of code generation (C++ for NEST Simulator). - urls: @@ -18,3 +15,4 @@ forum: https://nest-simulator.readthedocs.io/en/stable/developer_space/guidelines/mailing_list_guidelines.html#mail-guidelines - relations: - name: NEST + description: simulates with diff --git a/simtools/NetPyNE.yaml b/simtools/NetPyNE.yaml index 335a14f..56f81df 100644 --- a/simtools/NetPyNE.yaml +++ b/simtools/NetPyNE.yaml @@ -1,8 +1,6 @@ - name: NetPyNE - features: frontend - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster - interface_language: Python, GUI - model_description_language: NeuroML/LEMS - summary: > @@ -16,4 +14,6 @@ documentation: http://www.netpyne.org/user_documentation.html - relations: - name: Neuron + description: simulates with - name: NeuroML + description: imports from diff --git a/simtools/NeuroML.yaml b/simtools/NeuroML.yaml index 0eb058c..9acd359 100644 --- a/simtools/NeuroML.yaml +++ b/simtools/NeuroML.yaml @@ -1,8 +1,6 @@ - name: NeuroML - features: standard - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine - interface_language: Python, XML, GUI - model_description_language: NeuroML/LEMS - summary: > @@ -33,9 +31,16 @@ download: https://docs.neuroml.org/Userdocs/Software/Software.html - relations: - name: Neuron + description: exports to, imports from, can be imported by - name: NetPyNE + description: exports to, can be imported by - name: c302 + description: is used by - name: EDEN + description: can be simulated by - name: Brian + description: exports to - name: PyNN + description: interoperates with - name: Arbor + description: exports to, imports from, can be imported by diff --git a/simtools/NeuroRD.yaml b/simtools/NeuroRD.yaml index 4fb89c1..92309c8 100644 --- a/simtools/NeuroRD.yaml +++ b/simtools/NeuroRD.yaml @@ -1,10 +1,9 @@ - name: NeuroRD -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: Java, CLI -- model_description_language: XML - summary: > NeuroRD is a computationally efficient, stochastic reaction-diffusion simulator (pronounced NeurRDS) used mostly for simulating neuronal signaling pathways. This is a Java program which runs on any platform. diff --git a/simtools/Neuron.yaml b/simtools/Neuron.yaml index e0e8978..a816537 100644 --- a/simtools/Neuron.yaml +++ b/simtools/Neuron.yaml @@ -1,8 +1,8 @@ - name: Neuron -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster, Supercomputer +- processing_support: Single Machine, Cluster, Supercomputer - interface_language: Python, HOC, C, C++ - model_description_language: NMODL, HOC - summary: > @@ -17,5 +17,8 @@ forum: https://www.neuron.yale.edu/phpBB/ - relations: - name: NeuroML + description: is used by, exports to - name: NetPyNE + description: is used by - name: LFPy + description: is used by diff --git a/simtools/NeuronC.yaml b/simtools/NeuronC.yaml index 84a90a1..ea47d2e 100644 --- a/simtools/NeuronC.yaml +++ b/simtools/NeuronC.yaml @@ -1,8 +1,8 @@ - name: NeuronC -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS - biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: C - model_description_language: NeuronC Language - summary: > diff --git a/simtools/PyNN.yaml b/simtools/PyNN.yaml index 180243c..b657d4a 100644 --- a/simtools/PyNN.yaml +++ b/simtools/PyNN.yaml @@ -1,8 +1,6 @@ - name: PyNN - features: frontend, standard - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model -- computing_scale: #TODO - interface_language: Python - model_description_language: PyNN - summary: > @@ -29,6 +27,10 @@ issue tracker: https://github.com/NeuralEnsemble/PyNN/issues - relations: - name: Neuron + description: simulates with - name: NEST + description: simulates with - name: Brian + description: simulates with - name: NeuroML + description: interoperates with diff --git a/simtools/PyNeuroML.yaml b/simtools/PyNeuroML.yaml new file mode 100644 index 0000000..a2dcd4b --- /dev/null +++ b/simtools/PyNeuroML.yaml @@ -0,0 +1,27 @@ +- name: PyNeuroML +- features: tool +- operating_system: Linux, MacOS, Windows +- interface_language: Python, GUI +- model_description_language: NeuroML/LEMS +- summary: > + A single package in Python unifying scripts and modules for reading, writing, simulating and analysing NeuroML2/LEMS models. + +- urls: + homepage: https://neuroml.org + documentation: https://docs.neuroml.org + tutorial: https://docs.neuroml.org/Userdocs/GettingStarted.html + source: https://github.com/NeuroML/pyNeuroML + download: https://docs.neuroml.org/Userdocs/Software/pyNeuroML.html +- relations: + - name: NeuroML + description: is Python package for + - name: libNeuroML + description: uses + - name: Neuron + description: simulates with + - name: NetPyNE + description: simulates with + - name: EDEN + description: simulates with + - name: Brian + description: simulates with diff --git a/simtools/README.md b/simtools/README.md index 15edf59..0db58b2 100644 --- a/simtools/README.md +++ b/simtools/README.md @@ -10,10 +10,10 @@ shown below are obviously example values): ```yaml - name: Simulator Name -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine, Cluster, Supercomputer, GPU +- processing_support: Single Machine, Cluster, Supercomputer, GPU - interface_language: Python - model_description_language: NeuroML/LEMS - summary: This simulator is very good. @@ -22,22 +22,26 @@ shown below are obviously example values): email: contact@example.com - relations: - name: Another simulator + description: exports to - name: Yet another simulator + description: imports from ``` -The fields `features`, `operating_system`, `biological_level`, `computing_scale`, -`interface_language`, and `model_description_language` are comma-separated -strings (i.e. not yaml lists). +The fields `features`, `operating_system`, `biological_level`, +`processing_support`, `interface_language`, and `model_description_language` +are comma-separated strings (i.e. not yaml lists). The `features` fields should contain one or more of the following values: `frontend` (for -interfaces to simulation engines), `backend` (for simulation engines), `standard` +interfaces to simulation engines), `simulator` (for simulation engines), `standard` (for interoperability standards, APIs, etc.), or `tool` (for a general tool). +Only tools that are simulators should contain the `biological_level` and +`processing_support` fields. -The `urls` field contains entries that will be displayed as button -labels. The following names are recognized: `documentation`, `installation`, `tutorial`, +The `urls` field contains entries that will be displayed as button labels. The +following names are recognized: `documentation`, `installation`, `tutorial`, `examples`, `email`, `chat`, `forum`, `issue tracker`, `source`, `download`. -The `email` field should refer to an email address (which will be converted into a -`mailto:` link), all other fields should give a full URL. +The `email` field should refer to an email address (which will be converted +into a `mailto:` link), all other fields should give a full URL. -Relations are a list of other simulators that are related to the current -simulator. The mentioned `name` needs to match the `name` of another simulator -in the directory. +Relations are a relationships between tools. The mentioned `name` needs to +match the `name` of another simulator in the directory. The `description` of +the relationship is currently a free-form string. diff --git a/simtools/ReMoto.yaml b/simtools/ReMoto.yaml index 6786551..1086931 100644 --- a/simtools/ReMoto.yaml +++ b/simtools/ReMoto.yaml @@ -1,10 +1,9 @@ - name: ReMoto -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model #TODO -- computing_scale: Single Machine -- interface_language: Java, CLI, Fortran -- model_description_language: +- processing_support: Single Machine +- interface_language: Web - summary: > ReMoto was originally developed as a web-based neuronal simulation system, intended for studying spinal cord neuronal networks responsible for muscle control. The simulated networks are affected by descending drive, afferent drive, and electrical nerve stimulation. @@ -13,3 +12,4 @@ The simulator should be helpful in activities such as interpretation of results obtained from neurophysiological experiments in humans or mammals, proposal of hypothesis or testing models or theories on neuronal dynamics or neuronal network processing, validation of experimental protocols, and teaching neurophysiology. - urls: homepage: http://remoto.leb.usp.br + tutorial: http://remoto.leb.usp.br/remoto/Learning/learning.html diff --git a/simtools/SNNAP.yaml b/simtools/SNNAP.yaml index 13dcef3..eff0d74 100644 --- a/simtools/SNNAP.yaml +++ b/simtools/SNNAP.yaml @@ -1,10 +1,9 @@ - name: SNNAP -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine +- processing_support: Single Machine - interface_language: Java, GUI -- model_description_language: '' - summary: > Simulator for Neural Networks and Action Potentials (SNNAP) is a tool for rapid development and simulation of realistic models of single neurons and neural networks. It includes mathematical descriptions of ion currents and intracellular second messengers and ions. @@ -23,3 +22,4 @@ - Modular organizations of input files. - urls: homepage: https://med.uth.edu/nba/snnap/ + tutorial: https://med.uth.edu/nba/snnap/snnap-tutorials/ diff --git a/simtools/SONATA.yaml b/simtools/SONATA.yaml new file mode 100644 index 0000000..4acc2b6 --- /dev/null +++ b/simtools/SONATA.yaml @@ -0,0 +1,19 @@ +- name: SONATA +- features: standard +- operating_system: Linux, MacOS, Windows +- interface_language: Python, C++ +- model_description_language: SONATA +- summary: > + The SONATA Data Format is a Scalable Open Data Format for multiscale neuronal network models and simulation output, jointly developed by the Allen Institute for Brain Science (AIBS) and the Blue Brain Project (BBP) of the École polytechnique fédérale de Lausanne (EPFL). + The SONATA Data Format provides: + + - Facilities for representing nodes (cells) and edges (synapses/junctions) of a network. It uses table-based data structures, hdf5 and csv, to represent nodes, edges and their respective properties. Furthermore indexing procedures are specified to enable fast, parallelizable, and efficient partial lookup of individual nodes and edges. The use of hdf5 provides efficiency both in file size and IO time. , The format includes specific properties and naming conventions, but also allows modelers to extend node and edge model properties as they desire, to ensure models can be used with a variety of simulation frameworks and use cases. + - A JSON-based file format for configuring simulations, including specifying variables to record from, and stimuli to apply. + - A systematic schema for describing simulation output/reports making it easy for users to exchange their simulation output data, and moreover the underlying hdf5 based format permits efficient storage of variables such as spike times, membrane potential, and Ca2+ concentration. + +- urls: + homepage: https://github.com/BlueBrain/sonata + source: https://github.com/BlueBrain/sonata +- relations: + - name: NeuroML + description: interoperates with diff --git a/simtools/Steps.yaml b/simtools/Steps.yaml index 1924c08..c138b8a 100644 --- a/simtools/Steps.yaml +++ b/simtools/Steps.yaml @@ -1,10 +1,9 @@ - name: Steps -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows - biological_level: Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model #TODO -- computing_scale: Single Machine, GPU +- processing_support: Single Machine, GPU - interface_language: Python, C, C++ -- model_description_language: #TODO - summary: > STEPS is a package for exact stochastic simulation of reaction-diffusion systems in arbitrarily complex 3D geometries. Our core simulation algorithm is an implementation of Gillespie's SSA, extended to deal with diffusion of molecules over the elements of a 3D tetrahedral mesh. diff --git a/simtools/TheVirtualBrain-(TVB).yaml b/simtools/TheVirtualBrain-(TVB).yaml index 33e394b..1f4ec3f 100644 --- a/simtools/TheVirtualBrain-(TVB).yaml +++ b/simtools/TheVirtualBrain-(TVB).yaml @@ -1,10 +1,9 @@ - name: TheVirtualBrain (TVB) -- features: frontend, backend +- features: frontend, simulator - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model #TODO +- biological_level: Population Model - interface_language: Python, GUI -- model_description_language: -- computing_scale: Single Machine, Cluster, Supercomputer +- processing_support: Single Machine, Cluster, Supercomputer - summary: > Simulating the human brain is the holy grail of neuroscience - offering a pioneering tool for understanding how our brain works and how to deal with its disorders like stroke, epilepsy or neurodegenerative diseases like Alzheimer's or Parkinson's. @@ -12,7 +11,7 @@ While large-scale research initiatives simulate neurons and small brain regions at the cellular level on massively parallel hardware, they are still years away from clinical applications. - The Virtual Brain (TVB) takes a different approach and reduces complexity on the micro level to attain the macro organization: a TVB model of a patient's brain generates sufficiently accurate EEG, MEG, BOLD and SEEG signals by reducing the complexity millionfold through methods from statistical physics. + The Virtual Brain (TVB) takes a different approach and reduces complexity on the micro level to attain the macro organization. A TVB model of a patient's brain generates sufficiently accurate EEG, MEG, BOLD and SEEG signals by reducing the complexity millionfold through methods from statistical physics. The key is TVB’s hybrid approach of merging individual anatomy from brain imaging data with state-of-the-art mathematical modeling. - urls: homepage: https://www.thevirtualbrain.org/ diff --git a/simtools/c302.yaml b/simtools/c302.yaml index 4db301e..fb1eb25 100644 --- a/simtools/c302.yaml +++ b/simtools/c302.yaml @@ -1,10 +1,7 @@ - name: c302 -- features: frontend +- features: API, library - operating_system: Linux, MacOS, Windows -- biological_level: Population Model, Single-Compartment (Simple) Model, Single-Compartment (Complex) Model, Multi-Compartment Model -- computing_scale: Single Machine - interface_language: Python -- model_description_language: NeuroML/LEMS - summary: > c302 is a framework for generating network models in NeuroML 2 based on C. elegans connectivity data. It is primarily intended as a way to generate neuronal networks at multiple levels of detail for the [OpenWorm](http://www.openworm.org/) project. @@ -13,3 +10,4 @@ source: https://github.com/openworm/c302 - relations: - name: NeuroML + description: exports to diff --git a/simtools/libNeuroML.yaml b/simtools/libNeuroML.yaml new file mode 100644 index 0000000..dd46a48 --- /dev/null +++ b/simtools/libNeuroML.yaml @@ -0,0 +1,19 @@ +- name: libNeuroML +- features: API +- operating_system: Linux, MacOS, Windows +- interface_language: Python +- model_description_language: NeuroML/LEMS +- summary: > + Python API for working with NeuroML models + +- urls: + homepage: https://neuroml.org + documentation: https://docs.neuroml.org + tutorial: https://docs.neuroml.org/Userdocs/GettingStarted.html + source: https://github.com/NeuralEnsemble/libNeuroML + download: https://docs.neuroml.org/Userdocs/Software/libNeuroML.html +- relations: + - name: NeuroML + description: is Python API for + - name: PyNeuroML + description: is used by diff --git a/simtools/nrn-patch.yaml b/simtools/nrn-patch.yaml index 97aad0c..ea01c13 100644 --- a/simtools/nrn-patch.yaml +++ b/simtools/nrn-patch.yaml @@ -1,13 +1,11 @@ - name: nrn-patch - features: frontend -- operating_system: #TODO -- biological_level: #TODO -- computing_scale: #TODO +- operating_system: Windows, MacOS, Linux - interface_language: Python -- model_description_language: #TODO - summary: A Pythonic object-oriented drop-in replacement for the Python interface to NEURON. - relations: - name: Neuron + description: is Python API for - urls: homepage: https://github.com/dbbs-lab/patch diff --git a/src/data.py b/src/data.py index 0fab098..5480322 100644 --- a/src/data.py +++ b/src/data.py @@ -51,28 +51,37 @@ def parse_file(filename): content_dict["features"] = string_to_list(content_dict["features"]) # Operating System - assert "operating_system" in content_dict, "no operating_system entry" - content_dict["operating_system"] = string_to_list(content_dict["operating_system"]) + if "simulator" in content_dict["features"]: + assert "operating_system" in content_dict, "no operating_system entry" + content_dict["operating_system"] = string_to_list( + content_dict.get("operating_system", "") + ) # Biological level - assert "biological_level" in content_dict, "no biological level" - content_dict["biological_level"] = string_to_list(content_dict["biological_level"]) + if "simulator" in content_dict["features"]: + assert "biological_level" in content_dict, "no biological level" + content_dict["biological_level"] = string_to_list( + content_dict.get("biological_level", "") + ) # Computing scale - assert "computing_scale" in content_dict, "no computing scale" - content_dict["computing_scale"] = string_to_list(content_dict["computing_scale"]) + if "simulator" in content_dict["features"]: + assert "processing_support" in content_dict, "no processing support" + content_dict["processing_support"] = string_to_list( + content_dict.get("processing_support", "") + ) # interface language - assert "interface_language" in content_dict, "no interface language" + if "simulator" in content_dict["features"]: + assert "interface_language" in content_dict, "no interface language" content_dict["interface_language"] = string_to_list( - content_dict["interface_language"] + content_dict.get("interface_language", "") ) - # Model description language + # model description language content_dict["model_description_language"] = string_to_list( content_dict.get("model_description_language", "") ) - return content_dict @@ -102,7 +111,7 @@ def unique_entries( fields=( "operating_system", "biological_level", - "computing_scale", + "processing_support", "interface_language", "model_description_language", ), @@ -110,6 +119,8 @@ def unique_entries( unique = {f: set() for f in fields} for sim in simulators.values(): for f in fields: + if sim.get(f, "") is None: + print(sim) unique[f] |= set(sim.get(f, set())) unique = {f: sorted(unique[f]) for f in fields} return unique diff --git a/src/project_browser.py b/src/project_browser.py index ba925e6..be543e0 100644 --- a/src/project_browser.py +++ b/src/project_browser.py @@ -154,7 +154,7 @@ class SimSelect: "operating_system": "Operating systems", "interface_language": "Interface languages", "biological_level": "Model type", - "computing_scale": "Computing power", + "processing_support": "Processing support", "model_description_language": "Model description language", } @@ -384,7 +384,7 @@ def __init__(self): stylesheets=["/assets/buttons.css"], ) ) - self.update_cards(None) + for simulator in self.simulators: simulator.on_click(self.simulator_details) self.detail_view = pn.Row( @@ -394,6 +394,8 @@ def __init__(self): self.template.main.append(self.layout) self.template.main.append(self.detail_view) + self.update_cards(None) + # footer self.template.sidebar.append(pn.layout.Divider()) self.footer = pn.Row(scroll=False) diff --git a/tests/validate_data.py b/tests/validate_data.py index 589753d..7202dd9 100644 --- a/tests/validate_data.py +++ b/tests/validate_data.py @@ -23,10 +23,11 @@ "features": And( str, lambda s: all( - ss.strip() in ["frontend", "backend", "standard", "tool"] + ss.strip() + in ["frontend", "simulator", "standard", "tool", "library", "API"] for ss in s.split(",") ), - error="features must be a comma-separated list of 'frontend', 'backend', 'standard', 'tool'", + error="features must be a comma-separated list of 'frontend', 'simulator', 'standard', 'tool', 'library', 'API'", ), }, {"operating_system": Or(str, None)}, @@ -34,7 +35,7 @@ "biological_level": Or(str, None), }, { - "computing_scale": Or(str, None), + "processing_support": Or(str, None), }, { "interface_language": Or(str, None), @@ -66,7 +67,7 @@ ) } }, - {Optional("relations"): [{"name": str}]}, + {Optional("relations"): [{"name": str, "description": str}]}, ] )