فهرست منبع

gin commit from platypus

New files: 1
Modified files: 4
Jan Grewe 2 سال پیش
والد
کامیت
156ca55efe

+ 0 - 0
code/__init__.py


+ 1 - 6
code/analyses/baseline_response_properties.py

@@ -3,18 +3,14 @@ import logging
 import numpy as np
 import pandas as pd
 import rlxnix as rlx
-import multiprocessing
 
 from scipy.stats import circmean
 from scipy.signal import vectorstrength
-
 from joblib import Parallel, delayed
 
 from ..util import read_file_list, detect_eod_times
 
 
-
-
 def burst_fraction(spike_times, eod_period, threshold=1.5):
     """Calculate the fraction of spontaneous spikes that are fired in bursts (0. -> 1.0).
     Bursts are assumed for spikes that follow preceding spikes with a inter-spike-interval
@@ -128,10 +124,9 @@ def analyze_cell(dataset_name, data_folder):
     return baseline_results
 
 
-def run_baseline_analysis(list_folder, data_folder):
+def run_baseline_analysis(list_folder, data_folder, num_cores=1):
     logging.basicConfig(level=logging._nameToLevel["WARNING"], force=True)
     datasets = read_file_list(os.path.join(list_folder, "baseline_datasets.dat"))
-    num_cores = multiprocessing.cpu_count() - 6
     processed_list = Parallel(n_jobs=num_cores)(delayed(analyze_cell)(dataset, data_folder) for dataset in datasets)
     df = pd.DataFrame(processed_list)
     return df

+ 0 - 1
code/analyses/heterogeneous_populations.py

@@ -5,7 +5,6 @@ import rlxnix as rlx
 from joblib import Parallel, delayed
 
 from ..util import load_white_noise_stim, mutual_info
-from IPython import embed
 
 spike_buffer = {}
 stimulus_name = "gwn300Hz10s0.3.dat"

+ 12 - 7
code/simulations/lif_simulation.py

@@ -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)

+ 2 - 4
code/util.py

@@ -3,8 +3,6 @@ import numpy as np
 import matplotlib.mlab as mlab
 from scipy.interpolate import interp1d
 
-from IPython import embed
-
 
 def read_file_list(filename):
     """Reads the files containing the dataset names.
@@ -238,12 +236,12 @@ def load_stim(filename):
     return tuple(ret)
 
 
-def load_white_noise_stim(stim_name, stim_duration=10, sampling_rate=20000, folder="/data/stimuli"):
+def load_white_noise_stim(stim_name, stim_duration=10, sampling_rate=20000, folder="stimuli"):
     if stim_duration == 0.0:
         print("Stimulus duration must be larger than zero!")
         return None, None
     if not os.path.exists(folder):
-        folder = os.path.expanduser("~/data/stimuli")
+        folder = os.path.expanduser(os.path.join("~", "data", "stimuli"))
     stim_file = stim_name.split('/')[-1]
     full_file = os.path.sep.join([folder, stim_file])
     if not os.path.exists(full_file):