Download scripts/property_prediction/local_misc_prop.py from OneScience-Group/TargetDiff: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/OneScience-Group/TargetDiff/resolve/main/scripts/property_prediction/local_misc_prop.py
- Command line
-
hf download hf://OneScience-Group/TargetDiff/scripts/property_prediction/local_misc_prop.py
-
curl -L -o local_misc_prop.py https://huggingface.co/OneScience-Group/TargetDiff/resolve/main/scripts/property_prediction/local_misc_prop.py
2.56 kB
| import numpy as np | |
| from scipy.stats import pearsonr, spearmanr | |
| from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score | |
| from torch_geometric.loader import DataLoader | |
| from models.property_pred.prop_model import PropPredNet, PropPredNetEnc | |
| def get_eval_scores(ypred_arr, ytrue_arr, logger, prefix='All'): | |
| if len(ypred_arr) == 0: | |
| return None | |
| rmse = np.sqrt(mean_squared_error(ytrue_arr, ypred_arr)) | |
| mae = mean_absolute_error(ytrue_arr, ypred_arr) | |
| r2 = r2_score(ytrue_arr, ypred_arr) | |
| pearson, ppval = pearsonr(ytrue_arr, ypred_arr) | |
| spearman, spval = spearmanr(ytrue_arr, ypred_arr) | |
| mean = np.mean(ypred_arr) | |
| std = np.std(ypred_arr) | |
| logger.info("Evaluation Summary:") | |
| logger.info( | |
| "[%4s] num: %3d, RMSE: %.3f, MAE: %.3f, " | |
| "R^2 score: %.3f, Pearson: %.3f, Spearman: %.3f, mean/std: %.3f/%.3f" % ( | |
| prefix, len(ypred_arr), rmse, mae, r2, pearson, spearman, mean, std)) | |
| return rmse | |
| def get_dataloader(train_set, val_set, test_set, config): | |
| follow_batch = ['protein_element', 'ligand_element'] | |
| collate_exclude_keys = ['ligand_nbh_list'] | |
| train_loader = DataLoader( | |
| train_set, | |
| batch_size=config.train.batch_size, | |
| shuffle=True, | |
| num_workers=config.train.num_workers, | |
| follow_batch=follow_batch, | |
| exclude_keys=collate_exclude_keys | |
| ) | |
| val_loader = DataLoader(val_set, config.train.batch_size, shuffle=False, | |
| follow_batch=follow_batch, exclude_keys=collate_exclude_keys) | |
| test_loader = DataLoader(test_set, config.train.batch_size, shuffle=False, | |
| follow_batch=follow_batch, exclude_keys=collate_exclude_keys) | |
| return train_loader, val_loader, test_loader | |
| def get_model(config, protein_atom_feat_dim, ligand_atom_feat_dim): | |
| if config.model.encoder.name == 'egnn_enc': | |
| model = PropPredNetEnc( | |
| config.model, | |
| protein_atom_feature_dim=protein_atom_feat_dim, | |
| ligand_atom_feature_dim=ligand_atom_feat_dim, | |
| enc_ligand_dim=config.model.enc_ligand_dim, | |
| enc_node_dim=config.model.enc_node_dim, | |
| enc_graph_dim=config.model.enc_graph_dim, | |
| enc_feature_type=config.model.enc_feature_type, | |
| output_dim=1 | |
| ) | |
| else: | |
| model = PropPredNet( | |
| config.model, | |
| protein_atom_feature_dim=protein_atom_feat_dim, | |
| ligand_atom_feature_dim=ligand_atom_feat_dim, | |
| output_dim=3 | |
| ) | |
| return model | |