BH12.12/SPARQLthon15/DDBJ

提供:TogoWiki

移動: 案内, 検索

目次

INSDC/DDBJオントロジー

タイムスケジュール

2014/3 まで

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 などに対応してもらう
    • KEYWORD
      • 内部ルールへの対応 → SPIN でバリデーションするということをディスカッションに回す

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" } } } ,

仕様

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の設計について

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/sequnece/AB644439.1

http://getentry.ddbj.nig.ac.jp/getentry/na/AB644439.1

  • protein_id

http://ddbj.nig.ac.jp/resource/protein/BAC81481.1http://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://txsearch.ddbj.nig.ac.jp/txsearch/txsearch.TXSearch?tx_Clas=scientific+name&tx_Name=Synechocystis+sp.+%28PCC+6803%29&tx_Rank=All&tx_Rmax=10&tx_Dcls=yes&tx_Lang=jp&tx_Mode=DETAIL&tx_Id=1148&tx_R_Id=0 メンテナンスされていないけど、使う?

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環境でのロードはディスク容量不足の為実行できない。