मैं एक data.frame आर में यह डेटा का एक बहुत कुछ शामिल है के लिए एक data.frame परिवर्तित: जीन अभिव्यक्ति के स्तर को कई (125) सरणियों से। मुझे पायथन में डेटा चाहिए, ज्यादातर आर में मेरी अक्षमता के कारण और तथ्य यह है कि यह 30 मिनट का काम माना जाता था।rpy2: एक numpy सरणी
मैं निम्नलिखित कोड काम करना चाहते हैं। इस कोड को समझने के लिए, पता है कि परिवर्तनीय path
में मेरे डेटा सेट का पूरा पथ है, जो लोड होने पर मुझे immgen
नामक एक चर देता है। यह जान लें कि immgen
एक वस्तु (एक BioConductor ExpressionSet
वस्तु) और कहा कि exprs(immgen)
रिटर्न 125 कॉलम (प्रयोगों) और पंक्तियों की हजारों (नाम जीन) के साथ एक डेटा फ्रेम है।
import numpy as np
import rpy2.robjects as robjects
# ... some code to build path
robjects.r("load('%s')"%path) # loads immgen
e = robjects.r['data.frame']("exprs(immgen)")
expression_data = np.array(e)
इस कोड को चलाता है (बस मामले में यह स्पष्ट नहीं है, इस अजगर कोड, robjects.r का उपयोग कर आर कोड कॉल करने के लिए है), लेकिन expression_data
बस array([[1]])
है।
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
लेकिन तब फिर कौन जानता है:
मैं जैसी चीजों की वजह से बहुत यकीन है कि e
exprs()
द्वारा उत्पन्न डेटा फ्रेम का प्रतिनिधित्व नहीं करता है? यहां तक कि यदि e
ने मेरे डेटा.फ्रेम का प्रतिनिधित्व किया है, तो यह सीधे सरणी में परिवर्तित नहीं होता है, यह पर्याप्त होगा - एक डेटा फ्रेम में सरणी (राउनम्स और उपनाम) से अधिक है और इसलिए शायद यह आसान नहीं होना चाहिए । हालांकि मैं अभी भी रूपांतरण करने के लिए काम नहीं कर सकता। दस्तावेज मेरे लिए थोड़ा सा झुकाव है, हालांकि दस्तावेज़ों में शीर्षकों की मेरी सीमित समझ का तात्पर्य है कि यह संभव होना चाहिए।
कोई भी विचार?
argh आप सही हैं। यह एक मैट्रिक्स है। यह शानदार है, धन्यवाद। बस इतना समाधान स्पष्ट है, मैं कर सकता हूं: ई = एनपी .array (robjects.r ('exprs (immgen)') और अब ई मेरे सभी फ़्लोटिंग पॉइंट नंबरों के साथ एक numpy सरणी है। धन्यवाद लॉरेन! मुझे बायोसी rpy2 सामान में दिलचस्पी है, लेकिन इसे प्राप्त नहीं कर सकता स्थापित करने के लिए। हालांकि समर्थन सूची के लिए एक सवाल शायद ... –