74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
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)
|
|
|
|
|
|
|
|
|
|
|
|
|