diff --git a/scripts/CKA_analysis.py b/scripts/CKA_analysis.py deleted file mode 100644 index c017b37..0000000 --- a/scripts/CKA_analysis.py +++ /dev/null @@ -1,109 +0,0 @@ -import os -from tqdm import tqdm -import argparse -import pickle -from GithubFolder.src.cebra_lens import cebra_lens as lens -import matplotlib.pyplot as plt -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - activations_filepath="data/activations/offset10.pkl", - bool_comput=0, - saving_filepath="data/CKA/offset10.pkl", -): - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - with open(activations_filepath, "rb") as f: - activations_dict = pickle.load(f) - - if bool_comput: - comparisons = [ - ("single_UT", "single_TR"), - ("multi_UT", "multi_TR"), - ("single_TR", "multi_TR"), - ("single_TR", "single_TR"), - ("multi_TR", "multi_TR"), - ] - - cka_matrices = {} - for comparison in tqdm(comparisons): - cka_matrix = lens.quantification.compute_multi_CKA_layers( - activations_dict=activations_dict, comparison=comparison - ) - cka_matrices[f"{comparison[0]}_v_{comparison[1]}"] = cka_matrix - - with open(saving_filepath, "wb") as f: - pickle.dump(cka_matrices, f) - - else: - - with open(saving_filepath, "rb") as f: - cka_matrices = pickle.load(f) - - fig = lens.plotting.plot_cka_heatmaps( - cka_matrices=cka_matrices, - annot=False, - ) - - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--activations_filepath", - type=str, - default="data/activations/offset10.pkl", - help="filepath of the activation's dictionnary", - ) - - parser.add_argument( - "--bool_comput", - type=int, - default=0, - help="If True, will recompute and overwrite the cka matrices (0 or 1)", - ) - - parser.add_argument( - "--saving_filepath", - type=str, - default=None, - help="filepath where to save the CKA dictionnary", - ) - - args = parser.parse_args() - - if args.saving_filepath is None: - filename = args.activations_filepath.split("/")[-1] - args.saving_filepath = os.path.join("data/CKA/", filename) - main( - args.activations_filepath, - args.bool_comput, - args.saving_filepath, - ) diff --git a/scripts/RDM_analysis.py b/scripts/RDM_analysis.py deleted file mode 100644 index 905d626..0000000 --- a/scripts/RDM_analysis.py +++ /dev/null @@ -1,166 +0,0 @@ -import pickle -import matplotlib.pyplot as plt -import argparse -import os -from GithubFolder.src.cebra_lens import cebra_lens as lens -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - filepath="data/activations/offset10.pkl", - bool_comput=0, - saving_filepath="data/RDM/offset10.pkl", - session_id=3, - bool_example: bool = True, -): - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - # LOAD DATA - train_datas, _, discrete_labels_train, _ = ( - lens.utils_allen.get_single_session_datasets() - ) - - train_data = train_datas[session_id].neural - train_label = discrete_labels_train[session_id] - - with open(filepath, "rb") as f: - activations_dict = pickle.load(f) - - if bool_example: - - # example of single instance usage with plotting (neural vs multi here) - neural_rdm = lens.quantification.RDM.compute_single_RDM_layers( - train_data=train_data, - train_label=train_label, - activations=[train_data], - metric="euclidean", - bool_oracle=False, - ) - - multi_rdm = lens.quantification.RDM.compute_single_RDM_layers( - train_data=train_data, - train_label=train_label, - activations=activations_dict["multi"]["TR"][0], - metric="euclidean", - bool_oracle=False, - ) - # Normalize the RDMs using Min-Max normalization - rdm1_normalized = lens.quantification.misc.normalize_minmax(neural_rdm[0][0]) - rdm2_normalized = lens.quantification.misc.normalize_minmax(multi_rdm[-1][0]) - - fig1 = lens.plotting.plot_rdm( - [rdm1_normalized, rdm2_normalized], - ["Neural input", "Output Layer"], - metric="Normalized Euclidean distance", - ) - multi_rdm_corr = lens.quantification.RDM.compute_single_RDM_layers( - train_data=train_data, - train_label=train_label, - activations=activations_dict["multi"]["TR"][0], - metric="correlation", - bool_oracle=False, - ) - fig2 = lens.plotting.plot_rdm( - [multi_rdm_corr[0][0], multi_rdm_corr[-1][0]], - ["Layer 1", "Output Layer"], - metric="Correlation", - ) - - plt.show() - - if bool_comput: - - rdm_dict = lens.quantification.RDM.compute_multi_RDM_layers( - train_data=train_data, - train_label=train_label, - activations_dict=activations_dict, - dataset_label="visual", - metric="correlation", - bool_oracle=True, - ) - - with open(saving_filepath, "wb") as f: - pickle.dump(rdm_dict, f) - - else: - - with open(saving_filepath, "rb") as f: - rdm_dict = pickle.load(f) - - fig = lens.plotting.plot_rdm_correlation(rdm_dict=rdm_dict) - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--filepath", - type=str, - default="data/activations/offset10.pkl", - help="name of the activations (assuming they are under data/activations)", - ) - - parser.add_argument( - "--bool_comput", - type=int, - default=0, - help="If True, will recompute and overwrite the cka matrices (0 or 1)", - ) - - parser.add_argument( - "--saving_filepath", - type=str, - default=None, - help="name of the file where to save the RDM matrices (it will be under data/RDM/saving_filename)", - ) - - parser.add_argument( - "--session_id", - type=int, - default=3, - help="session id for the analysis, used to retrieve the correct data and multi-session model", - ) - parser.add_argument( - "--bool_example", - type=int, - default=1, - help="Shows an example usage.", - ) - args = parser.parse_args() - - if args.saving_filepath is None: - filename = args.filepath.split("/")[-1] - args.saving_filepath = os.path.join("data/CKA/", filename) - - main( - args.filepath, - args.bool_comput, - args.saving_filepath, - args.session_id, - args.bool_example, - ) diff --git a/scripts/cebra_visualization.py b/scripts/cebra_visualization.py deleted file mode 100644 index a314fda..0000000 --- a/scripts/cebra_visualization.py +++ /dev/null @@ -1,103 +0,0 @@ -import pickle -import argparse -from GithubFolder.src.cebra_lens import cebra_lens as lens -import matplotlib.pyplot as plt -import os -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - activations_filepath="data/activations/offset10.pkl", - session_id=3, - dataset_label="visual", -): - - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - _, _, discrete_labels_train, _ = lens.utils_allen.get_single_session_datasets() - train_label = discrete_labels_train[session_id] - - with open(activations_filepath, "rb") as f: - activations_dict = pickle.load(f) - - fig1 = lens.plotting.compare_embeddings_layers( - activations_dict["single"]["UT"][0], - activations_dict["single"]["TR"][0], - labels=train_label, - dataset_label=dataset_label, - sample_plot=activations_dict["single"]["TR"][0][0].shape[1], - comparison_labels=("CEBRA embeddings", ["Untrained Single", "Trained Single"]), - ) - fig2 = lens.plotting.compare_embeddings_layers( - activations_dict["multi"]["UT"][0], - activations_dict["multi"]["TR"][0], - labels=train_label, - dataset_label=dataset_label, - sample_plot=activations_dict["multi"]["TR"][0][0].shape[1], - comparison_labels=("CEBRA embeddings", ["Untrained Multi", "Trained Multi"]), - ) - fig3 = lens.plotting.compare_embeddings_layers( - activations_dict["single"]["TR"][0], - activations_dict["multi"]["TR"][0], - labels=train_label, - dataset_label=dataset_label, - sample_plot=activations_dict["multi"]["TR"][0][0].shape[1], - comparison_labels=("CEBRA embeddings", ["Single", "Multi"]), - ) - - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--activations_filepath", - type=str, - default="data/activations/offset10.pkl", - help="Path to the activations file.", - ) - - parser.add_argument( - "--session_id", - type=int, - default=3, - help="Session ID to use for the analysis.", - ) - - parser.add_argument( - "--dataset_label", - type=str, - default="visual", - ) - - args = parser.parse_args() - - main( - args.activations_filepath, - args.session_id, - ) diff --git a/scripts/distance_analysis.py b/scripts/distance_analysis.py deleted file mode 100644 index bcaa68c..0000000 --- a/scripts/distance_analysis.py +++ /dev/null @@ -1,165 +0,0 @@ -import pickle -import argparse -from GithubFolder.src.cebra_lens import cebra_lens as lens -import matplotlib.pyplot as plt -import os -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - activations_filepath, - bool_comput, - distance_filepath, - session_id, - dataset_label="visual", - metric="cosine", -): - - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - # LOAD DATA - train_datas, _, discrete_labels_train, _ = ( - lens.utils_allen.get_single_session_datasets() - ) - - train_data = train_datas[session_id].neural - train_label = discrete_labels_train[session_id] - - with open(activations_filepath, "rb") as f: - activations_dict = pickle.load(f) - - if bool_comput: - - interbin_distances_dict = ( - lens.quantification.distance.compute_multi_distance_layers( - data=train_data, - label=train_label, - activations_dict=activations_dict, - dataset_label=dataset_label, - metric=metric, - distance_label="interbin", - ) - ) - intrabin_distances_dict = ( - lens.quantification.distance.compute_multi_distance_layers( - data=train_data, - label=train_label, - activations_dict=activations_dict, - dataset_label=dataset_label, - metric=metric, - distance_label="intrabin", - ) - ) - interrep_distances_dict = ( - lens.quantification.distance.compute_multi_distance_layers( - data=train_data, - label=train_label, - activations_dict=activations_dict, - dataset_label=dataset_label, - metric=metric, - distance_label="interrep", - ) - ) - - distances = { - "inter-bin": interbin_distances_dict, - "intra-bin": intrabin_distances_dict, - "inter-rep": interrep_distances_dict, - } - with open(distance_filepath, "wb") as f: - pickle.dump(distances, f) - - else: - - with open(distance_filepath, "rb") as f: - distances = pickle.load(f) - - figs = [] - for key, value in distances.items(): - title = f"Distance: {key}" - - figs.append(lens.plotting.plot_distance(distance_dict=value, title=title)) - - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--activations_filepath", - type=str, - default="data/activations/offset10.pkl", - help="Activation's filepath", - ) - - parser.add_argument( - "--bool_comput", - type=int, - default=0, - help="If True, will recompute and overwrite the distances (0 or 1)", - ) - - parser.add_argument( - "--distance_filepath", - type=str, - default=None, - help="Saving filepath of the distances dictionnary", - ) - - parser.add_argument( - "--session_id", - type=int, - default=3, - help="session id for the analysis, used to retrieve the correct data and multi-session model", - ) - parser.add_argument( - "--dataset_label", - type=str, - default="visual", - help="session id for the analysis, used to retrieve the correct data and multi-session model", - ) - parser.add_argument( - "--metric", - type=str, - default="cosine", - help="metric to compute the distance: euclidean or cosine", - ) - args = parser.parse_args() - - if args.distance_filepath is None: - - filename = args.activations_filepath.split("/")[-1].split(".")[0] - args.distance_filepath = f"data/distances/{filename}.pkl" - - main( - args.activations_filepath, - args.bool_comput, - args.distance_filepath, - args.session_id, - args.dataset_label, - ) diff --git a/scripts/layer_activation_retrieval.py b/scripts/layer_activation_retrieval.py deleted file mode 100644 index 6b4822b..0000000 --- a/scripts/layer_activation_retrieval.py +++ /dev/null @@ -1,148 +0,0 @@ -import pickle -import argparse -import cebra -from GithubFolder.src.cebra_lens import cebra_lens as lens -import os -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - model_name, session_id, activations_filepath, bool_plot_embeddings, layer_type -): - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - # LOAD DATA - train_datas, _, discrete_labels_train, _ = ( - lens.utils_allen.get_single_session_datasets() - ) - - train_data = train_datas[session_id].neural - train_label = discrete_labels_train[session_id] - - # LOAD MODELS - models = lens.model.model_loader(model_name=model_name) - - if bool_plot_embeddings: - - X = train_data - y = train_label - embeddings_single = [] - embeddings_multi = [] - - # Go to 5 max for plotting clarity (works even if there are less than 5 models) - for model in models["multi_TR"][:5]: - embeddings_multi.append(model.transform(X, session_id=session_id)) - for model in models["single_TR"][:5]: - embeddings_single.append(model.transform(X)) - - # Align the single session embeddings to the first rat - alignment = cebra.data.helper.OrthogonalProcrustesAlignment() - - for i in range(len(embeddings_single)): - embeddings_single[i] = alignment.fit_transform( - embeddings_single[0], embeddings_single[i], y, y - ) - - for i in range(len(embeddings_multi)): - embeddings_multi[i] = alignment.fit_transform( - embeddings_multi[0], embeddings_multi[i], y, y - ) - - embeddings_untrained_single = models["single_UT"][0].transform( - X - ) # only take the first untrained model for plotting - embeddings_untrained_multi = models["multi_UT"][0].transform( - X, session_id=session_id - ) # only take the first untrained model for plotting - - fig = lens.plotting.plot_embeddings_singlevmulti( - embeddings_single, - embeddings_multi, - embeddings_untrained_single, - embeddings_untrained_multi, - y, - ) - fig.show() - - activations = {} - activations = lens.activations.get_activations_multi_model( - models=models, - data=train_data, - session_id=session_id, - activations=activations, - layer_type=layer_type, - ) - - activations_dict = lens.activations.process_activations(activations) - - with open(activations_filepath, "wb") as f: - pickle.dump(activations_dict, f) - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--model_name", - type=str, - default="offset10", - help="name of the folder where the models (assuming they are under FinalModels/VISION)", - ) - - parser.add_argument( - "--session_id", - type=int, - default=3, - help="session id for the analysis, used to retrieve the correct data and multi-session model", - ) - parser.add_argument( - "--filepath", - type=str, - default="data/activations/offset10.pkl", - help="filename of the activations", - ) - parser.add_argument( - "--bool_plot_embeddings", - type=int, - default=0, - help="Plots the output embeddings of the models (0 or 1)", - ) - parser.add_argument( - "--layer_type", - type=str, - default="conv", - help="Type of layer: e.g. 'conv', 'all'", - ) - - args = parser.parse_args() - main( - args.model_name, - args.session_id, - args.activations_filepath, - args.bool_plot_embeddings, - args.layer_type, - ) diff --git a/scripts/model_decoding.py b/scripts/model_decoding.py deleted file mode 100644 index 856acd6..0000000 --- a/scripts/model_decoding.py +++ /dev/null @@ -1,105 +0,0 @@ -from GithubFolder.src.cebra_lens import cebra_lens as lens -import matplotlib.pyplot as plt -import argparse -import os -import logging - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main(model_name, session_id, bool_plot_loss): - - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - # LOAD DATA - train_datas, valid_datas, discrete_labels_train, discrete_labels_val = ( - lens.utils_allen.get_single_session_datasets() - ) - - train_data = train_datas[session_id].neural - test_data = valid_datas[session_id].neural - train_label = discrete_labels_train[session_id] - test_label = discrete_labels_val[session_id] - - # LOAD MODELS - models = lens.model.model_loader(model_name=model_name) - - if bool_plot_loss: - - fig, axs = plt.subplots(1, 2, figsize=(15, 7)) - - # Plot for single models - for i in range(len(models["single_TR"])): - axs[0].plot(models["single_TR"][i].state_dict_["loss"], c="blue", alpha=0.6) - axs[0].set_xlabel("Steps", fontsize=15) - axs[0].set_ylabel("Loss", fontsize=15) - axs[0].set_title("Single-session", fontsize=20) - - # Plot for multi models - for i in range(len(models["multi_TR"])): - axs[1].plot( - models["multi_TR"][i].state_dict_["loss"], c="orange", alpha=0.6 - ) - axs[1].set_xlabel("Steps", fontsize=15) - axs[1].set_ylabel("Loss", fontsize=15) - axs[1].set_title("Multi-session", fontsize=20) - - fig.suptitle("Losses", fontsize=30) - plt.show() - - results_dict = lens.quantification.decoding.decode_models( - models=models, - train_data=train_data, - train_label=train_label, - test_data=test_data, - test_label=test_label, - session_id=3, - ) - - fig = lens.plotting.plot_decoding(results_dict=results_dict, palette_tr="cool") - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--model_name", - type=str, - default="offset10", - help="name of the folder where the models (assuming they are under FinalModels/VISION)", - ) - parser.add_argument( - "--session_id", - type=int, - default=3, - help="session id for the analysis, used to retrieve the correct data and multi-session model", - ) - parser.add_argument( - "--bool_plot_loss", type=int, default=1, help="Plots losses of the models" - ) - - args = parser.parse_args() - main(args.model_name, args.session_id, args.bool_plot_loss) diff --git a/scripts/tSNE_visualization.py b/scripts/tSNE_visualization.py deleted file mode 100644 index 4927f49..0000000 --- a/scripts/tSNE_visualization.py +++ /dev/null @@ -1,134 +0,0 @@ -import pickle -import argparse -from GithubFolder.src.cebra_lens import cebra_lens as lens -import matplotlib.pyplot as plt -import logging -import os - - -def setup_logging(): - - # Get directory and filename - script_dir = os.path.dirname(os.path.abspath(__file__)) - script_filename = os.path.splitext(os.path.basename(__file__))[0] - - logs_dir = os.path.join(script_dir, "logs") - - if not os.path.exists(logs_dir): - os.makedirs(logs_dir) - - log_file_path = os.path.join(logs_dir, f"{script_filename}.log") - - logging.basicConfig( - filename=log_file_path, - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - - -def main( - activations_filepath="data/activations/offset10.pkl", - tsne_filepath="data/tSNE/offset10.pkl", - session_id=3, - bool_comput=False, - num_samples=200, -): - logging.info("Script started with arguments:") - for arg, value in locals().items(): - logging.info(f"{arg}: {value}") - - _, _, discrete_labels_train, _ = lens.utils_allen.get_single_session_datasets() - train_label = discrete_labels_train[session_id] - - with open(activations_filepath, "rb") as f: - activations_dict = pickle.load(f) - - if bool_comput: - - tSNE_dict = lens.transform.run_tsne_and_save( - activations_dict, tsne_filepath, num_samples - ) - - else: - - with open(tsne_filepath, "rb") as f: - tSNE_dict = pickle.load(f) - - fig1 = lens.plotting.compare_embeddings_layers( - tSNE_dict["single"]["UT"][0], - tSNE_dict["single"]["TR"][0], - labels=train_label, - dataset_label="visual", - sample_plot=200, - ) - fig2 = lens.plotting.compare_embeddings_layers( - tSNE_dict["multi"]["UT"][0], - tSNE_dict["multi"]["TR"][0], - labels=train_label, - dataset_label="visual", - sample_plot=200, - ) - fig3 = lens.plotting.compare_embeddings_layers( - tSNE_dict["single"]["TR"][0], - tSNE_dict["multi"]["TR"][0], - labels=train_label, - dataset_label="visual", - sample_plot=200, - comparison_labels=("tSNE", ["Single", "Multi"]), - ) - - plt.show() - - -if __name__ == "__main__": - - setup_logging() - - parser = argparse.ArgumentParser(description="Process some parameters.") - parser.add_argument( - "--activations_filepath", - type=str, - default="data/activations/offset10.pkl", - help="Path to the activations file.", - ) - - parser.add_argument( - "--tsne_filepath", - type=str, - default=None, - help="Path to the tSNE embeddings file.", - ) - - parser.add_argument( - "--session_id", - type=int, - default=3, - help="Session ID to use for the analysis.", - ) - - parser.add_argument( - "--bool_comput", - type=int, - default=0, - help="If True, will recompute and overwrite the tSNE embeddings (0 or 1).", - ) - - parser.add_argument( - "--num_samples", - type=int, - default=200, - help="Number of samples to use for tSNE computation.", - ) - - args = parser.parse_args() - if args.tsne_filepath == None: - filename = args.activations_filepath.split("/")[-1].split(".")[0] - args.tsne_filepath = f"data/tsne/{filename}.pkl" - - main( - args.activations_filepath, - args.tsne_filepath, - args.session_id, - args.bool_comput, - args.num_samples, - )