Skip to content

Commit b63d97d

Browse files
committed
made some changes to group.py, but if it fails i have the correct one in just in case.
1 parent d8ccd82 commit b63d97d

File tree

1 file changed

+40
-29
lines changed

1 file changed

+40
-29
lines changed

code/utils/group.py

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import glob
23
import pandas as pd
34
import plotly.graph_objects as go
45
import logging
@@ -13,7 +14,7 @@ class Group:
1314
def __init__(self):
1415
self.obs_path = Pipe.OBS_DIR
1516
self.int_path = Pipe.INT_DIR
16-
self.paths = [os.path.join(self.obs_path,'derivatives', 'GGIR-3.2.6-test'), os.path.join(self.int_path, 'derivatives', 'GGIR-3.2.6-test')]
17+
self.paths = [os.path.join(self.obs_path,'derivatives', 'GGIR-3.2.6-test-ncp-sleep'), os.path.join(self.int_path, 'derivatives', 'GGIR-3.2.6-test-ncp-sleep')]
1718
self.path = './plots/group'
1819

1920
'''
@@ -47,11 +48,13 @@ def _parse_person_file(self, file_path):
4748
if df.empty:
4849
logger.warning(f"{file_path} is empty.")
4950
return None
51+
session = df.get("filename", [""])[0].split("_")[-2] if "filename" in df else "unknown"
5052
return {
5153
"Sleep": sleep / total * 1440,
5254
"Inactivity": inactivity / total * 1440,
5355
"Light": light / total * 1440,
54-
"MVPA": mvpa / total * 1440
56+
"MVPA": mvpa / total * 1440,
57+
"Session": session
5558
}
5659
except Exception as e:
5760
logger.warning(f"Error reading file {file_path}: {e}")
@@ -66,21 +69,23 @@ def plot_person(self):
6669
if not entry.startswith("sub-"):
6770
continue
6871

69-
person_file = os.path.join(
70-
base_dir, entry, "accel", "output_accel", "results",
71-
"part5_personsummary_MM_L40M100V400_T5A5.csv"
72+
results_dir = os.path.join(
73+
base_dir, entry,
74+
"accel", "output_accel", "results"
7275
)
73-
74-
if not os.path.isfile(person_file):
75-
logger.debug(f"File not found for {entry}, skipping.")
76+
pattern = os.path.join(results_dir, "part5_personsummary_MM*.csv")
77+
matches = glob.glob(pattern)
78+
if not matches:
79+
logger.debug(f"No matching files in {results_dir}, skipping {entry}")
7680
continue
7781

78-
values = self._parse_person_file(person_file)
79-
if not values:
80-
continue
82+
for person_file in matches:
83+
values = self._parse_person_file(person_file)
84+
if not values:
85+
continue
8186

82-
values["Subject"] = entry
83-
durations.append(values)
87+
values["Subject"] = entry
88+
durations.append(values)
8489

8590
df_all = pd.DataFrame(durations)
8691
if not df_all.empty and "Subject" in df_all.columns:
@@ -89,9 +94,13 @@ def plot_person(self):
8994
else:
9095
logger.warning("No valid data found — skipping Subject filtering.")
9196

92-
self._plot_stacked_bar(df_all,
93-
title="Normalized Average Activity Composition by Subject (All Sessions)",
94-
filename="avg_plot_all.html")
97+
self._plot_stacked_bar(
98+
df_all,
99+
title="Normalized Average Activity Composition by Subject (All Sessions)",
100+
filename="avg_plot_all.html"
101+
)
102+
103+
95104
def plot_session(self):
96105
durations = []
97106

@@ -108,28 +117,29 @@ def plot_session(self):
108117
if not session_folder.startswith("ses"):
109118
continue
110119

111-
person_file = os.path.join(
120+
results_dir = os.path.join(
112121
subject_path,
113122
session_folder,
114123
f"output_{session_folder}",
115-
"results",
116-
"part5_personsummary_MM_L40M100V400_T5A5.csv"
124+
"results"
117125
)
118-
119-
if not os.path.isfile(person_file):
120-
logger.debug(f"Missing file for {entry}/{session_folder}, skipping.")
126+
pattern = os.path.join(results_dir, "part5_personsummary_MM*.csv")
127+
matches = glob.glob(pattern)
128+
if not matches:
129+
logger.debug(f"No matching files in {results_dir}, skipping {entry}/{session_folder}")
121130
continue
122131

123-
values = self._parse_person_file(person_file)
124-
if not values:
125-
continue
132+
for person_file in matches:
133+
values = self._parse_person_file(person_file)
134+
if not values:
135+
continue
126136

127-
values["Subject"] = entry
128-
values["Session"] = session_folder
129-
durations.append(values)
137+
values["Subject"] = entry
138+
values["Session"] = session_folder
139+
durations.append(values)
130140

131141
df_all = pd.DataFrame(durations)
132-
if not df_all.empty and "Subject" in df_all.columns and "Session" in df_all.columns:
142+
if not df_all.empty and {"Subject", "Session"}.issubset(df_all.columns):
133143
df_all = df_all[~df_all["Subject"].str.startswith("sub-6")].reset_index(drop=True)
134144
df_all = df_all.sort_values(["Session", "Subject"]).reset_index(drop=True)
135145
else:
@@ -142,6 +152,7 @@ def plot_session(self):
142152
y_key="Subject",
143153
filename=f"avg_plot_{session}.html"
144154
)
155+
145156
def _plot_stacked_bar(self, df, title, filename, y_key="Subject"):
146157
if df.empty:
147158
logger.warning("No data to plot.")

0 commit comments

Comments
 (0)