21 #ifndef CYPRESS_BACKEND_PYNN2_HPP 22 #define CYPRESS_BACKEND_PYNN2_HPP 25 #include <pybind11/pybind11.h> 27 #include <pybind11/embed.h> 40 namespace py = pybind11;
93 using std::runtime_error::runtime_error;
104 PyNN(
const std::string &simulator,
const Json &setup =
Json());
128 std::unordered_set<const NeuronType *> supported_neuron_types()
134 std::string
name()
const override {
return m_normalised_simulator; }
139 const std::string &
simulator()
const {
return m_simulator; }
146 return m_normalised_simulator;
153 const std::vector<std::string> &
imports()
const {
return m_imports; }
159 std::string nmpi_platform()
const;
164 static std::vector<std::string> simulators();
172 static std::string get_import(
const std::vector<std::string> &imports,
173 const std::string &simulator);
184 static int get_pynn_version();
191 static int get_neo_version();
200 static py::dict json_to_dict(
Json json);
209 static std::string get_neuron_class(
const NeuronType &neuron_type);
215 static void init_logger();
224 static py::object create_source_population(
const PopulationBase &pop,
234 static py::object create_homogeneous_pop(
const PopulationBase &pop,
236 bool &init_available);
245 static void set_inhomogeneous_parameters(
const PopulationBase &pop,
247 bool init_available =
false);
265 py::object &pypop, py::module &pynn);
277 static py::object get_pop_view(
const py::module &pynn,
278 const py::object &py_pop,
280 const size_t &start,
const size_t &end);
291 const py::module &pynn);
304 static py::object get_connector(
const std::string &connector_name,
305 const py::module &pynn,
306 const Real &additional_parameter,
307 const bool allow_self_connections);
321 static py::object group_connect(
322 const std::vector<PopulationBase> &populations,
323 const std::vector<py::object> &pypopulations,
325 const bool nest_flag,
const Real timestep = 0.0);
327 static py::object group_connect(
328 const std::vector<PopulationBase> &populations,
329 const std::vector<py::object> &pypopulations,
331 const Real nest_flag) =
delete;
341 static py::object group_connect7(
342 const std::vector<PopulationBase> &populations,
343 const std::vector<py::object> &pypopulations,
357 static std::tuple<py::object, py::object> list_connect(
358 const std::vector<py::object> &pypopulations,
360 const bool current_based,
const Real timestep = 0.0);
362 static std::tuple<py::object, py::object> list_connect(
363 const std::vector<py::object> &pypopulations,
365 const Real current_based) =
delete;
376 static std::tuple<py::object, py::object> list_connect7(
377 const std::vector<py::object> &pypopulations,
380 template <
typename T>
392 static Matrix<T> matrix_from_numpy(
const py::object &
object,
393 bool transposed =
false);
401 static void fetch_data_nest(
const std::vector<PopulationBase> &populations,
402 const std::vector<py::object> &pypopulations);
411 static void fetch_data_spinnaker(
412 const std::vector<PopulationBase> &populations,
413 const std::vector<py::object> &pypopulations);
421 static void fetch_data_neo(
const std::vector<PopulationBase> &populations,
422 const std::vector<py::object> &pypopulations);
433 static void spikey_run(
NetworkBase &source,
Real duration, py::module &pynn,
443 static py::object spikey_create_source_population(
const PopulationBase &pop,
455 static py::object spikey_create_homogeneous_pop(
const PopulationBase &pop,
466 py::object &pypop, py::module &pynn);
474 static void spikey_set_inhomogeneous_rec(
const PopulationBase &pop,
484 static void spikey_set_inhomogeneous_parameters(
const PopulationBase &pop,
494 static void spikey_get_spikes(
PopulationBase pop, py::object &pypop);
501 static void spikey_get_voltage(
NeuronBase neuron, py::module &pynn);
Definition: neurons_base.hpp:54
std::vector< std::string > m_imports
Definition: pynn.hpp:82
Definition: backend.hpp:50
double Real
Definition: types.hpp:56
nlohmann::json Json
Definition: json.hpp:27
std::string m_normalised_simulator
Definition: pynn.hpp:81
const std::string & simulator() const
Definition: pynn.hpp:139
std::string m_simulator
Definition: pynn.hpp:80
Definition: matrix.hpp:51
Definition: network_base_objects.hpp:169
bool m_keep_log
Definition: pynn.hpp:83
Definition: network_base.hpp:116
Definition: network_base_objects.hpp:53
std::string name() const override
Definition: pynn.hpp:134
void operator=(PythonInstance const &)=delete
Definition: brainscales_lib.hpp:39
Json m_setup
Definition: pynn.hpp:84
static PythonInstance & instance()
Definition: pynn.hpp:64
const std::string & normalised_simulator() const
Definition: pynn.hpp:144
const std::vector< std::string > & imports() const
Definition: pynn.hpp:153
Definition: connector.hpp:705
Json setup() const
Definition: pynn.hpp:177