def get_mol_objects(SMILES): if type(SMILES) == list: mols = [MolFromSmiles(SMILES) for SMILES in SMILES] return [mol.UpdatePropertyCache(strict=False) for mol in mols if mol != None] if type(SMILES) == str: mol = MolFromSmiles(SMILES) if mol != None: return mol.UpdatePropertyCache(strict=False)
def processor(argv): """予測値とSMILESを文字列で返す関数。multiprocessing.Pool.imap用。""" smiles, model = argv smi = smiles.strip() mol = MolFromSmiles(smi) mol.UpdatePropertyCache(strict=True) rdcalc = RDKitDescriptor() xnew = np.array(rdcalc.transform([mol])) # print(xnew,type(xnew)) ypred = model.predict(xnew) t2 = t2_score(xnew, model) q = q_value(xnew, model) return '%s %.8f %.8f %.8f' % (smi, ypred, t2, q)