Tag Archives: hackathon

ハッカソンとバイオハッカソン

最近ハッカソンという言葉が巷で広がり始めているようなので、まとめておくことに。なお、ここに書かれている内容は筆者の個人的な思いであり、バイオハッカソンのオーガナイザーや主催者を代表しているものではないことを予めお断りしておく。

さて、日経ビジネスwebR25の記事を読んでみると、これまでDBCLSが中心として進めてきたそれとは少々スタイルが異なるものであることが分かる。DBCLSでは、様々な組織の協力を頂きながら、バイオハッカソンという名称で2008年から毎年ハッカソンを開催している。バイオハッカソンでは約一週間、原則として朝から晩まで食事以外は全て開発もしくは開発のための議論に時間が充てられる。開発成果に対する優劣はつけず、また賞品の授与も無い。ハッカソン全体の進み方はこうだ。最初に参加者間で課題を幾つか出し合い、それぞれに対応したチームが構成され作業が開始される。その後は適宜情報共有のためのセミナー的な場が同時並行的に、興味のある人が集まる形で開催されながら開発や議論が続く。そして最終日に成果を報告する形式となっている。なお、ハッカソンに先立ち、シンポジウムが行われているが、ハッカソンではないのでここでは記述しない。参加者については、2008年の第一回から数回はハッカソンのオーガナイザーが国内外を問わずにテーマに沿う活動を進めていると判断される招聘者を決定し、招待に応じて頂いた方に参加して頂いていたが、最近は予算の都合もあり、原則海外居住者は招聘で国内からの参加については事前登録さえすれば自費で誰でも自由という方針で運営されている。参加者の多くは学術機関に所属する研究者やシステム開発者である。
Read more »

Google Refine活用メモ

Google refineのクラスタリング機能は便利ですが、ファセット(facet)でバリエーションが多い場合は”too many to display”となってしまい実行出来ません。現バージョンでは制限を変えられるようになっていますが、それでもブラウザベースである程度大きなデータに対して処理を行うとブラウザが長時間にわたり重くなるという問題があります。

その一方でソースコードは公開されているので、それを利用することで、上記の問題を回避したクラスタリングが可能になります。

Key collision については、Clusteringから個々のソースを取得して適宜生成します。

kNN については、下記の要領でダウンロードします。

svn checkout http://simile-vicino.googlecode.com/svn/trunk/ simile-vicino-read-only

ちなみに、kNNはGoogle refine中からは、kNNClustererで呼ばれています。

simile-vicino-read-onlyディレクトリに移動して ant を実行すると生成されます。そのままでも良いですが、下記の要領で jar ファイルとしておくのも可搬性が良くなるのでお薦めです。

jar -cvf simile-vicino.jar -C simile-vicino-read-only/build/classes/ .

以上でクラスタリングを下記の要領で実行することが出来ます。

java -cp ./simile-vicino-read-only/lib/secondstring-20100303.jar:simile-vicino.jar edu.mit.simile.vicino.Cluster <Distance> <Source> <radius> <block size>

PPMのときは、以下のライブラリも必要。

java -cp ./simile-vicino-read-only/lib/secondstring-20100303.jar:./simile-vicino-read-only/lib/arithcode-1.1.jar:simile-vicino.jar edu.mit.simile.vicino.Cluster PPM <Distance> <Source> <radius> <block size>

▼ Distanceは以下のいずれか。

  • BZip2
  • GZip
  • Jaccard
  • Jaro
  • JaroWinkler
  • JaroWinklerTFIDF
  • Levenshtein
  • PPM

▼ Sourceは一行一文字列のテキストファイルが想定。

▼ radiusはkNNの半径(倍精度浮動小数点)。

▼ block sizeは文字単位のnグラムによる距離を計算する際の、nの値。

2011年分子生物学会発表スライド補足

年会一般口頭発表(Towards Database Integration Through RDF & Linked Data)で紹介したRDF/Linked Dataを通したデータベース統合について8分では伝えきれないこともあったのでここに記しておく。


Read more »

Protegeを使ってオントロジーを作る

protegeのバージョンアップに伴い、本記事の記述は古くなってしまいました。新規バージョンの利用方法については、こちらを参考にしてください。 2013年10月15日

今回はオントロジー編集ツールとして広く使われているProtegeを用いてオントロジーを作ります。オントロジーの作り方を記録するだけでなく、Protegeの使い方をまとめておく目的もあります。例として、以前にセマンティックウェブ的なウェブサービス提供方法の一つであるSADIに則ったウェブサービスをPerlを用いて構築する際に用いたメタボオントロジーを取り上げます。定義するオントロジーのイメージは図0のような感じです。参考文献はW3CのOWL仕様書になります。

メタボオントロジー概要

図0. メタボオントロジーの概要。

以下のような順序で進みます。編集には、「ラベルをつける」、「関係の定義」も含まれます。

  1. protegeのインストール
  2. ファイル名の設定
  3. 編集
  4. リリース

Read more »

SADIを使ってSW的なウェブサービスを構築する

SADIはSemantic Automated Discovery and Integrationの略で、セマンティックウェブ的な枠組みを利用し、オンラインでアクセス可能なウェブサービスやデータベース(オンライン資源)を統一した方法で活用出来るように提案されているサービス提供形式の一つです。具体的にいうと、オンライン資源へのアクセスはHTTP、入出力のデータフォーマットはRDF、入出力の型の定義はOWLで、という具合です。SADIに沿って構築されたオンライン資源のエンドポイントにHTTP GETすると、入出力の型や処理内容がRDF形式で得られ、処理させたいデータを同エンドポイントにHTTP POSTすると、実際の処理が行われ、結果が得られます。また、入力データと出力データの関係が陽に分かるように、両者のRDFにおける主語は同じでなければならない、という規定があります。つまり、例えば「山本の身長と体重はそれぞれ170cm、60Kgである」というRDFを入力データとしてBMI (Body mass index)計算サービスエンドポイント(ここでは仮に http://example.org/getBMI とします)に与えると、「山本のBMIは20.76である」、「山本の体重クラスは標準である」というRDFが出力として得られるということを述べています。この場合、いずれも主語は山本になります。

今回はSADIのPerlモジュールを使い、略語を与えると対応する展開形のリストが得られるAllieサービスを試しにSADI対応させてみたので、その際に得られた知識をここに記します。なお、SADIに対応させるために入出力データの型をOWLで定義しますが、そのためにはオントロジーエディタのProtegeを使うと便利です。というのも、Protege用のSADIプラグインが配布されていて、サービスをSADI対応させる際に必要な作業を支援する機能が利用出来るからです。例えば、ブラウザなどを使うことなく、構築したエンドポイントを簡単に試せる機能が提供されています。本プラグインの利用方法についてはこちらを参考にしてください。今回は本ページからリンクが張られているこちらを参考にして作業しました。

SADIのPerlモジュールをインストール
Read more »

自動アノテーション(注釈)ブックマークレット

ウェブコンテンツに情報を自動的に付加するブックマークレット(bookmarklet)を作りました。

閲覧しているページに自身の興味を持つキーワードが多数含まれているとき、クリック一つで各キーワードがハイライト表示され、更には関連情報が得られるリンクが新たに加えられるなら便利と思いませんか?
Read more »

RDF serializationinに関するPerlモジュール比較

RDFデータの直列化(serialization)を実現するためのPerlモジュールを色々と試した。

これは2月に開かれたBioHackathon 2010に関連して行ったもの。英語ページはhackathonのページにあるので、日本語でここに記述しておくことに。

まずは環境。

RDF::Simple (0.415)
RDF::Trine (0.122)
RDF::Redland (1.0.5.4)
RDF::Core (0.51)

RDF::Simpleは文字通りシンプル。このため、私見としては直列化がどのようにして行われるかについて、小さいデータセットで試してみる目的のみに向いているといえる。
モジュールの説明にある通り、ノードタイプを識別しないため、URIであるかリテラルであるかを明示出来ない。
ただ、RDF::Trine/RDF::Redlandよりも生成される出力(RDF/XML)はより組織化されていてコンパクトになる。

RDF::Trineは現在開発が活発に行われているRDF処理関連の唯一のモジュールで、今後、最も高機能になることが予想される。
RDF/XMLの他にも、N-Quads、N-Triples、RDF/JSON、Turtleなどの形式で出力出来る。これは他のモジュールには無い。

ただ、現時点では生成されるRDF/XMLは冗長な点がある。本モジュールは直列化すべきトリプル群を主語毎にグループ化し、それらをタグで括る。これ自体は問題ないが、利用者が定義する名前空間を冒頭のタグ内で宣言せず、各rdf-Descriptionタグで行っている。また、入れ子のレベルが1であったり、名前空間のQNAMEを指定出来なかったりする。
それでもRDF::Redlandより小さなRDF/XMLデータを生成する。

RDF::RedlandはピュアPerlモジュールでは無く、構築時にコンパイルを必要とする。このため、プラットフォームや環境によっては構築に困難を伴う可能性がある。
今回試したLinux (RedHat)マシンではcpanコマンドでの構築にはmake testが通らずに失敗した。原因はswigにより生成されたライブラリが標準ライブラリパスにあると想定して動作するテストスクリプトにあり、本問題を手当てすることで構築出来た。具体的にはLD_LIBRARY_PATH環境変数に次のパスを加える。

Redland-1.0.5.4/redland/rasqal/src/.libs
Redland-1.0.5.4/redland/raptor/src/.libs

RDF::Coreは長いこと手が付けられておらず、ブランクノードを扱えない問題がある。
ただ、直列化された結果は良くまとまっている。
RDF::Trineと同様に名前空間のQNAMEを設定出来ない。

以下、今回のために作ったプログラム。 Read more »

Hackathon 準備

理由書。。。