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))