我有77位癌症患者的基因表达数据。我有一套来自病人的血液,一套来自病人的肿瘤,一套来自病人的健康组织。
data1 <- ExpressionBlood
data2 <- ExpressionCancerTissue
data3 <- ExpressionHealtyTissue我想做一个硒的分析,如果肿瘤组织中的表达与我所有基因在血液中的表达相关。做这件事最好的方法是什么?
发布于 2016-01-15 23:38:47
如果您熟悉python,我将使用熊猫。它使用的"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至少朝正确的方向移动。
编辑
如果要使用学生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']https://stackoverflow.com/questions/34809364
复制相似问题