初級 · 5〜15分

チュートリアル

小さく実用的な化学ツールを作りながらchematicを学びます。始める場所、実行できるコード、次の一歩を各チュートリアルで示します。

目的から選ぶ

ブラウザ

最初の分子を解析する

SMILESを読み込み、サーバーなしで構造式と基本的な性質を確認します。

作るものローカル分子解析ページ次の一歩ブラウザのデモを試す
手順
  1. ブラウザのデモを開きます。
  2. エタノールを表すSMILES「CCO」を入力して解析します。
  3. 構造式と分子式、分子量が対応しているか見比べます。

確認ポイントエタノールの2D構造と分子式、分子量が表示されます。

うまくいかないとき構造が表示されない場合は、入力がSMILESとして正しいか確認してCCOで再試行します。

Python

Pythonから使う

パッケージを導入し、ノートブックで分子を読み込みます。

作るもの最初のノートブックセル次の一歩Pythonの案内を見る
手順
  1. 仮想環境を作り、chematicをインストールします。
  2. パッケージを読み込み、CCOを解析します。
  3. 分子オブジェクトか性質を1つ表示して呼び出しを確認します。

確認ポイント構造が外部サーバーへ送られず、ノートブック内で分子が返ります。

うまくいかないときインストール前に仮想環境を有効にし、importエラーならパッケージ名を確認します。

mol = chematic.from_smiles("CCO")
案内を見る

Python

似た分子を探す

フィンガープリントを作り、Tanimoto類似度で分子を比較します。

作るもの小さな類似度検索次の一歩API Cookbookを見る
手順
  1. 検索分子と候補分子を解析します。
  2. すべてに同じ種類のフィンガープリントを生成します。
  3. Tanimoto類似度を計算して候補を並べ替えます。

確認ポイント同一分子は1.0になり、異なる構造ほど低い値になります。

うまくいかないとき比較前に、すべての分子でフィンガープリントの設定を揃えます。

Python

構造ファイルを処理する

1分子の解析からCSVやSDFの一括処理へ進みます。

作るもの一括解析スクリプト次の一歩一括処理の案内を見る
手順
  1. 1行に1つのSMILESを入れたファイルを用意します。
  2. 各行を解析し、必要な性質を計算します。
  3. 入力値と解析エラーを残したまま結果を書き出します。

確認ポイント入力行ごとに追跡できる結果ができ、失敗した行も確認できます。

うまくいかないとき失敗した行を再試行できるよう、元のSMILESを捨てずに保存します。

for smiles in rows:
案内を見る

Rust

Rustツールを作る

Rustプロジェクトにchematicを追加し、化学計算を同じプロセスで動かします。

作るものCLIやサービスの土台次の一歩Rustの案内を見る
手順
  1. 小さなバイナリクレートを作り、必要な機能を追加します。
  2. main関数で既知のSMILESを1つ解析します。
  3. 一括処理の前に、無効な入力へ明確なエラーを返します。

確認ポイント同じ入力に対してローカルで再現可能な結果が出ます。

うまくいかないときコンパイル時間やサイズが気になる場合は必要な機能だけから始めます。

cargo add chematic --features "smiles,perception,chem,3d,fp"
案内を見る

AIエージェント

AIエージェントと接続する

まずローカルstdioのMCPサーバーを使い、クライアントがプロセスを起動できない場合だけ自己ホストHTTPを使います。

作るものローカル化学ツール連携次の一歩MCPの案内を見る
手順
  1. バージョンを指定してMCPパッケージをローカルにインストールします。
  2. AIクライアントにstdioコマンドを登録します。
  3. テスト用SMILESを解析し、構造化データを返すよう依頼します。

確認ポイントホスト型サービスを介さず、AIクライアントから化学ツールを呼び出せます。

うまくいかないときクライアントがローカルプロセスを起動できない場合だけ、ループバックHTTPアダプターを使います。

ブラウザ

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つの分子を解析し、初期スクリーニングでよく使う物性記述子を計算します。

作るもの簡潔な物性レポート次の一歩詳しい手順を見る
手順
  1. 既知のSMILESを分子オブジェクトとして解析します。
  2. 同じ分子から分子量、LogP、TPSAを計算します。
  3. 出力には計算値と元のSMILESを一緒に残します。

確認ポイント同じ解析済み分子に対して、3つの値がローカルで返ります。

うまくいかないとき記述子は計算値です。実測値や臨床予測として扱わないでください。

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類似度で2つの分子を比べる

2つの構造をローカルで比べ、再現可能なTanimotoスコアと入力を一緒に残します。

作るものローカル類似度比較次の一歩詳しい手順を見る
手順
  1. インタラクティブな機能例を開きます。
  2. ECFP4でアスピリンとサリチル酸を比較します。
  3. 2つの入力、設定、表示スコアを記録します。

確認ポイント同じ入力とフィンガープリント設定では、同じローカルスコアが返ります。

うまくいかないとき類似度スコアだけで活性、安全性、合成可能性は判断できません。

アスピリン
サリチル酸
ECFP4
案内を見る

ブラウザ

薬らしさの基本指標を確認する

1つの解析済み分子について、計算記述子と表示されるLipinski結果を確認します。

作るもの最初の物性チェック次の一歩詳しい手順を見る
手順
  1. ブラウザで完全なSMILESを1つ解析します。
  2. 分子量、LogP、TPSA、HBD、HBA、Lipinskiを読みます。
  3. 計算値と正確な入力を一緒に残します。

確認ポイント結果パネルに、解析済み分子の物性指標が表示されます。

うまくいかないときこれは計算指標であり、有効性、安全性、臨床適合性の結論ではありません。

CC(=O)OC1=CC=CC=C1C(=O)O
案内を見る

Python

無効な行も残して記述子CSVを作る

コンパクトな物性レポートを作りながら、元の行番号とパーサーエラーを残します。

作るもの追跡可能な記述子CSV次の一歩詳しい手順を見る
手順
  1. smiles列を持つCSVを読み込みます。
  2. 各行について計算値またはValueErrorを記録します。
  3. 有効な行を絞り込む前に1つのレポートへ書き出します。

確認ポイント空でない入力行ごとに明示したstatusがあります。

うまくいかないときbulk.descriptorsは無効なSMILESをスキップするため、元表と照合するレポートでは先に検査します。

chematic.from_smiles(smiles)
案内を見る

Python

ECFP4類似度でSMILESライブラリを並べ替える

候補ライブラリを検査した後、1対多のローカル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と基本記述子を作る

CCOを解析し、原子数・分子量・TPSAを出力するネイティブCLIを作ります。

作るものローカルRust化学CLI次の一歩詳しい手順を見る
手順
  1. バイナリcrateを作ります。
  2. 必要な3つの機能を有効にします。
  3. CCOを解析して基本記述子を出力します。

確認ポイントCCOではatoms=3、mw=46.07、tpsa=20.23が出力されます。

うまくいかないとき実際の用途に必要な、文書化された最小の機能セットを選びます。

cargo add chematic --features "smiles,perception,chem"
案内を見る

AIエージェント

ローカルMCPのSMILESツールをstdioで検証する

クライアントへ登録する前に、JSON-RPCの解析要求をローカルMCPサーバーへ送ります。

作るもの確認済みのローカルstdio応答次の一歩詳しい手順を見る
手順
  1. ソースリポジトリをcloneします。
  2. ローカルstdioへJSON-RPCを送ります。
  3. ベンゼンの構造化応答を確認します。

確認ポイントvalid=true、atoms=6、bonds=6、mol_weight=78.114が返ります。

うまくいかないときこれはホスト型MCP URLではなく、ローカルstdioプロセスです。

tools/call: parse_smiles
案内を見る

Python

SMILESから分子式と分子量を取得する

1つのSMILESを解析し、基本的な2つの計算値を元の入力の横に残します。

作るもの追跡可能で簡潔な分子記録次の一歩詳しい手順を見る
手順
  1. CCOのように完全なSMILESを1つ解析します。
  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を使わず、ESモジュール読み込みにfile URLを使わないでください。

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を残しながら、拡大可能な2D構造式ファイルをローカルで作ります。

作るもの追跡可能なaspirin.svg次の一歩詳しい手順を見る
手順
  1. 完全なSMILESを1つローカル解析します。
  2. SVG描画をUTF-8テキストで書き出します。
  3. 入力とパッケージ版を成果物と一緒に残します。

確認ポイントaspirin.svgは拡大できる2D構造式として開けます。

うまくいかないとき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レコードを書き出す

構造名と正確な元SMILESをSDデータに残した、ローカルのSDFレコードを作ります。

作るもの追跡可能なethanol.sdfレコード次の一歩詳しい手順を見る
手順
  1. 完全なSMILESを1つローカル解析します。
  2. 構造名と元SMILESをプロパティに設定します。
  3. SDFレコードを1つ書き出して確認します。

確認ポイントethanol.sdfにはエタノール、source_smiles: CCO、$$$$終端が入ります。

うまくいかないときSDFレコードと自動生成した2D座標は、物質同一性、試料の由来、安全性、実験的妥当性の証明ではありません。

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")
案内を見る