BH12.12/MBGD

提供:TogoWiki

移動: 案内, 検索

全体目次へ


BH12.12

目次

RDF化

変更点

追加データ

  • 様々な生物種セットについて、オーソログテーブルを作成


  • いくつかのオーソログテーブルを、ロードしてテストした
    • tax9(ブフネラ・アフィディコラ, 12 genomes)
    • tax809 (クラミジア科, 8 genomes)

Syntenic Core について

  • <SyntenicCore50> :member <Cluster100_1>
  • <Cluster100_1> :next <Cluster56>
  • <Cluster56> :next <Cluster33>
  • <Cluster100> :member <Cluster100_1>

IMG 0307.small.jpg

SPARQL

  • 特定のオーソログクラスタリング結果を指定して (tax9: クラミジア科, 8 genomes)、rpoBのオーソログメンバーを取得
prefix mbgd: <http://mbgd.genome.ad.jp/rdf/2012-02/mbgd.owl#>
select $cluster $gene
where {
    $cluster mbgd:clusterOf <http://mbgd.genome.ad.jp/rdf/2012-02/tax9> .
    $cluster mbgd:gene "rpoB" .
    $cluster mbgd:member $domain .
    $domain mbgd:domainOf $gene .
}


  • Enterobacteriaceae (Taxonomy ID 543) で保存されているオーソログを知りたい

25 生物種のうち何生物種が持っているかを、オーソログごとに調べ、多い順にソートするSPARQL

define input:inference "http://localhost:8890/DAV/owl/rule_set"
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>
PREFIX tax: <http://purl.org/obo/owl/NCBITaxon#>

select
$cluster count(distinct $genome) as $count
where {
    $cluster mbgd:member $domain.
    $domain mbgd:domainOf $gene.
    $gene mbgd:geneOf $genome .
    $genome a tax:NCBITaxon_543 .
}
order by desc ($count)

20種(80%)以上が持っている:1,044個のオーソログクラスター

15種(60%)以上が持っている:2,115個のオーソログクラスター


時間:14.7 sec


  • 様々なオーソログクラスターのメンバー遺伝子の、アノテーションを取得する
    • (注)以下のエンドポイント mbgd.genome.ad.jp:8048 は、Virtuosoのデフォルト設定なので、10,000行までしか出力されない
#!/Users/chiba/bin/sparqling-v mbgd.genome.ad.jp:8048 json

prefix mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>
select $cluster $gene $geneDescr
where {
    $cluster mbgd:member $domain .
    $domain mbgd:domainOf $gene .
    $gene mbgd:geneDescr $geneDescr .
}

http://sparqlbin.com/#0020255c1de383d9e5ecf8f7982c0e73


  • メンバー数が10個から20個のクラスターに限定して、遺伝子のアノテーションを取得
#!/Users/chiba/bin/sparqling-v mbgd.genome.ad.jp:8047 json

prefix mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

select $cluster $gene $geneDescr
where {
    $cluster mbgd:member $domain .
    $domain mbgd:domainOf $gene .
    $gene mbgd:geneDescr $geneDescr .
    {
	select $cluster count(distinct $domain) as $count
	where {
	    $cluster mbgd:member $domain .
	}
    } .
    Filter(($count >= 10) && ($count <= 20))
}
order by $cluster

Emacs sparqling-mode

sparqling-mode.el

(defun sparqling-buffer ()
  "Submit the current buffer as a query to a SPARQL HTTP endpoint."
  (interactive)
  (let (tmp beg end command-line-text mode-text)
    (setq tmp (point))
    ;; check if the first line is shebang line
    (if (string= "#!" (buffer-substring-no-properties 1 (min 3 (point-max))))
       (progn
         ;; get the command line
         (goto-char (point-min))
         (forward-char 2)
         (setq beg (point))
         (end-of-line)
         (setq end (point))
         (setq command-line-text (buffer-substring-no-properties beg end))
         (backward-word)
         (setq beg (point))
         (setq mode-text (buffer-substring-no-properties beg end))
         ;; execute
         (save-buffer)
         (delete-other-windows)
         (shell-command (concat command-line-text " " (buffer-file-name)) nil nil)
         (message (concat "Shell Command Executed: " command-line-text " " (buffer-file-name)))
         (other-window 1)
         (if (string= (buffer-name) "*Shell Command Output*")
             (progn
               (fundamental-mode)
               (if (string= "json" mode-text)
                   (if (fboundp 'js2-mode)
                       (js2-mode)
                     (java-mode)))
               (if (string= "xml" mode-text)
                   (xml-mode))
               (if (string= "html" mode-text)
                   (html-mode))
               (setq truncate-lines t)
               (other-window 1)
               ))
         ))
    (goto-char tmp)
    ))
 
(define-derived-mode sparqling-mode shell-script-mode "Sparqling"
  (define-key sparqling-mode-map [\C-\return] 'sparqling-buffer)
  )

(font-lock-add-keywords
 'sparqling-mode
 '(

   ("\\?\\(\\w+\\)" . (1 font-lock-variable-name-face nil t))
   ("\\$\\(ARG\\w+\\)" . (1 font-lock-function-name-face nil t))
   ("\\$\\(\\w+\\)" . (1 font-lock-variable-name-face nil t))

   ("select" . font-lock-keyword-face)
   ("construct" . font-lock-keyword-face)
   ("where" . font-lock-keyword-face)
   ("service" . font-lock-keyword-face)

 ))

Install

  • sparqling-mode.ql をEmacs Lispのパスに入れ、下記を.emacsに追加する。
(autoload 'sparqling-mode "sparqling-mode" "Mode for editing SPARQL files" t)
(setq auto-mode-alist
      (cons (cons "\\.rq$" 'sparqling-mode) auto-mode-alist))


  • 同時に、sparqling-vもインストールしておけば、以下のように、SPARQLの実行までできるようになる。

 

Usage

  • SPARQLファイル(ファイル名が *.rq)を開くと、自動的にsparqling-modeが起動する。


  • SPARQLを編集する。自動でindentation、syntax highlightingが行われる。
    • SPARQLのキーワードを sparqling-mode.el に登録しておくと、それらの色も変わる。
    • (小文字の select, construct, where, service のみ、あらかじめ登録してある。)


  • shebangラインに、SPARQLクライアントであるsparqling-vが指定されている場合、以下のようにしてSPARQLの実行までできる。
    • SPARQLを編集後 Ctrl + return と叩くと、下に別ウィンドウが開いて、SPARQLクエリの実行結果が表示される。
      • shebangラインの末尾にあるフォーマット(json, xml等)に応じて、実行結果のフォーマットは変わる。
      • 実行結果のフォーマットに応じてモードが設定される。(json → js2-mode がインストールされていれば js2-mode, なければ java-modeで表示)


スクリーンショット 2012-12-20 17.05.04.png

Memo

  • GWT (Google Web Toolkit) による、Webアプリケーションのユーザインターフェースの実装(ヨハンさん)


  • あるファミリーでは、60%以上が持っており、別のあるファミリーでは、20%以下しか持っていない、そういうオーソログは?
/mw/BH12.12/MBGD」より作成