Repository navigation
Expand file tree
/
Copy pathconvert.py
More file actions
79 lines (56 loc) · 2.11 KB
/
Copy pathconvert.py
File metadata and controls
79 lines (56 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
"""Convert an expression dataset from biological experiment to pandas dataframe"""
__author__ = "Aneesh Panoli"
__copyright__ = "MIT License"
import seaborn as sns
import rpy2
from rpy2.robjects import pandas2ri
from rpy2.robjects import r
import rpy2.robjects as robjects
import urllib.request as ur
import pandas as pd
from rpy2.robjects.packages import importr
import numpy as np
#supresses RRuntime import warnings
import warnings
from rpy2.rinterface import RRuntimeWarning
warnings.filterwarnings("ignore", category=RRuntimeWarning)
#activate converter
pandas2ri.activate()
class Initialize:
def __init__(self):
self.R = robjects.r
self.load_r()
def load_r(self):
# do the following _only the first time_, to install the package Biobase
print("Loading R packages...")
base = importr('base')
base.source("http://www.bioconductor.org/biocLite.R")
biocinstaller = importr("BiocInstaller")
# biocinstaller.biocLite("IRanges", "suppressUpdates=TRUE")
biocinstaller.biocLite("Biobase", suppressUpdates=True)
# load the installed package "Biobase"
biobase = importr("Biobase")
print("loading complete!")
def download_rdata(self, url_name, dataset_name = 'R_data_set.RData'):
ur.urlretrieve(url_name, dataset_name)
print("Download complete! File saved as {}".format(dataset_name))
return dataset_name
def load_rdata_as_eset(self, file_name):
'''loads and returns RData to the R environment
as an eSet'''
data = self.R['load'](file_name)
eset_name = data[0]
return self.R[eset_name]
def get_table_names(self, eset_name):
'''returns table names in the eset'''
print(tuple(eset_name.slots.keys()))
def get_pd_dataframe(self, eset_name, fn_name):
'''
table names will give you hints on which function to use
look up the package docs for fn_names
'''
# data = eset_name.slots[table_name]
r_frame = self.R[fn_name](eset_name) #fn_name is a function from biobase package
r_to_pd_frame = pandas2ri.ri2py(r_frame)
return pd.DataFrame(data=r_to_pd_frame)