BH12.12/データベースアーカイブのRDF化
提供:TogoWiki
目次 |
目標
- アーカイブ内の全てのデータ(2012.11時点のもの)を triple store に入れる
- 検索のユースケースを考え,その検索に必要なメタデータを付け加える
参加者(自由に付け加えてください)
- 畠中
- 櫛田
- 大久保
- 山口
- 呉
サマリ
行ったことの手順
- アーカイブ内の全てのデータ(2012.11時点のもの)を triple store に入れる
- ユースケースを考える
- ある化合物に対し,その化合物を生体内に含む植物をすべて包含する分類群を求めよ
- ラットである病理所見を得られた化合物を含む植物のリストを求めよ
- KNApSAcK もしくは Open TG-GATE の化合物からターゲットタンパク質を導く
- ある生物群に含まれる生物種のデータを含むデータベースを求めよ
- ユースケースに必要なデータを追加する
- 各DBに含まれる化合物について共通のIDを追加する (ChEBI, InChI, InChIKey)
- 各DBに含まれる生物種について(必要があれば)共通のIDを追加する (NCBI Taxonomy)
- ユースケースをSPARQL に書き下す
- ある化合物に対し,その化合物を生体内に含む植物をすべて包含する分類群を求めよ->DONE
- ラットである病理所見を得られた化合物を含む植物のリストを求めよ->DONE
- KNApSAcK もしくは Open TG-GATE の化合物からターゲットタンパク質を導く->DONE
- ある生物群に含まれる生物種のデータを含むデータベースを求めよ->DONE
事前TODO
- triple store の準備(マシン選定済み, 12月中旬に準備予定)
- http://dba.dbcls.jp/ を準備済. Virtuoso 6.4 が利用可能.
- 検索ユースケースの検討
- 利用可能な外部 SPARQL endpoint リスト
- 利用するオントロジーの選定
- 初期RDF作成->DONE
- 上記 store 準備後,事前に入れておく -> Done
- ...
当日TODO
- オントロジーの割当
- 各化合物をChEBI に割当
- 化合物グループの合意に基づき,InChi, InChiKey も割当てる
- 割当時にデータの誤り(DBアーカイブ内,ChEBI)があったので,手動で訂正できるところは訂正する
- SPARQL 作成&テスト
- Taxonomy のエンドポイント選定
- 12/19
- KNApSAcK と Open TG-Gates に含まれる化合物で可能なものを全て ChEBI に割当てた
- 割当時にデータの問題をいくつか発見
- 元の TogoDB に入ってた KNApSAcK のデータの問題(デリミタと同じ記号がデータの中もある) → 今回は対応の時間がないため,後日入れ替え
- CAS-ChEBI が一対一になってない(一つの CAS に複数の ChEBI がつく例が 20 ほど)→畠中さんが一例一例中を見て手動で対応
- 割当時にデータの問題をいくつか発見
- DBアーカイブRDFのβサイトを立ち上げた
- 予め入れていた 60 のDBのRDFデータに加え,ChEBI の割当データをアップロードした
- KNApSAcK と Open TG-Gates に含まれる化合物で可能なものを全て ChEBI に割当てた
- 12/20
- KNApSAcK の化合物に InChI, InChIKey を付けた
- KNApSAcK の mol ファイルを本家 KNApSAcK のサイトからダウンロード
- IUPAC のサイトからmolファイルをInChI, InChIKey に変換するツールを取得
- InChI, InChIKey の記述方法がサイトによってバラバラ(例: 先頭に"InChIKey="を含む含まない)→PubChem, ChemSpider などのサイトに合わせ,InChI は"InChI="を含め,InChIKey は"InChIKey"を含めない方針で
- CAS-ChEBI が一対一になってない(一つの CAS に複数の ChEBI がつく例が 20 ほど)問題,対応中
- 現状で一番多い原因: 平衡な二種の化合物が CAS では同じになっているが,ChEBI では区別する
- ある化合物に対し,その化合物を生体内に含む生物種をすべて包含する分類群をLODAC speciesを使って抽出する検索式の検討
- 外部Taxonomy endpoint は,subClassOf のインファレンスが使えないか(bio2rdf),遅いか間違いがあるようなので(LODAC),自前で OBO の NCBITaxon をダウンロード&エンドポイント作成
- integbio DB カタログは NCBI Taxonomy ID が独自フォーマットであったため,OBO NCBI Taxon に沿って追加データを作成して,追加.
- SPARQL 2種
- ラットである病理所見を得られた化合物を含む植物のリストを求めよ
- KNApSAcK の化合物に InChI, InChIKey を付けた
SELECT DISTINCT ?o WHERE { ?tggatespatho <http://togodb.biosciencedbc.jp/togodb/meta/open_tggates_pathology#find_type> "Hypertrophy" . ?tggatespatho <http://togodb.biosciencedbc.jp/togodb/meta/open_tggates_pathology#compound_name> ?compoundname . ?tggatesmain <http://togodb.biosciencedbc.jp/togodb/meta/open_tggates_main#compound_name> ?compoundname . ?tggatesmain <http://togodb.biosciencedbc.jp/togodb/meta/open_tggates_main#chebi> ?chebi . ?knapsackcore <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#chebi> ?chebi . ?knapsackcore <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#organism> ?o}
- ある生物群に含まれる生物種のデータを含むデータベースを求めよ
define input:inference "subClassOf_NCBITaxon" SELECT ?dbname WHERE { ?taxon rdfs:label "Mammalia"^^<http://www.w3.org/2001/XMLSchema#string> . ?sub rdfs:subClassOf ?taxon . ?db <http://integbio.jp/dbcatalog/meta#dbcat_taxonomy_id> ?sub . ?db <http://integbio.jp/dbcatalog/meta#dbcat_db_name> ?dbname . }
define input:inference "subClassOf_NCBITaxon" SELECT DISTINCT ?dbname WHERE { ?supertaxon <http://www.w3.org/2000/01/rdf-schema#label> "Mammalia"^^<http://www.w3.org/2001/XMLSchema#string> . ?taxon rdfs:subClassOf ?supertaxon . ?taxon <http://www.w3.org/2000/01/rdf-schema#label> ?taxonname . ?database <http://integbio.jp/dbcatalog/meta#dbcat_organism> ?organism . FILTER(CONTAINS(?organism, ?taxonname)) . ?database <http://integbio.jp/dbcatalog/meta#dbcat_db_name> ?dbname . }
- 12/21
- Open TG-GATE のエントリに ChEBI を通して InChI, InChIKey を付けた
- 残り二つのクエリ作成
- ある化合物に対し,その化合物を生体内に含む生物種をすべて包含する分類群を求めよ
define input:inference "subClassOf_NCBITaxon" SELECT ?label (COUNT(?label) AS ?totalSuper) { ?knapsackcore <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#metabolite> "alpha-Thujene" . ?knapsackcore <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#organism> ?organism . FILTER(str(?taxonname)=?organism) . ?taxon <http://www.w3.org/2000/01/rdf-schema#label> ?taxonname . ?taxon <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://purl.obolibrary.org/obo/NCBITaxon_3193> . ?taxon <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?super . ?super <http://www.w3.org/2000/01/rdf-schema#label> ?label. } GROUP BY ?label ORDER BY DESC (?totalSuper)
- KNApSAcKもしくはOpen TG-GATE の化合物からターゲットタンパク質を導く
SELECT ?target WHERE { ?ksid <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#organism> "Vigna unguiculata". ?ksid <http://togodb.biosciencedbc.jp/togodb/meta/knapsack_core#inchi> ?inchi . SERVICE <http://rdf.farmbio.uu.se/chembl/sparql> { ?molecule <http://www.blueobelisk.org/chemistryblogs/inchi> ?inchi . ?activity <http://rdf.farmbio.uu.se/chembl/onto/#forMolecule> ?molecule . ?activity <http://rdf.farmbio.uu.se/chembl/onto/#onAssay> ?assay . ?assay <http://rdf.farmbio.uu.se/chembl/onto/#hasTarget> ?target . } }
- この Wiki にサマリ作成
ユースケース例
- ある化合物に対し,その化合物を生体内に含む生物種をすべて包含する分類群を求めよ
- 必要な作業
- KNApSAcK の生物種をNCBI Taxonomy に沿って書き直す
- KNApSAcK の化合物を CHEBI か何かに沿って書き直す
- ChemIDPlus:CAS番号->KEGG compound:CAS番号->KEGG Drug:CAS番号->Label完全一致->Synonym完全一致 の順で同じものがあるかどうかを確認し,あれば書き足すプログラムを作成.
- 本番データで試したところ,ダウンロードデータやRDFデータ内に CAS 番号がないため,Label完全一致->Synonym完全一致のみを結果的にあてることに.
- Label一致Synonym一致を利用した場合, KNApSAcK の 50048件の化合物中,ChEBI にあてられるのはわずかに2363件....ChEBI のエントリ数が 37882 であることを考慮しても,もう少し増やせるのではないか->大久保さんから頂いた対応表を使うと3397件に増えた
- 必要な作業
- ラットである病理所見を得られた化合物を含む植物のリストを求めよ
- 必要な作業
- KNApSAcK の化合物を CHEBI か何かに沿って書き直す
- Open TG-GATE の化合物を CHEBI か何かに沿って書き直す
- 上記 KNApSAcK と同じプログラムで open_tggates_main.rdf にあてたところ,170件中120件が ChEBI に当てられた.
- 必要な作業
- KNApSAcKもしくはOpen TG-GATE の化合物からターゲットタンパク質を導く
- 必要な作業
- Kegg compound(Drug) ID, CAS registry number, KnapSackIDから、ChEBIを通して、InChIを得る。
- テスト: 化合物とターゲットタンパク質の関係はChEMBL SPARQL Endpointで収集可能。この時InChIを入力にする。
- 化合物とターゲットタンパク質のDBの調査
- ChEMBL: SPAEQL Endpoint稼働中、データダウンロード可能(sql)
- DrugBank :SPAEQL Endpoint利用不可、データダウンロード可能(xml他)
- CTD: SPAEQL Endpointなし、データダウンロード可能(csv, tsv他)
- PubChem BioAssay: SPAEQL Endpoint(Pubchem Bio2RDF)にAssayのデータなし、
- PCI(Protein-Compound Interaction)DB: SPAEQL Endpointなし、データダウンロード可能(sql)、PCIは上記4つのデータベースを統合したDB。PubChem compoundからターゲット情報を取得できる。
- 必要な作業
- ある生物群に含まれる生物種のデータを含むデータベースを求めよ
- 必要な作業
- NCBI Taxonomyのある生物種を含む全てのタクソンを算出しておく(LODACのSuperTaxon)
- 「ある生物群に含まれる生物種」は、LODAC Speciesで検索可能(検索例)
- NCBI Taxonomyのある生物種を含む全てのタクソンを算出しておく(LODACのSuperTaxon)
- 必要な作業
問題点
- KnapSack の化合物IDはCASを使っているが,CHEBIのエントリにはCAS番号が振られていないものも多い(実際は対応するにも関わらず)
- 例: Gibberellin A1 (CAS: 545-97-1), http://purl.obolibrary.org/obo/CHEBI_27718
- 上記のように,ChemIDPlus:CAS番号->KEGG compound:CAS番号->KEGG Drug:CAS番号->Label完全一致->Synonym完全一致を確認することで対応.
- ChEMBLは医薬品低分子化合物を中心にそのターゲットタンパク質の情報を収録しているので、KnapSackが取り扱っている天然化合物に対するターゲットの情報が得られるか確認する必要がある。
- KnapSackID-ChEBIid-InchIリスト作成済み(Knapsack化合物50048件、うち1591件がInchI情報をもつ。さらにその中の250件以上の化合物がChEMBLのターゲットタンパクの情報を持つことを確認)
- ChEMBL SPARQL Endpointが利用可能。ただしデータが少し古い(少ない)。
- 例、ChEMBL SPARCL EndPointが617,676アッセイ分を登録しているのに対して、sql版は644,734アッセイを登録。
- Open Open TG-GATEsで登場する129個の化合物がChEMBLのターゲットタンパクの情報をもつことを確認(ChEMBL SPARCL EndPointで確認)。
- 1つのCAS番号が2つのChEBIに対応する例:ラセミ体とS体、活性のある光学異性体とない光学異性体、単糖類とアノマーとか開環構造とか、tautomer
Tips
- Virtuoso の Inference 設定 (NCBI Taxonomy で subClassOf のinference を行う場合)
- ブラウザで Virtuoso conductor にログイン
- メニュー左上の Interactive SQL,あるいは,Database タブから Interactive SQL を開く
- 「rdfs:subClassOf rdf:type owl:TransitiveProperty .」をグラフに入れるため,Interactive SQL のテキストボックスに「insert in graph <http://www.ncbi.nlm.nih.gov/taxonomy> {rdfs:subClassOf rdf:type owl:TransitiveProperty .};」と入れて Execute ボタンを押す
- rule set を作るため,Interactive SQL のテキストボックスに「rdfs_rule_set ('subClassOf_NCBI', 'http://www.ncbi.nlm.nih.gov/taxonomy');」と入れて Execute ボタンを押す
- SPARQL を書いて,検索を試す
- 「define input:inference "subClassOf_NCBI" select * from ...」