Classifier.validate() got an unexpected keyword argument 'predict'

#307
by jialei233 - opened

6 layer Geneformer: https://huggingface.co/ctheodoris/Geneformer/blob/main/model.safetensors

all_metrics = cc.validate(model_directory="/mnt/geneformer-new/models--ctheodoris--Geneformer",
prepared_input_data_file=f"{output_dir}/{output_prefix}_labeled_train.dataset",
id_class_dict_file=f"{output_dir}/{output_prefix}_id_class_dict.pkl",
output_directory=output_dir,
output_prefix=output_prefix,
split_id_dict=train_valid_id_split_dict,
predict=True)

the error occured like this:

TypeError Traceback (most recent call last)
Cell In[11], line 2
1 # 6 layer Geneformer: https://huggingface.co/ctheodoris/Geneformer/blob/main/model.safetensors
----> 2 all_metrics = cc.validate(model_directory="/mnt/geneformer-new/models--ctheodoris--Geneformer",
3 prepared_input_data_file=f"{output_dir}/{output_prefix}_labeled_train.dataset",
4 id_class_dict_file=f"{output_dir}/{output_prefix}_id_class_dict.pkl",
5 output_directory=output_dir,
6 output_prefix=output_prefix,
7 split_id_dict=train_valid_id_split_dict,
8 predict=True)

TypeError: Classifier.validate() got an unexpected keyword argument 'predict'

But the error disappeared when "predict=True" deleted. However, when I run the code:
all_metrics_test = cc.evaluate_saved_model(
model_directory=f"{output_dir}/{datestamp_min}geneformer_cellClassifier{output_prefix}/ksplit1/",
id_class_dict_file=f"{output_dir}/{output_prefix}_id_class_dict.pkl",
test_data_file=f"{output_dir}/{output_prefix}_labeled_test.dataset",
output_directory=output_dir,
output_prefix=output_prefix,
)

Another error occured below:
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 4/4 [00:11<00:00, 2.92s/it]

TypeError Traceback (most recent call last)
Cell In[10], line 1
----> 1 all_metrics_test = cc.evaluate_saved_model(
2 model_directory=f"{output_dir}/{datestamp_min}geneformer_cellClassifier{output_prefix}/ksplit1/",
3 id_class_dict_file=f"{output_dir}/{output_prefix}_id_class_dict.pkl",
4 test_data_file=f"{output_dir}/{output_prefix}_labeled_test.dataset",
5 output_directory=output_dir,
6 output_prefix=output_prefix,
7 )

File ~/miniconda3/envs/geneformer-python3.10/lib/python3.10/site-packages/geneformer/classifier.py:1038, in Classifier.evaluate_saved_model(self, model_directory, id_class_dict_file, test_data_file, output_directory, output_prefix, predict)
1036 if num_classes == 2:
1037 mean_fpr = np.linspace(0, 1, 100)
-> 1038 all_tpr = [result["roc_metrics"]["interp_tpr"] for result in results]
1039 all_roc_auc = [result["roc_metrics"]["auc"] for result in results]
1040 all_tpr_wt = [result["roc_metrics"]["tpr_wt"] for result in results]

File ~/miniconda3/envs/geneformer-python3.10/lib/python3.10/site-packages/geneformer/classifier.py:1038, in (.0)
1036 if num_classes == 2:
1037 mean_fpr = np.linspace(0, 1, 100)
-> 1038 all_tpr = [result["roc_metrics"]["interp_tpr"] for result in results]
1039 all_roc_auc = [result["roc_metrics"]["auc"] for result in results]
1040 all_tpr_wt = [result["roc_metrics"]["tpr_wt"] for result in results]

TypeError: string indices must be integers

Could you give me some advice? Best wishes!

Thank you for your interest in Geneformer and for letting us know about these! We pushed a change that should fix them. Please pull the updated version.

ctheodoris changed discussion status to closed

Sign up or log in to comment