はじめに
ケモインフォマティックの分野では、有機化合物のSMILES表記がよく用いられており、分子の構造などを数値化した分子記述子や、分子の部分構造などの有無を0/1のビットで表記したフィンガープリントなどを入手する、構造式を表示するなどで活用されています。
このSMILES表記はPubchemなどのサイトや、ChemDrawなどのソフトウェアで入手することが可能ですが、手元に化合物のCAS番号の情報や化合物名などがあった時に効率よくSMILESが入手できないかと思って調べたところ、Rのwebchemパッケージで簡単に行えることが分かりましたので、自分の備忘録として記事に残したいと思います。
目的
Rを使って、手元のCAS番号からSMILESを入手して、rcdkパッケージやfingerprintパッケージなどで使用可能なSMILESのオブジェクトを作成する。
方法
Rのwebchemパッケージを使用します。
webchemパッケージはPubchemなどの化学物質に関するウェブサイトの情報をRやり取りすることができます。
色々な情報を検索して、Rのオブジェクトとして活用できます。
パッケージで使用する関数はcir_query()で、cir_query(identifier, representation)のように、入力する情報をidentifierとして(今回の場合はCAS番号)を、出力したい情報をrepresentation (今回の場合はSMILES)に指定します。
identifierとrepresentationには以下の情報が使用できます。
identifier
識別子 | 説明 | 用途/特徴 |
---|---|---|
Chemical Names | 一般名・慣用名・商品名など | 人間にとって理解しやすいが、曖昧さがある(例: アスピリン = acetylsalicylic acid)。 |
IUPAC Names | 国際純正・応用化学連合(IUPAC)が定める体系名 | 化学構造を一意に表すが長く複雑になることもある。 |
CAS Numbers (CAS RN) | Chemical Abstracts Service の登録番号(例: 50-00-0) | 商業・規制・特許関連でよく使われる。 |
SMILES strings | Simplified Molecular Input Line Entry System | 分子構造を文字列で簡潔に表記。計算機処理や化学情報学で広く用いられる。 |
IUPAC InChI / InChIKey | IUPAC が定義する分子表記規格。 InChI = 完全表記、InChIKey = ハッシュ化された短縮版 |
データベース間の統合に便利。構造に基づき一意。 |
NCI/CADD Identifiers | 米国国立がん研究所 (NCI) / コンピュータ支援創薬 (CADD) の識別子 | NCI 化合物データベース。 |
CACTVS HASHISY | CACTVS ケモインフォマティクスシステムによる分子識別子 | 特殊な化学情報処理ソフトウェアに関連。 |
NSC number | National Service Center 識別子 | NCI が化合物を管理するための番号。抗がん剤研究などで使用される。 |
PubChem SID | Substance ID | PubChem 物質データベースのID。物質(混合物や塩も含む)。 |
ZINC Code | ZINC データベースのID | バーチャルスクリーニングやドラッグライブラリ用。 |
ChemSpider ID | Royal Society of Chemistry が運営する ChemSpider の識別子 | 複数データベースを統合した化合物検索に利用。 |
ChemNavigator SID | ChemNavigator データベース(商用)での識別子 | 研究・商業向け。現在は Clarivate が関連する。 |
eMolecule VID | eMolecules データベースのベンダー識別子 | 化学物質の販売情報に紐づく。 |
representation:
Representation | 説明 | 用途/特徴 |
---|---|---|
smiles (SMILES strings) |
分子を文字列で表現する記法 | 構造検索、計算機処理、ケモインフォマティクスで標準的。 |
names (Names) |
化学名(一般名やIUPAC名など) | 人間に分かりやすいが曖昧さあり。 |
cas (CAS numbers) |
CAS 登録番号 | 商業・規制・特許関連でよく利用。 |
stdinchikey (Standard InChIKey) |
標準 InChI のハッシュ化短縮版 | データベース間のキーとして便利。 |
stdinchi (Standard InChI) |
標準化された InChI 記述子 | 構造に基づき一意に定義。 |
ficts (FICTS Identifier) |
標準化のための FICTS(Fragment, Isotope, Charge, Tautomer, Stereochemistry) ルールに基づく表記 | 化合物の正規化・比較に利用。 |
ficus (FICuS Identifier) |
Fragment, Isotope, Charge, stereochemistry Uniformity, tautomerism に基づく識別子 | FICTS の拡張版。 |
uuuuu (uuuuu Identifier) |
FICTS/FICuS のさらなる簡略化・正規化バージョン | 高度な同一性判定に利用。 |
mw (Molecular weight) |
分子量(平均質量) | 化合物の基本的な物理化学特性。 |
monoisotopic_mass (Monoisotopic Mass) |
主同位体のみを考慮した分子質量 | 質量分析(MS)に必須。 |
formula (Chemical Formula) |
分子式 | 化学組成の基本表記。 |
chemspider_id (ChemSpider ID) |
ChemSpider のデータベース ID | 化合物の外部リンクに利用。 |
pubchem_sid (PubChem SID) |
PubChem の Substance ID | 化合物の一意識別子。 |
chemnavigator_sid (ChemNavigator SID) |
ChemNavigator DB の識別子 | 商用化合物情報。 |
h_bond_donor_count |
水素結合ドナーの数 | 医薬品分子設計(Lipinski則など)。 |
h_bond_acceptor_count |
水素結合アクセプターの数 | 同上。 |
h_bond_center_count |
水素結合可能部位の総数 | より網羅的な水素結合解析。 |
rule_of_5_violation_count |
Lipinski の Rule of 5 違反数 | 経口バイオアベイラビリティ予測。 |
rotor_count |
自由に回転できる結合の数 | 分子の柔軟性・立体配置予測。 |
effective_rotor_count |
実効回転可能結合数 | 実際の回転自由度を反映。 |
ring_count |
環構造の数 | 分子骨格の複雑さを評価。 |
ringsys_count |
環系の数(縮環をまとめてカウント) | 構造の骨格分類に有用。 |
xlogp2 (octanol-water partition coefficient) |
LogP 値(疎水性の指標) | 膜透過性や溶解性の予測。 |
aromatic |
芳香族性の有無 (TRUE/FALSE) | 化学的性質や安定性に関与。 |
macrocyclic |
マクロ環であるかどうか | 天然物や特殊医薬品設計に重要。 |
heteroatom_count |
ヘテロ原子数(C,H以外の原子数) | 極性や反応性の目安。 |
hydrogen_atom_count |
水素原子の総数 | 分子構造の基礎情報。 |
heavy_atom_count |
重原子数(炭素・水素以外の原子を含む) | 分子の複雑さ・分子サイズの指標。 |
deprotonable_group_count |
脱プロトン化可能な基の数 | 酸性度やイオン化挙動の予測。 |
protonable_group_count |
プロトン化可能な基の数 | 塩基性やプロトン化特性の予測。 |
Representation の分類
-
構造表記 → smiles, stdinchi, stdinchikey, ficts, ficus, uuuuu
-
識別子/データベースID → cas, chemspider_id, pubchem_sid, chemnavigator_sid, names
-
分子物性 → mw, monoisotopic_mass, formula, xlogp2
-
薬理的/構造的指標 → 水素結合カウント、Lipinski則、rotor/ring系、芳香族性、マクロ環性
-
組成的特徴 → heteroatom_count, hydrogen_atom_count, heavy_atom_count, protonable/deprotonable_group_count
実装例
#webchemパッケージのインストールとライブラリの読み込み
install.packages("webchem")
library(webchem)
#CAS番号のオブジェクトを作成
casnr <- c("2051-60-7","2051-61-8")
#cir_query()関数でCAS番号からSMILESを入手する
CAS.SMILES <- cir_query(casnr, "smiles")
#入手できた情報の確認
CAS.SMILES
> CAS.SMILES
# A tibble: 2 × 2
query smiles
<chr> <chr>
1 2051-60-7 Clc1ccccc1c2ccccc2
2 2051-61-8 Clc1cccc(c1)c2ccccc2
#作成されたオブジェクトの種類を確認
names(CAS.SMILES)
> names(CAS.SMILES)
[1] "query" "smiles"
#SMILESのみをオブジェクトに保存
SMILES.only <- CAS.SMILES$smiles
SMILES.only
> SMILES.only
[1] "Clc1ccccc1c2ccccc2" "Clc1cccc(c1)c2ccccc2"
公共のWebサービスを使用するため、一度に多くの化合物を使用するとサーバーへの負担が大きくなり、応答時間が遅くなってタイムアウトするだけでなく、他のユーザーへ迷惑をかけてしまいます。
サーバーへの負担を軽減するためにも、一度に多くの化合物を検索するのではなく、検索する情報を分割して、何度かに分けて検索をすることをお勧めします。
参考サイト
https://cran.r-project.org/web/packages/webchem/index.html
https://www.rdocumentation.org/packages/webchem/versions/1.3.0/topics/cir_query