Impl( EventSource& output, const URIHandler& params ) : _output( output ) , _report( params.getConfig().getReportSource( params.getReport( )), brion::MODE_READ, params.getGIDs( )) { const brain::Circuit circuit( params.getConfig( )); const auto morphologies = circuit.loadMorphologies( params.getGIDs(), brain::Circuit::COORDINATES_GLOBAL ); helpers::addCompartmentEvents( morphologies, _report, output ); }
Impl( EventSource& output, const URIHandler& params ) : _output( output ) , _report( params.getConfig().getReportSource( params.getReport( )), brion::MODE_READ, params.getGIDs( )) { const brain::Circuit circuit( params.getConfig( )); const auto morphologies = circuit.loadMorphologies( params.getGIDs(), brain::Circuit::Coordinates::global ); // add soma events only helpers::addCompartmentEvents( morphologies, _report, output, true ); }
SpikeLoader::SpikeLoader( const URIHandler& params ) : EventSource( params ) , _impl( new Impl( *this, params )) { if( getDt() < 0.f ) setDt( params.getConfig().getTimestep( )); }
Impl( EventSource& output, const URIHandler& params ) : _output( output ) , _circuit( params.getConfig( )) , _gids( params.getGIDs( )) , _voltageReport( params.getConfig().getReportSource( params.getReport( )), brion::MODE_READ, _gids ) , _areaReport( URI( params.getAreas( )), brion::MODE_READ, _gids ) , _restingPotential( 0.f ) , _areaMultiplier( 0.f ) , _spikeFilter( false ) , _apThreshold( 0.f ) , _interpolate( false ) { LBINFO << "Loading " << _gids.size() << " morphologies..." << std::endl; const auto morphologies = _circuit.loadMorphologies( _gids, brain::Circuit::Coordinates::global ); LBINFO << "Creating events..." << std::endl; helpers::addCompartmentEvents( morphologies, _voltageReport, _output ); LBINFO << "Loading areas..." << std::endl; _areas = _areaReport.loadFrame( 0.f ); }
Impl( EventSource& output, const URIHandler& params ) : _output( output ) { const auto& gids = params.getGIDs(); LBINFO << "Loading synapses for " << gids.size() << " cells..." << std::endl; boost::progress_display progress( gids.size( )); const brion::Synapse synapses( params.getConfig().getSynapseSource().getPath() + "/nrn_positions.h5" ); for( const uint32_t gid : gids ) { const brion::SynapseMatrix& data = synapses.read( gid, brion::SYNAPSE_PRESYNAPTIC_SURFACE_X | brion::SYNAPSE_PRESYNAPTIC_SURFACE_Y | brion::SYNAPSE_PRESYNAPTIC_SURFACE_Z ); for( size_t i = 0; i < data.shape()[0]; ++i ) _output.add( Event( Vector3f( data[i][0], data[i][1], data[i][2] ), 1.f )); ++progress; } }
Impl( EventSource& output, const URIHandler& params ) : _output( output ) , _duration( params.getDuration( )) , _spikesStart( 0.f ) , _spikesEnd( 0.f ) { const brion::GIDSet& gids = params.getGIDs(); const brain::Circuit circuit( params.getConfig( )); const brion::Vector3fs& positions = circuit.getPositions( gids ); size_t i = 0; _gidIndex.resize( *gids.rbegin() + 1 ); for( const uint32_t gid: gids ) { _output.add( Event( positions[ i ], VALUE_UNSET )); _gidIndex[gid] = i++; } _spikesPerNeuron.resize( gids.size( )); const std::string& spikePath = params.getSpikes(); _loadSpikes( spikePath.empty() ? params.getConfig().getSpikeSource() : brion::URI( spikePath )); }