[英]Correlation Case vs Control in gene expression
我有77名癌症患者的基因表達數據。 我有一組來自患者的血液,一組來自患者腫瘤,一組來自患者的健康組織:
data1 <- ExpressionBlood
data2 <- ExpressionCancerTissue
data3 <- ExpressionHealtyTissue
如果腫瘤組織中的表達與我所有基因的血液表達相關,我想進行分析。 做這個的最好方式是什么?
如果你熟悉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 merge
為一個主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
更改,可以使用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']])
要獲得每個基因的“日志”倍數更改,這會將新列附加到您的df_log DataFrame。
df_log['logFCBloodTumor'] = df_log['blood'] - df_log['tumor']
df_log['logFCBloodTissue'] = df_log['blood'] - df_log['tissue']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.