In [1]:
from __future__ import division
import os, os.path
from pandas import *
import numpy as np
import csv
from itertools import groupby
from collections import defaultdict
from copy import deepcopy
from types import TupleType
import matplotlib.pyplot as plt

os.chdir('/home/will/HIVSystemsBio/NewCytokineAnalysis/')

In [2]:
cyto_data = read_csv('CytoRawData.csv', sep = '\t')

In [6]:
import rpy2.robjects as robjects
import pandas.rpy.common as com

In [15]:
r_dataframe = com.convert_to_r_dataframe(cyto_data)



robjects.r("""f <- function(r) {
            print(names(r))
        }      
        """)


Out[15]:
<SignatureTranslatedFunction - Python:0x390c710 / R:0x50ee200>

In [16]:
robjects.r['f'](r_dataframe)


 [1] "Patient.ID" "VisitNum"   "VEGF"       "IL.1beta"   "G.CSF"     
 [6] "EGF"        "IL.10"      "HGF"        "FGF.basic"  "IFN.alpha" 
[11] "IL.6"       "IL.12"      "Rantes"     "Eotaxin"    "IL.13"     
[16] "IL.15"      "IL.17"      "MIP.1alpha" "GM.CSF"     "MIP.1beta" 
[21] "MCP.1"      "IL.5"       "IFN.gamma"  "TNF.alpha"  "IL.RA"     
[26] "IL.2"       "IL.7"       "IP.10"      "IL.2R"      "MIG"       
[31] "IL.4"       "IL.8"      
Out[16]:
<StrVector - Python:0x3945440 / R:0x4b378a0>
['Pati..., 'Visi..., 'VEGF', ..., 'MIG', 'IL.4', 'IL.8']

In [17]:
robjects.r('require(preprocessCore)')


Loading required package: preprocessCore
Out[17]:
<Vector - Python:0x3945830 / R:0x54fb778>
[       1]

In [23]:
robjects.r("""quantnorm <- function(inputmatrix)
{
y<-normalize.quantiles(inputmatrix)
return(y)
}""" )


Out[23]:
<SignatureTranslatedFunction - Python:0x3941680 / R:0x5130618>

In [31]:
small_dataframe = com.convert_to_r_matrix(cyto_data[['VEGF', 'HGF', 'Rantes']].T)

output = robjects.r['quantnorm'](small_dataframe)

In [33]:
normed = com.convert_robj(output).T

In [41]:
def quantile_norm_with_R(input_df):
    
    R_norm_func = robjects.r("""quantnorm <- function(inputmatrix)
{
y<-normalize.quantiles(inputmatrix)
return(y)
}""" )
    
    R_matrix = com.convert_to_r_matrix(input_df)
    print input_df
    normed_matrix = R_norm_func(R_matrix)
    normed_df = com.convert_robj(normed_matrix)
    print normed_df
    normed_df.index = input_df.index
    normed_df.columns = input_df.columns
    
    return normed_df

In [55]:
norm_cyto_data = read_csv('CytoRawDataNorm.csv', sep = '\t')
known_pat_data = read_csv('CytoPatData.csv', index_col=[0,1], sep = '\t')

agg_cyto_data = norm_cyto_data.groupby(['Patient ID', 'VisitNum']).agg('median')
pat_cyto_data = merge(known_pat_data, agg_cyto_data,
                       left_index = True, right_index = True,
                        how = 'outer')

cytos = sorted(['IL.8','VEGF','IL.1beta',
        'G.CSF','EGF','IL.10','HGF',
        'FGF.basic','IFN.alpha','IL.6',
        'IL.12','Rantes','Eotaxin',
        'GM.CSF','MIP.1beta',
        'MCP.1','IL.5','IL.13', 'IFN.gamma','TNF.alpha',
        'IL.RA','IL.2','IL.7','IP.10',
        'IL.2R','MIG','IL.4','IL.15',
        'IL.17','MIP.1alpha'])

In [58]:
robjects.r('require(nlme)')


Loading required package: nlme
Out[58]:
<Vector - Python:0x5fe7290 / R:0x4d3f9f8>
[       1]

In [108]:
tmp = pat_cyto_data[['Gender', 'Age', 'Race', 'IL.12']]
tmp_R_df = com.convert_to_r_dataframe(tmp.reset_index())

In [109]:
relevel_fun = robjects.r("""relevel_obj <- function(inputframe, column, ref)
{
print(inputframe[,column])

inputframe[,column] <- relevel(factor(inputframe[,column]), ref = ref)
return(inputframe)
}""")

In [110]:
tmp_R_df = relevel_fun(tmp_R_df, 'Race', 'White')
tmp_R_df = relevel_fun(tmp_R_df, 'Gender', 'M')


  [1] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
  [6] "Black/AA"   "White"      "Black/AA"   "Black/AA"   "Black/AA"  
 [11] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [16] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [21] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [26] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [31] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [36] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [41] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [46] "Multi-race" "White"      "Black/AA"   "White"      "Black/AA"  
 [51] "White"      "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [56] "Black/AA"   "White"      "Black/AA"   "Black/AA"   "Black/AA"  
 [61] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [66] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [71] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [76] "Black/AA"   "White"      "Black/AA"   "Black/AA"   "Black/AA"  
 [81] "Black/AA"   "Black/AA"   "Multi-race" "Black/AA"   "Black/AA"  
 [86] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
 [91] "Black/AA"   "Black/AA"   "Black/AA"   "White"      "Black/AA"  
 [96] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
[101] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
[106] "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"   "Black/AA"  
[111] "Black/AA"   "Black/AA"   "White"     
  [1] "F" "M" "M" "M" "M" "F" "F" "M" "M" "M" "F" "F" "F" "M" "M" "M" "M" "M"
 [19] "M" "F" "F" "M" "F" "F" "M" "M" "M" "M" "F" "M" "F" "F" "M" "F" "F" "F"
 [37] "F" "F" "F" "F" "M" "M" "M" "F" "M" "M" "M" "M" "M" "M" "M" "F" "M" "M"
 [55] "M" "F" "M" "M" "M" "M" "F" "M" "M" "F" "F" "F" "M" "F" "M" "M" "M" "M"
 [73] "M" "F" "F" "M" "F" "F" "F" "M" "M" "M" "M" "M" "M" "F" "M" "F" "M" "M"
 [91] "M" "F" "F" "F" "F" "M" "M" "F" "M" "F" "M" "F" "M" "F" "M" "F" "F" "M"
[109] "M" "F" "M" "M" "M"

In [148]:
str(tmp_R_df.rx2('Age').nlevels)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-148-480beaa1927c> in <module>()
----> 1 str(tmp_R_df.rx2('Age').nlevels)

AttributeError: 'IntVector' object has no attribute 'nlevels'

In [138]:
lme_model_func = robjects.r("""lmefunc <- function(eqn, data, reqn){
lm1 <- lme(eqn, random = reqn, data = data, na.action = na.omit)
return(summary(lm1))
}""")

In [139]:
from rpy2.robjects import Formula

eqn = Formula('IL.12 ~ as.factor(Race) + as.factor(Gender) + Age')
rand_eqn = Formula('~1|Patient.ID')

summary = lme_model_func(eqn, tmp_R_df, rand_eqn)

In [150]:
names = summary.names

In [160]:
tdict = {}
for name in names:
    try:
        tdict[name] = com.convert_robj(summary.rx2(name))
    except:
        print name
    #except Exception:
    #    print name


dims
call
terms

In [162]:
tdict['tTable']


Out[162]:
Value Std.Error DF t-value p-value
(Intercept) -278.049580 560.686041 108 -0.495910 0.620966
as.factor(Race)Black/AA 292.250070 350.485533 108 0.833843 0.406210
as.factor(Race)Multi-race -370.407781 772.145314 108 -0.479713 0.632402
as.factor(Gender)F -207.731106 184.613891 108 -1.125219 0.262991
Age 14.744496 9.585446 108 1.538217 0.126920

In [159]:
name


Out[159]:
'call'

In [ ]: