Spaces:
Running
Running
''' | |
Code from https://github.com/blender-nlp/MolT5 | |
```bibtex | |
@article{edwards2022translation, | |
title={Translation between Molecules and Natural Language}, | |
author={Edwards, Carl and Lai, Tuan and Ros, Kevin and Honke, Garrett and Ji, Heng}, | |
journal={arXiv preprint arXiv:2204.11817}, | |
year={2022} | |
} | |
``` | |
''' | |
import argparse | |
import csv | |
import os.path as osp | |
from rdkit import RDLogger | |
RDLogger.DisableLog('rdApp.*') | |
from fcd import get_fcd, load_ref_model, canonical_smiles | |
def evaluate(input_file, verbose=False): | |
gt_smis = [] | |
ot_smis = [] | |
with open(osp.join(input_file)) as f: | |
reader = csv.DictReader(f, delimiter="\t", quoting=csv.QUOTE_NONE) | |
for n, line in enumerate(reader): | |
gt_smi = line['ground truth'] | |
ot_smi = line['output'] | |
if len(ot_smi) == 0: ot_smi = '[]' | |
gt_smis.append(gt_smi) | |
ot_smis.append(ot_smi) | |
model = load_ref_model() | |
canon_gt_smis = [w for w in canonical_smiles(gt_smis) if w is not None] | |
canon_ot_smis = [w for w in canonical_smiles(ot_smis) if w is not None] | |
fcd_sim_score = get_fcd(canon_gt_smis, canon_ot_smis, model) | |
if verbose: | |
print('FCD Similarity:', fcd_sim_score) | |
return fcd_sim_score | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser() | |
parser.add_argument('--input_file', type=str, default='caption2smiles_example.txt', help='path where test generations are saved') | |
args = parser.parse_args() | |
evaluate(args.input_file, True) | |