|
@@ -1,3 +1,4 @@
|
|
|
+import os
|
|
|
import numpy as np
|
|
|
import multiprocessing
|
|
|
import scipy.signal as signal
|
|
@@ -271,9 +272,14 @@ def generate_responses(num_responses, stimulus, repeats, dt, noise, tau_m, num_c
|
|
|
return spikes
|
|
|
|
|
|
|
|
|
-def main():
|
|
|
+def main(args=None):
|
|
|
"""Run the simulation.
|
|
|
"""
|
|
|
+ if args is None:
|
|
|
+ num_cores = int(multiprocessing.cpu_count() / 2)
|
|
|
+ else:
|
|
|
+ num_cores = args.jobs
|
|
|
+
|
|
|
dt = 0.00001 # s sr = 100 kHz
|
|
|
duration = 2 # s
|
|
|
lower_cutoffs = [0, 100, 200] # Hz
|
|
@@ -290,7 +296,6 @@ def main():
|
|
|
vel_squid = 25.
|
|
|
vel_corp_callosum = 7.0
|
|
|
|
|
|
- num_cores = multiprocessing.cpu_count() - 1
|
|
|
for lc, uc in zip(lower_cutoffs, upper_cutoffs):
|
|
|
print("generating stimulus %i -- %i Hz..." % (lc, uc), end="\r")
|
|
|
stimulus = whitenoise(lc, uc, dt, duration) * amplitude
|
|
@@ -301,18 +306,18 @@ def main():
|
|
|
print("generating responses... done")
|
|
|
|
|
|
population_sizes = list(range(1, int(np.round(2 * num_responses / 3) + 1), 2))
|
|
|
- print("analysing populations, no delay... ", end="\r")
|
|
|
+ print("analysing populations, no delay... ", end="\r", flush=True)
|
|
|
information = process_populations(spikes, stimulus, population_sizes, 0.0, (lc, uc), kernel_sigma, dt, duration, repeats, vel_efish, num_cores)
|
|
|
- print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_efish), end="\r")
|
|
|
+ print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_efish), end="\r", flush=True)
|
|
|
information_efish = process_populations(spikes, stimulus, population_sizes, density, (lc, uc), kernel_sigma, dt, duration, repeats, vel_efish, num_cores)
|
|
|
- print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_squid), end="\r")
|
|
|
+ print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_squid), end="\r", flush=True)
|
|
|
information_squid = process_populations(spikes, stimulus, population_sizes, density, (lc, uc), kernel_sigma, dt, duration, repeats, vel_squid, num_cores)
|
|
|
- print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_corp_callosum), end="\r")
|
|
|
+ print(r"analysing populations, density: %i m^-1, vel.: %.1f m s^-1 ..." % (density, vel_corp_callosum), end="\r", flush=True)
|
|
|
information_cc = process_populations(spikes, stimulus, population_sizes, density, (lc, uc), kernel_sigma, dt, duration, repeats, vel_corp_callosum, num_cores)
|
|
|
print(r"analysing populations ... done" + " " * 80)
|
|
|
|
|
|
velocities = {"efish": vel_efish, "squid": vel_squid, "corpus callosum": vel_corp_callosum}
|
|
|
- np.savez_compressed("../data/lif_simulation_%i_%i.npz" % (lc, uc), population_sizes=population_sizes,
|
|
|
+ np.savez_compressed(os.path.join("derived_data", f"lif_simulation_{int(lc)}_{int(uc)}_test.npz"), population_sizes=population_sizes,
|
|
|
info_no_delays=information, info_delay_efish=information_efish,
|
|
|
info_delay_squid=information_squid, info_delay_cc=information_cc,
|
|
|
cutoffs=(lc, uc), density=density, velocities=velocities)
|