バイオインフォマティクスを学びたいあなたへ - Rosalindの紹介 

この記事はバイオインフォマティクス Advent Calendar 2020 の 2日目の記事です


バイオインフォマティクスってよくわからないけどなんかかっこいい。
とはいえプログラミングも未経験だし生命科学も専攻していない。。

そんな基礎から学びたいあなたにオススメなのが、今回紹介する[Rosalind](http://rosalind.info/)です。 

## Rosalindとは
Rosalindは、問題解決を通じてバイオインフォマティクス、プログラミング、およびアルゴリズムを学習するためのプラットフォームです。プロジェクトの名前はX線結晶構造解析によりDNA二重らせん構造の解明に貢献した[ロザリンド・フランクリン](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B6%E3%83%AA%E3%83%B3%E3%83%89%E3%83%BB%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%B3)に敬意を示して名づけられています。

世界的にみると、75,000以上のアクティブユーザーが存在し、大学やハッカソン、さらには就職の面接を行う企業にも600回以上採用されているそうです。

Rosalindプロジェクト発端の経緯等については、プロジェクトの起案者である [Phillip Compeau氏のホームページ](http://compeau.cbd.cmu.edu/home/online-education/rosalind/
) に詳しく書かれています。


### Rosalindを構成する5つのコース
Rosalindは5つのコース（Locations）から構成されています。


![](https://i.imgur.com/jKOElN4.png)


#### [Python Village](http://rosalind.info/problems/list-view/?location=python-village)
Village = 「村」を意味します。Python村です。

全6問から構成されています。
プログラミングにまったく慣れていない場合は、これらの問題を通して、Pythonの基礎を学ぶことが推奨されています。バイオインフォマティクスの課題解決のために必要なPythonの知識をサクッと学ぶことができます。

例：Pythonのインストール（http://rosalind.info/problems/ini1/）

#### [Bioinformatics Stronghold](http://rosalind.info/problems/list-view/)

Stronghold = 「拠点、本拠地」を意味します。バイオインフォマティクス拠点です。

全105問から構成されています。多いです。
算質量分析、アラインメント、動的計画法、ゲノムアセンブリ、ゲノム再配列、系統発生、確率、文字列アルゴリズムなど、さまざまなバイオインフォマティクスの基礎となるアルゴリズムを学ぶことができます。

例：スクラッチで特定のDNA配列の各塩基数を導出（http://rosalind.info/problems/dna/）

#### [Bioinformatics Armory](http://rosalind.info/problems/list-view/?location=bioinformatics-armory)

Armory = 「武器庫」を意味します。バイオインフォマティクス武器庫です。

全16問から構成されています。
バイオインフォマティクスにおける分析では、有用なOSSツールを巧みに使いこなすことが必要となります。Stronghold（拠点）では独自にアルゴリズムを実装しますが、Armory（武器庫）では既存のツールを使用して同様の問題を解決します。
主に無料のブラウザベースで使用可能なソフトウェアと複数のOSと互換性のあるプログラムを利用するため、環境依存の問題が起きないようになっています。

例：[DNA stats](https://www.bioinformatics.org/sms2/dna_stats.html)を使用して特定のDNA配列の各塩基数を導出（http://rosalind.info/problems/ini/）

#### [Bioinformatics Textbook Track](http://rosalind.info/problems/list-view/?location=bioinformatics-textbook-track)


書籍の補足資料です。全124問から構成されています。
2014年にPhillip CompeauとPavelPevznerにより発行された [Bioinformatics Algorithms](https://www.bioinformaticsalgorithms.org/) の演習課題となっています。書籍の内容は全てWEBページで公開されているため、書籍と併用することで内容理解の確認に役立てることができます。
本教材は多くの教育機関で使用されていることもあり、バイオインフォマティクスを学ぶ人なら読んでみる価値はあるでしょう。

例：[ビタビアルゴリズム](https://ja.wikipedia.org/wiki/%E3%83%93%E3%82%BF%E3%83%93%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)の実装（http://rosalind.info/problems/ba10c/）

#### [Algorithmic Heights](http://rosalind.info/problems/list-view/?location=algorithmic-heights)

同じく書籍の補足資料です。全34問から構成されています。
C. H. Papadimitriou と U. V. Vaziraniによる人気の著書である「[Algorithms](http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf)」に付随する入門アルゴリズムの演習となっています。アルゴリズム本の演習がタダで利用できるなんて、いい時代ですね。

例：[フィボナッチ数](https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0)の計算（http://rosalind.info/problems/fibo/）


## Rosalindの特徴

### レベルアップシステム
Rosalindでは問題を解くごとに（解いた問題数が2の階上に達するごとに）Levelが上がっていく仕組みがあります。また、特定の条件を満たすごとにBadgeやAchievementを獲得することができます。

![](https://i.imgur.com/mkjAjEv.png)


取得したBadgeやAchievementはプロフィールページに載るため、プロフィールページを見ればその人の戦闘力が分かるようになっています。

下記は世界1位に君臨するMark Mammel氏のプロフィールページです（…強い！！）

![](https://i.imgur.com/3stKqBl.png)

### ドメイン知識を身に着けられる
例えば以下は、[GC含量を算出する問題](http://rosalind.info/problems/gc/)なのですが、単に「G」と「C」が含まれる割合を求めなさい！というだけでなく、GC含量がどのような用途で用いられているか、といった背景知識まで説明してくれています（ほとんどの原核生物のGC含量は50％を大幅に上回っているため、GC含量を使用すると、比較的少量のDNAサンプルを使用して、多くの原核生物と真核生物を区別できます）。
情報系の人からはどんなに簡単な問題に見えても、生物学の知識を吸収するために解く価値が出てくるわけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180246/42ce2531-bd24-7c54-4790-1e001e9bf230.png)


### 様々なトピックに触れることができる
「Problems > Topics」から一覧を表示すると、Rosalindで扱っている問題をトピックごとに確認することができます。ソートや集合論、グラフ系などトピックだけで全16種類、広く浅く様々なバイオインフォマティクスアルゴリズムに触れることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180246/dc587302-0cd9-e6cc-fbab-08ea58155b99.png)



### 様々な解答が見れる
解けた問題については、「Solutions」から、人様が書いた答えを閲覧することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180246/7f993e82-d68c-e921-7bcd-45fbd56ccb8b.png)


また、「Explanation」からは、Rosalindが公式で出している解説を見ることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180246/015915d3-157d-4a09-b59d-31ee0293eed2.png)

自分が作成したコードと、ほかの人のエレガントなコードを見比べて自分の愚かさを知ることができるのです。同じ問題でも別の解法を知ることでプログラマーとしての思考の幅を広げることができるでしょう。

## 終わりに
バイオインフォマティクスってとっても面白い分野なのに学ぼうとする人がプログラミングやデータ解析に比べて少ないですよね。生命のデータをプログラミングで扱うのってとっても素敵なことだと思いませんか。生きてるって感じしませんか。
ドメイン知識を身に着けて、一味違うエンジニア、データサイエンティストを目指してみましょー。