Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F85133970
test_sims.py
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
Fri, Sep 27, 00:27
Size
3 KB
Mime Type
text/x-python
Expires
Sun, Sep 29, 00:27 (2 d)
Engine
blob
Format
Raw Data
Handle
21081963
Attached To
R4670 PySONIC (old)
test_sims.py
View Options
# -*- coding: utf-8 -*-
# @Author: Theo Lemaire
# @Email: theo.lemaire@epfl.ch
# @Date: 2017-06-14 18:37:45
# @Last Modified by: Theo Lemaire
# @Last Modified time: 2020-04-22 15:11:50
''' Test the basic functionalities of the package. '''
from
PySONIC.core
import
BilayerSonophore
,
NeuronalBilayerSonophore
from
PySONIC.core.drives
import
AcousticDrive
,
ElectricDrive
from
PySONIC.core.protocols
import
PulsedProtocol
from
PySONIC.utils
import
logger
from
PySONIC.neurons
import
getPointNeuron
,
getNeuronsDict
from
PySONIC.test
import
TestBase
class
TestSims
(
TestBase
):
a
=
32e-9
# m
USdrive
=
AcousticDrive
(
500e3
,
100e3
)
def
test_MECH
(
self
,
is_profiled
=
False
):
logger
.
info
(
'Test: running MECH simulation'
)
Qm0
=
-
80e-5
# membrane resting charge density (C/m2)
Cm0
=
1e-2
# membrane resting capacitance (F/m2)
Qm
=
50e-5
# C/m2
bls
=
BilayerSonophore
(
self
.
a
,
Cm0
,
Qm0
)
self
.
execute
(
lambda
:
bls
.
simulate
(
self
.
USdrive
,
Qm
),
is_profiled
)
def
test_ESTIM
(
self
,
is_profiled
=
False
):
logger
.
info
(
'Test: running ESTIM simulation'
)
ELdrive
=
ElectricDrive
(
10.0
)
# mA/m2
pp
=
PulsedProtocol
(
100e-3
,
50e-3
)
pneuron
=
getPointNeuron
(
'RS'
)
self
.
execute
(
lambda
:
pneuron
.
simulate
(
ELdrive
,
pp
),
is_profiled
)
def
test_ASTIM_sonic
(
self
,
is_profiled
=
False
):
logger
.
info
(
'Test: ASTIM sonic simulation'
)
pp
=
PulsedProtocol
(
50e-3
,
10e-3
)
pneuron
=
getPointNeuron
(
'RS'
)
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
# test error 1: sonophore radius outside of lookup range
try
:
nbls
=
NeuronalBilayerSonophore
(
100e-9
,
pneuron
)
nbls
.
simulate
(
self
.
USdrive
,
pp
,
method
=
'sonic'
)
except
ValueError
:
logger
.
debug
(
'Out of range radius: OK'
)
# test error 2: frequency outside of lookups range
try
:
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
nbls
.
simulate
(
AcousticDrive
(
10e3
,
self
.
USdrive
.
A
),
pp
,
method
=
'sonic'
)
except
ValueError
:
logger
.
debug
(
'Out of range frequency: OK'
)
# test error 3: amplitude outside of lookups range
try
:
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
nbls
.
simulate
(
AcousticDrive
(
self
.
USdrive
.
f
,
1e6
),
pp
,
method
=
'sonic'
)
except
ValueError
:
logger
.
debug
(
'Out of range amplitude: OK'
)
# Run simulation on all neurons
for
name
,
neuron_class
in
getNeuronsDict
()
.
items
():
if
name
not
in
(
'template'
,
'LeechP'
,
'LeechT'
,
'LeechR'
,
'SWnode'
):
pneuron
=
neuron_class
()
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
self
.
execute
(
lambda
:
nbls
.
simulate
(
self
.
USdrive
,
pp
,
method
=
'sonic'
),
is_profiled
)
def
test_ASTIM_full
(
self
,
is_profiled
=
False
):
logger
.
info
(
'Test: running ASTIM detailed simulation'
)
pp
=
PulsedProtocol
(
1e-6
,
1e-6
)
pneuron
=
getPointNeuron
(
'RS'
)
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
self
.
execute
(
lambda
:
nbls
.
simulate
(
self
.
USdrive
,
pp
,
method
=
'full'
),
is_profiled
)
def
test_ASTIM_hybrid
(
self
,
is_profiled
=
False
):
logger
.
info
(
'Test: running ASTIM hybrid simulation'
)
pp
=
PulsedProtocol
(
0.6e-3
,
0.1e-3
)
pneuron
=
getPointNeuron
(
'RS'
)
nbls
=
NeuronalBilayerSonophore
(
self
.
a
,
pneuron
)
self
.
execute
(
lambda
:
nbls
.
simulate
(
self
.
USdrive
,
pp
,
method
=
'hybrid'
),
is_profiled
)
if
__name__
==
'__main__'
:
tester
=
TestSims
()
tester
.
main
()
Event Timeline
Log In to Comment