33from sklearn .decomposition import PCA
44from scipy .stats import special_ortho_group as sog
55
6- from .cov_util import calc_cross_cov_mats_from_data
76from .data_util import CrossValidate , form_lag_matrix
87from .methods_comparison import SlowFeatureAnalysis as SFA
98from .dca import DynamicalComponentsAnalysis
@@ -114,15 +113,14 @@ def run_analysis(X, Y, T_pi_vals, dim_vals, offset_vals, num_cv_folds, decoding_
114113 Y_test_ctd = Y_test - Y_mean
115114
116115 # compute cross-cov mats for DCA
117- T_max = 2 * np .max (T_pi_vals )
118- cross_cov_mats = calc_cross_cov_mats_from_data (X_train_ctd , T_max )
116+ dca_model = DynamicalComponentsAnalysis ( T = np .max (T_pi_vals ) )
117+ dca_model . estimate_data_statistics (X_train_ctd )
119118
120119 # do PCA/SFA
121120 pca_model = PCA (svd_solver = 'full' ).fit (np .concatenate (X_train_ctd ))
122121 sfa_model = SFA (1 ).fit (X_train_ctd )
123122
124123 # make DCA object
125- opt = DynamicalComponentsAnalysis (d = 1 , T = 1 )
126124
127125 # loop over dimensionalities
128126 for dim_idx in range (len (dim_vals )):
@@ -147,9 +145,8 @@ def run_analysis(X, Y, T_pi_vals, dim_vals, offset_vals, num_cv_folds, decoding_
147145 # loop over T_pi vals
148146 for T_pi_idx in range (len (T_pi_vals )):
149147 T_pi = T_pi_vals [T_pi_idx ]
150- opt .cross_covs = cross_cov_mats [:2 * T_pi ]
151- opt .fit_projection (d = dim , n_init = n_init )
152- V_dca = opt .coef_
148+ dca_model .fit_projection (d = dim , T = T_pi , n_init = n_init )
149+ V_dca = dca_model .coef_
153150
154151 # compute DCA R2 over offsets
155152 X_train_dca = [np .dot (Xi , V_dca ) for Xi in X_train_ctd ]
@@ -221,21 +218,19 @@ def run_dim_analysis_dca(X, Y, T_pi, dim_vals, offset, num_cv_folds, decoding_wi
221218 Y_train_ctd = [Yi - Y_mean for Yi in Y_train ]
222219 Y_test_ctd = Y_test - Y_mean
223220
221+ # make DCA object
224222 # compute cross-cov mats for DCA
225- cross_cov_mats = calc_cross_cov_mats_from_data (X_train_ctd , 2 * T_pi )
226-
227- # make DCA object with arb parameters
228- opt = DynamicalComponentsAnalysis (d = 1 , T = 1 )
223+ dca_model = DynamicalComponentsAnalysis (T = T_pi )
224+ dca_model .estimate_data_statistics (X_train_ctd )
229225
230226 # loop over dimensionalities
231227 for dim_idx in range (len (dim_vals )):
232228 dim = dim_vals [dim_idx ]
233229 if verbose :
234230 print ("dim" , dim_idx + 1 , "of" , len (dim_vals ))
235231
236- opt .cross_covs = cross_cov_mats
237- opt .fit_projection (d = dim , n_init = n_init )
238- V_dca = opt .coef_
232+ dca_model .fit_projection (d = dim , n_init = n_init )
233+ V_dca = dca_model .coef_
239234
240235 # compute DCA R2 over offsets
241236 X_train_dca = [np .dot (Xi , V_dca ) for Xi in X_train_ctd ]
0 commit comments