Download models/clearance_ft/utils/utils.py from Hattie/PharmAI-models: direct link, hf CLI and curl.
- Browser
- Download file 3.22 kB
-
https://huggingface.co/Hattie/PharmAI-models/resolve/main/models/clearance_ft/utils/utils.py
- Command line
-
hf download hf://Hattie/PharmAI-models/models/clearance_ft/utils/utils.py
-
curl -L -o utils.py https://huggingface.co/Hattie/PharmAI-models/resolve/main/models/clearance_ft/utils/utils.py
3.22 kB
| import os, json | |
| import pandas as pd | |
| from itertools import product | |
| from easydict import EasyDict | |
| from clearance_ft.utils.plot import draw_boundaryplot | |
| class DictX(dict): | |
| def __getattr__(self, key): | |
| try: | |
| return self[key] | |
| except KeyError as k: | |
| raise AttributeError(k) | |
| def __setattr__(self, key, value): | |
| self[key] = value | |
| def __delattr__(self, key): | |
| try: | |
| del self[key] | |
| except KeyError as k: | |
| raise AttributeError(k) | |
| def __repr__(self): | |
| return '<DictX ' + dict.__repr__(self) + '>' | |
| def load_hparams(file_path): | |
| hparams = EasyDict() | |
| with open(file_path, 'r') as f: | |
| hparams = json.load(f) | |
| return hparams | |
| def generate_combinations(dic): | |
| keys = dic.keys() | |
| values = (dic[key] if isinstance(dic[key], list) else [dic[key]] for key in keys) | |
| combinations = [dict(zip(keys, combination)) for combination in product(*values)] | |
| return combinations | |
| def save_result(config, result_dir, df_result:pd.DataFrame, output_devlog:dict, output_testlog:dict, df_train:pd.DataFrame = None, df_test:pd.DataFrame = None, df_duplData:pd.DataFrame = None): | |
| result_name = f"{config.model_type}_{config.train_dataType}_seed{config.num_seed}_r2_{output_testlog['r2']:.3f}" | |
| result_path = f"results/{result_dir}/{config.feature_type}_{result_name}" | |
| if not os.path.exists(result_path): | |
| os.makedirs(result_path) | |
| if df_train is not None: | |
| df_train.to_csv(f'{result_path}/train.csv', index=False) | |
| if df_test is not None: | |
| df_test.to_csv(f'{result_path}/test.csv', index=False) | |
| result_file = f'{result_path}/results.csv' | |
| df_result.to_csv(result_file, index=False) | |
| print('-----------------Save prediction result ----------------------') | |
| save_file = os.path.join(result_path, "figure.png") | |
| slop = draw_boundaryplot(df_result, save_file, df_duplData) | |
| submit_config = {"model_type":config.model_type, "chem_model":config.chem_model, | |
| "checkpoint_name": config.checkpoint_name, "feature_type": config.feature_type, "test_rate":config.test_rate, | |
| "data_augmentation" : config.augmentation, "protainData_extended" : config.extend_protType, | |
| "scale": config.scale, "chem_max" : config.chem_max, "batch_size" : config.batch_size, | |
| "lr":config.lr, "dropout":config.dropout, "max_epoch": config.max_epoch, "test_sampling_type": config.sampling_type, | |
| "valid_MSE": str(output_devlog['rmse']), "valid_MAE": str(output_devlog['MAE']), "valid_r2": str(output_devlog['r2']), | |
| "valid_rm2": str(output_devlog['rm2']), "valid_CI": str(output_devlog['ci']), | |
| "test_MSE": str(output_testlog['rmse']), "test_MAE": str(output_testlog['MAE']), "test_r2": str(output_testlog['r2']), | |
| "test_rm2": str(output_testlog['rm2']), "test_CI": str(output_testlog['ci']), "slop": str(slop)} | |
| with open(os.path.join(result_path,"config.json"), 'w', encoding='utf-8') as mf: | |
| json.dump(submit_config, mf, indent='\t') | |
| print('Done.') | |
| # draw_boxplot(result_file, save_path) | |