基因表达中的相关病例与对照

时间:2016-01-15 10:47:09

标签: r bioinformatics correlation

我有来自77名癌症患者的基因表达数据。我有一组来自患者的血液,一组来自患者肿瘤,一组来自患者的健康组织:

data1 <- ExpressionBlood
data2 <- ExpressionCancerTissue
data3 <- ExpressionHealtyTissue

如果肿瘤组织中的表达与我所有基因的血液表达相关,我想进行分析。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

如果您熟悉python我会使用pandas。它使用&#34; DataFrames&#34;与R类似,因此您可以将概念应用于R。

假设您的data1是一个格式如下的分隔文件:

GeneName | ExpValue |
gene1       300.0
gene2       250.0

然后,您可以将每种数据类型转换为DataFrame

dfblood = pd.read_csv('path/to/data1',delimiter='\t')
dftissue = pd.read_csv('path/to/data2',delimiter='\t')
dftumor = pd.read_csv('path/to/data3',delimiter='\t')

现在merge将DataFrame合并为一个主人df

dftmp = pd.merge(dfblood,dftissue,on='GeneName',how='inner')
df = pd.merge(dftmp,dftumor,on='GeneName',how='inner')

重命名列,请注意确保正确的顺序。

df.columns = ['GeneName','blood','tissue','tumor']

现在,您可以使用简单的命令对数据进行标准化(如果还没有)。

df = df.set_index('GeneName') # allows you to perform computations on the entire dataset
df_norm = (df - df.mean()) / (df.max() - df.min())

您可以df_norm.corr()生成以下结果。但此时,如果需要,您可以使用numpy执行更复杂的计算。

          blood      tissue       tumor
blood   1.000000    0.395160    0.581629
tissue  0.395160    1.000000    0.840973
tumor   0.581629    0.840973    1.000000
HTH至少朝着正确的方向前进。

修改

如果您想使用Student T的对数倍更改,您可以使用numpy.log

计算原始数据的日志
import numpy as np

df[['blood','tissue','tumor']] = df[['blood','tissue','tumor']]+1
# +1 to avoid taking the log of 0
df_log = np.log(df[['blood','tissue','tumor']])

获取&#39;日志&#39;对每个基因进行折叠更改,这会将新列附加到df_log DataFrame。

df_log['logFCBloodTumor'] = df_log['blood'] - df_log['tumor']
df_log['logFCBloodTissue'] = df_log['blood'] - df_log['tissue']