BH12.12/SPARQLthon15/DDBJ
提供:TogoWiki
(→DDBJリソースURI(案)) |
(→DDBJリソースURI(案)) |
||
333行: | 333行: | ||
→ http://getentry.ddbj.nig.ac.jp/getentry/aa/BAC81481.1 | → http://getentry.ddbj.nig.ac.jp/getentry/aa/BAC81481.1 | ||
- | * 配列 '''faldo:referenceで利用''' | + | * 配列 '''faldo:referenceで利用''' → 配列エントリーと一緒 |
http://ddbj.nig.ac.jp/resource/sequnece/AB644439.1/fasta | http://ddbj.nig.ac.jp/resource/sequnece/AB644439.1/fasta | ||
2014年1月30日 (木) 07:35時点における最新版
目次 |
INSDC/DDBJオントロジー
タイムスケジュール
2014/3 まで
- INSDC オントロジー <http://ddbj.nig.ac.jp/ontologies/sequence#>
- INSDC タクソノミー <http://ddbj.nig.ac.jp/ontologies/taxonomy#>
- FALDO <http://biohackathon.org/resource/faldo#>
- これらを元にした INSDC RDF モデルのプロポーザルを公開
2014 年度以降
- BioProject/BioSample/Accession etc. ID <-> UUID のマネージメント (ID がきまったらラベルとして追記)
- RDF モデル → DDBJ エントリの生成
- RDF モデルの SPIN ルールによるバリデーション
- GenomeRefine などのパイプラインでも RDF をベースにできるようにしていく
TODO
- INSDC ルールオントロジーの論文をまとめる
- REFERENCE
- Publication などメタデータ要素の RDF 化を仕上げる
- DBLINK
- 直接 <seqence_entry> rdfs:seeAlso <id.org/db/id> ではなく、
- <sequence_entry> insdc:dblink <uuid> → 済
- <uuid> owl:sameAs <ddbj.nig.ac.jp/bioproject/id> → TODO
- <uuid> rdf:type <bioproject_type> → TODO
- <uuid> rdfs:label "bioproject id" → 済
- <uuid> rdfs:seeAlso <id.org/db/id> → 済
- <id.org/db/id> rdf:type <id.org/db> (<id.org/db/> となっていたので最後の / をトル) → 済
- rdf:type で Id.org に http://identifiers.org/ncbigi などに対応してもらう
- 直接 <seqence_entry> rdfs:seeAlso <id.org/db/id> ではなく、
- KEYWORD
- 内部ルールへの対応 → SPIN でバリデーションするということをディスカッションに回す
- REFERENCE
Genome RDFと共通のRDFモデル更新について
v0.7 → v0.8 にむけて
feature間の関係表現をどうするか?
現状のobo:so_part_ofはsequence ontology依存で利便性、自由度が低いので新たにプロパティを設計するか?
- INSDCエントリで表現できるのは同じlocus_tagのみ?
→ ASNではfeature間の関係が記載されているとのO先生からのコメント
→ 仕様では関係情報を保持していそうだが、データから読み取れない
- 現状v0.7で obo:so_part_ofのobject <urn:uuid>だとアノテーションを足すときにuuidを検索する必要があり、dereferenciable URIでも扱えるとよさそう
- 将来的にはis_a, part_ofのような親子関係を表現出来るように拡張できるとよさそう
- locus_tagのリソースURIがDDBJにはない、検索も出来ない。
→ togogenomeのURIを使えばよいかもしれない。propertyについてはrefseqエントリであるためowl:sameAsは使えない locus_tagを介したマッピング skos:mappingRelation
<urn:uuid:#gene feature> skos:mappingRelation <http://togogenome.org/gene/1148:slr0473>.
→ togogenomeを使う案はリジェクト
Locus_tagを持つfeatures
Locus_tags should be assigned to all protein coding and non-coding genes such as structural RNAs. /locus_tag should appear on gene, mRNA, CDS, 5'UTR, 3'UTR, intron, exon, tRNA, rRNA, misc_RNA, etc within a genome project submission. Repeat_regions do not have locus_tag qualifiers. The same locus_tag should be used for all components of a single gene.
ASN.1 ではどうなっているのか
LOCUS NC_020089 4421197 bp DNA circular CON 11-JUN-2013 DEFINITION Mycobacterium tuberculosis 7199-99 complete genome. ACCESSION NC_020089 VERSION NC_020089.1 GI:479053932 : FEATURES Location/Qualifiers source 1..4421197 /organism="Mycobacterium tuberculosis 7199-99" /mol_type="genomic DNA" /strain="7199-99" /db_xref="taxon:1138877" gene 1..1524 /gene="dnaA" /locus_tag="MT7199_0001" /db_xref="GeneID:15157016" CDS 1..1524 /gene="dnaA" /locus_tag="MT7199_0001" /inference="similar to DNA sequence:AL123456:Rv0001" /codon_start=1 /transl_table=11 /product="CHROMOSOMAL REPLICATION INITIATOR protein DNAA" /protein_id="YP_007349739.1" /db_xref="GI:479053933" /db_xref="UniProtKB/TrEMBL:L0NNW2" /db_xref="GeneID:15157016" /translation="MTDDPGSGFTTVWNAVVSELNGDPKVDDGPSSDANLSAPLTPQQ RAWLNLVQPLTIVEGFALLSVPSSFVQNEIERHLRAPITDALSRRLGHQIQLGVRIAP PATDEADDTTVPPSENPATTSPDTTTDNDEIDDSAAARGDNQHSWPSYFTERPHNTDS ATAGVTSLNRRYTFDTFVIGASNRFAHAAALAIAEAPARAYNPLFIWGESGLGKTHLL HAAGNYAQRLFPGMRVKYVSTEEFTNDFINSLRDDRKVAFKRSYRDVDVLLVDDIQFI EGKEGIQEEFFHTFNTLHNANKQIVISSDRPPKQLATLEDRLRTRFEWGLITDVQPPE LETRIAILRKKAQMERLAVPDDVLELIASSIERNIRELEGALIRVTAFASLNKTPIDK ALAEIVLRDLIADANTMQISAATIMAATAEYFDTTVEELRGPGKTRALAQSRQIAMYL CRELTDLSLPKIGQAFGRDHTTVMYAQRKILSEMAERREVFDHVKELTTRIRQRSKR"
gene: 座標は 0-base で GI はクロモソーム全体
{ data gene { locus "dnaA" , locus-tag "MT7199_0001" } , location int { from 0 , to 1523 , id gi 479053932 } , dbxref { { db "GeneID" , tag id 15157016 } } } ,
CDS: locus_tag はついていない
seq { id { other { accession "YP_007349739" , version 1 } , gi 479053933 } , descr { title "CHROMOSOMAL REPLICATION INITIATOR protein DNAA [Mycobacterium tuberculosis 7199-99]" , molinfo { biomol peptide , tech concept-trans } , user { type str "RefGeneTracking" , data { { label str "IdenticalTo" , data fields { { label id 0 , data fields { { label str "accession" , data str "CCG09850" } , { label str "gi" , data int 440579447 } } } } } , { label str "Status" , data str "PROVISIONAL" } } } , create-date std { year 2013 , month 4 , day 15 } } , inst { repr delta , mol aa , length 507 , ext delta { loc int { from 0 , to 506 , strand plus , id gi 489495336 } } } , annot { { data ftable { { data prot { name { "CHROMOSOMAL REPLICATION INITIATOR protein DNAA" } } , location int { from 0 , to 506 , id gi 479053933 } } } } } } ,
Genome <-> CDS: FALDO っぽい
annot { { data ftable { { data cdregion { frame one , code { id 11 } } , product whole gi 479053933 , location int { from 0 , to 1523 , id gi 479053932 } , qual { { qual "inference" , val "similar to DNA sequence:AL123456:Rv0001" } } , dbxref { { db "UniProtKB/TrEMBL" , tag str "L0NNW2" } } } ,
仕様
- http://www.ncbi.nlm.nih.gov/IEB/ToolBox/SDKDOCS/DATAMODL.HTML
- seqtable.asn http://www.ncbi.nlm.nih.gov/data_specs/asn/seqtable.asn
SeqTable-column-info ::= SEQUENCE { -- user friendly column name, can be skipped title VisibleString OPTIONAL, -- identification of the column data in the objects described by the table field-id INTEGER { -- known column data types -- position types location (0), -- location as Seq-loc location-id (1), -- location Seq-id location-gi (2), -- gi location-from (3), -- interval from location-to (4), -- interval to location-strand (5), -- location strand location-fuzz-from-lim (6), location-fuzz-to-lim (7), product (10), -- product as Seq-loc product-id (11), -- product Seq-id product-gi (12), -- product gi product-from (13), -- product interval from product-to (14), -- product interval to product-strand (15), -- product strand product-fuzz-from-lim (16), product-fuzz-to-lim (17), -- main feature fields id-local (20), -- id.local.id xref-id-local (21), -- xref.id.local.id partial (22), comment (23), title (24), ext (25), -- field-name must be "E.xxx", see below qual (26), -- field-name must be "Q.xxx", see below dbxref (27), -- field-name must be "D.xxx", see below -- various data fields data-imp-key (30), data-region (31), data-cdregion-frame (32), -- extra fields, see also special values for str below ext-type (40), qual-qual (41), qual-val (42), dbxref-db (43), dbxref-tag (44) } OPTIONAL, -- any column can be identified by ASN.1 text locator string -- with omitted object type. -- examples: -- "data.gene.locus" for Seq-feat.data.gene.locus -- "data.imp.key" for Seq-feat.data.imp.key -- "qual.qual" -- - Seq-feat.qual is SEQUENCE so several columns are allowed -- see also "Q.xxx" special value for shorter qual representation -- "ext.type.str" -- "ext.data.label.str" -- "ext.data.data.int" -- see also "E.xxx" special value for shorter ext representation -- special values start with capital letter: -- "E.xxx" - ext.data.label.str = xxx, ext.data.data = data -- - Seq-feat.ext.data is SEQUENCE so several columns are allowed -- "Q.xxx" - qual.qual = xxx, qual.val = data -- - Seq-feat.qual is SEQUENCE so several columns are allowed -- "D.xxx" - dbxref.id = xxx, dbxref.tag = data -- - Seq-feat.dbxref is SET so several columns are allowed field-name VisibleString OPTIONAL }
DDBJエントリーのdereferenciable URIの設計について
- getentryのエントリーURIを利用する http://www.ddbj.nig.ac.jp/search/help/getentryhelp-j.html
http://getentry.ddbj.nig.ac.jp/getentry/ddbj/AB644439.1 http://getentry.ddbj.nig.ac.jp/getentry//AB644439.1 http://getentry.ddbj.nig.ac.jp/getentry/na/AB644439.1 ←これを使う
→ 冗長なgetentryサブドメインは除くとよさそう
sequence ontologyのrdf:typeをどのリソースに指定するべきか?
faldo Region,Positionとの対応の視点で、 locationの方がよいか?
<feature> rdf:type obo:SO_XXX → <location> rdf:type obo:SO_XXX
→ そもそも、TSSはregion or position として表現するか → Region
faldo:reference のobjectは?
fasta形式を取得するエントリーURIを指定しておく
http://getentry.ddbj.nig.ac.jp/getentry/na/AB123456/?format=fasta
uuid or ブランクノードのどちらでもよいか?
→現状、faldo論文ではブランクノードで表現されている、要確認
DDBJリソースURI(案)
ウェブフロントサーバーでリダイレクションするなどを想定して、RDFで使用する各サービスに依存しないURI体系をデザインする
- http://ddbj.nig.ac.jp/resource/xxx なURI体系。以下、例の実体は存在しない。
- 配列エントリ
http://ddbj.nig.ac.jp/resource/sequnece/AB644439.1
→ http://getentry.ddbj.nig.ac.jp/getentry/na/AB644439.1
- protein_id
http://ddbj.nig.ac.jp/resource/protein/BAC81481.1 → http://getentry.ddbj.nig.ac.jp/getentry/aa/BAC81481.1
- 配列 faldo:referenceで利用 → 配列エントリーと一緒
http://ddbj.nig.ac.jp/resource/sequnece/AB644439.1/fasta
→ http://getentry.ddbj.nig.ac.jp/getentry/na/AB123456/?format=fasta
- Locus_tag
http://ddbj.nig.ac.jp/resource/locus_tag/slr0473 or http://ddbj.nig.ac.jp/resource/gene/slr0473
→ ない
- BioProject
http://ddbj.nig.ac.jp/resource/bioproject/PRJDB2
→ http://trace.ddbj.nig.ac.jp/BPSearch/bioproject?acc=PRJDB2
- BioSample
http://ddbj.nig.ac.jp/resource/biosample/XXXXX
→ 開発中?
- Taxonomy
http://ddbj.nig.ac.jp/resource/taxonomy/1148
→ http://ddbj.nig.ac.jp/ontologies/taxonomy#1148 #taxonomy.owlのURI
参考) http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=info&id=1148 NCBI Taxonomy DB
エンドポイント構築
DDBJエントリーのRDFをトリプルストアにロードする。トリプル数は97億。
以前ロードを実行した際には、途中で進まなくなる現象が起きたということで、原因調査を行った。
前回ページ
サーバ環境
- 環境1 (DDBJスパコンThinノード)
Processors: 2 x Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (8 x 2 cores)
Memory: 64GB
Hard Disks ファイルサーバ(Lustre) RAID1
Operating System: Red Hat Enterprise Linux Server 6.1
- 環境2 (MSS Linuxサーバ)
Processors: 1 x Intel(R) Xeon(R) CPU X5690 @ 3.47GHz (12 cores)
Memory: 72GB
Hard Disks 1TB SATA600 7200 RAIDなし
Operating System: Ubuntu 12.04 LTS
- 環境3 (DBCLSL inuxサーバ)
Processors: 2 x Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz (12 x 2 cores)
Memory: 256GB
Hard Disks 18TB 回転数10000 RAID?有 (詳細不明)
Operating System: CentOS 6.3
トリプルストア(共通):OpenSource版 Virtuoso7.0.0(stable)
データ
- DDBJエントリーデータ(release_93_rdf_v1) = 97億
ファイル数:424
1ファイルあたりのサイズ:2~3G
1ファイルあたりのトリプル数(概算):2~3千万トリプル
- refseq62(prokaryotes.ttl) = 6億
ファイル数:4886
1ファイルあたりのサイズ:300kB(plasmid)~20MB(chromosome)
1ファイルあたりのトリプル数(概算):5千(plasmid)~20万(chromosome)トリプル
計測<1>
目的:97億ロードを試行
ロードデータ:DDBJエントリーデータ(release_93_rdf_v1) = 97億トリプル
Virtuoso設定:NumberOfBuffers = 64G用
No | 実行環境 | ロード時間 | 詳細 |
---|---|---|---|
1 | 環境1(スパコン) | 測定不能(20時間で中断) | 実メモリ44G程度を消費した時点で(11億(2時間半)ロード完了)速度が著しく低下する(CPU使用率0.1%)。 その後ほとんどロードが進まないため中断 |
2 | 環境2(MSS) | 測定不能(5時間で中断) | 実メモリ44G程度を消費した時点で(11億(2時間半)ロード完了)速度が著しく低下する(CPU使用率0.1%)。 その後ほとんどロードが進まないため中断 |
計測<2>
目的:DBCLSが8G用設定で30億程度をロードした実績があるため、他の環境の挙動と比較した。
ロードデータ:refseq62(prokaryotes.ttl) = 6億トリプル
Virtuoso設定:NumberOfBuffers = 8G用
No | 実行環境 | ロード時間 | 詳細 |
---|---|---|---|
1 | 環境3(DBCLS) | 3時間 | コンスタントなペースでロード完了(ログの記録しかなくメモリの挙動は不明)。 |
2 | 環境1(スパコン) | 測定不能(31時間で中断) | 実メモリ7.2G程度を消費した時点で(2億(1時間)ロード完了)速度が著しく低下する(CPU使用率0.1%) 31時間経過して4.5億トリプルまでロードしたが進まないため中断 |
3 | 環境2(MSS) | 21時間 | 実メモリ7.2G程度を消費した時点で(2億(1時間)ロード完了)速度が著しく低下する(CPU使用率0.1%)。 |
4 | 環境1(スパコン+SSD) | 2時間半 | 実メモリ7.2G程度を消費した後は若干のペースダウンはあるが、ほぼコンスタントなペースでロード完了 |
5 | 環境1(スパコン+VirtuosoのStriping設定) | 11時間 | 実メモリ7.2G程度を消費した後は若干のペースダウンし、4億(2時間)程度でロードの速度が著しく低下する。 但し、No1やNo2程CPU使用率は下がらず5%~110%で推移し、ロードは少しずつ進んでいく。 |
計測で分かったこと
ロード時のサーバの負荷状況の観測と上記の計測結果から以下のようなことが言える
- ロード時にメモリを大量に消費し、NumberOfBuffersで設定された上限まで徐々に実メモリを確保していく。
- メモリが上限値に達すると、環境によっては著しくロード速度が低下する。
- メモリが上限値に達しても、ハードディスクの性能が良ければロード速度の低下はほとんど認められない。
- 上記のことから、メモリが上限値に達した場合にメモリ解放とディスク書き出しが発生している様子。しかしcheckpointを実行する時間(ログ)とは連動しておらず、上限を超えると常時メモリ解放とディスク書き出しが発生している可能性がある。
- 同じハードディスク環境であっても、VirtuosoのStripingを設定することで速度低下対策に若干効果がある。但し、起動時にdbファイルのディスクが設定値で確保されるため、ディスクの使用効率は悪い。
- ロード時に確保したメモリはVirtuoso再起動により解放される。再起動後に再びロードコマンドを実行すると、ロード処理に先立ちロード済みのデータ量に応じてメモリを確保する。再起動を繰り返すことで若干追加ロードはできるが、効果は薄い。
- ロード時に大量のメモリを消費した後、NumberOfBuffersをロード時より下げて(例64Gでロード→8G)再起動しても、通常に起動しSPARQLも返ってくる。
今後の予定
97億トリプルロードのために以下を試す。
- DDBJのMediumノードでNumberOfBuffersの値を大きく設定してJOB実行する。ロードが終わればThinノードで起動して運用する。
※SSD環境でのロードはディスク容量不足の為実行できない。