Skip to content
Snippets Groups Projects
Commit 99b6ae83 authored by Pintér Gergő's avatar Pintér Gergő
Browse files

A mérés első fejezete, működő, saját terv szerint

parent 5f8c7b93
Branches
No related tags found
No related merge requests found
Showing
with 11745 additions and 69 deletions
......@@ -2,27 +2,31 @@
SAMPLING_FREQ = 250 #mintavételi freq, ez stabil, írja, ha megváltozik, nem változtatni
SIGNAL_TIME = 350 #ha időre fut a kód, akkor a start signal után az input() helyére sleep(...)
RESIST_TIME = 5
RESIST_TIME = 10
EPOCH_LEN = 30 #30 s-nyi epochokkal dolgozik
YASA_INPUT_LEN = 2*60 #percben (az epoch 30 s)
#EEG metadata values
NAME = "PG"
MALE = True
AGE = 22
#file managing
FILE_IDENTIFIER = "full_night_audio2"
FILE_IDENTIFIER = "full_night_audio"
FILE_FOLDER_NAME = "C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\output_files"
ANALYZE_FILE = True #ábrázoljuk a mentett fájlokat. Futtatásnál false
SHOW_FEEDBACK = True #sárgával színezi, hogy a check_pip alapján mikor volt ing. Aktuális check_pip!
#audiofeedback
CHECK_LEN = 3
FREQUENCY_RIGHT = 138 #a kettő különbségét érzékeljük a sztereo hangzásból
FREQUENCY_LEFT = 135
DELAY = 10 #hány epochal a kezdés után indul el a mérés
CHECK_LEN = 8
#EZT A NÉGYET KELL ÁLLÍTANI, MÁSHOZ NE NYÚLJATOK
FREQUENCY_RIGHT = 250
FREQUENCY_LEFT = 253
N2_N3 = 1
N3 = 0.5
#sleepstaging first wake hour file path
......
......@@ -135,7 +135,6 @@ try:
print("Disconnect from sensor")
del sensor
del scanner
print('Remove scanner')
except Exception as err:
......
......@@ -8,11 +8,9 @@ Feldolgozáshoz beírni az analyze_file()-ba a fájl abszolút elérési útvona
import os
import datetime
import pandas as pd
import matplotlib.pyplot as plt
import yasa
import constants as c
import sleep_stage_classifer as s
import audio_feedback as a
import visualizer as v
def sleep_stage_file_maker():
......@@ -36,64 +34,7 @@ def sleep_stage_file_maker():
yasa_output_df = pd.DataFrame(s.yasa_output_list)
yasa_output_df.to_csv(file_path, index=False)
v.analyze_file(file_path)
def analyze_file(csv_file_path):
"""
Fájl feldolgozása, statisztika, valószínűségi plot,
hisztogram.
- A csv.-t feldolgozzuk, külön DataFrame-be kerülnek a betűvel jelzett 'Stage'-k és az 5 oszlopnyi 'Probability'.
- Ábrázoljuk egy 'yasa' parancssor alapján a hisztogramot. Méretét az adatok mennyisége határozza meg.
- Ábrázoljuk 'matplotlib'-bel a valószínűségeket (ahogy a 'yasa'-ban is, de az fájlból nem működik). Méretét az
adatmennyiség határozza meg.
- Ábrázoljuk az összes szükséges értéket és kimutatást 'yasa' függvény segítségével.
- A c.SHOW_FEEDBACK egy kapcsoló, jelzi (kiemelővel a valószínűségploton) hogy mikor volt a check_pip szerint audio
stimuláció. Mindig az aktuális check_pip feltételekre!
:param csv_file_path: output_list-be mentett .csv fájlok abszolút elérési útvonala
"""
df = pd.read_csv(csv_file_path)
stages = df['Stage']
probabilities = df.iloc[:, 1:] # Az első oszlop a 'Stages', a többi a valószínűsége
stages_int = yasa.hypno_str_to_int(stages)
if c.SHOW_FEEDBACK:
dict_list = df.to_dict(orient='records')
pip_results = [a.check_pip(dict_list[:i + 1]) for i in range(len(dict_list))]
# Hipnogram ábrázolása
plt.figure(figsize=(int(len(stages) / 40), 5))
hypn = yasa.Hypnogram(stages, freq="30s")
hypn.plot_hypnogram(lw=2, fill_color="whitesmoke")
plt.show()
# Valószínűségplot ábrázolása
colors = ["#99d7f1", "#009DDC", "xkcd:twilight blue", "xkcd:rich purple", "xkcd:sunflower"]
ax = probabilities.plot(kind='area', figsize=(int(len(probabilities) / 6), 5), stacked=True, color=colors,
alpha=0.8, linewidth=0)
ax.set_xlabel('Time (30-sec epoch)')
ax.set_ylabel('Probability')
ax.legend(frameon=False, bbox_to_anchor=(1, 1))
if c.SHOW_FEEDBACK:
for i, result in enumerate(pip_results):
if result: # Ha True, akkor kiemeljük az adott szakaszt
ax.axvspan(i, i + 1, color='yellow', alpha=0.5) # Kiemelés sárga színnel
plt.show()
# print((sum(pip_results) / 2), "percnyi ingerlés volt összesen")
# Alvási statisztikák kiíratása táblázatban
statistics = yasa.sleep_statistics(stages_int, sf_hyp=1 / 30)
stat_df = pd.DataFrame(list(statistics.items()), columns=['Parameter', 'Value'])
plt.figure(figsize=(4, 6))
plt.title('Sleep Statistics')
plt.axis('off')
plt.table(cellText=stat_df.values, colLabels=stat_df.columns, loc='center', cellLoc='center',
colColours=['lightgray'] * 2)
plt.tight_layout()
plt.show()
if c.ANALYZE_FILE:
analyze_file(
r'C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\output_files\02_28_full_night_audio2.csv')
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment