rpy2によるRの実行(つづき)
ようやく本題に入れる。
Jupyter notebookのマジックコマンドを使ってRを実行する。
from rpy2.robjects import r
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects
import rpy2.robjects.lib.ggplot2 as ggplot2
%load_ext rpy2.ipython
%R seq.data <- read.delim('sequence.index', header=TRUE, stringsAsFactors=FALSE)
%R seq.data$READ_COUNT <- as.integer(seq.data$READ_COUNT)
%R seq.data$BASE_COUNT <- as.integer(seq.data$BASE_COUNT)
my_col = list(seq_data.columns).index("CENTER_NAME")
seq_data['CENTER_NAME'] = seq_data['CENTER_NAME'].apply(lambda x: x.upper())
%load_ext rpy2.ipython
でなんか怒られる
C:\Users\mokim\anaconda3\envs\win_bioinfo\lib\site-packages\rpy2-2.9.0-py3.6-win-amd64.egg\rpy2\robjects\pandas2ri.py:14: FutureWarning: pandas.core.index is deprecated and will be removed in a future version. The public classes are available in the top-level namespace. from pandas.core.index import Index as PandasIndex
要約するとこのpandasの使い方は良くないから、良い方にしたらというサジェストらしい
知らんがな、執筆者に言ってくれと思いながら華麗にスルー
この%load_ext rpy2.ipython
を宣言することで%R
と記載するとその一行はR側のコードして解釈されるみたい
続いて実行。
%R -i seq_data
%R print(colnames(seq_data))
ここの-i
はマジックシステムにPython側の変数をR側にコピーすることを示しているらしい
本格的にデータをグラフィック化していく
%%R
seq_data <- seq_data[seq_data$WITHDRAWN==0, ]
seq_data$POPULATION <- as.factor(seq_data$POPULATION)
bar <- ggplot(seq_data) + aes(factor(CENTER_NAME)) + geom_bar() + theme(axis.text.x = element_text(angle = 90, hjust = 1))
seq_data$POPULATION <- as.factor(seq_data$POPULATION)
yri_ceu <- seq_data[seq_data$POPULATION %in% c("YRI", "CEU") & seq_data$BASE_COUNT < 2E9 & seq_data$READ_COUNT < 3E7, ]
scatter <- ggplot(yri_ceu, aes(x=BASE_COUNT, y=READ_COUNT, col=factor(ANALYSIS_GROUP), shape=POPULATION)) + geom_point()
library(gridExtra)
library(grid)
g <- grid.arrange(bar, scatter, ncol=1)
png('fig.png')
plot(g)
dev.off()
毎回%R
と書くのしんどいと思っていたら、最初に%%R
と宣言するとそこの終わりまでRコードとして認識されるらしい
ただし、%load_ext rpy2.ipython
の宣言後には%%R
は効力を持たなかった
Jupyter notebookの仕様?
宣言が同一空間内にあることによる記述の混乱を避けるため?
ちなみにここで画像の出力をするための原著のコードは
png('fig.png')
g
dev.off()
となっているが、おかしい
グラフィックエリアに記述しないと画像がpngの中に保存されないはず。
もしかしてMac, Linuxでは記述されるのだろうか?
誰か知っている人教えてください