0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RでSMILESをCAS番号から効率よく入手する方法(ケモインフォマティックの小技):webchemパッケージ

Last updated at Posted at 2024-05-31

はじめに

ケモインフォマティックの分野では、有機化合物の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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?