Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F121834622
main.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jul 14, 06:59
Size
2 KB
Mime Type
text/x-c
Expires
Wed, Jul 16, 06:59 (2 d)
Engine
blob
Format
Raw Data
Handle
27398851
Attached To
R5159 CS116-2017-Romain-GROS
main.cpp
View Options
#include <iostream>
#include <iomanip>
#include "neurone.hpp"
#include "constant.h"
#include <fstream>
using
namespace
std
;
double
AskForTime
();
bool
SpecialValueForI
();
void
DemanderBornes
(
double
&
borne_inf
,
double
&
borne_sup
,
double
temps_f
);
double
DemanderI
();
void
print
(
ofstream
&
donnees
,
double
potential
,
int
time
);
void
printSpikeTimes
(
ofstream
&
donnees
,
std
::
vector
<
double
>
spikeTimes
);
int
main
()
{
double
temps_f
(
0.0
);
do
{
temps_f
=
AskForTime
();
}
while
(
temps_f
<=
0
);
unsigned
int
NumberOfTimes
(
0
);
NumberOfTimes
=
(
temps_f
*
0.001
)
/
DeltaTime
;
Neurone
neurone
;
ofstream
donnees
(
"donnees.txt"
,
ios
::
out
);
donnees
<<
setw
(
20
)
<<
"Membrane Potential : (mV)"
;
donnees
<<
setw
(
20
)
<<
"Time : (ms)"
<<
std
::
endl
;
donnees
<<
std
::
endl
;
print
(
donnees
,
neurone
.
getMembranePotential
(),
-
1
);
bool
isvalueForI
=
SpecialValueForI
();
double
valueForI
(
0.0
);
double
borne_inf
(
0.0
);
double
borne_sup
(
0.0
);
if
(
isvalueForI
)
{
DemanderBornes
(
borne_inf
,
borne_sup
,
temps_f
);
valueForI
=
DemanderI
();
}
double
I
(
0.0
);
for
(
unsigned
int
i
(
0
);
i
<
NumberOfTimes
;
++
i
)
{
if
(
i
>=
borne_inf
and
i
<
borne_sup
)
{
I
=
valueForI
;
}
else
{
I
=
0.0
;
}
neurone
.
update
(
I
,
i
*
DeltaTime
);
print
(
donnees
,
neurone
.
getMembranePotential
(),
i
);
}
printSpikeTimes
(
donnees
,
neurone
.
getSpikeTimes
());
donnees
.
close
();
return
0
;
}
double
AskForTime
()
{
double
duree
(
0
);
std
::
cout
<<
"Entrez la durée de la simulation (en ms) : "
<<
std
::
endl
;
cin
>>
duree
;
return
duree
;
};
bool
SpecialValueForI
()
{
double
yes_or_no
(
0.0
);
do
{
std
::
cout
<<
"Do you want to enter a value for I ? 1 -> yes , 0 -> no"
<<
std
::
endl
;
cin
>>
yes_or_no
;
}
while
(
yes_or_no
!=
0
and
yes_or_no
!=
1
);
if
(
yes_or_no
==
0
)
{
return
false
;
}
return
true
;
}
void
DemanderBornes
(
double
&
borne_inf
,
double
&
borne_sup
,
double
temps_f
)
{
do
{
std
::
cout
<<
"Entrez les bornes inférieurs puis supérieures des temps pour lesquels cette valeur doit s'appliquer :"
<<
std
::
endl
;
cin
>>
borne_inf
>>
borne_sup
;
}
while
(
borne_inf
<
0
or
borne_inf
>=
borne_sup
or
borne_sup
>
temps_f
);
}
double
DemanderI
()
{
double
I
;
std
::
cout
<<
"Entrez la valeur de I : "
<<
std
::
endl
;
cin
>>
I
;
return
I
;
}
void
print
(
ofstream
&
donnees
,
double
potential
,
int
time
)
{
donnees
<<
setw
(
20
)
<<
potential
*
mV
;
donnees
<<
setw
(
20
)
<<
(
time
+
1
)
*
DeltaTime
*
ms
<<
std
::
endl
;
}
void
printSpikeTimes
(
ofstream
&
donnees
,
std
::
vector
<
double
>
spikeTimes
)
{
donnees
<<
std
::
endl
;
if
(
spikeTimes
.
empty
())
{
donnees
<<
"Pas de spike"
<<
std
::
endl
;
}
else
{
for
(
unsigned
int
i
(
0
);
i
<
spikeTimes
.
size
();
++
i
)
{
donnees
<<
"Spike "
<<
setw
(
5
)
<<
i
+
1
;
donnees
<<
setw
(
10
)
<<
spikeTimes
[
i
]
<<
std
::
endl
;
}
}
}
Event Timeline
Log In to Comment