Skip to content
Snippets Groups Projects
Unverified Commit 6b6f3dc8 authored by Han Lu's avatar Han Lu Committed by GitHub
Browse files

fixed typos etc (#2339)

<!-- Please make sure your PR follows our [contribution
guidelines](https://github.com/arbor-sim/arbor/tree/master/doc/contrib)
and agree to the terms outlined in the [PR
procedure](https://github.com/arbor-sim/arbor/tree/master/doc/contrib/pr.rst

).
-->

---------

Co-authored-by: default avatarThorsten Hater <24411438+thorstenhater@users.noreply.github.com>
parent 1813fcd4
No related branches found
No related tags found
No related merge requests found
...@@ -6,37 +6,37 @@ Simulations ...@@ -6,37 +6,37 @@ Simulations
From recipe to simulation From recipe to simulation
------------------------- -------------------------
To build a simulation the following concepts are needed: To build a simulation, the following concepts are needed:
* an :py:class:`arbor.recipe` that describes the cells and connections in the model; * an :py:class:`arbor.recipe` that describes the cells and connections in the model;
* an :py:class:`arbor.context` used to execute the simulation. * an :py:class:`arbor.context` used to execute the simulation.
The workflow to build a simulation is to first generate an The workflow to build a simulation is to first generate an
:class:`arbor.domain_decomposition` based on the :py:class:`arbor.recipe` and :py:class:`arbor.context` describing the distribution of the model :class:`arbor.domain_decomposition` based on the :py:class:`arbor.recipe` and :py:class:`arbor.context` describing the distribution of the model
over the local and distributed hardware resources (see :ref:`pydomdec`). Then, the simulation is build using this :py:class:`arbor.domain_decomposition`. over the local and distributed hardware resources (see :ref:`pydomdec`). Then, the simulation is built using this :py:class:`arbor.domain_decomposition`.
.. container:: example-code .. container:: example-code
.. code-block:: python .. code-block:: python
import arbor import arbor as A
# Get a communication context (with 4 threads, no GPU) # Get a communication context (with 4 threads, no GPU)
context = arbor.context(threads=4, gpu_id=None) context = A.context(threads=4, gpu_id=None)
# Initialise a recipe of user defined type my_recipe with 100 cells. # Initialise a recipe of user-defined type my_recipe with 100 cells.
n_cells = 100 n_cells = 100
recipe = my_recipe(n_cells) recipe = my_recipe(n_cells)
# Get a description of the partition of the model over the cores. # Get a description of the partition of the model over the cores.
decomp = arbor.partition_load_balance(recipe, context) decomp = A.partition_load_balance(recipe, context)
# Instantiate the simulation. # Instantiate the simulation.
sim = arbor.simulation(recipe, decomp, context) sim = A.simulation(recipe, decomp, context)
# Run the simulation for 2000 ms with time stepping of 0.025 ms # Run the simulation for 2000 ms with a time step of 0.025 ms
tSim = 2000 tSim = 2000 * U.ms
dt = 0.025 dt = 0.025 * U.ms
sim.run(tSim, dt) sim.run(tSim, dt)
.. currentmodule:: arbor .. currentmodule:: arbor
...@@ -53,7 +53,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t ...@@ -53,7 +53,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
* an :py:class:`arbor.recipe` that describes the model; * an :py:class:`arbor.recipe` that describes the model;
* an :py:class:`arbor.domain_decomposition` that describes how the cells in the model are assigned to hardware resources; * an :py:class:`arbor.domain_decomposition` that describes how the cells in the model are assigned to hardware resources;
* an :py:class:`arbor.context` which is used to execute the simulation. * an :py:class:`arbor.context` which is used to execute the simulation.
* a non-negative :py:class:`int` in order to seed the pseudo pandom number generator (optional) * a non-negative :py:class:`int` in order to seed the pseudo random number generator (optional)
Simulations provide an interface for executing and interacting with the model: Simulations provide an interface for executing and interacting with the model:
...@@ -94,7 +94,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t ...@@ -94,7 +94,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
.. function:: run(tfinal, dt) .. function:: run(tfinal, dt)
Run the simulation from current simulation time to ``tfinal``, Run the simulation from the current simulation time to ``tfinal``,
with maximum time step size ``dt``. with maximum time step size ``dt``.
:param tfinal: The final simulation time [ms]. :param tfinal: The final simulation time [ms].
...@@ -105,7 +105,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t ...@@ -105,7 +105,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
.. function:: record(policy) .. function:: record(policy)
Disable or enable recorder of rank-local or global spikes, as determined by the ``policy``. Disable or enable the recorder of rank-local or global spikes, as determined by the ``policy``.
:param policy: Recording policy of type :py:class:`spike_recording`. :param policy: Recording policy of type :py:class:`spike_recording`.
...@@ -224,22 +224,22 @@ Spikes recorded during a simulation are returned as a NumPy structured datatype ...@@ -224,22 +224,22 @@ Spikes recorded during a simulation are returned as a NumPy structured datatype
.. code-block:: python .. code-block:: python
import arbor import arbor as A
# Instantiate the simulation. # Instantiate the simulation.
sim = arbor.simulation(recipe, decomp, context) sim = A.simulation(recipe, decomp, context)
# Direct the simulation to record all spikes, which will record all spikes # Direct the simulation to record all spikes, which will record all spikes
# across multiple MPI ranks in distrubuted simulation. # across multiple MPI ranks in distributed simulation.
# To only record spikes from the local MPI rank, use arbor.spike_recording.local # To only record spikes from the local MPI rank, use A.spike_recording.local
sim.record(arbor.spike_recording.all) sim.record(A.spike_recording.all)
# Run the simulation for 2000 ms with time stepping of 0.025 ms # Run the simulation for 2000 ms with a time step of 0.025 ms
tSim = 2000 tSim = 2 * U.s
dt = 0.025 dt = 0.025 * U.ms
sim.run(tSim, dt) sim.run(tSim, dt)
# Print the spikes and according spike time # Print the spikes: time and source
for s in sim.spikes(): for s in sim.spikes():
print(s) print(s)
...@@ -288,10 +288,10 @@ There are three parts to the process of recording cell data over a simulation. ...@@ -288,10 +288,10 @@ There are three parts to the process of recording cell data over a simulation.
The contents of ``data`` will depend upon the specifics of the probe, but note: The contents of ``data`` will depend upon the specifics of the probe, but note:
i. The object type and structure of ``data`` is fully determined by the metadata. i. The object type and structure of ``data`` are fully determined by the metadata.
ii. All currently implemented probes return data that is a NumPy array, with one ii. All currently implemented probes return data that is a NumPy array, with one
row per sample, first column being sample time, and the remaining columns containing row per sample, the first column being sample time, and the remaining columns containing
the corresponding data. the corresponding data.
Example Example
...@@ -299,20 +299,21 @@ Example ...@@ -299,20 +299,21 @@ Example
.. code-block:: python .. code-block:: python
import arbor import arbor as A
from arbor import units as U
# [... define recipe, decomposition, context ... ] # [... define recipe, decomposition, context ... ]
# Initialize simulation: # Initialize simulation:
sim = arbor.simulation(recipe, decomp, context) sim = A.simulation(recipe, decomp, context)
# Sample probeset id (0, 0) (first probeset id on cell 0) every 0.1 ms # Sample probeset id (0, 0) (first probeset id on cell 0) every 0.1 ms
handle = sim.sample((0, 0), arbor.regular_schedule(0.1)) handle = sim.sample((0, 0), A.regular_schedule(0.1*U.ms))
# Run simulation and retrieve sample data from the first probe associated with the handle. # Run simulation and retrieve sample data from the first probe associated with the handle.
sim.run(tfinal=3, dt=0.1) sim.run(tfinal=3 * U.ms, dt=0.1 * U.ms)
data, meta = sim.samples(handle)[0] data, meta = sim.samples(handle)[0]
print(data) print(data)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment