2017-01-24 8 views
0

私はrpy2を使ってPythonからDEseq2を実行しようとしています。 デザインマトリックスをどのように渡す必要がありますか? 次のように私のスクリプトは次のとおりです。deseq2からrpy2を実行

from numpy import * 
from numpy.random import multinomial, random 
from rpy2 import robjects 
import rpy2.robjects.numpy2ri 
robjects.numpy2ri.activate() 
from rpy2.robjects.packages import importr 
deseq = importr('DESeq2') 

# Generate some data. 1000 genes, 10 samples 
n = 1000 
probabilities = random(n) 
probabilities /= sum(probabilities) 
data = zeros((n,10), int) 
for i in range(10): 
    data[:,i] = multinomial(1000000, probabilities) 

# Make the data frame 
d = {} 
categories = ('1','2') * 5 
d["key_1"] = robjects.IntVector(categories) 
dataframe = robjects.DataFrame(d) 

# Create the design matrix, and run DESeqDataSetFromMatrix 
design = "~ key_1" # <--- I guess this is wrong 
dds = deseq.DESeqDataSetFromMatrix(countData=data, colData=dataframe,design=design) 

私は取得していますエラーが

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2-2.8.5-py3.6-macosx-10.11-x86_64.egg/rpy2/rinterface/__init__.py:186: RRuntimeWarning: Error: $ operator is invalid for atomic vectors 

warnings.warn(x, RRuntimeWarning) 
Traceback (most recent call last): 
File "testrpy.py", line 23, in <module> 
dds = deseq.DESeqDataSetFromMatrix(countData=data, colData=dataf,design=design) 
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2-2.8.5-py3.6-macosx-10.11-x86_64.egg/rpy2/robjects/functions.py", line 178, in __call__ 
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs) 
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2-2.8.5-py3.6-macosx-10.11-x86_64.egg/rpy2/robjects/functions.py", line 106, in __call__ 
res = super(Function, self).__call__(*new_args, **new_kwargs) 
rpy2.rinterface.RRuntimeError: Error: $ operator is invalid for atomic vectors 

私の推測では、デザインの引数が正しくないということです。 誰かがrse2経由でDEseqを実行している例はありますか?

ありがとうございました。

+0

* 'coldData = dataf' *' dataf'は何ですか?あなたが投稿したコードには定義されていません。 –

+0

申し訳ありません、それは 'dataframe'でなければなりません。コードが修正されました。 –

答えて

1

Ah!

# Create the design matrix, and run DESeqDataSetFromMatrix 
design = "~ key_1" # <--- I guess this is wrong 

designは文字列ですが、私はそれは式でなければならないことを推測:あなたは、ほぼありました。式R.

における言語のオブジェクトはとみている。

from rpy2.robjects import Formula 
design = Formula("~ key_1") 
+0

ありがとう!今それは動作します。 –