为了方便大家学习,我将该文翻译成中文加上一些相关的简单介绍,经验尚浅,还请大家多提意见。
1、R统计分析工具
文中主要利用R做为分析统计工具,软件相关信息见请参考www.r-project.org/。
英文简介:http://cran.r-project.org/doc/manuals/R-intro.pdf
中文简介:http://www.biosino.org/pages/newhtm/r/schtml
2、Bioconductor
Biocondocutor是基于R开发的用于基因组数据分析的软件,详情请参考http://www.bioconductor.org/。
Bioconductor的安装方法:打开R的命令窗口键入如下命令
source (http://www.bioconductor.org/biocLite.R)
biocLite()
3、数据
指南中使用的数据来自于三种急性白血病的基因表达研究,分别是B细胞急性淋巴性白血病(B-ALL),T细胞急性淋巴性白血病(T-ALL)和急性脊髓性白血病(AML)。利用含有6817个人类基因的Affymetrix高密度寡核苷酸阵列(hgu68a)分析38个B-ALL,9 个T-ALL和25个AML肿瘤样品的基因表达水平。
4、数据预处理
1)阈值:100~16,000
2)筛选:除去max/min 5或者(max-min) 500的基因。这里max和min是指mRNA样品中基因的最大和最小密度。
3)以2为底的对数转换
数据文件GolubData.RData包括了基因的表达水平和基因名。筛选后的基因表达水平存储在3571 72的golub矩阵中,行和列分别对应基因和mRAN样品。
5、 练习
有两种方法完成这个练习,对于熟悉R或者S-plus的用户,你可以用自己写的代码完成练习;对于不熟悉R的用户,可以利用tkWkdgets包中的vExplorer功能完成练习。vExplorer功能提供了浏览和执行代码的图形界面。启动R,通过如下代码导入指南:
>install.packages("IMSLAB",contriburl="http://www.biostat.ucsf.edu/jean/software")
> library(IMSLAB)
> vExplorer( )
然后利用打开的窗口选择IMSLAB程序包。
开始
在开始练习前,有一些获得帮助的重要命令和语句需要介绍
> help.start()
> apropos("mean")
> ? mean
> example("mean")
载入数据包
> library(IMSLAB)
> data(GolubData)
聚类
聚类分析是以基因间的相似程度,或者说是基因间的距离为基础的。利用hclust功能聚类白血病mRNA样品。T-ALL,B-ALL和AML样品是否聚类到一起?通过改变hclust中的method参数试用不同的类间距离进行练习。在dist中通过改变method参数试用不同的基因距离进行练习。下面这些问题可以帮助你开始练习。
Q1:利用相关系数和最大类间距离对mRNA样品进行系统聚类分析
> library(mva)
> clust.cor <- hclust(as.dist(1 - cor(golub)), method = "complete")
> plot(clust.cor, cex = 0.6)
Q2:用欧式距离和平均类间距类对mRNA样品进行系统聚类分析
> clust.euclid <- hclust(dist(t(golub)), method = "average")
> plot(clust.euclid, cex = 0.6)
Q3:利用mva包中的heatmap功能,你可以得到聚类分析的图像。但是要注意,这个功能对基因和样品都执行聚类分析,如果基因的数量过大,会导致这个方法运行缓慢,为了说明问题,我们仅选择100个基因为例。
> library(sma)
> golubvar <- apply(golub, 1, var, na.rm = TRUE)
> top100 <- stat.gnames(golubvar, 1:length(golubvar), crit = 100)$gnames
> heatmap(golub[top100, ])
然后我们尝试不同的聚类分裂方法
Q4:利用相关系数作为基因距离对mRNA样品进行Kmeans聚类分析。
> clust.kmeans <- kmeans(as.dist(1 - cor(golub)), 3)
> names(clust.kmeans$cluster) <- colnames(golub)
> clust.kmeans$cluster[1:10]
Q5: 利用cluster包中的PAM功能对mRNA样品进行“Partition Around Medoids”分析
> library(cluster)
> clust.pam <- pam(as.dist(1 - cor(golub)), 3, diss = TRUE)
> clusplot(clust.pam, labels = 3, col.p = clust.pam$clustering)
Q6:利用som包中的自组织映射分析方法(SOM) 对mRNA样品进行聚类分析
Q7:最后,我们在方差的基础上选择前100个基因,执行上面所述的各种聚类分析方法。注意我们在基因的选择过程中没有使用任何同样品有关的信息。stat.gnames 功能能够根据选择的统计量将基因排序,在本例中统计量就是方差。
> golubSub <- golub[top100, ]
> par(mfrow = c(2, 2))
> plot(hclust(as.dist(1 - cor(golubSub)), method = "complete"),
+ cex = 0.6)
> plot(hclust(dist(t(golubSub)), method = "average"), cex = 0.6)
> clust.pam <- pam(as.dist(1 - cor(golubSub)), 3, diss = TRUE)
> clusplot(clust.pam, labels = 3, col.p = clust.pam$clustering)
> par(mfrow = c(1, 1))
|