Skip to content

Commit 4f4f4ea

Browse files
Correct postprocess
1 parent 70d39cd commit 4f4f4ea

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

postprocess.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def postproc():
1616

1717
basedir = args.results
1818
mean_path = os.path.join(basedir, 'mean_result.nii')
19+
corr_path = os.path.join(basedir, 'correlations.csv')
1920
ds_path = os.path.join(basedir, 'dataset.csv')
2021

2122
ids = []
@@ -37,9 +38,14 @@ def postproc():
3738
nib.save(mean_nifti_image, mean_path)
3839
print(f"Mean result image written to [{mean_path}]")
3940

41+
print(f"Computing all correlations between [{size}] results...")
42+
correlations = postproc_srv.get_all_correlations(basedir, ids)
43+
correlations.to_csv(corr_path, index=False, sep=';')
44+
print(f"Correlations written to [{corr_path}]")
45+
4046
print(f"Building dataset from [{size}] results...")
41-
dataframe = postproc_srv.get_dataframe(basedir, ids)
42-
dataframe.to_csv(ds_path, index=False, sep=';')
47+
dataset = postproc_srv.get_dataset(basedir, correlations)
48+
dataset.to_csv(ds_path, index=False, sep=';')
4349
print(f"Dataset CSV written to [{mean_path}]")
4450

4551

postprocess/postprocess_service.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,34 @@
1111
class PostprocessService:
1212
corr_srv = CorrelationService()
1313

14-
def get_dataframe(self, path, ids: List[str]) -> pd.DataFrame:
14+
def get_dataset(self, path, corr: pd.DataFrame) -> pd.DataFrame:
1515
dataframes = []
16-
ref_contrast = os.path.join(path, 'ref', '_subject_id_01', 'result.nii')
17-
mean = os.path.join(path, 'mean_result.nii')
18-
for conf_id in ids:
19-
contrast = os.path.join(path, conf_id, '_subject_id_01', 'result.nii')
20-
config = os.path.join(path, conf_id, 'config.csv')
16+
for conf_id in corr['source'].unique():
17+
if conf_id == 'ref' or conf_id == 'mean':
18+
continue
19+
config = os.path.join(path, str(conf_id), 'config.csv')
2120
df = pd.read_csv(config, delimiter=';').astype(bool)
2221
df['id'] = conf_id
23-
df['from_ref'] = self.corr_srv.get_correlation_coefficient(contrast, ref_contrast, 'spearman')
24-
df['from_mean'] = self.corr_srv.get_correlation_coefficient(contrast, mean, 'spearman')
22+
df['from_ref'] = corr.loc[(corr['source'] == conf_id) & (corr['target'] == 'ref'), 'correlation'].values[0]
23+
df['from_mean'] = corr.loc[(corr['source'] == conf_id) & (corr['target'] == 'mean'), 'correlation'].values[0]
2524
dataframes.append(df)
2625

2726
return pd.concat(dataframes, ignore_index=True)
2827

28+
def get_all_correlations(self, path, ids: List[str]) -> pd.DataFrame:
29+
dataframes = []
30+
niis = {'ref': os.path.join(path, 'ref', '_subject_id_01', 'result.nii'),
31+
'mean': os.path.join(path, 'mean_result.nii')}
32+
for conf_id in ids:
33+
niis[conf_id] = os.path.join(path, conf_id, '_subject_id_01', 'result.nii')
34+
35+
for id_src in niis:
36+
for id_tgt in niis:
37+
corr = self.corr_srv.get_correlation_coefficient(niis[id_tgt], niis[id_src], 'spearman')
38+
dataframes.append(pd.DataFrame([[id_src, id_tgt, corr]], columns=['source', 'target', 'correlation']))
39+
40+
return pd.concat(dataframes, ignore_index=True).sort_values(by='correlation', ascending=False)
41+
2942
def get_mean_image(self, inputs: list, batch_size: int) -> nib.Nifti1Image:
3043
total_sum = None
3144
count = 0
@@ -54,4 +67,4 @@ def get_mean_image(self, inputs: list, batch_size: int) -> nib.Nifti1Image:
5467
# Create a new NIfTI image with the mean data
5568
mean_nifti = nib.Nifti1Image(mean_image, affine=nib.load(inputs[0]).affine)
5669

57-
return mean_nifti
70+
return mean_nifti

0 commit comments

Comments
 (0)