def get_novelty_smi(gen_smis, ref_smis, return_novelty=False,):
    """
    Get novelty generated SMILES which are not exist in training dataset
    para gen_smis: generated SMILES, in list format
    para ref_smis: training SMILES, in list format
    para return_novelty: if return novelty MOLs, in canonical SMILES format, default False
    """
    
    nov_smis = [i for i in gen_smis if i not in ref_smis]

    if return_novelty:
        return nov_smis
    else:
        return len(nov_smis)/len(gen_smis)