SlideShare ist ein Scribd-Unternehmen logo
1 von 23
全てをRでやらないという事
東京大学 大学院新領域創成科学研究科
情報生命科学専攻 岩崎研究室
博士一年 福永 津嵩
自己紹介
• 柏キャンパスで計算機を用いた生物学の研究
– ソフトウェア開発をベースとした研究
• 研究テーマ
– mRNAの二次構造が遺伝子発現に与える影響
– ミトゲノムアノテーションシステムの開発
– バイオイメージインフォマティクスから探るメダカ
の社会性行動解析
• Twitterアカウントは@fukunagaTsu
メダカトラッカー
高性能メダカトラッキングシステムを用い
た定量的動物行動学
今日のお話
1. なぜ全てをRでやらないのか?
1. 簡単なRuby言語の解説
なぜ全てをRでやらないの
か?
なぜKashiwa.RでRの話をしないのか
• そもそも研究でRをほとんど使わない
– 話すネタがない
– Java 20%, C++ 10%, Ruby 65%, R 5%
• なぜ私がRを使わないかを話そうと思った
• Rubyの話を聞きたいという話が出た
R言語の得意不得意
• R言語が得意な事・メリット
– 統計解析
– グラフィックス
– コードを書くのが易しい
• R言語が不得意な事・デメリット
– 高速処理
– Webアプリケーション開発
– UI開発
for文のテストプログラム
特に、Rはfor文が遅い事が知られている
ただし、プログラムの改善により高速化は可能。
詳しくは、Kashiwa.R#1での露崎さんの発表を参考
for(i in1:size){
for(j in 1;size){
temp_matrix[i,j] = i*j
}
}
C++はDebugモード
Rが苦手なケース
N個のDNA配列が存在し、2種の配列同士
の類似度を全ペアについて比較したい。比
較するソフトはM個存在し、全てのソフト
で比較をするものとする。
ナイーブな実装→for文を三回回す事になる
プログラミング言語の使い分け
統計解析、グラフ作成
C++
文字列処理、解析
ソフトウェア開発
RとRubyによるデータ解析入門
目次
1:武器と防具の装備
2:いざマトリックスへ
3:8つの魔法の習得
4:オフィスとトイレの関係
5:ランチタイムの経済学
者になる方法
6:メールから自分を発見
する
7:心臓の鼓動
8:鳥の群れを表現する
9:お金と性別と進化
簡単なRuby言語の解説
基本的な文法は大体同じ
• if文による条件分岐
• for文による制御構造
• Rのベクトル→Rubyの配列
• Rは1-originだが、Rubyは0-origin
• temp <- [“0”, “1”, “2”]
temp[1] temp[0]
ハッシュ
キーと値のペアを要素として持つ配列
DNA_hash =
{„A‟ => 3, „C‟ => 4, „G‟ => 2, „U‟ => 1}
puts DNA_hash[„A‟]
#=> 3
例題設定
test.txtの各行には
“p値 遺伝子名”
が並んでいる。このデータの中から、p値が
0.05を下回る遺伝子名だけ取り出して来た
い。
test.txt
良くある処理
input_file = File.new(“./test.txt”, “r”)
gene_array = Array.new
while line = input_file.gets
line = line.chomp
if(line.split(“ ”)[0].to_f < 0.05)
gene_array.push line.split(“ ”)[1]
end
end
input_file.close
良くある処理
input_file = File.new(“./test.txt”, “r”)
gene_array = Array.new
while line = input_file.gets
line = line.chomp
if(line.split(“ ”)[0].to_f < 0.05)
gene_array.push line.split(“ ”)[1]
end
end
input_file.close
読み出すファイル
の指定
欲しい遺伝子リス
トの配列
ファイルはもう使
わないよ宣言
良くある処理
input_file = File.new(“./test.txt”, “r”)
gene_array = Array.new
while line = input_file.gets
line = line.chomp
if(line.split(“ ”)[0].to_f < 0.05)
gene_array.push line.split(“ ”)[1]
end
end
input_file.close
ファイルを一行ず
つ読み込む
改行の削除
改行の削除とは何か
“0.93 geneA
0.07 geneB” は、本当は
“0.93 geneA rn 0.07 geneB”となっている。
chomp関数は
“0.93 geneA rn”を”0.93 geneA”とする。
改行コード
なお、改行コードはr,rn,nの三種類が存在し、OSにより異なる。
良くあるバグの原因の1つである。
良くある処理
input_file = File.new(“./test.txt”, “r”)
gene_array = Array.new
while line = input_file.gets
line = line.chomp
if(line.split(“ ”)[0].to_f < 0.05)
gene_array.push line.split(“ ”)[1]
end
end
input_file.close
p値が0.05より小
さいかどうかを判
定
遺伝子を
gene_arrayに入れ
る
split関数
split関数→文字列を配列に変換する
line→”0.93 geneA”
line.split(“ ”)→[“0.93”,”geneA”]
line.split(“ ”)[0] →”0.93”
split関数の応用
文字列をランダムにしたい
line.split(//).shuffle.join
前半と後半の文字列に分けてランダムにしたい
line.slice(0, line.size/2).split(//).shuffle.join
+ line.slice((line.size/2)+1, line.size-
1).split(//).shuffle.join
まとめ
• プログラム言語は多様で、それぞれ良い
点悪い点がある。
• 文字列処理など解析については、Rubyを
始めとするスクリプト言語の方が高速で
あり、また柔軟な操作が可能である。
• もちろん、頑張ればRで全て出来る

Weitere ähnliche Inhalte

Was ist angesagt?

[18-01-26]DSTEP ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
[18-01-26]DSTEP  ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類 [18-01-26]DSTEP  ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
[18-01-26]DSTEP ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
Eli Kaminuma
 

Was ist angesagt? (8)

Py conkyushu2018
Py conkyushu2018Py conkyushu2018
Py conkyushu2018
 
モノのセンサ化による行動センシング
モノのセンサ化による行動センシングモノのセンサ化による行動センシング
モノのセンサ化による行動センシング
 
オンライン文化学術展2020「河野ゼミ研究紹介」
オンライン文化学術展2020「河野ゼミ研究紹介」オンライン文化学術展2020「河野ゼミ研究紹介」
オンライン文化学術展2020「河野ゼミ研究紹介」
 
Decision tree
Decision treeDecision tree
Decision tree
 
Hasc勉強会報告
Hasc勉強会報告Hasc勉強会報告
Hasc勉強会報告
 
みんなのPython勉強会 in 長野 #3, Intro
みんなのPython勉強会 in 長野 #3, IntroみんなのPython勉強会 in 長野 #3, Intro
みんなのPython勉強会 in 長野 #3, Intro
 
[18-01-26]DSTEP ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
[18-01-26]DSTEP  ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類 [18-01-26]DSTEP  ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
[18-01-26]DSTEP ディープラーニングによる出芽酵母蛍光画像の細胞内タンパク質局在の分類
 
ネットワーク科学の応用について
ネットワーク科学の応用についてネットワーク科学の応用について
ネットワーク科学の応用について
 

全てをRでやらないと言う事