diff --git a/doc/htmldoc/conf.py b/doc/htmldoc/conf.py index e1c8b0abdf..580e33210f 100644 --- a/doc/htmldoc/conf.py +++ b/doc/htmldoc/conf.py @@ -392,7 +392,7 @@ def patch_documentation(patch_url): print("Preparing patch...") try: - git_dir = repo_root_dir / ".git" + git_dir = f"{repo_root_dir}/.git" git_hash = subprocess.check_output( f"GIT_DIR='{git_dir}' git rev-parse HEAD", shell=True, encoding="utf8" ).strip() @@ -402,7 +402,7 @@ def patch_documentation(patch_url): print(f" retrieving {patch_url}") urlretrieve(patch_url, patch_file) print(f" applying {patch_file}") - result = subprocess.check_output("patch -p3", stdin=open(patch_file, "r"), stderr=subprocess.STDOUT, shell=True) + result = subprocess.check_output(f"git apply '{patch_file}'", stderr=subprocess.STDOUT, shell=True) print(f"Patch result: {result}") except Exception as exc: print(f"Error while applying patch: {exc}") diff --git a/doc/htmldoc/whats_new/index.rst b/doc/htmldoc/whats_new/index.rst index ed661887e6..3de538bdd2 100644 --- a/doc/htmldoc/whats_new/index.rst +++ b/doc/htmldoc/whats_new/index.rst @@ -8,6 +8,7 @@ versions of NEST. On the linked pages, you will find both information about new features, as well as quick guides on how to transition your simulation code to the new versions. +* :ref:`NEST 3.5 ` * :ref:`NEST 3.4 ` * :ref:`NEST 3.3 ` * :ref:`NEST 3.2 ` @@ -19,6 +20,7 @@ the new versions. :hidden: :glob: + v3.5/* v3.4/* v3.3/* v3.2/* diff --git a/doc/htmldoc/whats_new/v3.5/index.rst b/doc/htmldoc/whats_new/v3.5/index.rst new file mode 100644 index 0000000000..fd862b8600 --- /dev/null +++ b/doc/htmldoc/whats_new/v3.5/index.rst @@ -0,0 +1,67 @@ +.. _release_3.5: + +What's new in NEST 3.5 +====================== + +This page contains a summary of important breaking and non-breaking +changes from NEST 3.4 to NEST 3.5. In addition to the `release notes +on GitHub `_, this +page also contains transition information that helps you to update +your simulation scripts when you come from an older version of NEST. + +If you transition from an earlier version, please see our extensive +:ref:`transition guide from NEST 2.x to 3.0 ` and the +:ref:`list of updates for previous releases in the 3.x series +`. + + +NEST supports the SONATA format +------------------------------- + +The SONATA (Scalable Open Network Architecture TemplAte) format provides a framework +for storage and exchange of network models and simulation configurations. + +NEST now supports building and simulating networks of point neurons described by +this SONATA format. + +See our docs to learn more: + +* The :ref:`nest_sonata` for all the details +* An :doc:`example SONATA script <../../../../auto_examples/sonata_example/sonata_network>` +* PyNEST API documentation for the :py:class:`.SonataNetwork` class + + +Run PyNEST examples as notebooks - installation free +---------------------------------------------------- + +Using the EBRAINS JupyterHub service, you can now +run the PyNEST examples as Jupyter Notebooks with a click of a button. + +No need to install NEST or other packages, the EBRAINS environment has +everything you already need. + +Explore the :ref:`pynest_examples` and try it out! + +New docs for high performance computing (HPC) +--------------------------------------------- + +We have new documentation all about optmizing performance of NEST on HPC systems. + +Learn about creating a job script, MPI processes and threading. We also have new info on +benchmarking NEST. + +Check it out: + +* :ref:`optimize_performance` +* :ref:`benchmark` + +New model: spike_train_injector +------------------------------- + +The :doc:`spike_train_injector <../../../../models/spike_train_injector>` emits spikes at prescribed spike times which are given as an array. + +We recommend its use in multi-threaded simulations where spike-emitting neurons, in a somewhat large external population, are modeled on an individual basis. + +It was created to prevent an unwanted increase in memory consumption with replication at each virtual process, which +happened when external neurons were modeled as a ``spike_generator``. + diff --git a/pynest/nest/lib/hl_api_sonata.py b/pynest/nest/lib/hl_api_sonata.py index 195159f183..5c55d3dfbf 100644 --- a/pynest/nest/lib/hl_api_sonata.py +++ b/pynest/nest/lib/hl_api_sonata.py @@ -25,7 +25,6 @@ from pathlib import Path, PurePath import numpy as np -import pandas as pd from .. import pynestkernel as kernel from ..ll_api import sli_func, sps, sr @@ -34,6 +33,13 @@ from .hl_api_simulation import SetKernelStatus, Simulate from .hl_api_types import NodeCollection +try: + import pandas as pd + + have_pandas = True +except ImportError: + have_pandas = False + try: import h5py @@ -101,6 +107,9 @@ def __init__(self, config, sim_config=None): if not have_h5py: msg = "SonataNetwork unavailable because h5py is not installed or could not be imported" raise kernel.NESTError(msg) + if not have_pandas: + msg = "SonataNetwork unavailable because pandas is not installed or could not be imported" + raise kernel.NESTError(msg) self._node_collections = {} self._edges_maps = []