NEURON 9.0 marks a major milestone with significant under-the-hood updates. This release features a redesign of internal data structures using the Structure-Of-Arrays (SoA) memory layout, replacement of pointers by DataHandles that are automatically updated when internal memory layout changes, migration of the codebase and translation of MOD files to C++, and the introduction of random number generator construct natively in the NMODL (and legacy but still default nocmodl) language. Additionally, many legacy NMODL constructs have been removed, and legacy code and libraries have been replaced with modern alternatives like Eigen, ensuring improved performance and maintainability.
What follows are a selection of the ~1500 pull request squash/merge commits to the master branch since the start of the 9.0a tag on 17-07-2023
RANDOM) in NMODL (#2627)std::thread (#1859)flex >= 2.6 (#1893)numpy>=2 added (#3040)CONSTANT block (#1955)adams, heun, clsoda, seidel, simplex, gear (#2032)h.checkpoint()), superseded by SaveState (#3092)Random.MLCG and Random.ACG random number generators (#3189, #3190)PUTQ, GETQ, RESET, MATCH, TERMINAL, SECTION,IFERROR, MODEL_LEVEL, PLOT, SENS, etc (#1956, #1974, #1975, #2001, #2004, #2005)__MWERKS__ (CodeWarrior compiler) related code (#2655)code_matrix_to_rxd_sparse (#3547)Py_NoSiteFlag is deprecated for site_import (#3286)unref hoc_obj, see #1857 (#1917)VecPlay instances (#2148)STATE + COMPARTMENT variable in KINETIC block (#2210)Vector.max_ind (#2251)RangeVarPlot adding extra point at section ends when using plotly (#2410)seg.mech.array[i] = x) (#2504)hh.mod when using CoreNEURON (#3301)h.quit(), terminal settings are same as when neuron.hoc was imported (#3259)int replaced by floor to accept negative coordinates (#3264)neuron import h, gui (#3243)get_endian_character (#3257)pysec_children and pysec_subtree (#3255)[s for s in sl] where sl is a SectionList (#3276)segment.mechanism.func(args) to call a FUNCTION or PROCEDURE (#2475)INDEPENDENT statement as only t variable is accepted (#2013)a.b(i) syntax for 1d arrays (extend to PointProcess.var[i] and ob.dblarray[i]) (#2256)nrniv -c and nrnivmodl (#1871)bokeh>=3 (#3061)ParallelContext.get_partition() (#2351)__slots__ (#3572)% string formatting with f-strings (#3552)SectionList.size() and len(sectionlist) skip deleted sections (#3524).size() to the SectionList object, returns the number of sections in the list (#3520)Node* (#3314)from neuron import n (#3459)rxd.MultipleGeometry to support 3D and hybrid models (#3389)FUNCTION does not have a return statement (#3404)Vector.apply for Python functions (#3362)xstatebutton and xcheckbox (#3355)Release Date : May 22, 2025
This release allows use of Python 3.13.
Pins numpy to >=2.
Includes backports for several fixes.
The 2025 NEURON Spring course is March 9 - 14 in Tempe, AZ.
Apply and pay by 5pm on February 28, 2025 to join us.
Click here for more details, or to apply, go here.
There are two in-person NEURON tutorials in the near future:
June 11-16, 2023: NEURON summer course in Dayton, Ohio. See details and registration here.
July 15, 2023: Building mechanistic multiscale models with NEURON, NetPyNE, and TREES in Leipzig, Germany as part of CNS 2023. See details here. Register for CNS (be sure to register for the tutorials) at cnsorg.org.
Remember, if you're looking for an extensive introduction to NEURON and can't join us in Dayton, you can always watch 2021's two month long summer webinar series: https://nrn.readthedocs.io/en/latest/videos/neuron-course-2021.html
Release Date : July 1, 2022
nrn_ andhoc_ functions) are implicitly included in translated MOD files. This canVERBATIM blocks. (#1755, #1811, #1825).C++ codebase.9.0.0, MOD files will be converted to C++ instead of C.Random123 will be the default random number generator in NEURON and most of the random number distributions implementations will bemallinfo2() (#1805)5.0.19.0.0 release.8.2.0 and older versions is typically straightforward.For the complete list of features and bug fixes, see the list in GitHub Issue #1879
There are two NEURON one-day tutorials in the near future:
June 28: GUI/theory/scripting overview -- free and online; register at https://framaforms.org/incfocns-software-wg-cns2022-satellite-tutorials-registration-1654593600
July 16: using NEURON and NetPyNE through the cloud; in person event at CNS 2022 in Melbourne, Australia https://cnsorg.org/cns-2022
Remember, if you're looking for a more extensive introduction to NEURON, you can always watch last year's two month long summer webinar series: https://nrn.readthedocs.io/en/latest/videos/neuron-course-2021.html
What: An interactive online course about the NEURON Simulation Environment
When: Starts Thursday, June 3, 2021, and meets on Tuesdays and Thursdays thereafter until Tuesday August 3.
Faculty: Ted Carnevale and Robert McDougal
Application deadline: Monday, May 31, 2021
Registration fee: None.
This course maps the first half of the NEURON Summer Course into a series of interactive online workshops about building and working with models of single neurons. It is designed for those who are planning to use NEURON in neuroscience research or teaching, or already have active projects that involve NEURON, and is suitable for users at all levels of expertise.
Beginners with little or no modeling experience will learn the philosophical basis, scientific rationale, and technical aspects of modeling.
Intermediate users will learn the best approaches to common tasks, and how to use special features of NEURON in their own work.
Experienced users will benefit from an update on new features and a review of important topics that may have escaped their attention when they first started using NEURON.
Although this course focuses on modeling individual cells, the topics it covers are the foundation for modeling networks with NEURON.
This course is not an introduction to cellular neurophysiology or Python programming. It presumes you already have a basic understanding of the anatomical and biophysical properties of neurons, and are familiar with Python. If Python is new to you, be sure to work through the Python introduction before the course starts. You might also find the Scripting NEURON basics tutorial to be helpful. If you don't know anything about biological neurons, read chapters 1, 3, 4, and 5 of Cellular and Molecular Neurophysiology (ed. C. Hammond, Academic Press, 2008) or something equivalent before the course starts.
Space is limited, and applications will be considered in the order received. The application deadline is Monday, May 31, 2021. No applications will be accepted after that date.
Submit the online application form.
Applicants will be notified of acceptance shortly after Monday, May 31.
The workshops will start at 1 pm New York time and run for 1 to 2 hours, depending on the topic at hand. Each Thursday workshop will start with a brief question and answer session, followed by introduction of new material, and ending with an assignment that participants are expected to do on their own. In each Tuesday workshop, participants will have the opportunity to present their results, discuss problems that they encountered, and show how they solved them.
Introduction to mechanistic modeling in neuroscience.
Concepts: Hypotheses and models; the importance of conceptual control; neurites, cables, sections.
Activity: Building and using a simple model cell with the CellBuilder.
Homework: Build and use a model axon. Use it to measure conduction velocity and study anode break excitation.
Branched model neurons.
Concepts: Range, range variables, spatial discretization, nodes, nseg.
Activity: Build a model pyramidal cell. Current clamp the soma and find spike threshold.
Homework: Change the current clamp to an excitatory synapse and examine how synaptic location affects response at the soma. Build a model interneuron and determine how synaptic location affects synaptic efficacy.
Adding new ion channels to NEURON with NMODL and the Channel Builder.
Homework: Given a set of channel mod files, do current and voltage clamp experiments on a virtual oocyte.
Python + NEURON.
Concepts: Programmatic specification of topology, channel distribution, and virtual experiments. Best practices.
Homework: TBA.
Building and using a model cell with Python.
Concepts: Incremental revision and testing.
Activity: Producing model cells that work with the GUI and are suitable for use in network models running on parallel hardware.
Homework: TBA.
Working with morphometric data.
Concepts: Data file formats. Detecting common problems with morphometric data.
Activity: Importing and evaluating morphologies. Strategies for managing anatomically detailed models.
Homework: TBA.
Reproducibility in computational modeling.
Concepts: Model sharing, discovering what's in a model (model introspection and analysis).
Activity: Using ModelDB and ModelView.
Homework: TBA.
Numerical methods in NEURON.
Concepts: Fixed time step and adaptive integration, parameter discontinuities.
Activity: Compare fixed time step and adaptive integration simulation results. Force a parameter change at a particular time.
Homework: TBA.
The hoc programming language.
Concepts and activity: Understanding hoc code; making minor changes when necessary.
Homework: Load HOC model from ModelDB. Work with it from Python.
h.Section now interprets positional arguments as name, cell. Previously positional arguments were interpreted in the other order. (Calling it with keyword arguments is unchanged.)neuron module: neuron.init, neuron.run, neuron.psection, neuron.xopen, and neuron.quit.Python >= 3.6For the complete list of bug fixes, see the list on the GitHub here.
nrn repositoryneuron importExisting models should work without any changes. In order to upgrade NEURON version you can:
x86_64)See Installation section under nrn.readthedocs.io/. In the very rare case that numerical differences exist, check selection of legacy vs modern units.
See the list of contributors on respective GitHub projects:
NEURON 7.8.2 adds support for Python 3.9 and is otherwise a bug-fix release. Bug-fixes in this release include:
Easier installation on macOS and Linux; just use: "pip3 install neuron"
More reaction-diffusion integration: PlotShape.plot support, h.distance, node in sec
Increased support for Python graphics packages
PlotShape.plot and RangeVarPlot.plot both gained support for plotly; RangeVarPlot.plot also gained support for plotnine
New, optional mechanism syntax and introspection; mechanism descriptions now displayed in ModelView
h.hh.insert(h.allsec()) and soma.insert(h.hh)
h.hh.code, h.hh.file, help(h.hh)
If the nmodl module is installed: h.hh.ontology_ids, h.hh.ast, h.hh.ions
Cleaner mod-file pointer setting syntax
Gui redirect support for routing legacy graphics to an interviews alternative
Support for cmake compilation in addition to autotools
Compilation flag for using 2019 SI unit values (off by default)
Miscellaneous bug fixes and optimizations
Possibly breaking change (but very rare in practice):
SectionList iteration does not change the currently accessed section; use section methods or sec= instead