diff --git a/code/utils/scene_slicer.py b/code/utils/scene_slicer.py index 9df8ad3..523aae5 100644 --- a/code/utils/scene_slicer.py +++ b/code/utils/scene_slicer.py @@ -15,8 +15,13 @@ # for i in range(8): # path_to_images.append("../../" + data_paths['bold_dico_7Tad2grpbold7Tad']['sub1']['runs'][0]['path']) + class SceneSlicer: - def __init__(self, path_to_images, path_to_scene_csv="../../ds113_study_description/stimulus/task001/annotations/scenes.csv"): + def __init__( + self, + path_to_images, + path_to_scene_csv="../../ds113_study_description/stimulus/task001/annotations/scenes.csv" + ): self.path_to_images = path_to_images self.path_to_scene_csv = path_to_scene_csv self.images = [0] * len(path_to_images) @@ -26,11 +31,14 @@ def __init__(self, path_to_images, path_to_scene_csv="../../ds113_study_descript self.scene_keys = [] def generate_scene_desc_dict(self): - with open(self.path_to_scene_csv, 'rb') as csvfile: - reader = csv.DictReader(csvfile, fieldnames=['seconds', 'scene', 'day-night', 'int-ext']) + with open(self.path_to_scene_csv, 'rt') as csvfile: + reader = csv.DictReader( + csvfile, + fieldnames=['seconds', 'scene', 'day-night', 'int-ext']) for row in reader: scene_time = int(float(row['seconds'])) - self.scene_desc[scene_time] = (row['day-night'] == "DAY", row['int-ext'] == "INT") + self.scene_desc[scene_time] = (row['day-night'] == "DAY", + row['int-ext'] == "INT") self.scene_keys = self.scene_desc.keys() self.scene_keys.sort() @@ -62,12 +70,16 @@ def get_scene_slices(self, run_num): key_index = i break for i in range(img.shape[3]): - if key_index + 1 < len(self.scene_keys) and (i * 2) + scene_start >= self.scene_keys[key_index + 1]: + if key_index + 1 < len(self.scene_keys) and ( + i * 2) + scene_start >= self.scene_keys[key_index + 1]: key_index += 1 curr_time = self.scene_keys[key_index] - day_slices.append(i) if self.scene_desc[curr_time][IS_DAY] else night_slices.append(i) - int_slices.append(i) if self.scene_desc[curr_time][IS_INT] else ext_slices.append(i) - self.scene_slices[run_num] = (day_slices, night_slices, int_slices, ext_slices) + day_slices.append(i) if self.scene_desc[curr_time][ + IS_DAY] else night_slices.append(i) + int_slices.append(i) if self.scene_desc[curr_time][ + IS_INT] else ext_slices.append(i) + self.scene_slices[run_num] = (day_slices, night_slices, int_slices, + ext_slices) return self.scene_slices[run_num] def get_day_night(self, run_num, slice): @@ -77,4 +89,3 @@ def get_day_night(self, run_num, slice): is_day_slice = slice in scene_slices[DAY_IND] is_int_slice = slice in scene_slices[INT_IND] return (is_day_slice, is_int_slice) - diff --git a/code/utils/tests/test_scene_slicer.py b/code/utils/tests/test_scene_slicer.py index 202bf04..c37eb2f 100644 --- a/code/utils/tests/test_scene_slicer.py +++ b/code/utils/tests/test_scene_slicer.py @@ -12,8 +12,8 @@ def test_prepare(): - data = np.array([[[[7, 9], [7, 8]], [[1, 2], [1, 8]]], - [[[2, 3], [2, 1]], [[5, 4], [4, 3]]]]) + data = np.array([[[[7, 9], [7, 8]], [[1, 2], [1, 8]]], [[[2, 3], [2, 1]], + [[5, 4], [4, 3]]]]) img = nib.Nifti1Image(data, affine=np.diag([1, 1, 1, 1])) nib.save(img, 'test_data.nii') with open('scene.csv', 'w') as csvfile: @@ -36,6 +36,7 @@ def test_scene_slicer_init(): assert ss.segment_duration == [902, 882, 876, 976, 924, 878, 1086, 673.4] delete_files() + def test_scene_slicer_dict(): ss = test_prepare() ss.generate_scene_desc_dict() @@ -45,21 +46,23 @@ def test_scene_slicer_dict(): assert ss.scene_desc[i][IS_INT] == 0 or ss.scene_desc[i][IS_INT] == 1 delete_files() + def test_scene_slicer_image(): ss = test_prepare() ss.get_image(0) assert ss.images[0] != 0 delete_files() + def test_scene_slicer_slices(): ss = test_prepare() ss.get_scene_slices(0) assert ss.scene_slices[0] != 0 delete_files() + def test_scene_slicer_day_night(): ss = test_prepare() scene_tup = ss.get_day_night(0, 0) assert scene_tup == (True, False) delete_files() -