LoginSignup
0
0

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

Posted at

はじめに

ケモインフォマティックの分野では、有機化合物の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, IUPAC names, CAS Numbers, SMILES strings, IUPAC InChI/InChIKeys, NCI/CADD Identifiers, CACTVS HASHISY, NSC number, PubChem SID, ZINC Code, ChemSpider ID, ChemNavigator SID, eMolecule VID.

representation:

'smiles'(SMILES strings), 'names' (Names), 'cas' (CAS numbers), 'stdinchikey' (Standard InChIKey), 'stdinchi' (Standard InChI), 'ficts' (FICTS Identifier), 'ficus' (FICuS Indetifier), 'uuuuu' (uuuuu Identifier), 'mw' (Molecular weight), 'monoisotopic_mass' (Monoisotopic Mass), 'formula' (Chemical Formula), 'chemspider_id' (ChemSpider ID), 'pubchem_sid' (PubChem SID), 'chemnavigator_sid' (ChemNavigator SID), 'h_bond_donor_count' (Number of Hydrogen Bond Donors), 'h_bond_acceptor_count' (Number of Hydrogen Bond Acceptors), 'h_bond_center_count' (Number of Hydrogen Bond Centers), 'rule_of_5_violation_count' (Number of Rule of 5 Violations), 'rotor_count' (Number of Freely Rotatable Bonds), 'effective_rotor_count' (Number of Effectively Rotatable Bonds), 'ring_count' (Number of Rings), 'ringsys_count' (Number of Ring Systems), 'xlogp2' (octanol-water partition coefficient), 'aromatic' (is the compound aromatic), 'macrocyclic' (is the compound macrocyclic), 'heteroatom_count' (heteroatom count), 'hydrogen_atom_count' (H atom count), 'heavy_atom_count' ( Heavy atom count), 'deprotonable_group_count' (Number of deprotonable groups), 'protonable_group_count' (Number of protonable groups).

実装例

#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