【问题标题】:Correlation Case vs Control in gene expression基因表达中的相关案例与对照
【发布时间】:2016-01-15 10:47:09
【问题描述】:

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

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

我想进行分析,以确定肿瘤组织中的表达是否与我所有基因在血液中的表达相关。最好的方法是什么?

【问题讨论】:

  • 如何计算对数倍数变化?

标签: r bioinformatics correlation


【解决方案1】:

如果您熟悉 python,我会使用pandas。它使用与 R 类似的“DataFrames”,因此您可以将这个概念应用到 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']])

要获取每个基因的“log”倍数变化,这会将新列附加到您的 df_log DataFrame。

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

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 2016-10-09
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多