按任务学习

创建保留无效 SMILES 行的描述符 CSV

读取 SMILES 列,逐行计算描述符,并将无效输入与原始值一起写入结果。

完成内容

一个关联源行号、SMILES、计算值和解析错误的 CSV 报告。

步骤

  1. 使用 pip install chematic pandas 安装所需软件包。
  2. 创建一个名为 smiles 的 CSV 列。
  3. 用 from_smiles 解析每个非空行并记录部分描述符。
  4. 将成功行和无效 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。若必须与源表核对,请先用这种保留行的方式检查,再批量处理有效行。

下一步

阅读 Python 工作流