提供:TogoWiki
日化辞 と KNApSAcK の化合物IDの対応情報の取得 (櫛田、山田、時松)
- 目的: 日化辞RDFデータを日本の化合物データのHubとして利用するための取り組みの一環
- KNApSAcK と日化辞の間のIDの対応を取り、日化辞にない 日化辞ID があれば日化辞に追加を要請する
CAS-RN と InChI を利用した 両データベース間の化合物の対応の課題
CAS-RN によるマッチングの問題点
- CAS-RN はライセンスの問題で、積極的につけないデータベースが多い
- 日化辞の場合も CAS-RN をつけるのを止めているので、古いエントリーにしか CAS-RN がついていない
InChI によるマッチングの問題点
- 立体異性の表記などの問題で、同じ化合物であっても同じInChiにならない場合がある
- DB 側で構造式の立体異性表記を一部または全部省略している場合
- 構造式の立体異性表記のしかたにより、InChiに変換した時に立体情報の反転または消失が起きることがある
- molファイル側の問題(表記法により、molファイルに異性情報がきれいに乗らないことがある)
- InChIコンバータの挙動の違い(OpenBabelのコンバータと、InChIが提供するコンバータで微妙に結果が違う物がある)
PubChem でも上記の理由で一つの化合物が CID レベルでもInChIの違う複数の CID に分かれてしまう
- 例:Kaempferol 7-neohesperidoside (CID_5483905) (BH15)
- この CID には、BH15 で調査した時に9つの Same connectivity の CID があったが、いずれも Kaempferol 7-neohesperidoside の表記違いもしくは構造式の書き間違い、立体異性の省略などによる物と予測される(今は、22の same connectivity CID に増えている) 参考資料(BH15)
- 余談:本エントリーには data sapplyer が間違った synonym (Kaempferol 7-rutinoside)を登録しており、このPubChemエントリーを参照したと思われる Wikipedia に Kaempferol 7-neohesperidoside の構造式で Kaempferol 7-rutinoside のエントリーが作成され、これが CID 5483905 にリンクされるという、エラーの拡大再生産が起きて訳がわからない状況。
- InChIとInChI Keyについては、Connectivityのみなど緩めにかけた検索結果も参照する必要がある (参照:化合物SPARQLthon38)
- Same Connectivityを見る場合、複数の化合物が入ることが多い
- 例: Kaempferol 3-glucoside の場合、Same Connectivity を取ると Kaempferol 3-hexoside になるので、Kaempferol 3-galactoside などと同じSame connectivity になる。
- MSの場合、Same connectivityで大きな問題はない
日化辞 と KNApSAcK の CAS-RN と InChI を用いた 比較による問題点の検討 (SPARQLthon37, SPARQLthon39)
- 比較データを検証して、問題の起きる頻度と事例の検討を行う
使用データ・手順
- 日化辞 (約300万レコード)
- CAS-RN
- IUPAC-1.0.4 によるInChI変換
- OpenBabelによるInChi変換
- KNApSAcK (50899レコード)
- CAS-RN
- IUPAC-1.0.4 によるInChI変換
- 下記の組み合わせについて、CASあるいはInChIが完全一致する組み合わせを確認
- KNApSAcK(CAS-RN)-日化辞(CAS-RN)
- KNApSAcK(IUPAC)-日化辞(IUPAC)
- KNApSAcK(IUPAC)-日化辞(OpenBabel)
比較結果
- 日化辞IDと対応が取れたKNApSAcK ID の数
- KNApSAcK(CAS-RN)-日化辞(CAS-RN) 14325 ID
- KNApSAcK(IUPAC)-日化辞(IUPAC) 22284 ID 23275 pair
- KNApSAcK(IUPAC)-日化辞(OpenBabel) 19975 ID 20794 pair
- CAS対応とInChI対応の比較
- 全て完全一致 6126 ID (12.0 %)
- InChI で複数対応があるが、そのうち1つがCASと一致 331 ID ( 0.7 %)
- CAS と OpenBabel のみ一致、IUPACなし 2 ID ( 0.0 %)
- CAS と IUPAC InChIのみ一致、OpenBabel なし 240 ID ( 0.5 %)
- CAS で情報なし、OpenBabelとIUPACの対応は完全一致 12867 ID (25.3 %)
- CAS で情報なし、OpenBabelとIUPACの対応は部分一致 103 ID ( 0.2 %)
- CAS と InChI 不一致、OpenBabelとIUPACは完全一致 531 ID ( 1.0 %)
- CAS と InChI 不一致、OpenBabelとIUPACは部分一致 11 ID ( 0.0 %)
- CAS と InChI 不一致、OpenBabelとIUPACは片方なし 67 ID ( 0.1 %)
- CASのみで情報あり 7017 ID (13.8 %)
- OpenBabelのみで情報あり 2 ID ( 0.0 %)
- IUPAC InChIのみで情報あり 2010 ID ( 3.9 %)
- 全て対応情報なし 21592 ID (42.4 %)
- 42.4 % が、何も対応取れていない!
- CASのみで情報が取れている 7017 ID に着目してInChIを比較すれば、問題点が見えるか?
- 例:Gibberellin (diterpenoids, plant hormone)
- 双方のデータベースとも検索をかけると100以上の分子を収載している(KNApSAcK 129 ID)
- CASのみし対応IDが取れないエントリーが多い
- 全て完全一致 28 ID (21.7 %)
- CAS で情報なし、OpenBabelとIUPACの対応は完全一致 11 ID ( 8.5 %)
- CASのみで情報あり 44 ID (34.1 %)
- 全て対応情報なし 46 ID (35.7 %)
- CASのみで対応が取れる物について見てみると、立体構造の描画に大きな違いがありInChIの立体異性情報が部分的に欠落している
- 例:KNApSAcK C00000004 と Nikkaji J4.736H (CAS_RN: 468-44-0)
- KNApSAcK C00000004: InChI=1S/C19H24O5/c1-9-7-18-8-10(9)3-4-11(18)19-6-5-12(20)17(2,16(23)24-19)14(19)13(18)15(21)22/h10-14,20H,1,3-8H2,2H3,(H,21,22)/t10?,11-,12+,13-,14-,17-,18+,19-/m1/s1
- Nikkaji J4.736H: InChI=1S/C19H24O5/c1-9-7-18-8-10(9)3-4-11(18)19-6-5-12(20)17(2,16(23)24-19)14(19)13(18)15(21)22/h10-14,20H,1,3-8H2,2H3,(H,21,22)/t10-,11-,12+,13-,14-,17-,18+,19-/m1/s1
- 対応情報がない物についても手作業でとれる
SPARQLthon40 日化辞 と KNApSAcK の InChI 比較検討 ~部分文字列 (櫛田、時松、山田)
- SPARQLthon38で作成したInChIのRDF生成スクリプトを修正した。
- このRDFは、InChIとInChIKeyを分割した文字列のトリプルが入っている。
- 新しいスクリプトでつくったRDFをVirtuosoに入れ、必要な情報をSPARQLクエリで取得できることを確認した。
- KNApSAcKデータには同位体を含む分子がない(たぶん)ためIsotopic_*のデータは0件でした。
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dcterms: <http://purl.org/dc/terms/>
prefix sio: <http://semanticscience.org/resource/>
prefix inchi: <http://glyconavi.org/inchi/>
SELECT DISTINCT ?id ?Version ?inchi ?inchikey ?value ?key_value
FROM <http://www.glyconavi.org/SPARQLthon40/iupac-inchi/KNApSAcK>
WHERE {
?s dcterms:identifier ?id .
?s sio:CHEMINF_000200 [ sio:SIO_000300 ?inchi ; rdf:type sio:CHEMINF_000396 ] .
?s sio:CHEMINF_000200 [ sio:SIO_000300 ?inchikey ; rdf:type sio:CHEMINF_000399 ] .
?s sio:CHEMINF_000200 / inchi:Version ?Version .
# inchi:Connections
# inchi:H_atoms
# inchi:Main_layer
# inchi:Charge
# inchi:Protons
# inchi:Charge_layer
# inchi:Stereo_dbond
# inchi:Stereo_sp3
# inchi:Stereo_sp3_inverted
# inchi:Stereo_type
# inchi:Stereo_layer
#0 inchi:Isotopic_atoms
#0 inchi:Isotopic_exchangeable_H
#0 inchi:Isotopic_stereo_dbond
#0 inchi:Isotopic_stereo_sp3
#0 inchi:Isotopic_stereo_sp3_inverted
#0 inchi:Isotopic_stereo_type
# inchi:Isotopic_layer
?s sio:CHEMINF_000200 / sio:SIO_000028 / sio:SIO_000028 [ rdf:type inchi:Connections ; sio:SIO_000300 ?value ] .
#0 inchi:Skeleton
#0 inchi:Stereo_isotopic_substitution_information
#0 inchi:Kind_of_InChIKey
#0 inchi:InChI_version
#0 inchi:Number_of_protons
?s sio:CHEMINF_000200 / sio:SIO_000028 [ rdf:type inchi:Number_of_protons ; sio:SIO_000300 ?key_value ] .
}
LIMIT 1
- 日化辞のInChI,InChIKeyを取得するSPARQLクエリ
- 日化辞InChI-RDFはNBDC生命科学系データベースアーカイブデータ(最終更新年月日 2015/07/30時点のデータを利用)
SELECT DISTINCT ?id ?inchi ?inchikey
FROM <http://www.glyconavi.org/iupac-inchi/NIKKAJI>
WHERE {
?s <http://vocab.jst.go.jp/terms/sti#InChI> ?inchi .
?s <http://vocab.jst.go.jp/terms/sti#InChIKey> ?inchikey .
?s <http://purl.org/dc/terms/identifier> ?id .
}
limit 5
- KNApSAcKのInChIKey RSQSQJNRHICNNH-AMNRFOROSA-N よりSkeleton部分 RSQSQJNRHICNNH と部分一致するNikkajiのIDとInChI,InChIKeyのリストをSPARQLで取得する。
-
LIMIT 1しかできない。クエリ最適化が必要
- 多分1〜2万件くらいの日化辞IDが得られると予想される
- 以下のクエリでは10件は得られるが、100件は "Virtuoso S1T00 Error SR171: Transaction timed out"となる
- virtuoso.iniのMaxQueryExecutionTimeを変更して検討中
LIMIT毎の結果
LIMIT 10
| 23.847 sec
|
LIMIT 50
| 3 min 58 sec
|
LIMIT 100
|
|
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dcterms: <http://purl.org/dc/terms/>
prefix sio: <http://semanticscience.org/resource/>
prefix inchi: <http://glyconavi.org/inchi/>
SELECT DISTINCT ?knapsack_id ?knapsack_inchi ?knapsack_inchikey ?Skeleton ?nikkaji_inchikey ?nikkaji_inchi ?nikkaji_id
WHERE {
GRAPH <http://www.glyconavi.org/SPARQLthon40/iupac-inchi/KNApSAcK> {
?s sio:CHEMINF_000200 [ sio:SIO_000300 ?knapsack_inchikey ; rdf:type sio:CHEMINF_000399 ] .
?s sio:CHEMINF_000200 / sio:SIO_000028 [ rdf:type inchi:Skeleton ; sio:SIO_000300 ?Skeleton ] .
}
GRAPH <http://www.glyconavi.org/iupac-inchi/NIKKAJI> {
?nikkaji_s <http://vocab.jst.go.jp/terms/sti#InChIKey> ?nikkaji_inchikey .
FILTER ( ?knapsack_inchikey != ?nikkaji_inchikey && contains(str(?nikkaji_inchikey), ?Skeleton ))
?nikkaji_s <http://purl.org/dc/terms/identifier> ?nikkaji_id .
?nikkaji_s <http://vocab.jst.go.jp/terms/sti#InChI> ?nikkaji_inchi .
}
?s sio:CHEMINF_000200 [ sio:SIO_000300 ?knapsack_inchi ; rdf:type sio:CHEMINF_000396 ] .
?s sio:CHEMINF_000200 [ sio:SIO_000300 ?knapsack_inchikey ; rdf:type sio:CHEMINF_000399 ] .
?s dcterms:identifier ?knapsack_id .
}
LIMIT 10
- 化学構造の骨格は同じで立体化学などが異なると思われるリストが取得できた。
骨格は同じだけど構造が異なる例
KNApSAcK
| C00002769
| FSBUXLDOLNLABB-MQAZSWENSA-N
|
日化辞
| J362.655E
| FSBUXLDOLNLABB-ISAKITKMSA-N
|
- データが取得できたら、この日化辞データのRDFをつくる。(予定)
- KNApSAcKと日化辞のRDFを使って何処が異なるか検討する予定