NEST main@caf0ae8
 
Loading...
Searching...
No Matches
nest.h
Go to the documentation of this file.
1/*
2 * nest.h
3 *
4 * This file is part of NEST.
5 *
6 * Copyright (C) 2004 The NEST Initiative
7 *
8 * NEST is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * NEST is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with NEST. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef NEST_H
24#define NEST_H
25
26// C++ includes:
27#include <ostream>
28
29// Includes from libnestutil:
30#include "dictionary.h"
31#include "enum_bitfield.h"
32#include "logging.h"
33
34// Includes from nestkernel:
35#include "connection_id.h"
36#include "mask.h"
37#include "mask_impl.h"
38#include "nest_time.h"
39#include "nest_types.h"
40#include "parameter.h"
41#include "random_generators.h"
42
43namespace nest
44{
45
49template < template < typename > class ConnectorModelT >
50void register_connection_model( const std::string& name );
51
52void init_nest( int* argc, char** argv[] );
53void shutdown_nest( int exitcode );
54
55void install_module( const std::string& module_name );
56
57void reset_kernel();
58
61
62void register_logger_client( const deliver_logging_event_ptr client_callback );
63
64std::string print_nodes_to_string();
65
66std::string pprint_to_string( NodeCollectionPTR nc );
67
68size_t nc_size( NodeCollectionPTR nc );
69
70void set_kernel_status( const Dictionary& dict );
72
74void set_nc_status( NodeCollectionPTR nc, std::vector< Dictionary >& params );
75
76void set_node_status( const size_t node_id, const Dictionary& dict );
77Dictionary get_node_status( const size_t node_id );
78
79void set_connection_status( const std::deque< ConnectionID >& conns, const Dictionary& dict );
80void set_connection_status( const std::deque< ConnectionID >& conns, const std::vector< Dictionary >& dicts );
81std::vector< Dictionary > get_connection_status( const std::deque< ConnectionID >& conns );
82
83NodeCollectionPTR slice_nc( const NodeCollectionPTR nc, long start, long stop, long step );
84
85NodeCollectionPTR create( const std::string& model_name, const size_t n );
87
88NodeCollectionPTR make_nodecollection( const std::vector< size_t >& node_ids );
89
90NodeCollectionPTR get_nodes( const Dictionary& dict, const bool local_only );
91long find( const NodeCollectionPTR nc, size_t node_id );
93
94bool equal( const NodeCollectionPTR lhs, const NodeCollectionPTR rhs );
95bool contains( const NodeCollectionPTR nc, const size_t node_id );
96
100template < typename NodeModelT >
101void register_node_model( const std::string& name, std::string deprecation_info = std::string() );
102
103void print_nodes_to_stream( std::ostream& out = std::cout );
104
106RngPtr get_vp_synced_rng( size_t tid );
107RngPtr get_vp_specific_rng( size_t tid );
108
109void set_kernel_status( const Dictionary& dict );
111
115void connect( NodeCollectionPTR sources,
116 NodeCollectionPTR targets,
117 const Dictionary& connectivity,
118 const std::vector< Dictionary >& synapse_params );
119
127void disconnect( NodeCollectionPTR sources,
128 NodeCollectionPTR targets,
129 const Dictionary& connectivity,
130 const std::vector< Dictionary >& synapse_params );
131
139 NodeCollectionPTR targets,
140 NodeCollectionPTR third,
141 const Dictionary& connectivity,
142 const Dictionary& third_connectivity,
143 const std::map< std::string, std::vector< Dictionary > >& synapse_specs );
144
161void connect_arrays( const long* sources,
162 const long* targets,
163 const double* weights,
164 const double* delays,
165 const std::vector< std::string >& p_keys,
166 const double* p_values,
167 size_t n,
168 const std::string& syn_model );
169
170void connect_sonata( const Dictionary& graph_specs, const long hyperslab_size );
171
172std::deque< ConnectionID > get_connections( const Dictionary& dict );
173
174void disconnect( const std::deque< ConnectionID >& conns );
175
176void simulate( const double t );
177
193void run( const double t );
194
205void prepare();
206
218void cleanup();
219
223void synchronize();
224
231MaskPTR create_mask( const std::string& name, const Dictionary& d );
232
233void copy_model( const std::string& oldmodname, const std::string& newmodname, const Dictionary& dict );
234
235void set_model_defaults( const std::string& model_name, const Dictionary& );
236Dictionary get_model_defaults( const std::string& model_name );
237
239ParameterPTR create_parameter( const double );
240ParameterPTR create_parameter( const long );
241ParameterPTR create_parameter( const Dictionary& param_dict );
242ParameterPTR create_parameter( const std::string& name, const Dictionary& d );
243
247
250
251double get_value( const ParameterPTR param );
252bool is_spatial( const ParameterPTR param );
253
254std::vector< double > apply( const ParameterPTR param, const NodeCollectionPTR nc );
255std::vector< double > apply( const ParameterPTR param, const Dictionary& positions );
256
257NodeCollectionPTR node_collection_array_index( NodeCollectionPTR node_collection, const long* array, unsigned long n );
258NodeCollectionPTR node_collection_array_index( NodeCollectionPTR node_collection, const bool* array, unsigned long n );
259
260// for debugging and testing mostly
261std::vector< size_t > node_collection_to_array( NodeCollectionPTR node_collection, const std::string& selection );
262
263template < class T >
264inline bool
265register_parameter( const std::string& name )
266{
267 return parameter_factory_().register_subtype< T >( name );
268}
269
270template < class T >
271inline bool
273{
274 return mask_factory_().register_subtype< T >( T::get_name() );
275}
276
277inline bool
278register_mask( const std::string& name, MaskCreatorFunction creator )
279{
280 return mask_factory_().register_subtype( name, creator );
281}
282
283inline MaskPTR
284create_mask( const std::string& name, const Dictionary& d )
285{
286 d.init_access_flags();
287 auto mask = MaskPTR( mask_factory_().create( name, d ) );
288 d.all_entries_accessed( "CreateMask", "specs" );
289 return mask;
290}
291
292void message( const VerbosityLevel, const std::string&, const std::string&, const std::string&, const size_t );
293
294} // namespace nest
295
296#endif /* NEST_H */
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class for RNG engine wrappers.
Definition random_generators.h:67
Generic Factory class for objects deriving from a base class BaseT.
Definition generic_factory.h:52
BaseT *(* CreatorFunction)(const Dictionary &d)
Definition generic_factory.h:54
bool register_subtype(const std::string &name)
Register a new subtype.
Definition generic_factory.h:109
DictionarySchema::VariantType< std::shared_ptr< nest::NodeCollection >, std::vector< std::vector< double > >, std::vector< std::vector< std::vector< double > > >, std::vector< std::vector< std::vector< long > > >, std::shared_ptr< nest::Parameter >, AnyVector, nest::VerbosityLevel, EmptyList > any_type
Complete any_type by adding specific data types.
Definition dictionary.h:123
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
void disconnect(NodeCollectionPTR sources, NodeCollectionPTR targets, const Dictionary &connectivity, const std::vector< Dictionary > &synapse_params)
Disconnect nodes.
Definition nest.cpp:433
void(* deliver_logging_event_ptr)(const LoggingEvent &e)
Definition logging.h:53
RngPtr get_vp_specific_rng(size_t tid)
Definition kernel_manager.h:298
void run(const double time)
Definition nest.cpp:507
RngPtr get_vp_synced_rng(size_t tid)
Definition kernel_manager.h:292
RngPtr get_rank_synced_rng()
Definition kernel_manager.h:286
void set_connection_status(const std::deque< ConnectionID > &conns, const Dictionary &dict)
Definition nest.cpp:251
MaskPTR create_mask(const std::string &name, const Dictionary &d)
Create a new Mask object using the mask factory.
Definition nest.h:284
bool register_parameter(const std::string &name)
Definition nest.h:265
void register_logger_client(const deliver_logging_event_ptr client_callback)
Definition nest.cpp:119
void synchronize()
Force synchronization of MPI processes.
Definition nest.cpp:540
std::shared_ptr< AbstractMask > MaskPTR
Definition mask.h:44
std::vector< double > apply(const ParameterPTR param, const NodeCollectionPTR nc)
Definition nest.cpp:690
void register_connection_model(const std::string &name)
Register connection model (i.e.
Definition nest_impl.h:35
void copy_model(const std::string &oldmodname, const std::string &newmodname, const Dictionary &dict)
Definition nest.cpp:546
void enable_structural_plasticity()
Definition nest.cpp:107
bool is_spatial(const ParameterPTR param)
Definition nest.cpp:684
double get_value(const ParameterPTR param)
Definition nest.cpp:677
void init_nest(int *argc, char **argv[])
Definition nest.cpp:54
NodeCollectionPTR slice_nc(const NodeCollectionPTR nc, long start, long stop, long step)
Definition nest.cpp:330
bool equal(const NodeCollectionPTR lhs, const NodeCollectionPTR rhs)
Definition nest.cpp:392
bool register_mask()
Definition nest.h:272
std::vector< size_t > node_collection_to_array(NodeCollectionPTR node_collection, const std::string &selection)
Definition nest.cpp:744
ParameterFactory & parameter_factory_(void)
Definition nest.cpp:663
std::string print_nodes_to_string()
Definition nest.cpp:125
NodeCollectionPTR get_nodes(const Dictionary &params, const bool local_only)
Definition nest.cpp:386
MaskFactory::CreatorFunction MaskCreatorFunction
Definition nest.h:246
size_t nc_size(NodeCollectionPTR nc)
Definition nest.cpp:142
NodeCollectionPTR create_spatial(const Dictionary &layer_dict)
Definition nest.cpp:374
void reset_kernel()
Definition nest.cpp:101
void connect_sonata(const Dictionary &graph_specs, const long hyperslab_size)
Definition nest.cpp:467
void print_nodes_to_stream(std::ostream &out=std::cout)
void set_nc_status(NodeCollectionPTR nc, std::vector< Dictionary > &params)
Definition nest.cpp:210
std::vector< Dictionary > get_connection_status(const std::deque< ConnectionID > &conns)
Definition nest.cpp:290
std::deque< ConnectionID > get_connections(const Dictionary &dict)
Definition nest.cpp:473
void prepare()
do calibrations for network, open files, ... before run()
Definition nest.cpp:528
void cleanup()
do cleanup after a simulation, such as closing files
Definition nest.cpp:534
void connect(NodeCollectionPTR sources, NodeCollectionPTR targets, const Dictionary &connectivity, const std::vector< Dictionary > &synapse_params)
Create bipartite connections.
Definition nest.cpp:424
Dictionary get_metadata(const NodeCollectionPTR nc)
Definition nest.cpp:410
NodeCollectionPTR create(const std::string &model_name, const size_t n_nodes)
Definition nest.cpp:362
Dictionary get_model_defaults(const std::string &component)
Definition nest.cpp:569
NodeCollectionPTR node_collection_array_index(NodeCollectionPTR nc, const long *array, unsigned long n)
Definition nest.cpp:712
void set_model_defaults(const std::string &component, const Dictionary &dict)
Definition nest.cpp:552
NodeCollectionPTR make_nodecollection(const std::vector< size_t > &node_ids)
Definition nest.cpp:380
void connect_tripartite(NodeCollectionPTR sources, NodeCollectionPTR targets, NodeCollectionPTR third, const Dictionary &connectivity, const Dictionary &third_connectivity, const std::map< std::string, std::vector< Dictionary > > &synapse_specs)
Create tripartite connections.
Definition nest.cpp:442
VerbosityLevel
Report only messages at levels higher than chosen level to user or logs. Default INFO.
Definition logging.h:40
void set_node_status(const size_t node_id, const Dictionary &dict)
Definition nest.cpp:308
ParameterPTR create_parameter(const any_type &value)
Definition nest.cpp:601
void message(const VerbosityLevel level, const std::string &function, const std::string &message, const std::string &file, const size_t line)
Definition nest.cpp:775
void shutdown_nest(int exitcode)
Definition nest.cpp:86
Dictionary get_node_status(const size_t node_id)
Definition nest.cpp:314
std::shared_ptr< Parameter > ParameterPTR
Definition parameter.h:40
bool contains(const NodeCollectionPTR nc, const size_t node_id)
Definition nest.cpp:398
void register_node_model(const std::string &name, std::string deprecation_info=std::string())
Register node model (i.e.
Definition nest_impl.h:42
void connect_arrays(const long *sources, const long *targets, const double *weights, const double *delays, const std::vector< std::string > &p_keys, const double *p_values, size_t n, const std::string &syn_model)
Connect arrays of node IDs one-to-one.
Definition nest.cpp:454
void simulate(const double t)
Definition nest.cpp:499
void install_module(const std::string &module)
Definition nest.cpp:95
std::shared_ptr< NodeCollection > NodeCollectionPTR
Definition node_collection.h:50
MaskFactory & mask_factory_(void)
Definition nest.cpp:670
std::string pprint_to_string(NodeCollectionPTR nc)
Definition nest.cpp:133
Dictionary get_kernel_status()
Definition nest.cpp:157
void disable_structural_plasticity()
Definition nest.cpp:113
long find(const NodeCollectionPTR nc, size_t node_id)
Definition nest.cpp:404
void set_kernel_status(const Dictionary &dict)
Definition nest.cpp:149
Dictionary get_nc_status(NodeCollectionPTR nc)
Definition nest.cpp:169