0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

獣医師が必死にバイオインフォマティクスPythonによる実践レシピをwin10で動かす(その3)

Posted at

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では記述されるのだろうか?
誰か知っている人教えてください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?