Page MenuHomec4science

network.cpp
No OneTemporary

File Metadata

Created
Wed, Sep 18, 05:25

network.cpp

#include <iostream>
#include <vector>
#include <iomanip>
#include "network.hpp"
#include "constant.h"
#include <tgmath.h>
Network::Network() {}
Network::~Network() {
for (auto& neu : neurones_) {
delete neu;
neu=nullptr;
}
neurones_.clear();
}
void Network::addNeurone(Neurone* neurone) {
if (neurone != nullptr) {
neurones_.push_back(neurone);
}
}
void Network::update(unsigned int time_f, std::ofstream& donnees) {
unsigned int t(0);
while (t < time_f) {
if (not neurones_.empty()) {
for (auto& neu : neurones_) {
bool spike(false);
spike=neu->update(t);
///1) Verify for each neurone if it spikes
if (spike) {
for (auto& target : neurones_) {
if (target!=neu) {
target->receive(t+synaptic_delay);
}
///2) if it spikes, transmit to the neurone connected the information
}
}
}
}
this->print(donnees,t);
++t;
}
}
void Network::print(std::ofstream& donnees, unsigned int t) {
for (auto neu : neurones_) {
donnees << std::setw(20) << neu->getMembranePotential()*mV;
donnees << std::setw(20) << (t)*DeltaTime*ms << std::endl; //maybe t+1
}
donnees<<std::endl;
}
void Network::printSpikeTimes(std::ofstream& donnees) {
for (unsigned int i(0); i < 2; ++i) {
donnees << std::endl;
if((neurones_[i]->getSpikeTimes()).empty()) {
donnees << "Pas de spike" << std::endl;
} else {
for (unsigned int j(0);j<(neurones_[i]->getSpikeTimes()).size();++j) {
donnees << "Spike " << std::setw(5) << i+1;
donnees << std::setw(10) << (neurones_[i]->getSpikeTimes())[j]*ms*DeltaTime << std::endl;
}
}
}
}

Event Timeline