added the tuning curve script
This commit is contained in:
parent
3b493fa079
commit
71d8c78f5c
74
code/tuning_curve_max.py
Normal file
74
code/tuning_curve_max.py
Normal file
@ -0,0 +1,74 @@
|
||||
import glob
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import rlxnix as rlx
|
||||
import scipy as sp
|
||||
import time
|
||||
import useful_functions as f
|
||||
|
||||
# tatsächliche Power der peaks benutzen
|
||||
|
||||
|
||||
|
||||
# variables
|
||||
delta = 2.5 # radius for peak detection
|
||||
|
||||
# all files we want to use
|
||||
files = glob.glob("../data/2024-10-16-af*.nix")
|
||||
|
||||
# get only the good and fair filepaths
|
||||
new_files = f.remove_poor(files)
|
||||
|
||||
|
||||
# loop over all the good files
|
||||
for file in new_files:
|
||||
# load a file
|
||||
dataset = rlx.Dataset(file)
|
||||
# extract sams
|
||||
sams = dataset.repro_runs('SAM')
|
||||
# get arrays for frequnecies and power
|
||||
stim_frequencies = np.zeros(len(sams))
|
||||
peak_powers = np.zeros_like(stim_frequencies)
|
||||
# loop over all sams
|
||||
for i, sam in enumerate(sams):
|
||||
# get sam frequency and stimuli
|
||||
avg_dur, _, _, _, _, _, stim_frequency = f.sam_data(sam)
|
||||
print(avg_dur)
|
||||
if np.isnan(avg_dur):
|
||||
continue
|
||||
# use this to change lists basically and add the contrast somewhere
|
||||
else:
|
||||
stimuli = sam.stimuli
|
||||
# lists for the power spectra
|
||||
frequencies = []
|
||||
powers = []
|
||||
# loop over the stimuli
|
||||
for stimulus in stimuli:
|
||||
# get the powerspectrum for each stimuli
|
||||
frequency, power = f.power_spectrum(stimulus)
|
||||
# append the power spectrum data
|
||||
frequencies.append(frequency)
|
||||
powers.append(power)
|
||||
#average over the stimuli
|
||||
sam_frequency = np.mean(frequencies, axis = 0)
|
||||
sam_power = np.mean(powers, axis = 0)
|
||||
# detect and validate peaks
|
||||
integral, surroundings, peak_power = f.calculate_integral(sam_frequency,
|
||||
sam_power, stim_frequency)
|
||||
valid = f.valid_integrals(integral, surroundings, stim_frequency)
|
||||
#if there is a peak get the power in the peak powers
|
||||
if valid == True:
|
||||
peak_powers[i] = peak_power
|
||||
# add the current stimulus frequency
|
||||
stim_frequencies[i] = stim_frequency
|
||||
|
||||
# replae zeros with NaN
|
||||
peak_powers = np.where(peak_powers == 0, np.nan, peak_powers)
|
||||
|
||||
plt.plot(stim_frequencies, peak_powers)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user