ここからゲノムと計算機すか RSSフィード Twitter

2012-01-29

修論提出したらやりたいこと

22:59 | 修論提出したらやりたいこと を含むブックマーク 修論提出したらやりたいこと のブックマークコメント

「俺、この戦争が終わったら、○○するんだ......」リストの何番目かに載ってる懸案。思う様甘い物を食べに行きたいとか日本酒飲みに行きたいとか書店巡りしたいとか温泉浸かりたいとか自転車のタイヤに空気入れたいとか髪切りたいとかいろいろあるけども、それらはひとまず措いておく。

英語論文執筆用のコーパスを整備したい


わたしは英語ネイティブではないので、英語を書くときは基本「英借文」をすることになります。コーパスが云々というのは、要するにその英借文用のデータベースを作って、英借文のプロセスをシステム化しましょうという試み。(理解が間違ってたらすみません)

え、修論執筆前にやっておけよ、という感じですが、そこまで頭と手が回らなかった...

別の言い方をすると、Incremental PubMed/MEDLINE Expression Search: inMeXes(PubMedのアブストラクトを対象としている英単語の用例検索)を自分用にカスタマイズしたものを整備したい、というイメージ。

何を使うか→CasualConcとかどうか

MacOSXでのコーパス作成の強い味方。に思える。
CasualConc J

どうやって使えばいいかというと、論文PDFをテキストファイル化したものをCasualConcに食わせてあげればOK。
f:id:subteka:20120129224044p:image:w800

こんな感じで。

目的語の文脈中の頻度などの分析、keyword in contextという分野らしい。
今月か来月に参加する予定の温泉開発合宿であれこれ試してみたくなってきた。
まずは提出...そして発表...

PDFのテキスト化はどうするのっと


Xpdfに同梱されているpdftotextを使いましょう。

ただし、macportsで入るXpdfにはpdftotext入らなくなったらしい。
なので以下からバイナリでインストール。そうすると使える
Xpdf: Download

pdftotext hoge.pdf

のように打つとhoge.txtを生成してくれる。

pdftotext -enc UTF-8 hoge.pdf

のようにファイルエンコーディングを指定してあげたほうがいいかもしれない。

話はずれるけど


河本健先生、今年の生命科学夏の学校にお呼びできないか...
英語教師は理系に学ぼう:河本健 (編)(2007) 『ライフサイエンス論文作成のための英文法』羊土社
ううむ。

トラックバック - http://d.hatena.ne.jp/wakuteka/20120129

2011-12-31

つくばRのかくも長き不在、またはなぜつくばRは13ヶ月の時を経て再び開催されるに至ったかそしてありがとうさようなら2011年

つくばRのかくも長き不在、またはなぜつくばRは13ヶ月の時を経て再び開催されるに至ったかそしてありがとうさようなら2011年を含むブックマーク つくばRのかくも長き不在、またはなぜつくばRは13ヶ月の時を経て再び開催されるに至ったかそしてありがとうさようなら2011年のブックマークコメント


f:id:wakuteka:20111129003742p:image:w500

そろそろid:myopommeさんのSweaveエントリ群への返答記事を書きたいし、今日は大晦日なので一年を振り返るエントリも書こうと思ったのだけれど、その前に書いておくべき事があったことを思い出したので。

ぼくたちとつくばRの419日戦争

去る2011年11月12日、フリーな統計解析・可視化環境であるRをテーマに、つくば周辺(半径40万キロくらい)をターゲットとした勉強会であるところのTsukuba.R #9が開催された。参加者17人、うちスピーカーが8名と、東京開催にしては小規模だがid:a_bickyさん@gentlementatsu君id:gepuro君が初発表してくれるなど、密度の濃い回であった。
宣伝してくれた方、Ustや会場で参加・発表してくれた方に厚く御礼申し上げたい。

いまさらながら、発表スライドやブログ記事へのリンクがまとめられている Tsukuba.R #9 のWikiページはこちらである。
また当日の様子は

を参照いただきたい。

ところで今回のTsukuba.R、前回が2010年9月19日だった事と考え合わせると実に419日、月にして約13ヶ月もの時を経ての開催であった。

> t1 <- as.Date("2010-9-19")
> t2 <- as.Date("2011-11-12")
> difftime(t2, t1, units="days") 
Time difference of 419 days

一体なぜかくも長くの間つくばRは開催されなかったのだろうか。

なぜ#8と#9の間がここまで空いたのか

Tsukuba.R #9は本来3月に開催されるはずであった。

が、震災の影響を鑑み一旦延期、その後も何度か開催を待つ声はあったのだが、
Tsukuba.Rを中心となって運営していた野郎どもの予定がなかなか合わず11月まで来てしまった。

というより、「そろそろやろうぜ」を有言実行し、カレンダーとにらめっこして場所抑えて告知する「主催者」が不在だったのだと思う。
こう書くと他人事のようなので書きなおすと、

勉強会の主催なりRに関するブログを書いたりするのに必要なある種の情熱のようなものが、まず自分(wakuteka)自身から枯渇していた。ずっと無気力だったとかそういうわけではないけれど、他に心を占めていたことがあったり院での研究が迷走しかけたりしてRに関して何か発信していくことに興味を失いかけていた。

そんなこんなで延ばし延ばしになっていたTsukuba.Rの開催を後押ししてくれたのは、id:dichikaid:isseing333といったTokyo.Rで出会った人たちからのムチャ振り応援だった。一緒にごはんを食べている時に、「そういえばTsukuba.Rって次いつやるの」「ね、年内には......」「そっかそっかそれは良い、じゃあTokyo.Rで告知しよう」「えっ」という感じで見事に退路を断っていただき、



9月のTokyo.R#17で、LTをさせてもらったことでid:gepuro君が発表に名乗りを上げてくれたり、id:tsutatsutatsutaが乗ってくれてKashiwa.R#1につながったりもした。

興味を共有できる場は楽しい

そんなこんなでなんとなく再確認したのは、何かを面白がっている人の話を聞きにいくのは楽しいという事だった。
本を紐解けないほど学習のモチベーションが下がっていたとしても、勉強会に行きさえすれば(足を運ぶくらいの余裕さえあれば)眠っていた興味が起こされてくるものだなというのを実感した。
ひとりでなにかを学ぼうとしても、往々にしてその情熱は持続できないことがある。
それは単に意思が弱いとかそういう理由で片付けてしまうべきではなくて、自分の中の情熱の炎が弱まっていたら、近い興味を持っている、似たようなことを面白がっている人に会いに行けさえすればある種のやる気はまた湧いてくるものなんじゃないか。
ざっくりまとめると、みんな勉強会やろうぜ!(行こうぜ!) ということで。

興味と情熱を継続するための無理のない仕組み

最後にR Advent Calendarがとてもとても面白かった参加して良かったと書いて今日の記事を締めることにする。発起人@kos59125ありがとう。
興味と情熱を持続するために、人に会い勉強会に参加しに行くのは実はわりと骨だ。時間もお金もかかるしある程度の勇気がいる。言いたいこと聞きたいことをやりとりするだけのコミュニケーション力も要る。気分なりテンションなりが外向きにイケイケの時はいいけれど、内向きでいたいような時はハードルが高かったりするかもしれない。
要は、興味を共有できる「場」は同じ時間同じ場所に集まらなくても醸成できるのではないかって思うのだ。
そういう意味でこのR Advent Calendarは新鮮で刺激的で楽しかった。
12月に限らずなにか理由をつけて年に何回でもやりたいような気さえする。来年2012年、あと数分でやって来るけど、こういう感じでオンラインでも興味を共有できる「場」に加わりたいなぁ。

結局一年を振り返る記事になってしまった。来年もよろしくお願いいたします。

参考資料

http://lab.sakaue.info/wiki.cgi/JapanR2010?page=%CA%D9%B6%AF%B2%F1%C8%AF%C9%BD%C6%E2%CD%C6%B0%EC%CD%F7
http://pear.php.net/package/Calendar/

トラックバック - http://d.hatena.ne.jp/wakuteka/20111231

2011-12-24

Merry chRistmas!

Merry chRistmas!を含むブックマーク Merry chRistmas!のブックマークコメント

f:id:wakuteka:20111225013219p:image

## http://d.hatena.ne.jp/Zellij/20111205/p1
## MerryChristmas.R

library(grid)
par(bg="blue4")
plot.new()
plot.window(ylim=c(-4,4),xlim=c(-3,3))
curve(sqrt(1-x^2)+(x^2)^(1/3), -1, 1, lwd=11,col="#FF0000",add=T)
curve(-sqrt(1-x^2)+(x^2)^(1/3), -1, 1, lwd=11,col="#FF0000",add=T)
axis(1,pos=0,col="grey",col.axis="#C0C0C0")
axis(2,pos=0,las=2,col="#C0C0C0",col.axis="#C0C0C0")

  x <- stats::runif(50)
  y <- stats::runif(50)
rot <- stats::runif(50, 0, 360)
text <- c("\115\145\162\162\171\040\103\150\162\151\163\164\155\141\163\041")
grid.text(text,
         x=x,
         y=y,
         rot=rot,
         gp=gpar(fontsize=10, col="#C0C0C0")
         )   


静かな森に雪が降るよなアニメーションとかやりたかったけどまたいつかの機会に。

よく考えたらハートを描く必然性はなかった!!メリークリスマス!!!

参考

## Try it!
## install.packages("animation")
library(animation)
demo(Xmas2)

追記

id:tor_ozakiがワンライナーでgridパッケージ使わずに書いてくれたよ! あと、こっちの方程式使ったほうがなんだかグッと来る(個人的に)

plot(0,typ="n",xli=c(-100,100),yli=c(-100,100));`for`(i,1:50,{t<-1:360;points(16*sin(t)^3,13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t),co="red");text(runif(1,-100,100),runif(1,-100,100),lab="Merry Xmas",srt=runif(1,-90,90),family=c("Osaka"),col="grey")})

f:id:wakuteka:20111225020445p:image

トラックバック - http://d.hatena.ne.jp/wakuteka/20111224

2011-12-06

文芸的な、あまりに文芸的な (R Advent Calendar 2011)

23:49 | 文芸的な、あまりに文芸的な (R Advent Calendar 2011)を含むブックマーク 文芸的な、あまりに文芸的な (R Advent Calendar 2011)のブックマークコメント


一 「ドキュメント」らしいドキュメントの有るプログラム

 僕は「ドキュメント」らしいドキュメントの無いRのプログラムを不完全なものとは思つてゐない。従つて「ドキュメント」らしいドキュメントの有るプログラムばかり書けとも言はない。第一僕のプログラムも大抵は「ドキュメント」を欠いてゐる。絵画は解説がなくとも成り立つ。それと丁度同じやうにプログラムはドキュメントがなくとも成り立つものである。(僕の「ドキュメント」と云ふ意味は単に「コメント」と云ふ意味ではない。)若し厳密に云ふとすれば、全然「コメント」のない所にさえプログラムは成り立つであらう。従つて僕は「ドキュメント」のない簡潔なプログラムにも勿論尊敬を表するものである。

 しかし或解析の見通しを良くし、再利用性を高めるのは決してコードの短さではない。況や実行にかかる数秒程度の余分は評価の埒外にあるはずである。更に進んで考へれば、ソースコードの有無さへもかう云ふ問題には没交渉である。僕は上にも書いたように「ドキュメント」の無いソースコードを、――或は「ドキュメント」らしいドキュメントの無いソースコードを不完全なものとは思っていない。しかしこうでないRプログラミングも存在し得ると思ふのである。

二 如何にしてドキュメントを書くかに答ふ

 次に僕は如何にしてRで「ドキュメント」らしいドキュメントのあるプログラムを書くかという問いに答へる責任を持つてゐる。試みにMASSパッケージのcatsというデータセットを用ゐて説明する。
 昔々あるところに144匹の猫が居た。何でも薄暗いじめじめした所でニャーニャー泣いているうちに気づけば心の臓を抜き取られその重さを量られていたという。猫の犠牲に敬意を表し、いま心重量(Hwt)と体重(Bwt)の間に直線的な相関関係があるか、性別(Sex)で違いがあるかを見たいとする。

sample.R
library(lattice)
library(xtable)
data(cats, package = "MASS")
lm1 <- lm(Hwt~Bwt*Sex, data = cats)
lm1
print(xyplot(Hwt~Bwt|Sex, data = cats, type = c("p", "r")))

上のソースコードをRの統合開発環境であるRStudioで実行すると下のような画面が得られる。

f:id:subteka:20111206212233p:image
 めでたし。

f:id:subteka:20111206212556p:image

 ところが、データを解析して可視化すれば終わりというではない。
 一週間、あるいは一ヶ月、一年後に同様の解析をしなければならない、ということはよくあるだろう。
 8行程度のコードなら覚えていられるかもしれない。しかし実際の解析に用いるプログラムやデータは複数のファイルに複雑怪奇に入り組んでいることがある。時間が経つとどのデータファイルをどこに保存したか、どの関数のどのオプションを用いたか、そもそもどういう経緯でその解析を行ったのか分らなくなってしまうという事態を経験したのは僕だけではあるまい。

そこで、

  • どのようなデータに対して
  • どのような解析を行い
  • どのような結果が得られたか

をこまめにまとめておくことが重要になってくる。例えば以下のように。
f:id:subteka:20111206234156j:image

実物はここsample.pdf 直からダウンロードできるようにした。

驚くなかれ、このPDFは以下のコードから生成されたものである。
RのコードをLaTeXに埋め込んでPDFを生成するこのシステムは、WEBをもじってSweaveと呼ばれている。

sample.Rnw
\documentclass[a4paper]{article}

\usepackage[margin=20mm]{geometry}
\usepackage[noae]{Sweave}

\DefineVerbatimEnvironment{Sinput}{Verbatim}{
  fontsize=\scriptsize,
  fontfamily=courier,frame=single,framesep=2mm,
  label={R Code},labelposition=topline} %numbers=left
\DefineVerbatimEnvironment{Soutput}{Verbatim}{
  fontsize=\scriptsize,fontfamily=courier}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=\small}

\begin{document}
<<echo=false,results=hide>>=
library(lattice)
library(xtable)
data(cats, package = "MASS")
@
\section{The Cats Data}

Consider the \texttt{cats} regression example from 
Venables \& Ripley (2002)~\cite{venables2002modern}.
The data frame contains measurement of heart and body weight of \Sexpr{nrow(cats)}
cats (\Sexpr{sum(cats$Sex=="F")} female, \Sexpr{sum(cats$Sex=="M")} male).

A linear regression model of heart weight by sex and gender can be fitted in R 
using the command
<<>>=
lm1 <- lm(Hwt~Bwt*Sex, data = cats)
lm1
@
Tests for siginificance of the coefficients are shown in Table~\ref{tab:coef},
a scatter plot including the regression lines is shown in Figure~\ref{fig:cats}.

\SweaveOpts{echo=false}

<<results=tex>>=
xtable(lm1, caption="Linear regression model for cats data.", label="tab:coef")
@

\begin{figure}[!h]
  \begin{center}
<<fig=TRUE,width=12,height=6,echo=T>>=
print(xyplot(Hwt~Bwt|Sex, data=cats, type=c("p", "r")))
@
  \caption{The cats data from package MASS.}
  \label{fig:cats}
  \end{center}
\end{figure}

This PDF file have been generated on \today
with \Sexpr{version$version.string} on a  
\Sexpr{sub("_"," ",version$platform,)}.
\bibliographystyle{unsrt}
\bibliography{sample}
\end{document}


いや、Sweaveは知っている、ただLaTeXを含めたTeX環境の導入の壁が高いのだとの声があるかもしれない。しかしRStudioの登場によって状況は大きく変わった。だってRStudioには "Compile PDF" ボタンがあるのだ。

ポチッとな。
f:id:subteka:20111206225217j:image

三 僕

 最後に僕の繰り返したいのは僕も亦今後側目もふらずに「ドキュメント」らしいドキュメントのあるソースコードばかり作るつもりはないと云ふことである。僕等は誰も皆出来ることしかしない。僕の行なっている解析が常にかう云ふプログラムを作ることに適してゐるかどうかは疑問である。のみならずかう云ふプログラムを作ることは決して並み並みの仕事ではない。僕のRを好むのはRはあらゆるプログラミング言語の形式中、最もいいかげん包容力に富んでゐる為に何でもぶちこんでしまはれるからである。若しラムダ式の完成した(((括弧)の)(国))に生まれていれば、僕は或は院生よりもプログラマになってゐたかもしれない。僕はいろいろの言語たちに何度も色目を使つて来た。しかし今になつて考へて見ると、最も内心に愛してゐたのは統計解析兼可視化環境のGNU S――わがR言語だつた。

芥川龍之介 文芸的な、余りに文芸的な
Getting Started with Sweave: R, LaTeX, Eclipse, StatET, & TeXlipse
文芸的プログラミング - Wikipedia
Sweave マニュアル訳 - RjpWiki
CRAN Task View: Reproducible Research
R Advent Calendar 2011 : ATND

四 蜜柑

Sweaveコードの解説、実運用上のハマりどころ、学会発表一週間前にBlog更新にかまけていて大丈夫か、文体が保てていないぞ、Tsukuba.Rのレポートはどうした等に関しては、はい、がんばります。
蜜柑食べたい。

myopommemyopomme 2011/12/09 22:52 Sweaveは解析をしていると多様しがちですが、LaTexのminipageやlongtableに対応していないがね〜。結局、WEBはWEBで書きつつ、LaTexのコードはLaTexのコードで書きつつ、texファイルをrubyで自動整形したり...仕上げに時間がかかりません?

myopommemyopomme 2011/12/10 09:27 Rjpwikiに良いまとめがあります。ぜひこのブログをベースにLaTexにもしたしみたい。テフニシャンなろうとおもった時期もありし過去。今一度。

2011-11-26

第6回 Rユーザ会 (1) データ解析のためのGUIフロントエンド

10:07 | 第6回 Rユーザ会 (1) データ解析のためのGUIフロントエンドを含むブックマーク 第6回 Rユーザ会 (1) データ解析のためのGUIフロントエンドのブックマークコメント

(鈴木 了太さん)
統計数理研究所 R研究集会(第6回 Rユーザ会)

R AnalyticFlowは、フローチャートを描くことで
高度なデータ分析を実現するソフトウェアです。
フローとして構造化されたプロセスは容易に再現・共有が可能。
過去に蓄積されたデータ分析プロセスをフローに変換することで、
ナレッジの再利用もスムーズです。
個人・法人を問わず無償でご利用いただけます。

R analytic flow

KNIME, Rapidminerからヒント
データ分析は基本的に反復的なプロセス、フローチャートでまとまってると便利

フローチャート的UIの利点:全体を把握しやすい・共有しやすい
対話的操作の利点:探索的(色々試行錯誤して最適なコードを組み上げるにはコンソールが便利)

Ctrl+Enterで、実行履歴をフローチャート化できる

感想

コードはRのコンソール等でガリガリ書いて、ある程度固まりができたらフローチャート化していくのがよさそう。

その他

キャッシュ機能(途中のステップで.RData生成)
付属のコードエディタ、候補も出せる

英語版も、問い合わせの9割は英語

one more thing...(開発中の機能)

裏でRが動いていることをより意識させないUI
Sweaveの先へ(reporting、html出力など)
edit()likeにExcelで編集する機能も(tsv出力してExcel開いてる)

トラックバック - http://d.hatena.ne.jp/wakuteka/20111126

2011-11-20

FPKM値のパターンが類似する遺伝子群をプロットするには

23:15 | FPKM値のパターンが類似する遺伝子群をプロットするにはを含むブックマーク FPKM値のパターンが類似する遺伝子群をプロットするにはのブックマークコメント

RでNGS解析 ~ RNA-Seqによる遺伝子発現量データを手軽に可視化する - ここからゲノムと計算機すかの補足です。

発現パターンが類似する遺伝子群を取得するには

> mySimilar <- findSimilar(cuff, "PINK1", n = 7)
> annotation(mySimilar)[,1:5]
      gene_id class_code nearest_ref_id gene_short_name                  locus
1 XLOC_000048       <NA>           <NA>            RER1   chr1:2323213-2344010
2 XLOC_000055       <NA>           <NA>          TPRG1L   chr1:3541555-3546692
3 XLOC_000085       <NA>           <NA>          NMNAT1 chr1:10003485-10045555
4 XLOC_000147       <NA>           <NA>          NECAP2 chr1:16767166-16786582
5 XLOC_000172       <NA>           <NA>           PINK1 chr1:20959947-20978003
6 XLOC_000175       <NA>           <NA>           NBPF3 chr1:21766630-21811392
7 XLOC_001389       <NA>           <NA>            <NA> chr1:21749600-21754300

自分自身(PINK1)も含まれている。これは呼び出し時に除けたほうがいいのでは...

expressionPlot()関数に結果を投げてプロット

> p <- expressionPlot(mySimilar, showErrorbars = F)
> p <- p + geom_line(data = fpkm(mySimilar),
+   aes(x = sample_name, y = fpkm, group = gene_id, colour = gene_id))
> p

f:id:wakuteka:20111120234740p:image
現状、単にexpressionPlotを呼び出しただけでは各遺伝子が判別できないので、自分で色分け等してあげないといけない。もしggplotでの色分けの仕方を知らなければ、パッケージさえ入れれば可視化出来る、というお手軽感は薄れてしまう。

発現パターンが類似する遺伝子群を返してくれるfindSimilar()関数の関数定義を読む

21:52 | 発現パターンが類似する遺伝子群を返してくれるfindSimilar()関数の関数定義を読むを含むブックマーク 発現パターンが類似する遺伝子群を返してくれるfindSimilar()関数の関数定義を読むのブックマークコメント

 cummeRbundパッケージのfindSimilar()関数について深追いしてみた。

f:id:wakuteka:20111120234740p:image:w150:rightfindSimilar()関数は、ある遺伝子と発現パターンの類似する遺伝子群を出してくれるということでとても便利に見える。
けど、中でどんな処理をしているかよくわからないのは気持ち悪いので、BioconductorのサイトからcummeRbundのソースコードを落として読んでみた。
この記事はそのときのメモです。

ダウンロード&展開

$ wget http://www.bioconductor.org/packages/2.9/bioc/src/contrib/cummeRbund_1.0.0.tar.gz
$ tar zxvf cummeRbund_1.0.0.tar.gz
$ cd cummeRbund/R
$ export COLUMNS=80 #ブログでの表示用に
$ ls
AllClasses.R             methods-CuffDist.R       methods-CuffGeneSet.R
AllGenerics.R            methods-CuffFeature.R    methods-CuffSet.R
database-setup.R         methods-CuffFeatureSet.R tools.R
methods-CuffData.R       methods-CuffGene.R

findSimilar()の関数定義 in methods-CuffSet.R

#Find similar genes
.findSimilar<-function(object,x,n){
  # x はgene_idかgene_short_nameか、適当に作ったFPKM値のベクトルであればよい
  # 単一の値しか与えられない
  if(is.character(x)){
    myGene <- getGene(object,x)
    sig <- makeprobsvec(fpkmMatrix(myGene)[1,])
  }else if(is.vector(x)){
    sig <- makeprobsvec(x)
  }
  allGenes <- fpkmMatrix(object@genes)
  allGenes <- t(makeprobs(t(allGenes)))
  compare <- function(q){
    JSdistVec(sig,q)                # 距離(類似度)を計算
  }
  myDist <- apply(allGenes,MARGIN=1,compare)
  mySimilarIds <- names(sort(myDist))[1:n]
  mySimilarGenes <- getGenes(object,mySimilarIds)
}
setMethod("findSimilar",signature(object="CuffSet"),.findSimilar)

やってること

  • 1番目の引数でデータセットを、2番目の引数で目的の遺伝子名 or 発現データのベクトルを与える
  • fpkm値の行列を、すべてのセルの和が1になるよう調整(計算のため)
  • 距離(類似度)を計算(Jensen-Shannonダイバージェンスを利用)
  • 類似度でソートして上から順に取ってくる
  • 取ってきたリストのIDをデータセットに投げてGeneSetを取得

mySimilarIdsの部分ではIDのベクトルが類似度順になっているのに、最後のGetGenesに投げる所で折角の類似度ランキングが消えてしまっている。これはもったいないのでは? さらに言えば、類似度だけじゃなくて有意性を評価するための指標もつけるべきだと思う。有意性が評価できるかどうかは知らない。どうなのだろう。

あと、vignetteには類似度の計算に Jensen-Shannon distance を使っていると書いてあったけど、上のリンクのように Jensen-Shannon divergence って表記の方が一般的な気がする。

fpkmMatrixを適用するとこうなる

> head(fpkmMatrix(cuff@genes))
                   hESC Fibroblasts       iPS
XLOC_000001 7.23836e-01     16.4011  54.06720
XLOC_000002 0.00000e+00      0.0000   0.00000
XLOC_000003 0.00000e+00      0.0000   0.00000
XLOC_000004 1.20000e+06  22616.4000   0.00000
XLOC_000005 1.13903e+03     41.1644 944.30800
XLOC_000006 0.00000e+00      0.0000   9.00455

findSimilar()内で呼び出している関数群の関数定義 in tools.R

JSdist<-function(mat){
  res<-matrix(0,ncol=dim(mat)[2],nrow=dim(mat)[2])
  colnames(res)<-colnames(mat)
  rownames(res)<-colnames(mat)
  for(i in 1:dim(mat)[2]){   # ここの処理、applyで書いたら速くなる?
    for(j in i:dim(mat)[2]){
      a<-mat[,i]
      b<-mat[,j]
      JSdiv<-shannon.entropy((a+b)/2)-(shannon.entropy(a)+shannon.entropy(b))*0.5
      res[i,j] = sqrt(JSdiv)
      res[j,i] = sqrt(JSdiv)
    }
  }
  as.dist(res)
}

JSdistVec<-function(p,q){
  JSdiv<-shannon.entropy((p+q)/2)-(shannon.entropy(p)+shannon.entropy(q))*0.5
  JSdist<-sqrt(JSdiv)
  JSdist
}

makeprobsvec<-function(p){
  phat<-p/sum(p)          #FPKM行列の、全体の和を1にする
  phat[is.na(phat)] = 0 
  phat
}

shannon.entropy <- function(p) {
  if (min(p) < 0 || sum(p) <=0)
    return(Inf)
  p.norm<-p[p>0]/sum(p)
  -sum( log10(p.norm)*p.norm)
}

makeprobs<-function(a){
  colSums<-apply(a,2,sum)
  b<-t(t(a)/colSums)
  b[is.na(b)] = 0 
  b
}

コメント

 手法を表す数式はわかったけれど、なぜこの手法で類似度を計算するのか、ヘの理解は持ち越し。

トラックバック - http://d.hatena.ne.jp/wakuteka/20111120

2011-11-18

多重検定で有意水準を調整する際の手法を調べる

20:27 | 多重検定で有意水準を調整する際の手法を調べるを含むブックマーク 多重検定で有意水準を調整する際の手法を調べるのブックマークコメント

多重検定で有意水準を調整する際の手法を調べる & Storey作のソフトQvalueをRのパッケージ化したqvalueパッケージ の使い所を把握

蛋白質 核酸 酵素 2009 Vol.54 No.10 1307-15
大規模データの解析における問題点 DNAマイクロアレイによる遺伝子発現量の測定を例として
http://www.mbsj.jp/admins/ethics_and_edu/PNE/5_article.pdf
# FDR, qvalueについて
Proc Natl Acad Sci U S A. 2003 Aug 5;100(16):9440-5. Epub 2003 Jul 25.
Statistical significance for genomewide studies.
http://www.ncbi.nlm.nih.gov/pubmed/12883005
Storey JD, Tibshirani R.
# FDRの定義はここを参照
N Engl J Med. 2001 Feb 22;344(8):539-48.
Gene-expression profiles in hereditary breast cancer.
http://www.ncbi.nlm.nih.gov/pubmed/11207349
# Storey(2003)で使っているデータの出典

(_ _) zzz...

使い方解説記事はあまり頻繁には書けない

トラックバック - http://d.hatena.ne.jp/wakuteka/20111118

2011-11-17

RでNGS解析 ~ RNA-Seqによる遺伝子発現量データを手軽に可視化する

| 19:23 | RでNGS解析 ~ RNA-Seqによる遺伝子発現量データを手軽に可視化するを含むブックマーク RでNGS解析 ~ RNA-Seqによる遺伝子発現量データを手軽に可視化するのブックマークコメント

f:id:wakuteka:20111117192043p:image:w80:rightR(Bioconductor)のパッケージcummeRbundについてちょいと調べました。2011-10-31に ver. 1.0.0がリリースされたばかりのまだ新しいパッケージです。
cummeRbundを使うと、RNA-SeqのデータからCufflinks(Cuffdiff)を使って推定した複数サンプルの遺伝子発現量を、手軽に比較・解析することができます。パッケージ名はカマーバンドと読みます。

11/22追記:
RでNGSデータ(RNA-Seqによる発現データ)を可視化する - 牧場の朝に項目を追加してまとめ直しました。

注:cummeRbundはBioconductor2.9以上、R 2.14以上で動作します。
(original photo uploaded by rjrgmc28)

実行環境

> sessionInfo()
R version 2.14.0 (2011-10-31)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] ja_JP.UTF-8/UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] cummeRbund_1.0.0 ggplot2_0.8.9    proto_0.3-9.2    reshape_0.8.4   
[5] plyr_1.6         RSQLite_0.10.0   DBI_0.2-5       

cummeRbundインストール

> source("http://www.bioconductor.org/getBioC.R")
> getBioC("cummeRbund")
Using R version 2.14.0 (R-devel), biocinstall version 2.9.3.
Installing Bioconductor version 2.9 packages:
[1] "cummeRbund"
Please wait...

also installing the dependencies ‘itertools’, ‘iterators’, ‘DBI’,
 ‘plyr’, ‘proto’, ‘RColorBrewer’, ‘digest’, ‘colorspace’, 
 ‘RSQLite’, ‘reshape’, ‘ggplot2’
...
> options(width = 80)  # ブログの横幅に収めるために

パッケージの読み込み

> library(cummeRbund)

パッケージがインストールされたディレクトリを取得する

> packagePath <- system.file(package = "cummeRbund") # パッケージのディレクトリを取得
> packagePath
[1] "/Library/Frameworks/R.framework/Versions/2.14/Resources/library/cummeRbund"
>  dir(packagePath, recursive = T)    # パッケージディレクトリ以下の全ファイルを表示
 [1] "data/sampleData.RData"            "DESCRIPTION"                     
 [3] "doc/cuffData_schema.pdf"          "doc/cummeRbund-manual.pdf"       
 [5] "doc/cummeRbund-manual.R"          "doc/cummeRbund-manual.Rnw"       
 [7] "doc/index.html"                   "extdata/cds_exp.diff"            
 [9] "extdata/cds.diff"                 "extdata/cds.fpkm_tracking"       
[11] "extdata/cuffData_schema.sql"      "extdata/gene_exp.diff"           
[13] "extdata/genes.fpkm_tracking"      "extdata/isoform_exp.diff"        
[15] "extdata/isoforms.fpkm_tracking"   "extdata/promoters.diff"          
[17] "extdata/splicing.diff"            "extdata/tss_group_exp.diff"      
[19] "extdata/tss_groups.fpkm_tracking" "help/aliases.rds"                
[21] "help/AnIndex"                     "help/cummeRbund.rdb"             
[23] "help/cummeRbund.rdx"              "help/paths.rds"                  
[25] "html/00Index.html"                "html/R.css"                      
[27] "INDEX"                            "Meta/data.rds"                   
[29] "Meta/hsearch.rds"                 "Meta/links.rds"                  
[31] "Meta/nsInfo.rds"                  "Meta/package.rds"                
[33] "Meta/Rd.rds"                      "Meta/vignette.rds"               
[35] "NAMESPACE"                        "NEWS"                            
[37] "R/cummeRbund"                     "R/cummeRbund.rdb"                
[39] "R/cummeRbund.rdx"         

$packagePath/dataと$packagePath/extdata以下にサンプルデータ、
$packagePath/doc以下にマニュアルがあるようです。

以下、doc/cummeRbund-manual.Rのソースを淡々と実行

Cuffdiffプログラムの出力ファイルを読み込む

> # extdata以下にあった *.diff ファイルを読み込む
> extdataPath <- paste(packagePath, "/extdata", sep = "")
> dir(extdataPath)
 [1] "cds_exp.diff"             "cds.diff"                
 [3] "cds.fpkm_tracking"        "cuffData_schema.sql"     
 [5] "gene_exp.diff"            "genes.fpkm_tracking"     
 [7] "isoform_exp.diff"         "isoforms.fpkm_tracking"  
 [9] "promoters.diff"           "splicing.diff"           
[11] "tss_group_exp.diff"       "tss_groups.fpkm_tracking"
> cuff <- readCufflinks(extdataPath) 
> cuff
CuffSet instance with:
	 3 samples                      # iPS, Fibroblasts, hESC
	 400 genes
	 1203 isoforms
	 575 TSS
	 545 CDS
	 960 promoters
	 1725 splicing
	 696 relCDS

これで発現量データをRで可視化する準備が整いました。

データセットから目的遺伝子のデータを抽出するには

 例として、ミトコンドリア膜電位の異常を監視し異常な膜電位をもつミトコンドリアが細胞の中に蓄積するのを防ぐと言われているタンパク PINK1 をコードしている PINK1 (PTEN-induced kinase 1)のデータを抽出します。
 単一データを抽出するにはgetGene()関数を用います。ここでは遺伝子のIDではなく、遺伝子名で指定してみます。

> myGene <- getGene(cuff, "PINK1")
> myGene
CuffGene instance for gene PINK1 
Short name:	 PINK1 
Slots:
	 annotation
	 fpkm
	 diff
	 isoforms	 CuffFeature instance of size 2 
	 TSS		 CuffFeature instance of size 2 
	 CDS		 CuffFeature instance of size 2 

FPKM値はfpkm()で取得します。

> fpkm(myGene)
      gene_id sample_name     fpkm  conf_hi  conf_lo quant_status
1 XLOC_000172 Fibroblasts 2919.340 4002.960 1835.730           OK
2 XLOC_000172        hESC  693.465  813.869  573.062           OK
3 XLOC_000172         iPS 1598.040 2282.380  913.710           OK

 FPKMとはFragments Per Kilobase of transcript per Million mapped readsの略で、発現量の指標の一つです。詳しくは Cufflinks RNA-Seq analysis tools - FAQ および Mortazavi, Williams, et al. Nature Methods, 2008 を、日本語資料としてはKen Osakiさんやyag_aysさんの記事を御覧ください。

目的遺伝子のサンプル別FPKMを視覚的に比べるには

今回のデータセットにはFibroblasts, hESC, iPSの3サンプルについてのデータが格納されているので、これらを視覚的に比較してみます。

> expressionPlot(myGene)

f:id:wakuteka:20111117175545p:image

> expressionBarplot(myGene)

f:id:wakuteka:20111117175544p:image

> expressionBarplot(isoforms(myGene)) # isoformがある場合は並べてplotできる

f:id:wakuteka:20111117175828p:image

データセットから複数遺伝子のデータを抽出するには

> sort(sampleIDs)   # 解析対象の遺伝子ID一覧
 [1] "XLOC_000069" "XLOC_000089" "XLOC_000105" "XLOC_000115" "XLOC_000132"
 [6] "XLOC_000151" "XLOC_000158" "XLOC_000170" "XLOC_001240" "XLOC_001262"
[11] "XLOC_001263" "XLOC_001265" "XLOC_001297" "XLOC_001339" "XLOC_001348"
[16] "XLOC_001359" "XLOC_001363" "XLOC_001369" "XLOC_001370" "XLOC_001411"
> length(sampleIDs)
[1] 20               # 20 genes

複数遺伝子のデータを抽出するにはgetGenes()関数を用います。ここでは、上記の遺伝子IDからデータを取得してみます。

> myGenes <- getGenes(cuff, sampleIDs) # sampleIDsに対応するデータをCuffSetから抽出
> class(myGenes)
[1] "CuffGeneSet"   # CuffSetから遺伝子毎に抽出したデータはCuffGeneSetオブジェクトとなる
attr(,"package")
[1] "cummeRbund"
>
> myGenes.fpkm <- fpkm(myGenes)  # FPKMを取得
> dim(myGenes.fpkm)
[1] 60  6             # 3 samples x 20 genes = 60行のデータ (6列)
> head(myGenes.fpkm)
      gene_id sample_name        fpkm     conf_hi conf_lo quant_status
1 XLOC_000069 Fibroblasts 2.98269e-01 8.94808e-01    0.00           OK
2 XLOC_000089 Fibroblasts 1.16767e+04 1.68167e+04 6536.69           OK
3 XLOC_000105 Fibroblasts 2.55768e+03 3.65431e+03 1461.05           OK
4 XLOC_000115 Fibroblasts 0.00000e+00 0.00000e+00    0.00           OK
5 XLOC_000132 Fibroblasts 1.88151e+03 2.69236e+03 1070.66           OK
6 XLOC_000151 Fibroblasts 1.02775e+00 2.48121e+00    0.00           OK

目的の遺伝子セットをFPKMでクラスタリングしたヒートマップを見るには

> csHeatmap(myGenes, clustering = 'both') # clustering = 'row' なら行ごと

f:id:wakuteka:20111117165848p:image

目的の遺伝子セットの遺伝子名を見るには

> featureNames(myGenes) 
   tracking_id gene_short_name
1  XLOC_000069            ESPN
2  XLOC_000089             PGD
3  XLOC_000105            MFN2
4  XLOC_000115         PRAMEF1
5  XLOC_000132           EFHD2
6  XLOC_000151           PADI1
7  XLOC_000158            <NA>
8  XLOC_000170          FAM43B
9  XLOC_001240          UBE2J2
10 XLOC_001262            <NA>
11 XLOC_001263         C1orf86
12 XLOC_001265            <NA>
13 XLOC_001297          SLC2A7
14 XLOC_001339            <NA>
15 XLOC_001348         SPATA21
16 XLOC_001359            SDHB
17 XLOC_001363          TAS1R2
18 XLOC_001369          AKR7A3
19 XLOC_001370          AKR7A2
20 XLOC_001411         IL22RA1

IDじゃなくて遺伝子名でヒートマップ書きたいときはこれを使えばよさそう。

データセット全体の概要を掴むためのいろいろな図が簡単に描けます

ggplot2を描画ライブラリに使っている模様
(see also: http://had.co.nz/ggplot2/stat_density.html)
Density plot

> csDensity(genes(cuff))

f:id:wakuteka:20111117160855p:image:w500
Box plot

> csBoxplot(genes(cuff))

f:id:wakuteka:20111117161830p:image:w500
Scatter plot

> csScatter(genes(cuff),"hESC","Fibroblasts",smooth=T)

f:id:wakuteka:20111117163304p:image

他にできること

findSimilar()で、ある遺伝子と同じようなFPKMのパターンを示す遺伝子を取ってくる、ってこともできます。
類似度の計算にはJensen-Shannon distanceを使っているそうな。

ヘルプのPDFを見るには以下のコードを実行、またはpackagePath/docから地道に辿ってみてください。

> vignette("cummeRbund-manual")

ソースコードは、Bioconductorのサイトからダウンロードできます。もしかしたら実際の解析にはパッケージの関数そのままでは物足りなくなる可能性があり、そんなときはソースコードを読みパッケージの関数定義を参考にして、自分にとって必要な関数を自作することになるでしょう。

cummeRbundパッケージのオブジェクト一覧

> ls("package:cummeRbund") 
 [1] "addFeatures"       "annotation"        "CDS"             
 [4] "csBoxplot"         "csCluster"         "csDensity"       
 [7] "csHeatmap"         "csScatter"         "csVolcano"       
[10] "diffData"          "distValues"        "expressionBarplot"
[13] "expressionPlot"    "featureNames"      "features"        
[16] "findSimilar"       "fpkm"              "fpkmMatrix"      
[19] "genes"             "getGene"           "getGenes"        
[22] "getLevels"         "isoforms"          "JSdist"          
[25] "JSdistVec"         "makeprobs"         "makeprobsvec"    
[28] "promoters"         "readCufflinks"     "relCDS"          
[31] "samples"           "shannon.entropy"   "splicing"        
[34] "TSS" 

調べた経緯


このpostをふぁぼる
f:id:wakuteka:20111117150308p:image

捕捉される



というわけでやってみた。コメント・トラックバック歓迎です。

2011-07-18

PubMed THE FIRST

15:25 | PubMed THE FIRSTを含むブックマーク PubMed THE FIRSTのブックマークコメント


http://farm3.static.flickr.com/2519/4240638749_3b812af801.jpgoriginal uploaded by hobby_blog



ふと思い立って、PubMedID1番の論文を調べてみました。

Biochem Med. 1975 Jun;13(2):117-26.
Formate assay in body fluids: application in methanol poisoning.
Makar AB, McMartin KE, Palese M, Tephly TR.
http://www.ncbi.nlm.nih.gov/pubmed/1


タイトル1語めのFormateってのはFormic acid、つまりギ酸のこと。

http://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Methanol_flat_structure.png/120px-Methanol_flat_structure.pngメタノール
http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Formaldehyde-2D.svg/100px-Formaldehyde-2D.svg.pngホルムアルデヒド
http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Formic_acid.svg/120px-Formic_acid.svg.pngギ酸

メタノールはヒトの体内でホルムアルデヒドを介してギ酸へと代謝されます。
それを利用して(?)メタノール中毒の人の体液中のギ酸を検査しました、みたいな内容。多分。

First PubMed Entry | Whizbang
↑上のブログ記事のようなネタがid:0とかにイースターエッグ的に仕込まれていることを密かに期待していたけど、そんなことはなかった。

公共DBにネタを仕込まれていても困るけど、明らかにネタと分かるものなら....あるいは4月1日限定なら...と思ってしまう今日この頃です。

画像は正義の味方PubMed仮面、Locusta migratoria var.birota expeditum*1

*1:適当です

トラックバック - http://d.hatena.ne.jp/wakuteka/20110718

2011-07-04

「Rを教えるにあたってのクイック・ガイド」(日本語ユーザ編)

| 14:23 | 「Rを教えるにあたってのクイック・ガイド」(日本語ユーザ編)を含むブックマーク 「Rを教えるにあたってのクイック・ガイド」(日本語ユーザ編)のブックマークコメント

イメージングのデータをよりによって,エクセルで,カット・アンド・ペーストを繰り返し,徹夜して解析している4年生を見て,こりゃいかんと思い,Rのスクリプトを書いて,「ほら,こんなに作業が簡単になるでしょ?」と,Rをオススメするはずだった.

ところが,反応はイマイチ.こんな難しいことやってられません,と言いたげな顔になってしまったので,いきなり負荷をかけすぎたかと反省.やはり,教えるのってムズかしい.

「Rを教えるにあたってのクイック・ガイド」 - 勝虫日記

に触発されて。

いきなり脱線しますがこの勝虫さんのエントリで紹介されていたA Quick Guide to Teaching R Programming to Computational Biology Studentsが含まれているEducationシリーズは、研究でデータ解析を行う医学生物学分野の学生にとってお役立ちなノウハウが詰まった論文がひしめいているので、チェックしておかないと損だと思う。

オススメ本

Rによる医療統計学元論文でも紹介されていたIntroductory Statistics with R (Statistics and Computing)の邦訳。
使用しているデータセットは医療分野のものだけれど、紹介されている手法とその解説は医療分野に限らず使えるものばかり。

Rによる医療統計学

Rグラフィックス ―Rで思いどおりのグラフを作図するために―こちらはR Graphics, Second Edition (Chapman &Hall/CRC The R Series)の邦訳。
Traditional作図法とTrelis作図法の違いがよくわかる。原書のサポートページで、サンプルコードと実行結果が公開されてるのがありがたい。

Rグラフィックス ―Rで思いどおりのグラフを作図するために―

またこちらは紹介されていなかったけど、

Rプログラミングマニュアル (新・数理工学ライブラリ 情報工学)
Rプログラミングマニュアル (新・数理工学ライブラリ 情報工学)

のように用途で関数を逆引きできる本が一冊手元にあると便利です。

役に立つサイト

f:id:wakuteka:20110704115257p:image:w600
seekR - 統計分析プログラミング言語 R のための検索エンジン
@hiratake55さんによるR専門の検索エンジン。どちらもGoogleカスタム検索を使っているけれど、日本語で検索した場合はRseek.orgよりもRに特化した情報が得やすいよ!


f:id:wakuteka:20110704141013p:image:w600
R Graphical Manual
遺伝研 小笠原 助教によるグラフィック用のコードと実行結果が閲覧できるデータベース。
R Graph Galleryがタグクラウドで用途別の検索インターフェースを誇るとしたら、こちらはほぼ全てのCRANパッケージに収録されるデモ用ソースコードのプロット結果を閲覧できるという網羅性の高さが武器だよ!

Rを学ぶ上で直面するよくある問題

実行したい処理をRでどう書けばいいのか分からない→だれかに質問する

そもそもコマンドを打つのが面倒そう
Excel上でRを動かすRExcel - もうカツ丼でいいよなとか

ExcelでR自由自在
ExcelでR自由自在
を参考に学部生さんが使い慣れた(?)Excelを魔改造して、Rに慣れてもらうことも...

とここまで書いて私も力尽きてしまいました。「もっといい方法知ってるよ!」とかありましたらぜひトラックバック欲しいな!

トラックバック - http://d.hatena.ne.jp/wakuteka/20110704

2011-05-13

DICOM形式のファイルを扱うC++ライブラリ

18:53 | DICOM形式のファイルを扱うC++ライブラリを含むブックマーク DICOM形式のファイルを扱うC++ライブラリのブックマークコメント


RでMRIデータを可視化する - 牧場の朝ではRを使ってDICOM形式などの医用画像の可視化を行いましたが、解析をより高速に・より細かく行うために、DICOM形式を扱えるCやC++言語のライブラリを探してみることにしました。

What C++ library can I use to read pixels from DICOM images? - Stack Overflow

結果、DCMTKというライブラリが良さそうなので、次回はこれを調べてみることに。
DCMTKはDICOM形式のビューワ・解析ツールとして有名なOsiriXの実装にも使われているようです。
macportを使うと簡単にインストールでき、最新版の3.6.0ではなくdcmtkdcmtk3.5.4_p2が入ります。(2011.5.13現在)

DCMTKのwebsite: dicom.offis.de - DICOM Software made by OFFIS - DCMTK - DICOM Toolkit
DCMTKのdocument: OFFIS DCMTK: Main Page

なおdsr2htmlなどのユーティリティを使うにはDCMDICTPATHにdicom.dicのpathを設定する必要がありました。

export DCMDICTPATH=/opt/local/lib/dicom.dic
トラックバック - http://d.hatena.ne.jp/wakuteka/20110513

2009-10-20

R苦手の会 #6が開催されました。

| 00:01 | R苦手の会 #6が開催されました。を含むブックマーク R苦手の会 #6が開催されました。のブックマークコメント


今回からは可視化についてということで、
http://www1.doshisha.ac.jp/~mjin/R/05.html
を予定していましたが、
最初に作図に関する大まかな枠組みを掴もうということで、
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/47.html
を手がかりに、plot()からはじまり高水準作図関数、低水準作図関数の辺りを扱いました。

トラックバック - http://d.hatena.ne.jp/wakuteka/20091020

2009-10-16

dokuwikiで、URL中のdoku.phpを消す方法

16:24 | dokuwikiで、URL中のdoku.phpを消す方法を含むブックマーク dokuwikiで、URL中のdoku.phpを消す方法のブックマークコメント


http://www.example.com/dokuwiki.php?start のようなURLを、
http://www.example.com/start と表示させることができるようになる。(※URLはダミーです。)

  サンプルはこんな感じ -> http://wakuteka.info/R/start

やりかた


conf/local.phpに以下の行を追加する。

$conf['userewrite'] = 1;

.htaccessの該当部分を、以下のようにコメントアウトする
(デフォルトでは、.htaccess.distという名前になっているかもしれません。その場合は、ファイル名を変更して下さい。)

## Enable this to restrict editing to logged in users only

## You should disable Indexes and MultiViews either here or in the
## global config. Symlinks maybe needed for URL rewriting.
#Options -Indexes -MultiViews +FollowSymLinks

## make sure nobody gets the htaccess files
<Files ~ "^[\._]ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

# Uncomment these rules if you want to have nice URLs using
# $conf['userewrite'] = 1 - not needed for rewrite mode 2
RewriteEngine on

# Not all installations will require the following line.  If you do, 
# change "/dokuwiki" to the path to your dokuwiki directory relative
# to your document root.
RewriteBase /

# If you enable DokuWikis XML-RPC interface, you should consider to
# restrict access to it over HTTPS only! Uncomment the following two
# rules if your server setup allows HTTPS.
RewriteCond %{HTTPS} !=on
RewriteRule ^lib/exe/xmlrpc.php$      https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php


追記
RewriteEngineをonにするとdoku.phpがURLに表示されなくなり、RewriteBaseをonにするとカレントディレクトリのdoku.phpを読み込んでくれる、という設定です。

トラックバック - http://d.hatena.ne.jp/wakuteka/20091016

2009-02-05

syou先生の高速化講座

13:57 | syou先生の高速化講座を含むブックマーク syou先生の高速化講座のブックマークコメント

一時頃に待ち合わせて、卒研の目指すところと書いてるプログラムと、統計処理について忌憚のない意見を頂いた。
中心的な話題は、サンプル数が少ないけど次元数の多い対象への繰り返し処理をいかに高速化するか。
んで、以下の事を教えていただいた。

  • 相関係数とかは十分速く書いてあるはずなのでRではもうそんなに速くならない
  • expand.gridで組み合わせを生成できる!
  • 繰り返し処理の関数applyの並列版がある(snowパッケージ)applypar
  • 民族ごとの相関の平均をただ出すのはまずいかも→全部のデータでやればおk
  • 遺伝子の特性を主成分分析して次元圧縮←これやってみたい
    • id:rindai87先生がやってるらしい!次元の呪いについて詳しく聞きたいぜ!

rindai87rindai87 2009/02/08 22:11 何やら召喚されているらしいので、やってきました。

落ち着いたら僕がやってることをまとめてみようかと思います。
ちなみに、僕が扱っているのは発現量データですよ。

トラックバック - http://d.hatena.ne.jp/wakuteka/20090205

2009-02-04

体調戻った

18:52 | 体調戻ったを含むブックマーク 体調戻ったのブックマークコメント

日曜にアキバに行った後から体調を崩しておりましたが、ようやく復活しました。
よかったよかった。


今日は各自の卒研進捗を発表し合う選択授業があって、
「疾患関連遺伝子知りたいのに正常人の発現データだけ見ても意味なくね?」
とか
「マイクロアレイ発現データの相関係数ってそもそもそうやって見るん?」
などという質問が飛び、自分の実験条件の前提がしっかりしてないことに気づかされるなどしました。
その他にも、資料を作っていくうちに「相関係数の2乗平均値でソートするべきでは?」とかアイデアが出てくる。
人に説明しようとする過程で、自分の理解不足が浮かび上がってくるので、こういう場は積極的に参加していきたいですね。
明日もsyou6162にコメントをもらいに行くよていなのので、データを出しておかないと。