Select Git revision
event_generator.hpp
Nora Abi Akar
authored and
GitHub
committed
New structs and types:
* `cell_tag_type` (std::string): for labelling placeable items on a cell. The label refers to a number of items placed on a locset, equal to the number of locations in a locset. The number of locations in not always known to the user, so the previous way of using indices for items was no longer sufficient.
* `lid_selection_policy`: for allowing a user to select a single item from a group of items sharing a label. Currently only `round_robin` and `assert_univalent` are supported.
* `cell_local_label_type` and `cell_global_label_type`: for identifying the target and source of a connection or gap_junction connection.
* `cell_label_ranges`, and `cell_labels_and_gids`: for propagating information about the labelled items on the cell from the cell groups back to the simulation and communicator.
* `label_resolution_map` and `resolver`: for selecting an item (and retaining state) from a labelled group of items on a cell according to a user-selected policy.
Changes to the model-initialization:
* The `communicator` now needs `label_resolution_maps` constructed from the cell group data in order to build the `connections` vectors.
* The `simulation_state` object handles the transfer of the information when it is constructed.
* Spike exchange at runtime remains unchanged, because `communicator::connections` remains unchanged.
Changes to cells, cell_groups and recipe:
* `decor::place` expects a third label parameter, no longer returns an `lid_range`.
* `lif`, `source`, and `benchmark` cells need source/target labels in their constructors.
* A `cell_group` needs to save data about the gid/labels/lid_ranges of each cell, to propagate back to the `communicator` constructor.
* Connections/gap junction connections are formed between {label, policy} pairs on cells instead of indices.
* `num_sources`, `num_targets`, `num_gap_junction_sites` deleted from `recipe`.
Additional changes:
* Add MPI wrapper for exchanging vectors of strings.
* Corresponding updates to unit tests, Python wrapper, C++ and Python examples, documentation.
Fixes #1394 event_generator.hpp 466 B
#pragma once
#include <arbor/common_types.hpp>
#include <arbor/schedule.hpp>
namespace pyarb {
struct event_generator_shim {
arb::cell_local_label_type target;
double weight;
arb::schedule time_sched;
event_generator_shim(arb::cell_local_label_type event_target, double event_weight, arb::schedule sched):
target(std::move(event_target)),
weight(event_weight),
time_sched(std::move(sched))
{}
};
} // namespace pyarb