这篇文章讲述了多种生成sdf文件的方法,不过关于mols的定义不清楚
https://blog.csdn.net/dreadlesss/article/details/105606365?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165095903016781435491030%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165095903016781435491030&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-105606365.142v9pc_search_result_cache,157v4control&utm_term=chem.SDWriter&spm=1018.2226.3001.4187
df = pd.read_csv(r'test.csv')
list_smi = list(df['SMILES'])
mols = [Chem.MolFromSmiles(x) for x in list_smi]
list_id = list(df['ID'])
writer = Chem.SDWriter('./batch.sdf')
writer.SetProps(['LOGP', 'MW'])
for i, mol in enumerate(mols):
mw = Descriptors.ExactMolWt(mol)
logp = Descriptors.MolLogP(mol)
mol.SetProp('MW', '%.2f' %(mw))
mol.SetProp('LOGP', '%.2f' %(logp))
mol.SetProp('_Name', list_id[i])
writer.write(mol)
writer.close()