塩を含む化合物の一覧を見比べるとき、どの形にそろえて比較するかを決めておくと作業が進めやすくなります。chematicでは標準化の処理を選び、処理後の構造と各段階のレポートを受け取れます。元のSMILESも呼び出し元で残しておけば、入力から結果までを一緒に説明できます。

酢酸ナトリウムを、選んだ条件で処理する

例として、酢酸ナトリウムのCC(=O)[O-].[Na+]を使います。最大フラグメントの選択と電荷の中和を有効にし、明示的水素の除去と互変異性体の正規化はオフにして、standardize_smiles_report_jsonを呼びます。公開npmパッケージv1.1.2では、処理後のSMILESとしてCC(O)=Oが返ります。

レポートでは、NeutralizeChargesとLargestFragmentで構造が変わっています。この例の原子数は暗黙の水素を含まず、入力が5、出力が4です。呼び出し元で、次の情報をまとめて保存すると比較しやすくなります。

input_smiles:  CC(=O)[O-].[Na+]
review_smiles: CC(O)=O
settings:     largest fragment + charge neutralization
changed:      NeutralizeCharges, LargestFragment

input_smilesと設定は呼び出し元で記録する情報です。APIからは処理後のSMILESと、入力・出力の概要、各処理段階のレポートが返ります。

各段階の前後を確認できる

StandardizationReportには、各段階の名前、有効にしたか、構造が変わったか、処理前後の概要が入ります。概要には原子数、結合数、構造のハッシュが含まれます。確認するときは、stepsを順に見て、その設定が結果へどう反映されたかを追えます。

この情報は、同じ設定で一括処理を再実行したり、別の人へ処理内容を説明したりするときに使えます。元のデータを示す列と、比較用の形を示す列を分けておくと、表の用途も明確になります。

入力、処理、検証をつなぐ

前の記事では、入力の行と処理結果を結び付ける方法を紹介しました。標準化では、そこに選んだ設定と各段階の変化を加えます。入力から結果までたどれる情報を返すことが、chematicのAPIをファイル処理や小さな解析ツールへ組み込む際に役立ちます。

実装は標準化パイプラインとレポートとWASM APIで確認できます。計算結果をどの条件で照合しているかは、検証ページで紹介しています。