Bayesian adaptive dual control of deep brain stimulation in a computational model of Parkinson's disease
The code to run the basal ganglia thalamocortical system (BGTCS) mean field model (MFM) is provided here. Additionally, we have provided the simulated continuous deep brain stimulation (cDBS) and phasic DBS (pDBS).
- Create and activate virtual environment
$ virtualenv pyenv
$ source pyenv/bin/activate # OSX/Linux
$ pyenv\Scripts\activate.bat # Windows
Note: Using a virtual environment isn't necessary, but will prevent conflicts with any packages you already have installed on your system.
- Install requirements
$ pip install -r requirements.txt
$ python mfm.py
Run Info
--------
length : 50.0 s
DD : True
cDBS : False
pDBS : False
SWIFT Parameters
----------------
f : 29.0 Hz
tau_s : 0.2397 s
tau_f : 0.0479 s
0:00:05 [==================== 100.00 % ====================] 0:00:00
Saving data...
RunID: 000
Each run is automatically numbered and saved in data/
.
$ python mfm.py --help
BGTCS MFM
Usage:
mfm [options] [<key>=<value>]...
Options:
-l --list List all options
-h --help Show this screen
$ python mfm.py --list
Available options:
Option Default
--------------- ---------
Cm 0.0001
DD True
RunID -1
cDBS False
cDBS_amp 3.0
cDBS_f 130.0
cDBS_width 60.0
dt 0.001
pDBS False
pDBS_amp 2.38
pDBS_phase 2.24
pDBS_power_thr -28.57
pDBS_ref_period 0.3
pDBS_width 60
state_target p1
stim_start 0.0
stim_target STN
swift_c 10
swift_f 29
swift_s2f 5
swift_tau_s 0.2397
tstop 50.0
verbose True
For more details, such as units, etc, look at the source of MFM._load_params().
$ python mfm.py DD=False # turn DD off
$ python mfm.py tstop=100 cDBS=True # run for 100s, turn cDBS on
$ python mfm.py pDBS=True # turn pDBS on
By default, all model runs are saved in data/
as <RunID>.mfm
. The runs are saved simply by pickling the MFM object. The script plot.py
is provided to re-load and plot a run after saving and exiting.
$ python plot.py 0
Run Info
--------
length : 50.0 s
DD : True
cDBS : False
pDBS : False
SWIFT Parameters
----------------
f : 29.0 Hz
tau_s : 0.2397 s
tau_f : 0.0479 s
plot.py
either takes a RunID int
or filename str
. It also prints metadata about the run.
To generate figure 3 from the paper, run fig_3.py
.
$ python fig_3.py