def __init__(self,
              signal,
              freq,
              file=False,
              filename=None,
              show_plot=False):
     self._y = signal
     self._freq = freq
     self._derivative = self._get_derivative(signal)
     if file:
         self.data = nk.eda_process(signal, sampling_rate=freq)
         if show_plot:
             nk.plot_events_in_signal(nk.z_score(self.data["df"]),
                                      self.data["EDA"]["SCR_Peaks_Indexes"])
             print(self.data["EDA"]["SCR_Peaks_Indexes"])
             plt.show()
         self.save_to_file(filename, self.data)
     else:
         self.data = self.read_from_file(filename)
Beispiel #2
0
def test_create_epochs(df):
    df = pd.DataFrame({
        "Trigger":
        pd.Series(
            scipy.signal.square(1 * np.pi * 5 *
                                np.linspace(0, 1, 2000, endpoint=False))),
        "Signal":
        pd.Series(np.sin(20 * np.pi * np.linspace(0, 1, 2000, endpoint=False)))
        * np.random.normal(0, 1, 2000),
        "Signal2":
        pd.Series(np.sin(60 * np.pi * np.linspace(0, 1, 2000, endpoint=False)))
        * np.random.normal(0, 2, 2000)
    })
    df.plot()
    events = nk.find_events(df["Trigger"], cut="lower")
    assert len(events) == 2

    fig = nk.plot_events_in_signal(df, events["onsets"])

    epochs = nk.create_epochs(df, events["onsets"], duration=0.1)
    assert len(epochs) == 2
Beispiel #3
0
import neurokit as nk

df = nk.read_acqknowledge("abnormal_ECG.acq")

events = nk.find_events(df["Photosensor"], cut="lower")
df = nk.create_epochs(df, events["onsets"], duration=events["durations"])[0]

#df["Photosensor"].plot()
df = nk.ecg_process(df['ECG, X, RSPEC-R'])
ecg = df["ECG"]
df = df["df"]
#rpeaks = nk.ecg_find_peaks(df['ECG_Filtered'])
nk.plot_events_in_signal(df['ECG_Filtered'], ecg["R_Peaks"])
#df['ECG, X, RSPEC-R'].iloc[104000:140000].plot()
Beispiel #4
0
    threshold = 0.5*np.std(decg_power)
    threshold = np.median(thresholds)
    max_power = np.median(max_powers)
    decg_power[decg_power < threshold] = 0

    decg_power = decg_power/max_power
    decg_power[decg_power > 1.0] = 1.0
    square_decg_power = decg_power**2

#    shannon_energy = -square_decg_power*np.log(square_decg_power)  # This errors
#    shannon_energy[np.where(np.isfinite(shannon_energy) == False)] = 0.0
    shannon_energy = -square_decg_power*np.log(square_decg_power.clip(min=1e-6))
    shannon_energy[np.where(shannon_energy <= 0)] = 0.0


    mean_window_len = int(sampling_rate*0.125+1)
    lp_energy = np.convolve(shannon_energy, [1.0/mean_window_len]*mean_window_len, mode='same')
    #lp_energy = scipy.signal.filtfilt(*lowpass2, x=shannon_energy)

    lp_energy = scipy.ndimage.gaussian_filter1d(lp_energy, sampling_rate/8.0)
    lp_energy_diff = np.diff(lp_energy)

    rpeaks = (lp_energy_diff[:-1] > 0) & (lp_energy_diff[1:] < 0)
    rpeaks = np.flatnonzero(rpeaks)
    rpeaks -= 1

    return(rpeaks)

rpeaks = segmenter_pekkanen(df["ECG_Raw"], 1000)
nk.plot_events_in_signal(df["ECG_Raw"], rpeaks)