def METHOD_NAME(self, data):
    # Method to fit the FastICA models
    # Check if the whitening step is already done
    if self.whiten_components is None:
        # Perfrom the whitening step
        self.perform_data_whitening(data)
    fit_start_time = time.time()
    # Create the FastICA object from sklearn without performing
    # the whiten step
    fastICA_object = FastICA(algorithm="parallel",
                             whiten=False, fun='logcosh',
                             max_iter=self.max_iter,
                             tol=1e-10)
    # Fit the model
    fastICA_object.METHOD_NAME(self.whiten_data[:, :self.n_components])
    # Calculate the independend components and the sources and save
    # the results
    indep_comp = np.dot(fastICA_object.components_,
                        self.whiten_components[:self.n_components, :])
    indep_sources = np.dot(indep_comp, data.to_numpy().T).T
    components_index = pd.RangeIndex(start=1,
                                     stop=self.n_components + 1,
                                     name="IC")
    indep_sources_df = pd.DataFrame(indep_sources,
                                    index=data.index,
                                    columns=components_index
                                    ).add_prefix("IC_")
    indep_comp_df = pd.DataFrame(indep_comp,
                                 index=components_index,
                                 columns=data.columns
                                 ).T.add_prefix("IC_").T
    self.projected_data = indep_sources_df
    self.components = indep_comp_df
    logging_print(stats_dict_to_string({
        "Number of used iterations": fastICA_object.n_iter_
    }))
    timer_print(fit_start_time,
                prefix="FastICA component optimalisation is ready")