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を照合してください。実行した配布物と確認内容は実行記録に保存しています。