def peaks_in_block1P(fname="../../Daten/BekJan/HOAF_02.vhdr", dauer=60):
    """
    Methode um es für einen Probanden auszurechnen,
    dafür relativen Pfad mit Name des Probanden versehen
    """
    df = load_blocks()
    s0, t0, s1, t1, s2, t2 = df.loc[path.basename(fname)]
    freq, point = af_blocks(fname, dauer=dauer, start=s2, endzeit=t2)
    point = np.array(point)
    # freq, point = af_blocks(fname, start=s0, endzeit=t0)
    """
    Plot der nicht die Datenpunkte sondern noch die Zeiten betrachtet,
    da kein Vergleich zwischen den Blöcken
    """
    point = point - point[0] + 0.5 * dauer
    #%matplotlib
    plt.plot(point, freq)
    plt.xlabel("Zeit(s)")
    plt.ylabel("Af 1/120s")
    plt.title("Af_Stressblock_x")
    plt.gca().axvspan(6, 154, facecolor="0.8", alpha=0.5)
    plt.gca().axvspan(182, 330, facecolor="0.8", alpha=0.5)
    plt.gca().axvspan(358, 506, facecolor="0.8", alpha=0.5)
    plt.gca().axvspan(534, 682, facecolor="0.8", alpha=0.5)
    return freq, point
def plot_blocks(fname):
    """
    so-t2 sind die Anfangs und Endzeiten von allen 3 Blöcken in chronologischer Reihenfolge
    definiert über die REsponseantwort während der Blöcke.
    """
    df = load_blocks()
    s0, t0, s1, t1, s2, t2 = df.loc[path.basename(fname)]
    plt.gca().axvspan(s0, t0, alpha=0.2, color="red")
    plt.gca().axvspan(s1, t1, alpha=0.2, color="blue")
    plt.gca().axvspan(s2, t2, alpha=0.2, color="red")
    plt.legend()
def peaks_in_block(fname, dauer=60, block0=True):
    """
    aufrufen der Funktion für 1 Stressblock: freq0, point0 = peaks_in_block(fname)
    block0= true, für 2 Stressblock:
    freq2, point2 = peaks_in_block(fname, block0=False), block0 auf false
    plot: plt.plot(point0, freq0)
    plt.plot(point2, freq2)
    """
    df = load_blocks()
    s0, t0, s1, t1, s2, t2 = df.loc[path.basename(fname)]
    s, t = (s0, t0) if block0 else (s2, t2)
    freq, point = af_blocks(fname, dauer=dauer, start=s, endzeit=t)
    point = np.array(point)
    """
    da wir den moving average betrachten, verlieren wir am Anfang und am Ende 
    Zeit diese Zeit müssen wir wieder hinzurechnen
    """
    return freq, point - point[0] + 0.5 * dauer
    lf = (ef.reset_index().melt(id_vars=["prob_id"],
                                value_name="eda",
                                var_name="time").dropna())
    lf["block"] = pd.NA
    for i, (pid, breaks) in enumerate(blocks.iterrows()):
        breaks[0] = -0.001
        intervals = pd.IntervalIndex.from_breaks(breaks)
        rows = lf.prob_id == pid
        block_codes = pd.cut(lf.loc[rows, "time"], intervals).cat.codes
        lf.loc[rows, "block"] = block_codes
    lf.block = lf.block.astype("int8")
    return lf


if __name__ == "__main__":
    bs = load_blocks()
    keep = bs.index.str.match(r"HOAF_\d.+vhdr")
    bs.drop(bs[~keep].index, inplace=True)
    bs[0] = 0.0
    bs = bs.reindex(columns=sorted(bs.columns))
    bs.index.set_names("file", inplace=True)

    duration = pd.DataFrame(index=bs.index)
    for i in range(6):
        duration[i] = bs[i + 1] - bs[i]
    duration.to_csv("duration.tsv", sep="\t", float_format="%.2f")

    blocks = index_prob_id(bs)
    lf = eda_long(blocks)
    lf.eda *= 1e6
    lf.to_csv("eda_long.tsv", sep="\t", float_format="%07.4f", index=False)
    s, t = (s0, t0) if block0 else (s2, t2)
    freq, point = af_blocks(fname, dauer=dauer, start=s, endzeit=t)
    point = np.array(point)
    """
    da wir den moving average betrachten, verlieren wir am Anfang und am Ende 
    Zeit diese Zeit müssen wir wieder hinzurechnen
    """
    return freq, point - point[0] + 0.5 * dauer


if __name__ == "__main__":
    process_all = True
    if process_all:
        ls = []
        point = None
        filenames = [path.join("../../Daten/BekJan/", f) for f in load_blocks().index]
        for filepath in filenames:
            freq, point = peaks_in_block(filepath)
            ls.append(freq)
            matrix = np.array(ls)
            dmatrix = pd.DataFrame(matrix)

df_peak.columns = [
    "HOAF_01",
    " HOAF_02",
    "HOAF_03",
    "HOAF_04",
    "HOAF_05",
    "HOAF_09",
    "HOAF_11",
    "HOAF_12",
示例#6
0
                (reduce_mean(times, size=size), reduce_mean(data, size=size))
            )  # reduced mean(um die Datenpunkte zu minimieren)
        with open(backup, "wb") as io:
            pickle.dump(ls, io)
    return ls


if __name__ == "__main__":
    process_all = True
    if process_all:
        """
        s kann flexibel angepasst werden jenachdem wieviele Datenpunkte wir darstellen wollen
        """
        size = 50000
        rs = 1
        filenames = [path.join(DATEN + "/BekJan/", f) for f in load_blocks().index]

        ls = compute_reduced_eda(size, filenames)
        for (times, data) in ls:
            """
            würde man vor data noch zscore setzten, dann kann man sich die Abweichungen vom Mittelwert, bzw der Std darstellen
            rolling (moving average): Glätten der Daten durch Vergleich mit den Nachbardaten
            """
            plt.plot(times, pd.Series(data).rolling(rs).mean())
            plt.title("alle Probanden EDA" + " s=" + str(size) + " rs=" + str(rs))
            plt.xlabel("Zeit(s)")
            plt.ylabel("EDA(S)", labelpad=25)
    else:
        fname = DATEN + "/BekJan/HOAF_16.vhdr"
        times, data, _ = load_eda(fname)
        """