基因表达中的相关案例与对照
Correlation Case vs Control in gene expression
我有 77 位癌症患者的基因表达数据。我有一套来自患者的血液,一套来自患者的肿瘤,一套来自患者的健康组织:
data1 <- ExpressionBlood
data2 <- ExpressionCancerTissue
data3 <- ExpressionHealtyTissue
我想进行一项分析,以确定肿瘤组织中的表达是否与我所有基因在血液中的表达相关。执行此操作的最佳方法是什么?
如果您熟悉 python,我会使用 pandas。它使用 "DataFrames" 类似于 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至少朝着正确的方向前进。
编辑
如果您想使用学生 T 的 log-fold 更改,您可以使用 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']
我有 77 位癌症患者的基因表达数据。我有一套来自患者的血液,一套来自患者的肿瘤,一套来自患者的健康组织:
data1 <- ExpressionBlood
data2 <- ExpressionCancerTissue
data3 <- ExpressionHealtyTissue
我想进行一项分析,以确定肿瘤组织中的表达是否与我所有基因在血液中的表达相关。执行此操作的最佳方法是什么?
如果您熟悉 python,我会使用 pandas。它使用 "DataFrames" 类似于 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至少朝着正确的方向前进。
编辑
如果您想使用学生 T 的 log-fold 更改,您可以使用 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']