SMILESの一覧がCSVにあれば、各構造の分子式と分子量をまとめて計算できます。化合物IDと元のSMILESを同じ行に残すと、計算結果を手元の表へ戻す作業も簡単です。

実際に、ExcelやCSVにある多数のSMILESから分子式を作りたいという相談があります。ここでは5化合物のサンプルを使い、端末内でformula-report.csvを作ります。

CSVとスクリプトを同じフォルダーに置く

compounds.csvとformula_csv.pyをダウンロードしてください。入力は次の3列です。

source_id,name,smiles
CMP001,acetic acid,CC(=O)O
CMP002,ethanol,CCO
CMP003,aspirin,CC(=O)Oc1ccccc1C(=O)O

サンプルには、酢酸エチルと酢酸ナトリウムも含めています。手元の一覧を使う場合は、source_idに各行で重複しない管理用ID、smilesに構造を入れます。nameには表示用の名前を付けられます。

分子式と分子量を計算する

ターミナルでそのフォルダーを開き、macOSやLinuxでは次のように実行します。

python3 -m venv .venv
.venv/bin/python -m pip install "chematic==1.1.2"
.venv/bin/python formula_csv.py compounds.csv

Pythonを使える環境で実行してください。この例はmacOS arm64とPython 3.13.6で確認しました。Windowsでは、最初の行をpy -m venv .venvに変え、.venv/bin/pythonの代わりに.\.venv\Scripts\python.exeを使います。パッケージの取得後、ファイルの読み込みと計算は端末内で行います。

スクリプトは、各行のSMILESを読み込んでmol.formulaとmol.mwを計算します。出力にはsource_id、元のsmiles、formula、mw_g_mol、処理状態とエンジンの版が入ります。

出力を手元の表へ戻す

公開Pythonパッケージv1.1.2で確認した出力例です。mol.mwの実装は平均原子量に基づく値を返します。CSVではモル質量(g/mol)の列に、小数点以下2桁で記録しています。

source_id  formula    mw_g_mol
CMP001     C2H4O2     60.05
CMP002     C2H6O      46.07
CMP003     C9H8O4     180.16
CMP004     C4H8O2     88.11
CMP005     C2H3NaO2   82.03

酢酸ナトリウムは、入力に含めたナトリウムも分子式と分子量へ反映されます。塩をどの形で集計するかを揃える場合は、標準化の設定を記録する手順と組み合わせられます。

出力CSVの見本を開き、source_idを使って元の表へ列を追加してください。status=okは計算済み、status=reviewは入力を確認する行です。後者はerror列の内容と元のSMILESを照合してください。実行した配布物と確認内容は実行記録に保存しています。