コード例 #1
0
 def extract_vector(self):
     if self.level == 2:
         self.df_cifti_load = pd.DataFrame(
             self.fmri_data_np_arr.mean(axis=2))
     if type(self.seed_ROI_name) == list and len(self.seed_ROI_name) > 1:
         if self.seed_analysis_output == 'parcellated':
             self.df_cifti_load = pd.DataFrame(
                 self.parcellated_cifti_load.get_fdata())
             self.df_cifti_load.columns = self.parcel_labels
             self.df_cifti_load['avg'] = self.df_cifti_load[
                 self.seed_ROI_name].mean(axis=1)
             self.parcel_labels = self.df_cifti_load.columns.to_list()
         else:
             self.df_cifti_load = pd.DataFrame(self.cifti_load.get_fdata())
             df_parcellated_cifti_load = pd.DataFrame(
                 self.parcellated_cifti_load.get_fdata())
             df_parcellated_cifti_load.columns = self.parcel_labels
             self.df_cifti_load['avg'] = df_parcellated_cifti_load[
                 self.seed_ROI_name].mean(axis=1)
         self.seed_ROI_name = 'avg'
     else:
         if self.seed_analysis_output == 'dense':
             self.df_cifti_load = pd.DataFrame(self.cifti_load.get_fdata())
             df_parcellated_cifti_load = pd.DataFrame(
                 self.parcellated_cifti_load.get_fdata())
             df_parcellated_cifti_load.columns = self.parcel_labels
             self.df_cifti_load[
                 self.seed_ROI_name] = df_parcellated_cifti_load[
                     self.seed_ROI_name]
         else:
             self.df_cifti_load = pd.DataFrame(
                 self.parcellated_cifti_load.get_fdata())
     cifti_np_array = self.df_cifti_load.to_numpy()
     if self.method == 'correlation':
         #Pearson correlation coefficients with LedoitWolf covariance estimator
         #measure = ConnectivityMeasure(kind='correlation',cov_estimator='LedoitWolf')
         #Pearson correlation coefficients based oemperical covariance (i.e. standard)
         measure = ConnectivityMeasure(kind='correlation',
                                       cov_estimator=EmpiricalCovariance())
     elif self.method == 'covariance':
         #LedoitWolf estimator
         measure = ConnectivityMeasure(kind='covariance')
     elif self.method == 'partial_correlation':
         # Partial correlation with LedoitWolf covariance estimator
         measure = ConnectivityMeasure(kind='partial correlation')
     elif self.method == 'precision':
         measure = ConnectivityMeasure(kind='precision')
     elif 'sparse' in self.method:
         measure = GraphicalLassoCV()
     if 'sparse' in self.method:
         measure.fit(cifti_np_array)
         if 'covariance' in self.method:
             network_matrix = measure.covariance_
         elif 'precision' in self.method:
             network_matrix = measure.precision_
     else:
         network_matrix = measure.fit_transform([cifti_np_array])[0]
     df_network_matrix = pd.DataFrame(network_matrix)
     df_network_matrix.columns = self.parcel_labels
     if self.seed_ROI_name == 'avg':
         # take everything except last element, i.e. avg. Need to do this because downstream this object must match grayordinate_file
         self.r_functional_vector = df_network_matrix[
             self.seed_ROI_name][:-1].to_numpy()
     else:
         self.r_functional_vector = np.squeeze(
             df_network_matrix[self.seed_ROI_name].to_numpy())
     self.z_functional_vector = 0.5 * (
         np.log(1 + self.r_functional_vector) -
         np.log(1 - self.r_functional_vector))