BH16.12/LinkDB

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(SPARQL queries)
(SPARQL queries)
44行: 44行:
== SPARQL queries ==
== SPARQL queries ==
RDF Portal のDDBJグラフにリンク情報を入れてもらった。
RDF Portal のDDBJグラフにリンク情報を入れてもらった。
 +
=== 準備運動 ===
* PDB関連のリンクを取り出す。
* PDB関連のリンクを取り出す。
<pre>
<pre>
53行: 54行:
(rdfs:seeAlso はURLベタ書きの必要あり。このポータルでは、rdfs:はhttpsではなくてhttpで定義されているため。)
(rdfs:seeAlso はURLベタ書きの必要あり。このポータルでは、rdfs:はhttpsではなくてhttpで定義されているため。)
 +
* ヒトのBioSample を取り出す。
 +
<pre>
 +
#DEFINE sql:select-option "order"
 +
PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/nucleotide/>
 +
PREFIX obo:  <http://purl.obolibrary.org/obo/>
 +
SELECT DISTINCT ?biosample
 +
WHERE
 +
{
 +
  ?nucleotide a insdc:Entry.
 +
  ?nucleotide insdc:dblink ?biosample.
 +
  ?biosample a <http://ddbj.nig.ac.jp/ontologies/nucleotide/BioSample>.
 +
  ?nucleotide insdc:sequence ?seq.
 +
  ?source  obo:so_part_of ?seq .
 +
  ?source rdfs:seeAlso <http://identifiers.org/taxonomy/9606> .
 +
}
 +
limit 100 offset 1
 +
</pre>
 +
 +
=== 本番? ===
* BioSample - Nucleotide - INSDC Protein - PDBのリンクを取り出す
* BioSample - Nucleotide - INSDC Protein - PDBのリンクを取り出す
<pre>
<pre>

2016年12月14日 (水) 01:57時点における版

目次

PDBjとDDBJをつなぐ

UniProtのidmappingにPDB chain と insd protein_id の対応があるが、少し注意を要する。

いわゆるchain IDには auth_asym_idlabel_asym_id の2種類がある。

  • auth_asym_id -> 伝統的なchain IDで、登録者が勝手に決める。必ずしも A から始まらない。例: 2HKH (抗体) の L (light chain), H (heavy chain)
  • label_asym_id -> PDB側で統一的に定めたchain ID で必ず A, B, C ... の順で割り振られる。2HKHでは auth_asym_id = L -> label_asym_id = A; auth_asym_id H -> label_asym_id = B になる。

auth_asym_id は分子をuniqueに定めない

例えば、ヘモグロビン 1HBB (ヘモグロビン)の場合、アルファ鎖のひとつは auth_asym_id = Aだが、それに結合しているヘム及び水分子もauth_asym_id = Aになる。label_asym_id は A (蛋白質)、E(ヘム)、I(水)となる。

したがって、auth_asym_id ではPDBエントリーの蛋白質分子に固有のURLが定まらない。(これが便利な場合もある:タンパク質とそのリガンドを同時に指定したい場合など。)

化合物固有のID entity_id

なおPDBには分子の化合物のIDとしてentity_id がある。上記 1HBBの場合、ヘモグロビンのα鎖は2分子含まれており、 label_asym_id = AとCが割り当てられているが、それらのentity_idは共に"1"にである。

- http://rdf.wwpdb.org/pdb/1HBB/struct_asym/A
- http://rdf.wwpdb.org/pdb/1HBB/struct_asym/C
- http://rdf.wwpdb.org/pdb/1HBB/entity/1

chain IDによる指定はある意味"redundant"になる。これが良いか悪いかは目的次第だが、今回はredandancyを除いて entity_id を用いることにする。

伝統的chain IDと化合物IDの対応

[PDBj Mine SQL]サービスを使うと対応が取れる。

SELECT UPPER(e.pdbid), e.entity_id, UNNEST(string_to_array(e.pdbx_strand_id,',')) AS auth_asym_id
FROM entity_poly e

[結果] (TSVでダウンロードできます。[REST API]もあります。)

label_asym_idとの対応も含めたい場合、

SELECT UPPER(e.pdbid), e.entity_id, a.id AS label_asym_id, UNNEST(string_to_array(e.pdbx_strand_id,',')) AS auth_asym_id
FROM entity_poly e
JOIN struct_asym a ON a.pdbid = e.pdbid AND a.entity_id = e.entity_id

[結果]

まとめ

このBHでは、PDBの化合物IDとINSDのprotein IDの対応をUniProt の提供する idmapping_selected.tab.gz から生成した。

SPARQL queries

RDF Portal のDDBJグラフにリンク情報を入れてもらった。

準備運動

  • PDB関連のリンクを取り出す。
SELECT ?s ?o
WHERE {?s <https://www.w3.org/2000/01/rdf-schema#seeAlso> ?o 
          FILTER(regex(?s,'^http://rdf.wwpdb.org/pdb'))
      } LIMIT 100

(rdfs:seeAlso はURLベタ書きの必要あり。このポータルでは、rdfs:はhttpsではなくてhttpで定義されているため。)

  • ヒトのBioSample を取り出す。
#DEFINE sql:select-option "order"
PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/nucleotide/>
PREFIX obo:   <http://purl.obolibrary.org/obo/>
SELECT DISTINCT ?biosample 
WHERE
{
  ?nucleotide a insdc:Entry.
  ?nucleotide insdc:dblink ?biosample.
  ?biosample a <http://ddbj.nig.ac.jp/ontologies/nucleotide/BioSample>.
  ?nucleotide insdc:sequence ?seq.
  ?source  obo:so_part_of ?seq .
  ?source rdfs:seeAlso <http://identifiers.org/taxonomy/9606> .
}
limit 100 offset 1

本番?

  • BioSample - Nucleotide - INSDC Protein - PDBのリンクを取り出す
PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/nucleotide/>
PREFIX obo:   <http://purl.obolibrary.org/obo/>
SELECT
distinct ?biosample ?s as ?sequence ?protein ?pdb
WHERE
{
  ?pdb <https://www.w3.org/2000/01/rdf-schema#seeAlso> ?protein.
  filter(regex(?pdb,'^http://rdf.wwpdb.org/pdb'))
  #filter(?feature != ?pdb)
  ?s a insdc:Entry.
  #filter(?s = <http://identifiers.org/insdc/CP002459.1>)
  ?s insdc:dblink ?biosample.
  ?biosample a <http://ddbj.nig.ac.jp/ontologies/nucleotide/BioSample>.
  ?s insdc:sequence ?seq.
  ?feature obo:so_part_of+ ?seq.
  ?feature rdfs:seeAlso ?protein.
  ?protein a insdc:Protein.
}
limit 100 offset 1
  • ヒトデータ(tax_id=9606)を絞り込む
#DEFINE sql:select-option "order"
PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/nucleotide/>
PREFIX obo:   <http://purl.obolibrary.org/obo/>
SELECT
#count (distinct ?pdb)as ?count ?biosample
?biosample ?taxonomy ?nucleotide ?protein ?pdb
#count(distinct ?pdb)
WHERE
{
  ?pdb <https://www.w3.org/2000/01/rdf-schema#seeAlso> ?protein.
  ?protein a insdc:Protein.
  filter(regex(?pdb,'^http://rdf.wwpdb.org/pdb'))
  ?feature rdfs:seeAlso ?protein.
  ?feature obo:so_part_of+ ?seq.
  ?nucleotide insdc:sequence ?seq.
  ?nucleotide a insdc:Entry.
  ?nucleotide insdc:dblink ?biosample.
  ?source  obo:so_part_of ?seq .
  ?source rdfs:seeAlso ?taxonomy.
  filter(?taxonomy = <http://identifiers.org/taxonomy/9606>)
  ?taxonomy rdf:type        insdc:Taxonomy.
  ?biosample a <http://ddbj.nig.ac.jp/ontologies/nucleotide/BioSample>.

  #filter(?nucleotide = <http://identifiers.org/insdc/CP002459.1>)

}
#group by ?biosample
limit 100 offset 1
個人用ツール