MetaCell / NetPyNE-UI

NetPyNE User interface
23 stars 7 forks source link

Docker Automated buil Build Status Codefresh build status

Screenshot

This repository hosts the User Interface for NetPyNE. NetPyNE is a python package to facilitate the development, parallel simulation and analysis of biological neuronal networks using the NEURON simulator.

Install NetPyNE User Interface

Select one option to install the NetPyNE User Interface.

If you are familiar with NEURON and have already NEURON installed in your machine you can proceed using Pip. If you want a container which comes with everything preinstalled including NEURON you can use the Docker image. Using docker you will still be able to mount a local folder which will be your NetPyNE workspace. If you don't have docker installed in your system and you have had troubles installing it you can opt for the Virtual Machine installation.

Pip Docker Virtual Box

Install NetPyNE User Interface from sources (for developers)

Python Dependencies

We recommend the use of a new python 3.7 virtual environment. Currently, NetPyNE-UI only supports Python 3.7, but that can change in the future.

For NetPyNE-UI, the preferred way of creating a virtual env is to pass by conda/miniconda or mamba/micromamba. The pyenv tool can be also used, but it requires to be compiled with some special options to have NEURON running properly the simulation using nrniv. The reason behind this is that NEURON is distributed as a Python wheel with a specific option which force NEURON to look for the CPython dynamic lib. However, pyenv by default installs the static version of the CPython lib, resulting in nrniv -python not being able to run.

The way of creating the virtualenv using (mini)conda is the following

conda create -n netpyne python=3.7
conda activate netpyne

Here is how to create the virtualenv using (micro)mamba

mamba create -n netpyne python=3.7 -c conda-forge
mamba activate netpyne

You can also directly create a virtualenv using your python3 executable, obviously if it's the 3.7 version.

python3 -m venv npenv
source npenv/bin/activate

If you want to use anyway pyenv, here is how to properly create the virtualenv and activate it.

env PYTHON_CONFIGURE_OPTS="--enable-shared"  pyenv install --verbose 3.7.17
pyenv virtualenv 3.7.17 netpyne
pyenv shell netpyne

Run install script

When you are in your virtualenv, here is how you can install the "basic" version of NetPyNE-UI:

python utilities/install.py

If you want to have a different version of NetPyNE or geppetto meta, you can pass the version you want to the installer:

python utilities/install.py --dev --netpyne development --geppetto development --no-test

This command will install the development version of netpyne and geppetto and disable the tests during the installation.

Start application

./NetPyNE-UI

For debugging you can use run.py instead

python run.py

To run the UI in dev mode, you need to run python run.py in one terminal, and use yarn from the webapp folder, using node v14 (use nvm if you need to have a different version of node than the one installed on your system):

cd webapp
yarn start

You can then navigate to http://127.0.0.1:8081/ to access the dev version of the UI.

Run NetPyNE User Interface in Docker

Ensure that you have Docker installed on your system.

Build the image

docker build -t netpyne-ui .

Run the image

docker run -p 8888:8888 netpyne-ui

End-to-end tests

End-to-end tests are located in tests/deployment/frontend/e2e. Ensure that the application is running in a blank state, since end-to-end tests interact with the running application.

Install packages

cd tests/frontend/e2e
npm install

Start tests

npm run test

Containerized tests

You can also use docker-compose to run the tests. Ensure that you have Docker installed on your system.

Build the images

cd tests/deployment
sh build.sh

Run the tests

docker-compose up --abort-on-container-exit --exit-code-from netpyne-ui-e2e

Additional Notes

NetPyNE-UI is being developed in collaboration with the Neurosim Lab. See the Wiki for more info!