The SMILES strings in the datasets were split into meaningful tokens using the Keras tokenizer with TensorFlow 2.8.0 . The following set of rules was applied where each string is split after, -every heavy atom: e.g., "C", "Si", "Au" -every open bracket and closed bracket: "(", ")", "[", "]" -every bond symbol: "=", "#" -every one of the following characters: ".", "-", "+", "\", "/", "@", "%", "*" -every single-digit number After the splitting, a "<start>" and an "<end>" token were added at the beginning and the end of the sequence. To match the same maximum length, each tokenized string was padded with "<pad>" tokens. The token "<unk>" is used for unknown elements and acts as a placeholder. R-group indices were replaced according to the procedure described in the subsection Evaluation of different R-group representations in SMILES.