17 KiB
CNMODEL Setup for Windows Systems
(as of 2 March 2018, tested on Windows 10) On a bare system, you will need to install the following packages:
1. Anaconda Python 2.7 (this may also include the Microsoft Visual Studio for Python)
2. git
3. msvc2.7forpython (required for cochlea)
4. external python package from PyPi: cochlea
5. NEURON7.5 (this must be installed last)
6. cnmodel, cloned from the main repository with git
7. build the .dll file for the Neuron mechanisms used in cnmodel
Some installs are accomplished via a graphical interface (anaconda, git, msvc, neuron). Other parts of the install are done from the terminal (Windows "Command Prompt" - look in the Windows Accessories)
Follow the instructions below to do this installation. The order only partially matters - msvcforpython must be installed before cochlea can be built; python should be installed before NEURON; and git is required get the cnmodel repository.
Step 1: Install Anaconda python for Python 2.7 for your system. Note that NEURON is not yet compatible with Python 3.x
https://repo.continuum.io/archive/ The most recent versions of the Anaconda installer (5.x) are OK to use. Check the box to set DOS path variables so can run from command prompt. Install only for yourself.
If you want, create an environment for python 2.7, Using the standard windows terminal ("Command Prompt"), install the additional required packages::
conda create --name models python=2.7 pyqt pyqtgraph matplotlib numpy scipy pandas pytest faulthandler
Note: this may take a while, and will install many other packages that are required dependencies.
Now, activate the environment::
conda activate models
Or else, just install everything to the root environment: conda install pyqt pyqtgraph matplotlib numpy scipy pytest faulthandler
If you are working with a previous Anaconda installation, you might need to do these steps::
conda update --all
conda update qt
The following must be retrieved from the PyPi repository (I had problems with the one in the anaconda repo)::
pip install lmfit
Step 2: Install git (a widely used source control module)::
https://git-scm.com/downloads
Step 3: Install MS visual studio for python::
https://www.visualstudio.com/vs/python/
Step 4: Install cochlea (Rudnicki and Hemmert's implementation of several models under python)::
pip install cochlea
This should build quickly and have no errors.
Step 5: Install NEURON7.5 for mswindows from::
www.neuron.yale.edu.
Restart the command window so that the paths to the python installation are updated. Make sure that python and neuron are installed correctly together by testing the ability to import NEURON::
(base) pbmanis: Python $ python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Dec 7 2017, 11:07:58)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from neuron import h
NEURON -- VERSION 7.5 master (6b4c19f) 2017-09-25
Duke, Yale, and the BlueBrain Project -- Copyright 1984-2016
See http://neuron.yale.edu/neuron/credits
>>>
(^Z to exit)
Step 6: Go to where you want to put the model code repository, and clone the repo::
git clone https://github.com/cnmodel/cnmodel.git
Jump into the cnmodel directory.
Step 7: Find the mknrndll gui from where you installed neuron with the Explorer (the program in the nrn folder). Run the program, and select the directory cnmodel\cnmodel\mechanisms, then build. This will make nrnmech.dll in the mechanisms directory. Copy the nrnmech.dll into the main cnmodel directory.
Step 8: Run::
python setup.py develop
in the main cnmodel directory to make a library version in the anaconda site-packages directory. This will make cnmodel accessible as an import into python from any location. However, you will (on Windows) need to copy the nrnmech.dll file to the directory that you are starting in. (If you import cnmodel and there is not a list of mechanisms after the Neuron banner, then nrnmech.dll was not found).
Running
The following should be all that is needed once everything is set up.
Go the the cnmodel main directory.
if you set up a Python environment, activate it to make sure you have the right dependencies available.
Now, these scripts should run just fine::
python examples/test_mechanisms.py klt
python examples/toy_model.py
python examples/test_synapses.py sgc bushy
python examples/test_phaselocking.py
You should also be able to run the full battery of tests::
python test.py
All the tests should pass (except perhaps with the exception dstellate->dstellate; this passes under MacOSX so we will need to investigate why it fails under Windows). MacOSX and Windows test results are listed below.
Notes
-
You cannot use the "bash" terminal window that comes with neuron - it doesn't set the paths correctly for access to the anaconda python.
-
Some of the graphical displays are not correctly sized in Windows. You may need to expand the window to see all the plots (specifically, toy_model has this problem).
-
Report occurrences of failures to "import PyQt4" to: https://github.com/cnmodel/cnmodel/issues.
-
The test suite (python test.py) may fail on one test: dstellate -> dstellate synapses (as of 23Feb2018), and if you do not have Matlab, the Matlab test will be skipped.
Things solved with Windows
- The test suite works and most tests pass (python test.py).
- Qt5 and current anaconda install are acceptable (we are no longer trying to force Qt4).
- The prior dependency on pylibrary has been removed.
Potential problems
This software has been tested primarily on Mac OSX and Linux systems. Some tests have been performed on Windows. If issues are found, please report them via github as an issue (as noted above).
Test results
Windows 10 (24 Feb 2018; Qt5 Branch)
:: C:\Users\pbmanis\Desktop\Python\cnmodel>python test.py > testresults.txt NEURON -- VERSION 7.5 master (6b4c19f) 2017-09-25 Duke, Yale, and the BlueBrain Project -- Copyright 1984-2016 See http://neuron.yale.edu/neuron/credits
loading membrane mechanisms from C:\Users\pbmanis\Desktop\Python\cnmodel\nrnmech.dll
Additional mechanisms from files
CaPCalyx.mod Gly5GC.mod Gly5PL.mod Gly5State.mod Gly6S.mod Iclamp2.mod NMDA.mod NMDA_Kampa.mod
ampa_trussell.mod bkpkj.mod cabpump.mod cadiff.mod cadyn.mod cap.mod capmp.mod capump.mod cleftXmtr.mod
gly.mod gly2.mod hcno.mod hcno_bo.mod iStim.mod ihpkj.mod ihpyr.mod ihsgc_apical.mod ihsgc_
basalmiddle.mod ihvcn.mod inav11.mod jsrnaf.mod ka.mod kcnq.mod kdpyr.mod kht.mod kif.mod
kir.mod kis.mod klt.mod kpkj.mod kpkj2.mod kpkjslow.mod kpksk.mod leak.mod multisite.mod
na.mod nacn.mod nacncoop.mod nap.mod napyr.mod pkjlk.mod rsg.mod vecevent.mod
Testing with flags: -v --tb=short cnmodel/
============================= test session starts =============================
platform win32 -- Python 2.7.14, pytest-3.3.2, py-1.5.2, pluggy-0.6.0 -- C:\Users\pbmanis\Anaconda2\python.exe
cachedir: .cache
rootdir: C:\Users\pbmanis\Desktop\Python\cnmodel, inifile:
collecting ... collected 36 items
cnmodel/an_model/tests/test_cache.py::test_cache PASSED [ 2%]
cnmodel/an_model/tests/test_cache.py::test_parallel PASSED [ 5%]
cnmodel/cells/tests/test_cells.py::test_bushy PASSED [ 8%]
cnmodel/cells/tests/test_cells.py::test_bushy21 PASSED [ 11%]
cnmodel/cells/tests/test_cells.py::test_bushy_mouse PASSED [ 13%]
cnmodel/cells/tests/test_cells.py::test_tstellate PASSED [ 16%]
cnmodel/cells/tests/test_cells.py::test_tstellate_mouse PASSED [ 19%]
cnmodel/cells/tests/test_cells.py::test_tstellatet PASSED [ 22%]
cnmodel/cells/tests/test_cells.py::test_dstellate PASSED [ 25%]
cnmodel/cells/tests/test_cells.py::test_dstellate_mouse PASSED [ 27%]
cnmodel/cells/tests/test_cells.py::test_octopus PASSED [ 30%]
cnmodel/cells/tests/test_cells.py::test_pyramidal PASSED [ 33%]
cnmodel/cells/tests/test_cells.py::test_tuberculoventral PASSED [ 36%]
cnmodel/cells/tests/test_cells.py::test_cartwheel PASSED [ 38%]
cnmodel/cells/tests/test_cells.py::test_sgc_basal_middle PASSED [ 41%]
cnmodel/cells/tests/test_cells.py::test_sgc_apical PASSED [ 44%]
cnmodel/data/tests/test_db.py::test_db PASSED [ 47%]
cnmodel/mechanisms/tests/test_mechanisms.py::test_max_open_probability PASSED [ 50%]
cnmodel/synapses/tests/test_psd.py::test_sgc_bushy_psd PASSED [ 52%]
cnmodel/synapses/tests/test_psd.py::test_sgc_tstellate_psd PASSED [ 55%]
cnmodel/synapses/tests/test_psd.py::test_sgc_dstellate_psd PASSED [ 58%]
cnmodel/synapses/tests/test_psd.py::test_sgc_octopus_psd PASSED [ 61%]
cnmodel/synapses/tests/test_synapses.py::test_sgc_bushy PASSED [ 63%]
cnmodel/synapses/tests/test_synapses.py::test_sgc_tstellate PASSED [ 66%]
cnmodel/synapses/tests/test_synapses.py::test_sgc_tstellate2 PASSED [ 69%]
cnmodel/synapses/tests/test_synapses.py::test_sgc_dstellate PASSED [ 72%]
cnmodel/synapses/tests/test_synapses.py::test_dstellate_bushy PASSED [ 75%]
cnmodel/synapses/tests/test_synapses.py::test_dstellate_tstellate PASSED [ 77%]
cnmodel/synapses/tests/test_synapses.py::test_dstellate_dstellate FAILED [ 80%]
cnmodel/util/tests/test_expfitting.py::test_fit1 PASSED [ 83%]
cnmodel/util/tests/test_expfitting.py::test_fit2 PASSED [ 86%]
cnmodel/util/tests/test_matlab.py::test_matlab SKIPPED [ 88%]
cnmodel/util/tests/test_sound.py::test_conversions PASSED [ 91%]
cnmodel/util/tests/test_sound.py::test_tonepip PASSED [ 94%]
cnmodel/util/tests/test_sound.py::test_noisepip PASSED [ 97%]
cnmodel/util/tests/test_stim.py::test_make_pulse PASSED [100%]
================================== FAILURES ===================================
__________________________ test_dstellate_dstellate ___________________________
cnmodel\synapses\tests\test_synapses.py:40: in test_dstellate_dstellate
SynapseTester('dstellate', 'dstellate')
cnmodel\synapses\tests\test_synapses.py:72: in __init__
UserTester.__init__(self, "%s_%s" % (pre, post), pre, post)
cnmodel\util\user_tester.py:33: in __init__
self.assert_test_info(*args, **kwds)
cnmodel\synapses\tests\test_synapses.py:108: in assert_test_info
super(SynapseTester, self).assert_test_info(*args, **kwds)
cnmodel\util\user_tester.py:127: in assert_test_info
self.compare_results(result, expect)
cnmodel\util\user_tester.py:60: in compare_results
self.compare_results(info[k], expect[k])
cnmodel\util\user_tester.py:63: in compare_results
self.compare_results(info[i], expect[i])
cnmodel\util\user_tester.py:79: in compare_results
self.compare_results(info[k], expect[k])
cnmodel\util\user_tester.py:71: in compare_results
assert np.all(inans == enans)
E AssertionError
---------------------------- Captured stdout call -----------------------------
<< D-stellate: JSR Stellate Type I-II cell model created >>
<< D-stellate: JSR Stellate Type I-II cell model created >>
Elapsed time for 1 Repetions: 0.355309
=============== 1 failed, 34 passed, 1 skipped in 96.33 seconds ===============
Mac OSX (24 Feb 2018; Qt5 Branch)
:: (base) pbmanis: cnmodel [qt5+]$ python test.py NEURON -- VERSION 7.5 master (6b4c19f) 2017-09-25 Duke, Yale, and the BlueBrain Project -- Copyright 1984-2016 See http://neuron.yale.edu/neuron/credits
loading membrane mechanisms from x86_64/.libs/libnrnmech.so
Additional mechanisms from files
cnmodel/mechanisms//CaPCalyx.mod cnmodel/mechanisms//Gly5GC.mod cnmodel/mechanisms//Gly5PL.mod
cnmodel/mechanisms//Gly5State.mod cnmodel/mechanisms//Gly6S.mod cnmodel/mechanisms//Iclamp2.mod
cnmodel/mechanisms//NMDA.mod cnmodel/mechanisms//NMDA_Kampa.mod
cnmodel/mechanisms//ampa_trussell.mod cnmodel/mechanisms//bkpkj.mod
cnmodel/mechanisms//cabpump.mod cnmodel/mechanisms//cadiff.mod cnmodel/mechanisms//cadyn.mod
cnmodel/mechanisms//cap.mod cnmodel/mechanisms//capmp.mod
cnmodel/mechanisms//capump.mod cnmodel/mechanisms//cleftXmtr.mod
cnmodel/mechanisms//gly.mod cnmodel/mechanisms//gly2.mod cnmodel/mechanisms//hcno.mod
cnmodel/mechanisms//hcno_bo.mod cnmodel/mechanisms//iStim.mod cnmodel/mechanisms//ihpkj.mod
cnmodel/mechanisms//ihpyr.mod cnmodel/mechanisms//ihsgc_apical.mod
cnmodel/mechanisms//ihsgc_basalmiddle.mod cnmodel/mechanisms//ihvcn.mod
cnmodel/mechanisms//inav11.mod cnmodel/mechanisms//jsrnaf.mod
cnmodel/mechanisms//ka.mod cnmodel/mechanisms//kcnq.mod cnmodel/mechanisms//kdpyr.mod
cnmodel/mechanisms//kht.mod cnmodel/mechanisms//kif.mod cnmodel/mechanisms//kir.mod
cnmodel/mechanisms//kis.mod cnmodel/mechanisms//klt.mod cnmodel/mechanisms//kpkj.mod
cnmodel/mechanisms//kpkj2.mod cnmodel/mechanisms//kpkjslow.mod cnmodel/mechanisms//kpksk.mod
cnmodel/mechanisms//leak.mod cnmodel/mechanisms//multisite.mod cnmodel/mechanisms//na.mod
cnmodel/mechanisms//nacn.mod cnmodel/mechanisms//nacncoop.mod cnmodel/mechanisms//nap.mod c
nmodel/mechanisms//napyr.mod cnmodel/mechanisms//pkjlk.mod cnmodel/mechanisms//rsg.mod
cnmodel/mechanisms//vecevent.mod
Testing with flags: -v --tb=short cnmodel/
=============================================== test session starts ===============================================
platform darwin -- Python 2.7.14, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 -- /Users/pbmanis/anaconda/bin/python
cachedir: .cache
rootdir: /Users/pbmanis/Desktop/Python/cnmodel, inifile:
collected 36 items
cnmodel/an_model/tests/test_cache.py::test_cache PASSED
cnmodel/an_model/tests/test_cache.py::test_parallel PASSED
cnmodel/cells/tests/test_cells.py::test_bushy PASSED
cnmodel/cells/tests/test_cells.py::test_bushy21 PASSED
cnmodel/cells/tests/test_cells.py::test_bushy_mouse PASSED
cnmodel/cells/tests/test_cells.py::test_tstellate PASSED
cnmodel/cells/tests/test_cells.py::test_tstellate_mouse PASSED
cnmodel/cells/tests/test_cells.py::test_tstellatet PASSED
cnmodel/cells/tests/test_cells.py::test_dstellate PASSED
cnmodel/cells/tests/test_cells.py::test_dstellate_mouse PASSED
cnmodel/cells/tests/test_cells.py::test_octopus PASSED
cnmodel/cells/tests/test_cells.py::test_pyramidal PASSED
cnmodel/cells/tests/test_cells.py::test_tuberculoventral PASSED
cnmodel/cells/tests/test_cells.py::test_cartwheel PASSED
cnmodel/cells/tests/test_cells.py::test_sgc_basal_middle PASSED
cnmodel/cells/tests/test_cells.py::test_sgc_apical PASSED
cnmodel/data/tests/test_db.py::test_db PASSED
cnmodel/mechanisms/tests/test_mechanisms.py::test_max_open_probability PASSED
cnmodel/synapses/tests/test_psd.py::test_sgc_bushy_psd PASSED
cnmodel/synapses/tests/test_psd.py::test_sgc_tstellate_psd PASSED
cnmodel/synapses/tests/test_psd.py::test_sgc_dstellate_psd PASSED
cnmodel/synapses/tests/test_psd.py::test_sgc_octopus_psd PASSED
cnmodel/synapses/tests/test_synapses.py::test_sgc_bushy PASSED
cnmodel/synapses/tests/test_synapses.py::test_sgc_tstellate PASSED
cnmodel/synapses/tests/test_synapses.py::test_sgc_tstellate2 PASSED
cnmodel/synapses/tests/test_synapses.py::test_sgc_dstellate PASSED
cnmodel/synapses/tests/test_synapses.py::test_dstellate_bushy PASSED
cnmodel/synapses/tests/test_synapses.py::test_dstellate_tstellate PASSED
cnmodel/synapses/tests/test_synapses.py::test_dstellate_dstellate PASSED
cnmodel/util/tests/test_expfitting.py::test_fit1 PASSED
cnmodel/util/tests/test_expfitting.py::test_fit2 PASSED
cnmodel/util/tests/test_matlab.py::test_matlab PASSED
cnmodel/util/tests/test_sound.py::test_conversions PASSED
cnmodel/util/tests/test_sound.py::test_tonepip PASSED
cnmodel/util/tests/test_sound.py::test_noisepip PASSED
cnmodel/util/tests/test_stim.py::test_make_pulse PASSED
=========================================== 36 passed in 94.05 seconds ============================================
(base) pbmanis: cnmodel [qt5+]$