PCA with 95% Variance

Hi there,

I’m trying to compute PCA with 95% variance on an epochs object.

I’ve written the below function to do so:

def run_PCA(epochs):
    
    m = epochs.metadata
    pca = UnsupervisedSpatialFilter(PCA(0.95), average=False)
    X = epochs.get_data()
    pca_data = pca.fit_transform(X)
    
    events = epochs.events
    pca_components = pca_data.shape[1]
    
    info = mne.create_info(pca_components, epochs.info['sfreq'], ch_types='eeg')
    
    epochs_pca = mne.EpochsArray(pca_data, info, events)
    epochs_pca.metadata = m
    
    return epochs_pca

This function has then be saved in a separate .py file and I’m calling the function from an .ipynb notebook. When initially tested in a notebook the code worked fine, but once called in a separate notebook it will only return an epochs object with a single channel. Does anyone know why this is? I’ve repeatedly had the same problem where computing PCA using the UnsupervisedSpatialFilter function, where n_components is a percentage of variance instead of a selected number of components.

Update - worked out the problem. Accidently parsed other types of channel into the PCA which were not EEG.