按任务学习
创建保留无效 SMILES 行的描述符 CSV
读取 SMILES 列,逐行计算描述符,并将无效输入与原始值一起写入结果。
完成内容
一个关联源行号、SMILES、计算值和解析错误的 CSV 报告。
步骤
- 使用 pip install chematic pandas 安装所需软件包。
- 创建一个名为 smiles 的 CSV 列。
- 用 from_smiles 解析每个非空行并记录部分描述符。
- 将成功行和无效 SMILES 行写入同一报告,在筛选前检查 status。
# pip install chematic pandas
import chematic
import pandas as pd
source = pd.read_csv("compounds.csv")
rows = []
for source_row, smiles in source["smiles"].dropna().astype(str).items():
try:
mol = chematic.from_smiles(smiles)
rows.append({"source_row": source_row + 2, "smiles": smiles, "status": "ok",
"mw": mol.mw, "logp": mol.logp, "tpsa": mol.tpsa})
except ValueError as error:
rows.append({"source_row": source_row + 2, "smiles": smiles,
"status": "invalid_smiles", "error": str(error)})
pd.DataFrame(rows).to_csv("descriptor-report.csv", index=False)预期结果
descriptor-report.csv 为每一个非空输入行提供明确状态。成功行包含 MW、LogP 和 TPSA;无效字符串保留输入与解析错误。
遇到问题时
高速 bulk.descriptors API 会有意跳过无效 SMILES。若必须与源表核对,请先用这种保留行的方式检查,再批量处理有效行。