1111class 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