As basic metrics, validity, uniqueness and novelty were calculated for all runs which have also been used in previous work . Validity is the fraction of correctness that a SMILES string translates to a real structure. Low validity is indicative of a poorly behaving model that has struggled to learn the SMILES grammar. Uniqueness is the fraction of unique molecules, where non-unique molecules are defined as having canonical SMILES that match those previously sampled or in the same batch. Low uniqueness is indicative of a poorly behaving model that is 'stuck' in a particular region of chemical space. Novelty is the ratio of valid, unique canonical SMILES not present in the training dataset (pre-training: ChEMBL, fine-tuning: above average activity compound in the early stage of each project which locates in region α), and low novelty indicates the model cannot generalize beyond the training data, which is precisely the aim of de novo design. All these calculations were implemented in Python 3.7.10 using the original code following the equations below, Eq. 1 to 3, where Ngen represents the number of generated compounds, Nval represents the number of valid compounds, Nuni represents the number of unique compounds in generated compounds, and Nunk represents the number of unknown compounds in generated compounds .