BH13.13/TogoStanza

提供:TogoWiki

2014年1月31日 (金) 05:44時点におけるHiroyo (トーク | 投稿記録)による版
(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内, 検索

目次

ハンズオン(2014/1/29)

Togo Stanza Wiki

環境構築

  • Windows の場合
Heroku Toolbelt をインストールするのが簡単だそう。
  • Mac の場合

Ruby 拡張ライブラリのコンパイルで下記のようなエラーが出た方は xcode を追加してください

 mkmf.rb can't find header files for ruby

http://qiita.com/yuku_t/items/30015dba2b6497b80074

 xcode-select --install

このあと一度 XCode を起動してライセンスに同意する必要があるようです(もしくはターミナルで sudo gcc -v などを実行すると agree と入力させられて OK になります)。

TogoStanza server のインストール

 sudo gem install togostanza


エンドポイントURL

http://ep.dbcls.jp/sparql-bh1313

サンプルコード

  • stanza.rb

1行目は作成したスタンザ名に依存するので、2行目からコピペしてください

class NanogenomesizeStanza < TogoStanza::Stanza::Base
  property :tax_info do |tax_id|
    query('http://ep.dbcls.jp/sparql-bh1313', <<-SPARQL.strip_heredoc)
      SELECT ?predicate ?obj
      FROM <http://togogenome.org/graph/taxonomy/>
      WHERE
      {
      <http://identifiers.org/taxonomy/#{tax_id}> ?predicate ?obj
      }
    SPARQL
  end
end

  • template.hbs
<!DOCTYPE html>

<html>
  <head>
    <title>Nanogenomesize</title>
    {{#each css_uri}}
    <link rel="stylesheet" href="{{this}}" />
    {{/each}}
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js"></script>
    {{adjust_iframe_height_script}}
  </head>

  <body>
    <table class='table'>
        <tbody>
         <tr>
           <th>predicate</th>
           <th>object</th>
         </tr>
         {{#each tax_info}}
           <tr>
            <td>{{predicate}}</td>
            <td>{{obj}}</td>
           </tr>
         {{/each}}
        </tbody>
     </table>
  </body>
</html>

チュートリアルコード(訂正)

SPARQLを記載する例の訂正。

class MyAwesomeStanza < TogoStanza::Stanza::Base
  property :features do |gene_id|
    query('http://ep.dbcls.jp/sparql-bh1313', <<-SPARQL.strip_heredoc)
      PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
      PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/sequence#>
      SELECT DISTINCT ?feature_product ?feature_gene ?feature_gene_synonym
      WHERE {
        ?s rdfs:label "#{gene_id}" .
        ?s insdc:product ?feature_product .

        OPTIONAL {
          ?s insdc:gene  ?feature_gene .
          ?s insdc:gene_synonym  ?feature_gene_synonym .
        }
      }
    SPARQL
  end
end

ナノスタンザ

nano_genome_size_stanza

  • SPARQL
PREFIX ddbj:<http://ddbj.nig.ac.jp/ontologies/sequence#>
PREFIX obo:<http://purl.obolibrary.org/obo/>
PREFIX taxid:<http://identifiers.org/taxonomy/>

SELECT (SUM(?length) AS ?genome_length)
FROM <http://togogenome.org/graph/refseq/>
WHERE
{
 ?seq ddbj:sequence_length ?length .
 ?seq a ?type FILTER ( ?type IN(obo:SO_0000155, obo:SO_0000340)) .
 ?seq rdfs:seeAlso taxid:103690 .
}

nano_gene_number_stanza

  • SPARQL
PREFIX tgstat:<http://togogenome.org/stats/>
PREFIX taxid:<http://identifiers.org/taxonomy/>

SELECT ?gene_num ?rrna_num ?trna_num
FROM <http://togogenome.org/graph/stats/>
WHERE
{
 taxid:103690 tgstat:gene ?gene_num ;
   tgstat:rrna ?rrna_num ;
   tgstat:trna ?trna_num .
}

Tips? / Bad Know How ?

  • グラフ名や、URIのPREFIX指定の際のURI記述は正確に。ブラウザではないので、一文字違っても動かない。-skwsm
  • SPARQL の変数名で、?p を使うと(しばしばpredicateの変数として使う気がしますが)、どうもうまくいかない気がします(テンプレートでは p という表記になるあら、Ruby の予約語とぶつかる?)。要調査。-skwsm
  • query メソッドの変数を、SPARQLヒアドキュメントで参照するとき、"#{gene_id}" のように、引用符で囲むとうまくいきません。-skwsm
  • 開発時は、http://server_name:9292/stanza/stanza_name?param1=aaa&param2=bbb でアクセスできるが、実際に埋め込むdivタグには 「data-stanza-param1=" aaa" 」「data-stanza-param2=" bbb" 」の形で渡してやる必要がある。help.mdファイル参照 - Hiroyo
  • 埋め込み時のウィンドウサイズを決めているのは、template.hbs の adjust_iframe_height_script プロパティ -Hiroyo
  • 埋め込み時には某.jsファイルを呼んでおく必要がある?? 要確認 -Hiroyo
  • 結果がカラな時のエラーは Input/output error - <STDERR>
個人用ツール