diff --git a/miniapp/io.cpp b/miniapp/io.cpp index 54fb540117c2418b2d56ccbc950dc6c727122856..52594b6bcf872bc3eb22c0bc7376f2d98b35c060 100644 --- a/miniapp/io.cpp +++ b/miniapp/io.cpp @@ -16,7 +16,7 @@ namespace io { cl_options read_options(int argc, char** argv) { // set default options - const cl_options default_options{"", 1000, 500, 100, 100., 0.025, false}; + const cl_options default_options{"", 1000, 500, "expsyn", 100, 100., 0.025, false}; cl_options options; // parse command line arguments @@ -29,6 +29,9 @@ cl_options read_options(int argc, char** argv) { TCLAP::ValueArg<uint32_t> nsynapses_arg( "s", "nsynapses", "number of synapses per cell", false, 500, "non negative integer"); + TCLAP::ValueArg<std::string> syntype_arg( + "S", "syntype", "type of synapse (expsyn or exp2syn)", + false, "expsyn", "synapse type"); TCLAP::ValueArg<uint32_t> ncompartments_arg( "c", "ncompartments", "number of compartments per segment", false, 100, "non negative integer"); @@ -46,6 +49,7 @@ cl_options read_options(int argc, char** argv) { cmd.add(ncells_arg); cmd.add(nsynapses_arg); + cmd.add(syntype_arg); cmd.add(ncompartments_arg); cmd.add(ifile_arg); cmd.add(dt_arg); @@ -55,6 +59,7 @@ cl_options read_options(int argc, char** argv) { options.cells = ncells_arg.getValue(); options.synapses_per_cell = nsynapses_arg.getValue(); + options.syn_type = syntype_arg.getValue(); options.compartments_per_segment = ncompartments_arg.getValue(); options.ifname = ifile_arg.getValue(); options.tfinal = tfinal_arg.getValue(); diff --git a/miniapp/io.hpp b/miniapp/io.hpp index 6633abc51ddd884d65d666e46d7ae3222a64a183..1f530d9150c69b01cfa9f6cac8127180ff12ec70 100644 --- a/miniapp/io.hpp +++ b/miniapp/io.hpp @@ -11,6 +11,7 @@ struct cl_options { std::string ifname; uint32_t cells; uint32_t synapses_per_cell; + std::string syn_type; uint32_t compartments_per_segment; double tfinal; double dt; diff --git a/miniapp/miniapp.cpp b/miniapp/miniapp.cpp index ea5207dc732c69a42b3e66f1aa525a08cf69abca..fec0e995d56903f50a6b743b63df9eb01e428011 100644 --- a/miniapp/miniapp.cpp +++ b/miniapp/miniapp.cpp @@ -191,7 +191,7 @@ namespace synapses { /////////////////////////////////////// /// make a single abstract cell -mc::cell make_cell(int compartments_per_segment, int num_synapses); +mc::cell make_cell(int compartments_per_segment, int num_synapses, const std::string& syn_type); /// do basic setup (initialize global state, print banner, etc) void setup(); @@ -277,7 +277,7 @@ void all_to_all_model(nest::mc::io::cl_options& options, model& m) { // make a basic cell auto basic_cell = - make_cell(options.compartments_per_segment, synapses_per_cell); + make_cell(options.compartments_per_segment, synapses_per_cell, options.syn_type); auto num_domains = global_policy::size(); auto domain_id = global_policy::id(); @@ -400,7 +400,7 @@ void setup() { } // make a high level cell description for use in simulation -mc::cell make_cell(int compartments_per_segment, int num_synapses) { +mc::cell make_cell(int compartments_per_segment, int num_synapses, const std::string& syn_type) { nest::mc::cell cell; // Soma with diameter 12.6157 um and HH channel @@ -425,7 +425,7 @@ mc::cell make_cell(int compartments_per_segment, int num_synapses) { auto distribution = std::uniform_real_distribution<float>(0.f, 1.0f); // distribute the synapses at random locations the terminal dendrites in a // round robin manner - nest::mc::parameter_list syn_default("expsyn"); + nest::mc::parameter_list syn_default(syn_type); for (auto i=0; i<num_synapses; ++i) { cell.add_synapse({2+(i%2), distribution(gen)}, syn_default); }