入门 · 5–15 分钟

教程

通过构建小型实用的化学工具来学习 chematic。每个教程都有明确的起点、可运行代码和下一步。

按目标选择

浏览器

分析第一个分子

解析 SMILES,并在无需后端的情况下查看结构和基本性质。

你将完成本地分子分析页面下一步试用浏览器演示
步骤
  1. 打开浏览器演示。
  2. 输入乙醇的 SMILES:CCO,然后运行分析。
  3. 对照结构图、分子式和分子量。

检查结果页面会显示乙醇的 2D 结构和性质数值。

遇到问题时如果结构为空,请检查 SMILES,并再次尝试 CCO。

Python

从 Python 使用

安装软件包,在 notebook 中解析分子。

你将完成第一个 notebook 单元下一步查看 Python 指南
步骤
  1. 创建虚拟环境并安装 chematic。
  2. 导入软件包并解析 CCO。
  3. 打印分子对象或一个性质,确认调用完成。

检查结果分子对象在 notebook 中返回,不需要将结构发送到外部服务器。

遇到问题时安装前先激活虚拟环境;如果无法导入,请检查软件包名称。

mol = chematic.from_smiles("CCO")
查看指南

Python

查找相似分子

生成指纹,并使用 Tanimoto 相似度比较分子。

你将完成小型相似性搜索下一步阅读 API Cookbook
步骤
  1. 解析查询分子和两个候选分子。
  2. 为所有分子生成同一种指纹。
  3. 计算 Tanimoto 相似度并排序候选。

检查结果相同分子的得分为 1.0;结构差异越大,得分通常越低。

遇到问题时比较前请确保所有分子使用相同的指纹设置。

mol.ecfp4()
查看指南

Python

处理结构文件

从单分子分析扩展到 CSV 或 SDF 批处理。

你将完成批量分析脚本下一步查看批处理指南
步骤
  1. 准备每行一个 SMILES 的文件。
  2. 解析每一行并计算所需性质。
  3. 保留原始输入和解析错误后写出结果。

检查结果每个输入行都有可追踪的结果,失败的行也可以检查。

遇到问题时不要丢弃原始字符串,这样可以轻松检查并重试失败的行。

for smiles in rows:
查看指南

Rust

构建 Rust 工具

将 chematic 加入 Rust 项目,在同一进程中运行化学逻辑。

你将完成CLI 或服务的基础下一步查看 Rust 指南
步骤
  1. 创建小型二进制 crate 并加入所需功能。
  2. 在 main 中解析一个已知 SMILES。
  3. 在添加批处理前,为无效输入返回清晰的错误。

检查结果程序可以在本地构建,并对相同输入产生可重复的结果。

遇到问题时如果编译时间或二进制大小重要,可以先只启用需要的功能。

cargo add chematic --features "smiles,perception,chem,3d,fp"
查看指南

AI 代理

连接 AI 代理

先使用本地 stdio MCP 服务器;只有客户端无法启动进程时才使用自行托管的 HTTP。

你将完成本地化学工具连接下一步查看 MCP 指南
步骤
  1. 在本地安装指定版本的 MCP 软件包。
  2. 在 AI 客户端中注册 stdio 命令。
  3. 请求客户端解析测试 SMILES 并检查结构化数据。

检查结果客户端可以调用化学工具并接收结构化响应,无需托管服务。

遇到问题时只有客户端无法启动本地进程时才使用回环 HTTP 适配器。

chematic-mcp
查看指南

浏览器

将 SMILES 转为 2D SVG 结构图

将 SMILES 转换为可缩放的结构图 SVG,并在浏览器中本地检查。

你将完成SVG 分子结构图下一步查看详细步骤
步骤
  1. 打开浏览器指南或 Playground。
  2. 粘贴这里给出的阿司匹林 SMILES。
  3. 运行绘制并检查生成的 SVG 结构。

检查结果应显示放大后仍清晰的阿司匹林 2D 结构。

遇到问题时请使用完整且有效的 SMILES;SVG 绘制不需要后端。

CC(=O)OC1=CC=CC=C1C(=O)O
查看指南

Python

从 SMILES 计算分子量、LogP 和 TPSA

解析一个分子,计算早期筛选常用的理化描述符。

你将完成简洁的性质报告下一步查看详细步骤
步骤
  1. 将已知 SMILES 解析为分子对象。
  2. 从同一个分子计算分子量、LogP 和 TPSA。
  3. 在输出中保留输入 SMILES 和计算值。

检查结果三个值都会针对同一个已解析分子在本地返回。

遇到问题时描述符是计算值,不应视为实验测量或临床预测。

mol = chematic.from_smiles("CCO")
mol.mw
mol.logp
mol.tpsa
查看指南

浏览器

使用 SMARTS 模式搜索分子

检查分子是否包含官能团模式,并查看匹配的原子。

你将完成本地子结构匹配下一步查看详细步骤
步骤
  1. 打开首页的功能示例。
  2. 保留阿司匹林作为分子,并输入 SMARTS 模式 C(=O)O。
  3. 运行搜索并检查 SVG 中的匹配。

检查结果结果会报告匹配并高亮相应原子。

遇到问题时SMARTS 表示模式,不一定是完整分子;先从小模式开始。

浏览器

在本地分析 SDF 或 CSV 文件

载入结构文件,检查行数据,然后完全在浏览器中筛选或导出。

你将完成本地结构文件工作流下一步查看详细步骤
步骤
  1. 打开 Local Compound Explorer。
  2. 从电脑载入 SDF、CSV 或 .smi 文件。
  3. 筛选或排序本地结果,再导出所需结果。

检查结果文件可在浏览器中处理,不需要专用分析后端。

遇到问题时保留源文件,并先用小样本确认 SMILES 列或 SDF 字段。

compounds.sdf
查看指南

浏览器

在分析前验证 SMILES 输入

在绘制结构或计算性质前,为无效分子字符串返回明确错误。

你将完成本地输入检查下一步查看详细步骤
步骤
  1. 先解析有效输入 CCO。
  2. 替换为不完整的 C1CC。
  3. 确认页面显示输入错误,而不是虚构结果。

检查结果有效输入会显示结构,不完整语法会显示错误。

遇到问题时解析错误表示语法问题,并不是对化学安全性或实验有效性的判断。

有效:CCO
无效:C1CC
查看指南

浏览器

使用 ECFP4 相似度比较两个分子

在本地比较两个结构,并将输入与可重复的 Tanimoto 分数一起保留。

你将完成本地相似度比较下一步查看详细步骤
步骤
  1. 打开交互式功能示例。
  2. 使用 ECFP4 比较阿司匹林和水杨酸。
  3. 记录两个输入、设置和显示分数。

检查结果相同输入和指纹设置会得到相同的本地分数。

遇到问题时相似度分数不能单独判断活性、安全性或合成可行性。

阿司匹林
水杨酸
ECFP4
查看指南

浏览器

检查基本 drug-likeness 指标

检查一个已解析分子的计算描述符和显示的 Lipinski 结果。

你将完成初步性质检查下一步查看详细步骤
步骤
  1. 在浏览器中分析一个完整 SMILES。
  2. 读取分子量、LogP、TPSA、HBD、HBA 和 Lipinski。
  3. 将计算值与准确输入一同保留。

检查结果结果面板会显示已解析分子的性质指标。

遇到问题时这些是计算指标,并不是对有效性、安全性或临床适用性的结论。

CC(=O)OC1=CC=CC=C1C(=O)O
查看指南

Python

创建不丢失无效行的描述符 CSV

在计算紧凑性质报告时保留源行号和解析错误。

你将完成可追踪的描述符 CSV下一步查看详细步骤
步骤
  1. 读取带有 smiles 列的 CSV。
  2. 为每一行记录数值或 ValueError。
  3. 在筛选有效行前写出一个完整报告。

检查结果每个非空输入行都有明确的 status。

遇到问题时bulk.descriptors 会跳过无效 SMILES,因此要先验证与源表核对的报告。

chematic.from_smiles(smiles)
查看指南

Python

按 ECFP4 相似度排序 SMILES 库

验证候选库后,运行一对多本地 Tanimoto 搜索。

你将完成可重复的高分命中列表下一步查看详细步骤
步骤
  1. 验证候选 SMILES。
  2. 将一个查询与本地列表比较。
  3. 保留输入、方法和排序分数。

检查结果同样的有效输入会得到同样的排序。

遇到问题时bulk API 会跳过无效条目,可能破坏与原始数据行号的对应。

bulk.tanimoto_search(query, library)
查看指南

Python

用 SMARTS 筛选 SMILES 库

筛选本地列表中的官能团模式,并按输入顺序保留命中。

你将完成本地子结构命中列表下一步查看详细步骤
步骤
  1. 选择 SMARTS 模式。
  2. 并行筛选本地列表。
  3. 将模式和命中 SMILES 一起保存。

检查结果匹配字符串保持原始输入顺序。

遇到问题时该 API 会将无效 SMILES 视为未匹配;需要解释阴性时请先验证。

bulk.substructure_search(pattern, smiles)
查看指南

Rust

使用 Rust 构建带描述符的 SMILES CLI

创建一个原生 CLI,解析 CCO 并报告原子数、分子量和 TPSA。

你将完成本地 Rust 化学 CLI下一步查看详细步骤
步骤
  1. 创建二进制 crate。
  2. 启用三个必需功能。
  3. 解析 CCO 并输出基本描述符。

检查结果CCO 会输出 atoms=3、mw=46.07 和 tpsa=20.23。

遇到问题时请为实际工作流选择有文档说明的最小功能集。

cargo add chematic --features "smiles,perception,chem"
查看指南

AI 代理

通过 stdio 验证本地 MCP SMILES 工具

在注册到客户端之前,将 JSON-RPC 解析请求发送给本地 MCP 服务器。

你将完成已验证的本地 stdio 响应下一步查看详细步骤
步骤
  1. 克隆源代码仓库。
  2. 通过本地 stdio 发送 JSON-RPC。
  3. 确认苯的结构化响应。

检查结果响应包含 valid=true、atoms=6、bonds=6 和 mol_weight=78.114。

遇到问题时这是本地 stdio 进程,不是托管 MCP URL。

tools/call: parse_smiles
查看指南

Python

从 SMILES 获取分子式和分子量

解析一个 SMILES,并将两个基本计算值保留在原始输入旁边。

你将完成简洁且可追踪的分子记录下一步查看详细步骤
步骤
  1. 解析 CCO 等一个完整 SMILES。
  2. 输出分子式和分子量。
  3. 将输入和软件包版本与输出一起保留。

检查结果CCO 返回 C2H6O 和约 46.07 g/mol 的分子量。

遇到问题时分子式不能唯一识别结构,此处的分子量是计算值而不是实验测量值。

mol = chematic.from_smiles("CCO")
mol.formula
mol.mw
查看指南

浏览器

使用固定版本的 CDN 模块添加浏览器分子检查

无需打包工具即可加载已发布的 WebAssembly 软件包,并在浏览器中计算阿司匹林分子量。

你将完成固定发布版本的本地浏览器检查下一步查看详细步骤
步骤
  1. 通过 HTTPS 或本地服务器提供一个小型 HTML 页面。
  2. 粘贴固定版本的模块脚本。
  3. 在浏览器控制台中确认 180.16,然后释放分子对象。

检查结果固定版本模块初始化后,阿司匹林会输出 180.16。

遇到问题时不要使用 @latest,也不要依赖 file URL 加载 ES 模块。

import init, { parse_smiles } from ".../chematic_wasm.js"
await init()
查看指南

AI 代理

通过本地 MCP 将化学名称解析为 SMILES

通过本地 MCP 在 PubChem 查询阿司匹林,并保留返回的 SMILES 和来源。

你将完成有记录的名称到 SMILES 查询下一步查看详细步骤
步骤
  1. 运行本地 MCP 进程。
  2. 发送 name_to_smiles 请求。
  3. 在本地分析前保留来源和 SMILES。

检查结果阿司匹林会返回带 PubChem 来源的异构 SMILES。

遇到问题时这是唯一会将输入发送到网络服务的 MCP 工具。

tools/call: name_to_smiles
name: aspirin
查看指南

AI 代理

通过本地 MCP 规范化并记录 SMILES

在本地获取 chematic 的规范 SMILES,并与输入和软件版本一起保留。

你将完成带版本的本地规范 SMILES 记录下一步查看详细步骤
步骤
  1. 运行本地 MCP 进程。
  2. 发送 canonical_smiles 请求。
  3. 将输入、规范结果和版本一起保存。

检查结果响应中包含规范 SMILES 字符串,且没有网络请求。

遇到问题时未经验证时,不要把不同库或发布版本的规范字符串视为可互换。

tools/call: canonical_smiles
smiles: C1=CC=CC=C1
查看指南

Python

在 SMILES CSV 中标记重复结构候选

保留每个 CSV 行,并根据 chematic 的规范 SMILES 标记本地重复候选。

你将完成保留源行的重复复核 CSV下一步查看详细步骤
步骤
  1. 读取带 smiles 列的 CSV。
  2. 写出规范 SMILES 和行状态。
  3. 在删除数据前检查重复候选。

检查结果CCO 和 OCC 都得到 C(C)O,后一个行会作为重复候选标记。

遇到问题时规范字符串不是通用身份的证据;保留原始行和版本信息。

chematic.from_smiles(smiles).smiles
查看指南

Python

在重复复核前标准化含盐 SMILES

保留提交的 SMILES,并为含盐记录创建独立且有明确策略的复核表示。

你将完成保留源输入的标准化报告下一步查看详细步骤
步骤
  1. 保持源 SMILES 不变。
  2. 在本地标准化独立的复核值。
  3. 仅在已记录策略的范围内比较。

检查结果用最大片段复核时,醋酸钠和醋酸都会得到 CC(O)=O。

遇到问题时不要用复核表示取代提交的盐形式或立体化学记录。

mol.standardize(largest_fragment_only=True)
查看指南

Python

在批量工作流前预检 SMILES 列表

在批量 API 跳过无效行之前,先分类每个源值。

你将完成保持输入顺序的预检报告下一步查看详细步骤
步骤
  1. 按源行顺序加载 SMILES。
  2. 记录 accepted 和 rejected 结果。
  3. 在下一工作流前将 input_index 映射回源行。

检查结果CCO 和 OCC 会 accepted;未完成的 C1CC 在 input_index 1 仍为 rejected。

遇到问题时语法 accepted 不能证明化学身份、盐策略、安全性或实验有效性。

canonicalize_smiles_batch_json(source_smiles)
查看指南

Python

用 Python 将 SMILES 结构导出为 SVG 文件

在本地创建可缩放的二维结构成果物,同时保留精确源 SMILES。

你将完成可追踪的 aspirin.svg 文件下一步查看详细步骤
步骤
  1. 在本地解析一个完整 SMILES。
  2. 将 SVG 描绘写为 UTF-8 文本。
  3. 将输入和软件包版本与成果物一起保留。

检查结果aspirin.svg 可作为可缩放的二维结构图打开。

遇到问题时SVG 描绘不能证明化学身份、立体化学、安全性或实验有效性。

Path("aspirin.svg").write_text(mol.svg())
查看指南

Python

用 Python 将反应 SMILES 导出为 SVG 反应图

从一个明确的反应 SMILES 在本地创建可缩放反应图。

你将完成可追踪的 esterification.svg 反应图下一步查看详细步骤
步骤
  1. 准备反应物>>产物形式的反应 SMILES。
  2. 将 SVG 反应图写为 UTF-8 文本。
  3. 将反应 SMILES 和软件包版本与成果物一同保留。

检查结果esterification.svg 可作为含反应物、箭头和产物的反应图打开。

遇到问题时反应 SVG 不能证明原子映射、收支、条件、收率、化学身份、安全性或实验有效性。

Path("esterification.svg").write_text(chematic.reaction_svg(...))
查看指南

Python

用 Python 从 SMILES 写出 SDF 记录

创建本地 SDF 记录,并将结构名和精确源 SMILES 保留为 SD 数据。

你将完成可追踪的 ethanol.sdf 记录下一步查看详细步骤
步骤
  1. 在本地解析一个完整 SMILES。
  2. 将记录名称和源 SMILES 设为属性。
  3. 写出并检查一条 SDF 记录。

检查结果ethanol.sdf 包含乙醇、source_smiles: CCO 和 $$$$ 终止符。

遇到问题时SDF 记录和自动生成的二维坐标不能证明化学身份、材料来源、安全性或实验有效性。

with chematic.SDWriter("ethanol.sdf") as writer:
    writer.write(mol)
查看指南

Python

用 Python 从 SMILES CSV 创建 SDF 库

将有效 CSV 行写为本地 SDF 记录,并在报告中保留全部源行。

你将完成molecules.sdf 和 molecule-report.csv下一步查看详细步骤
步骤
  1. 从 CSV 读取 name 和 smiles。
  2. 写出带源行属性的有效记录。
  3. 将无效行保留在 CSV 报告中。

检查结果有效行会写入 SDF,C1CC 会在报告中保留为 invalid_smiles。

遇到问题时SDF 输出不能证明化学身份、材料来源、安全性或实验有效性。

chematic.SDWriter("molecules.sdf")
查看指南