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

Kész kód, ez alapján zajlik a mérés

parent 99b6ae83
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,6 @@ import threading ...@@ -5,7 +5,6 @@ import threading
import constants as c import constants as c
# Globális változók
sample_rate = 44100 sample_rate = 44100
phase_left = 0 phase_left = 0
phase_right = 0 phase_right = 0
...@@ -39,7 +38,7 @@ def check_pip(tester_list): ...@@ -39,7 +38,7 @@ def check_pip(tester_list):
past_first_N3 = True past_first_N3 = True
else: else:
last_probas = [{k: v for k, v in elem.items() if k != 'Stage'} for elem in tester_list[-c.CHECK_LEN:]] last_probas = [{k: v for k, v in elem.items() if k != 'Stage'} for elem in tester_list[-c.CHECK_LEN:]]
all_conditions_met = all((elem['N2'] + elem['N3'] > c.N2_N3) and (elem['N3'] <= c.N3) for elem in last_probas) all_conditions_met = all((elem['W'] <= c.W) and (elem['N3'] <= c.N3) for elem in last_probas) and len(tester_list) < c.Terminate
return all_conditions_met return all_conditions_met
......
#data/device managing #data/device managing
SAMPLING_FREQ = 250 #mintavételi freq, ez stabil, írja, ha megváltozik, nem változtatni 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 = 10 RESIST_TIME = 10
EPOCH_LEN = 30 #30 s-nyi epochokkal dolgozik EPOCH_LEN = 30 #30 s-nyi epochokkal dolgozik a yasa
YASA_INPUT_LEN = 2*60 #percben (az epoch 30 s) YASA_INPUT_LEN = 2*60 #percben (az epoch 30 s)
#EEG metadata values #EEG metadata values
NAME = "PG"
MALE = True MALE = True
AGE = 22 AGE = 22
...@@ -19,14 +17,12 @@ FILE_FOLDER_NAME = "C:\Programkornyezet\PythonProjects\AudiostimulationProject\A ...@@ -19,14 +17,12 @@ FILE_FOLDER_NAME = "C:\Programkornyezet\PythonProjects\AudiostimulationProject\A
#audiofeedback #audiofeedback
DELAY = 10 #hány epochal a kezdés után indul el a mérés CHECK_LEN = 10
CHECK_LEN = 8
#EZT A NÉGYET KELL ÁLLÍTANI, MÁSHOZ NE NYÚLJATOK
FREQUENCY_RIGHT = 250 FREQUENCY_RIGHT = 250
FREQUENCY_LEFT = 253 FREQUENCY_LEFT = 253
N2_N3 = 1 W = 0.95
N3 = 0.5 N3 = 0.5
TERMINATE = 780
#sleepstaging first wake hour file path #sleepstaging first wake hour file path
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -19,7 +19,6 @@ import yasa ...@@ -19,7 +19,6 @@ import yasa
import mne import mne
import numpy as np import numpy as np
import pickle import pickle
import os
import constants as c import constants as c
import audio_feedback as a import audio_feedback as a
...@@ -144,7 +143,7 @@ def epoch_maker(data): ...@@ -144,7 +143,7 @@ def epoch_maker(data):
""" """
#Ezzel vettem fel az egy óra ébrenlétet, ha meég szükség lesz rá. #Ezzel vettem fel az egy óra ébrenlétet, ha még szükség lesz rá.
def save_data_with_pickle(data_list): #csak az egy órás adathoz kellett def save_data_with_pickle(data_list): #csak az egy órás adathoz kellett
f_path = r"C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\one_hour_wake.pkl" f_path = r"C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\one_hour_wake.pkl"
with open(f_path, 'wb') as file: with open(f_path, 'wb') as file:
......
...@@ -21,22 +21,34 @@ def txt_maker(file_path): ...@@ -21,22 +21,34 @@ def txt_maker(file_path):
finish_time = datetime.now() finish_time = datetime.now()
start_time = finish_time - timedelta(seconds=len(s.yasa_output_list) * c.EPOCH_LEN) start_time = finish_time - timedelta(seconds=len(s.yasa_output_list) * c.EPOCH_LEN)
# A szöveg, ahol a konstansokat azok értékével helyettesítjük
generated_text = f"Kezdés ideje: {start_time.strftime('%Y-%m-%d %H:%M')}\n" generated_text = f"Kezdés ideje: {start_time.strftime('%Y-%m-%d %H:%M')}\n"
generated_text += f"Befejezés ideje: {finish_time.strftime('%Y-%m-%d %H:%M')}\n" generated_text += f"Befejezés ideje: {finish_time.strftime('%Y-%m-%d %H:%M')}\n"
generated_text += f"Ingerlés: \n Az első {c.DELAY / 2} percben nem történik ingerlés az alvás megszilárdulásának elősegítése miatt.\n" generated_text += f"Ingerlés: \n Az első teljes N3 ciklusig nincs ingerlés\n"
generated_text += f"Az utolsó {c.CHECK_LEN} epochban ellenőrzi a feltételek teljesülését.\n" generated_text += f"Az utolsó {c.CHECK_LEN} epochban ellenőrzi a feltételek teljesülését.\n"
generated_text += f"Audio_feedback történik, ha az N2+N3 valószínűség átlépi a {c.N2_N3} valószínűséget.\n" generated_text += f"Audio_feedback történik az éjszaka folyamán\n"
generated_text += f"Leáll, ha az N3 valószínűsége átlépi a {c.N3} értéket.\n" generated_text += f"Leáll, ha az N3 valószínűsége átlépi a {c.N3} értéket, vagy W valószínűsége átlépi a {c.W} értéket\n"
generated_text += f"Az alvás eslő {c.TERMINATE/120} órájában van ingerlés"
generated_text += f"A binaurális ütem jobb oldali vivőfrekvenciája {c.FREQUENCY_RIGHT}, a bal {c.FREQUENCY_LEFT} Hz\n" generated_text += f"A binaurális ütem jobb oldali vivőfrekvenciája {c.FREQUENCY_RIGHT}, a bal {c.FREQUENCY_LEFT} Hz\n"
generated_text += f"Az ütem frekvenciája: {c.FREQUENCY_RIGHT-c.FREQUENCY_LEFT}" generated_text += f"Az ütem frekvenciája: {c.FREQUENCY_RIGHT-c.FREQUENCY_LEFT}"
# A generált szöveg mentése a megadott fájlba
with open(file_path, "w") as text_file: with open(file_path, "w") as text_file:
text_file.write(generated_text) text_file.write(generated_text)
def analyze_file(csv_file_path): def analyze_file(csv_file_path):
"""
Vizualizálja,
és menti az alvás eredményeit
- Feldolgozza a mérés végén létrejött csv fájlt.
- Hypnogramot, valószínűség-plotot ábrázol az alvási fázisokról az idő függvényében, és alvási statisztikát készít.
- A valószínűség-ploton ábrázolja az aktuális audiofeedback logika szerint, hogy mikor volt az alvás alatt visszajelzés
- A plotokat kimenti a meghatározott helyre
- Ment egy Adatok.txt fájlt, ami a mérés beállításait tartalmazza röviden
- A kikommentelt részbe a kívánt elérési útvonalat beírva és futtatva tetszőleges fájlt lehet elemezni, DE figyelni a logika megváltozására
"""
a.past_first_N3 = False #a mentéshez az első N3-at ne számolja bele a.past_first_N3 = False #a mentéshez az első N3-at ne számolja bele
base_dir = "C:\\Users\\pinde\\OneDrive\\Szakdolgozat\\Mérések" base_dir = "C:\\Users\\pinde\\OneDrive\\Szakdolgozat\\Mérések"
today = datetime.now().strftime("%m.%d") # MM.DD formátum today = datetime.now().strftime("%m.%d") # MM.DD formátum
...@@ -45,7 +57,7 @@ def analyze_file(csv_file_path): ...@@ -45,7 +57,7 @@ def analyze_file(csv_file_path):
original_save_dir = save_dir original_save_dir = save_dir
while os.path.exists(save_dir): while os.path.exists(save_dir):
save_dir = f"{original_save_dir}_{c.NAME}_{counter}" save_dir = f"{original_save_dir}_{counter}"
counter += 1 counter += 1
os.makedirs(save_dir) os.makedirs(save_dir)
...@@ -100,4 +112,4 @@ def analyze_file(csv_file_path): ...@@ -100,4 +112,4 @@ def analyze_file(csv_file_path):
text_file_path = os.path.join(save_dir, "Adatok.txt") text_file_path = os.path.join(save_dir, "Adatok.txt")
txt_maker(text_file_path) txt_maker(text_file_path)
#analyze_file(r'C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\output_files\04_12_full_night_audio.csv') #analyze_file(r'C:\Programkornyezet\PythonProjects\AudiostimulationProject\AudiostimulationDirectory\output_files\04_15_full_night_audio.csv')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment