OL基因型频率的计算方法的计算

作者:徐徐 来源: 发布时间:
选择字号:小 中
50根烟让每个肺细胞产生1个DNA突变
图片来源:Mito Images/REX/Shutterstock
本报讯 如今,人们能精确地计算出有多少同癌症相关的DNA突变随着时间的流逝在吸烟者的器官内累积。
一项最新分析显示,平均而言,每吸50根烟,每个肺细胞便会产生1个DNA突变。对于连续1年里每天抽掉1包(20根)烟的人来说,其每个肺细胞、喉部细胞、咽部细胞、膀胱细胞和肾脏细胞分别会产生150个、97个、39个、18个和6个突变。流行病学研究此前曾将吸烟同至少17种癌症联系起来,但这是研究人员首次量化了分子损伤对DNA造成的影响。相关成果日前发表于《科学》杂志。
美国新墨西哥州洛斯阿拉莫斯国家实验室的Ludmil Alexandrov和同事通过比较2500名吸烟者和1000名非吸烟者的肿瘤DNA获得了这一发现。这使他们得以辨别出哪些突变同吸烟存在关联。
理论上,每个DNA突变都可能触发一连串导致细胞癌变的基因损害。然而,人们仍不清楚某个同吸烟相关的DNA突变转变成癌症的可能性有多大,或者哪些突变类型有可能变得更加恶性。&这便是我们目前正在从事的研究。&Alexandrov介绍说。
他同时表示,尽管一些吸烟者的体内累积了上千个突变,但他们从未患上癌症。不过,这完全归功于运气。&抽烟就像玩俄罗斯轮盘赌游戏:你玩的次数越多,突变影响到好的基因以及你患上癌症的几率便会越大。不过,总是有人抽很多烟但突变并未影响到好的基因。&
该团队希望,他们的发现将阻止人们抽太多烟并且揭穿社交性吸烟无害的神话。Alexandrov表示,每根烟都可能引发基因突变。与此同时,戒烟不会逆转这些突变&&它们会在DNA上留下永久性的&伤疤&。不过,戒烟能预防产生更多突变的风险。(徐徐)
《中国科学报》 ( 第2版
&打印& 发E-mail给:&
以下评论只代表网友个人观点,不代表科学网观点。&
目前已有0条评论科研笔记(6)
library(affy)
library(tcltk)
filters&-matrix(c(&CEL file&, &.[Cc][Ee][Ll]&, &All&,&.*&), ncol = 2,byrow = T)
cel.files &-tk_choose.files(caption = &Select CELs&, multi =TRUE,filters= filters, index = 1)
data.raw&-ReadAffy(filenames = cel.files)
n.cel &-length(cel.files)
sampleNames(data.raw)
==============================================
#生成0h,1h,24h,7d四个值依次重复两次所组成的数列,数列命名为treatment
pData(data.raw)
#指针pData函数读取文件
==============================================
1、计算基因表达量
eset.rma &-rma(data.raw)
eset.mas5&-mas5(data.raw)
%%注意rma的eset结果是经过对数变换的,而mas5的eset结果是原始信号强度。虽然表达量是用对数变换的信号值表示的,但是有些计算过程要用到未经变换的原始值,应该把它们都计算出来:
emat.rma.nologs&-2^emat.rma.log2
emat.mas5.log2 &-log2(emat.mas5.nologs)
results.rma&-data.frame((emat.rma.log2[,c(1,3,5,7)] + emat.rma.log2[,c(2,4,6,8)])/2)
#计算平均值,并转换为数据框格式#计算表达量差异倍数
subset.logic &-results.rma$fc.7d&0
subset.data &- results.rma[subset.logic,]
#要注意的是逻辑向量的长度要和相应维度的数据长度一致,逻辑向量中为TRUE的就保留,FALSE的就丢弃。
2、选取表达基因
%选取“表达”基因的方法常见的有两种,一是使用genefilter软件包,另外一种是调用affy包的mas5calls()函数。使用 genefilter需要设定筛选阈值,不同的人可能有不同的标准。mas5calls方法使用探针水平数据(AffyBatch类型数据)进行处理,一般使用没经过预处理的芯片数据通用性强些,其他参数用默认就可以。
data.mas5calls &-mas5calls(data.raw)
eset.mas5calls&-exprs(data.mas5calls)
#继续用exprs计算“表达”量,得到的数据只有三个值P/M/A。对于这三个值的具体解释可以用?mas5calls查看帮助。P为present,A为absent,M为marginal(临界值)。
#把至少一个芯片中有表达的基因选出来!!!!
present.probes &-names(AP[AP])
results.present &- results.rma[present.probes,]
#present.probes是名称向量,用它进行数据子集提取。
3、获取差异表达基因
%生物学数据分析时的&差异&应该有两个意思,一是统计学上的差异,另外一个是生物学上的差异。一个基因在两个条件下的表达量分别有3个测量值:99,100,101 和 102,103,104。统计上两种条件下的基因表达数值是有差异的,后者比前者表达量要大。但生物学上有意义吗?未必。按平均值计算表达变化上升了3%,能产生什么样的生物学效应?这得看是什么基因了。所以差异表达基因的选取一般设置至少两个阈值:基因表达变化量和统计显著性量度(p值、q值等)。
3.1、t-测验
%经常使用的筛选阈值是表达量变化超过2倍,即|log2(fc)|&=log(2)。
==================================================
apply(abs(results.present[,5:7]),2, max)
%apply是一个很有用的函数,它对数据按某个维度批量应用一个函数进行计算。第一个参数为向量或矩阵(或者是能转成向量或矩阵的数据,如数据框),第三个参数表示要使用的函数,第二个参数为应用的维度。上面语句的意思是对数据 abs(results.present[,5:7]) 按列(第二维)使用统计函数max(计算最大值)。表达变化超过2倍的基因共有842个:
===========================================
## [1] 842, 选出这842个基因:
results.st &- results.present[abs(results.present$fc.7d)&=log2(2),]
sel.genes &- row.names(results.st)
, 1,function(x){t.test(x[1:2], x[7:8])$p.value})
results.st$p.value &- p.value
results.st &- results.st[, c(1,4,7,8)]
results.st &- results.st[p.value&0.05,]
head(results.st, 2)
## & & & & & & &S1 & &S7&fc.7d p.value
## 245042_at 8.153 7.021 -1.133 0.01004
## 245088_at 7.041 5.419 -1.622 0.03381
## t测验,并选出p&0.05的差异表达基因:
3.2 SAM(Significance Analysis of Microarrays)
library(BiocInstaller)
biocLite(&samr&)
library(samr)
samfit &- SAM(emat.rma.nologs[present.probes,c(1,2,7,8)],c(1,1,2,2),&resp.type=&Twoclass unpaired&, genenames=present.probes)
SAM函数返回值一个列表结构,可以自己用?SAM看看。差异表达基因的数据在siggenes.table中,也是一个列表结构:
str(samfit$siggenes.table)
%上调基因在siggenes.table的genes.up中,下调基因在genes.lo中。从上面的数据结构显示还可以看到差异表达基因的数量: ngenes.up和ngenes.lo。提取差异表达基因数据:
results.sam&-data.frame(rbind(samfit$siggenes.table$genes.up,samfit$siggenes.table$genes.lo),
&row.names=1, stringsAsFactors=FALSE)
for(i in 1:ncol(results.sam)) results.sam[,i] &- as.numeric(results.sam[,i])
head(results.sam, 2)
3.3、Wilcoxon's signed-rank test
%这个方法发表在 Liu, W.-m. etal, Analysis of high density expression microarrays with signed-rank callalgorithms. Bioinformatics, 93-1599。R软件包simpleaffy的detection.p.val函数有实现,可以通过parison函数调用:
library(simpleaffy)
#注意下面语句中的数据顺序
sa.fit &- parison(eset.rma, &treatment&,c(&7d&, &0h&))
%parison返回的数据为simpleaffy自定义的&PairComp&类型,提取数据要用它专门的函数:平均值用means函数获得,变化倍数(log2)用fc函数获得,t测验的p值用tt函数获得:
results.sa &- data.frame(means(sa.fit), fc(sa.fit), tt(sa.fit))
#选择有表达的基因
results.sa &- results.sa[present.probes,]
head(results.sa, 2)
## & & & & & & X7d & X0h fc.sa.fit.tt.sa.fit.
## 244901_at 4.047 4.203 & &-0.1562 & &0.43982
## 244902_at 3.938 4.295 & &-0.3570 & &0.05824
应用表达倍数筛选得到表达倍数超过2倍的基因数量有862个,应用p值筛选后得到562个差异表达基因:
results.sa &- results.sa[abs(results.sa$fold.change)&=log2(2), ];nrow(results.sa)
## [1] 862
results.sa &- results.sa[results.sa$p.val&0.05,]; nrow(results.sa)
## [1] 562
3.4、Moderated Tstatistic——经验贝叶斯
%这种方法在R软件包limma里面实现得最好。limma最初主要用于双色(双通道)芯片的处理,现在不仅支持单色芯片处理,新版还添加了对RNAseq数据的支持,很值得学习使用。安装方法同前面其他Bioconductor软件包的安装。载入limm软件包后可以用limmaUsersGuide()函数获取pdf格式的帮助文档。limma需要先产生一个design矩阵,用于描述RNA样品:
library(limma)
design &- model.matrix(~ 0 + treatment)
colnames(design) &- c(&C0h&, &T1h&, &T24h&,&T7d&)
## & C0h T1h T24h T7d
## 1 & 1 & 0 & &0 & 0
## 2 & 1 & 0 & &0 & 0
## 3 & 0 & 1 & &0 & 0
## 4 & 0 & 1 & &0 & 0
## 5 & 0 & 0 & &1 & 0
## 6 & 0 & 0 & &1 & 0
## 7 & 0 & 0 & &0 & 1
## 8 & 0 & 0 & &0 & 1
##可以看到:矩阵的每一行代表一张芯片,每一列代表一种RNA来源(或处理)。此外,你可能还需要另外一个矩阵,用来说明你要进行哪些样品间的对比分析:
contrast.matrix &- makeContrasts(T1h-C0h, T24h-C0h, T7d-C0h, levels=design)
contrast.matrix
## & & & Contrasts
## Levels T1h - C0h T24h - C0h T7d - C0h
## & C0h & & & & -1 & & & & -1& & & &-1
## & T1h & & & & &1 & & & &&0 & & & & 0
## & T24h & & & & 0 & & & &&1 & & & & 0
## & T7d & & & & &0 & & & &&0 & & & & 1
fit &- lmFit(eset.rma[present.probes,], design)
fit1 &- contrasts.fit(fit, contrast.matrix)
fit2 &- eBayes(fit1)
#首先进行线性模型拟合,根据对比模型进行差值计算,最后是贝叶斯检验
先统计一下数量。可以看到:对于T7d-C0h比较组(coef=3),表达变化超过2倍(lfc参数)的基因数为842个,而变化超过2倍、p&0.05的基因总数为740个:
nrow(topTable(fit2, coef=3, adjust.method=&fdr&, lfc=1,number=30000))
## [1] 842
nrow(topTable(fit2, coef=3, adjust.method=&fdr&, p.value=0.05, lfc=1,number=30000))
## [1] 740
##把toTable函数的返回结果存到其他变量就可以了,它是数据框类型数据,可以用write或write.csv函数保存到文件:
results.lim &- topTable(fit2, coef=3, adjust.method=&fdr&,p.value=0.05, lfc=1, number=30000)
%为什么以上几种方法仅用表达倍数(2倍)筛选得到的数字不大一样?limma和直接计算的结果都是842个,而simpleaffy和SAM为862/861个。这是对eset信号值取对数和求平均值的先后导致的,limma先取对数再求平均值,而simpleaffy和SAM是先求平均值再取对数。
3.5 其他方法:
如Rank products方法,在R软件包RankProd里实现,方法文献为:Breitling R, Armengaud P, Amtmann A, etal. Rank products: a simple, yet powerful, new method to detect differentiallyregulated genes in replicated microarray experiments[J]. FEBS letters, ): 83-92.
最后我们保存部分数据备下次使用:
#所有表达基因的名称
write(present.probes, &genes.expressed.txt&)
#处理7天的差异表达基因
write.csv(results.lim, &results.lim.7d.csv&)
#emat.rma.log2
write.csv(emat.rma.log2[present.probes,], &emat.rma.log2.csv&)
如果要全部结果:
results.lim.all &- topTable(fit2, coef=1:3, adjust.method=&fdr&,p.value=1, lfc=0, number=30000)
## 仅保存logFC供后面的分析使用
results.lim.all &- results.lim.all[, 1:3]
colnames(results.lim.all) &- c('T1h', 'T24h', 'T7d')
head(results.lim.all, 3)
## & & & & & & & &T1h &T24h &T7d
## 254818_at &0. 6.215
## 245998_at -0. 2.778
## 265119_at -0. 4.380
write.csv(results.lim.all, 'results.lim.all.csv')
4、Session Info
sessionInfo()
## R version 3.1.0 ()
## Platform: x86_64-pc-linux-gnu (64-bit)
## locale:
## &[1] LC_CTYPE=zh_CN.UTF-8 & & & LC_NUMERIC=C && & & & & &
## &[3] LC_TIME=zh_CN.UTF-8 & & &&LC_COLLATE=zh_CN.UTF-8 & &
## &[5] LC_MONETARY=zh_CN.UTF-8 & &LC_MESSAGES=zh_CN.UTF-8&&
## &[7] LC_PAPER=zh_CN.UTF-8 & & & LC_NAME=C & && & & & & &&
## &[9] LC_ADDRESS=C & & & & & & &LC_TELEPHONE=C & & & & & &
## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C & &&&
## attached base packages:
## [1] parallel &tcltk & & stats & & graphics &grDevicesutils & & datasets&
## [8] methods & base & &&
## other attached packages:
## &[1] limma_3.21.1 & & & & simpleaffy_2.41.0 &&gcrma_2.37.0 & & & &
## &[4] genefilter_1.47.0 & &samr_2.0 & & && & & matrixStats_0.8.14 &
## &[7] impute_1.39.0 & & & &ath1121501cdf_2.14.0affy_1.43.0 & & & &&
## [10] Biobase_2.25.0 & & & BiocGenerics_0.11.0&zblog_0.1.0 & & & &&
## [13] knitr_1.5 & & & & &&
## loaded via a namespace (and not attached):
## &[1] affyio_1.33.0 & & & & annotate_1.43.2 && & AnnotationDbi_1.27.3&
## &[4] BiocInstaller_1.15.2 &Biostrings_2.33.3 & &DBI_0.2-7 & & & & & &
## &[7] evaluate_0.5.3 & & & &formatR_0.10 && & & &GenomeInfoDb_1.1.2 &&
## [10] highr_0.3 & & & & & & IRanges_1.99.2& & & &preprocessCore_1.27.0
## [13] R.methodsS3_1.6.1 & & RSQLite_0.11.4 & & &&S4Vectors_0.0.2 & & &
## [16] splines_3.1.0 & & & & stats4_3.1.0 & && & &stringr_0.6.2 & & & &
## [19] survival_2.37-7 & & & tools_3.1.0 & & && & XML_3.98-1.1 & & & &&
## [22] xtable_1.7-3 & & & & &XVector_0.5.3 && & & zlibbioc_1.11.1实验思路:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3109次
排名:千里之外
(1)(1)(1)(1)(1)(3)基因与疾病研究的样本量计算方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基因与疾病研究的样本量计算方法
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢理解基因组数据分析之差异比较篇
已有 1508 次阅读
|个人分类:|系统分类:|关键词:基因组 数据分析 t检验
先从最简单的例子来,假设我们比较两组人的平均身高该如何做?我们要对两组人采样,采样数最好一样,然后测量每个样本的身高,记录后分组计算均值与方差。如果目的是比较均值,那么首先要考虑使用的方法,如果是t检验,那么先对均值的方差进行F检验来确定是否需要等方差t检验,然后就是双样本t检验,结果显著(p&0.05)我们就说这两组人的身高有显著性差异(无差异就是0),给出两组身高的均值与差异的置信区间,我们的数据分析就完了。上述过程槽点略多,不吐槽了,如果你在实验室一线至少要掌握上面那个实验设计与数据分析的思路来寻找差异,多数科学发现的本质就是寻找未知的差异。下面是一组R代码,模拟了两组数据均值的对比,读懂输出的结果,另外注意R默认的t检验是不等方差的。# 模拟生成两组数据group1 &- rnorm(100,100,10)group2 &- rnorm(100,130,13)# 进行t检验t.test(group1,group2)# 结果#Welch Two Sample t-test##data: &group1 and group2#t = -16.857, df = 186.154,#p-value & 2.2e-16#alternative hypothesis: true difference in means is not equal to 0#95 percent confidence interval:# -30.558#sample estimates:#mean of x mean of y # 100.87 如果是基因组数据分析,基本思路就是设定实验组与对照组,对比找出差异,对有差异的数据在相应物种基因组里定位然后寻找功能注释,后面就是讲故事阶段了。但不同于我们对比身高,基因组数据分析对比的不单单是一组变量例如身高,而是一堆变量例如基因A,B,C,D,……,Z。当然不止26个,这时我们遇到的问题就是一个样本,几百上千维的描述如何保证样本代表性。这个问题的解决一般要靠实验设计,对比差异的话至少也要有两组,每组多少生物学重复通过试验来检测下统计功效,在满足一定功效的前提下反推需要的样本数。在基因芯片表达谱这个矩阵上,我们希望得到的信息是高度依赖所研究的科学问题的。大概有如下这两种:我的样本不分组,都是得了一种恶性病,我想找出这种病在基因层次的描述。这种情况你需要采集样本的基因组数据,对样本基因表达谱进行聚类,找出变化相对一致的基因。我在实验设计就有两组数据,这种情况可以直接对这两组进行t检验,然后对差异基因进行数据库检索或功能定位,进而依据组别判断数据的生物学意义。照这样看似乎并不难,本质上就是跟对照或数据库的数据找差异,可以看作是t检验的推广。但问题实际比想象的要复杂,举例而言,两组样本每个样本测定1000个基因,在0.05置信区间上至少出现50个假阳性,更何况一般芯片测的数比这要多,而常识上多数基因是不受影响的,也就是即便假阳性比率不高,但只要有就会影响我们回答科学问题。下面我用模拟数据来说明下这个问题。# 安装bioconductorsource(&http://bioconductor.org/biocLite.R&)biocLite()# genefilter包用来同时进行高维t检验,得到所有基因的分组差异# Biobase包用来提供处理表达数据集的方法# biocLite('genefilter')library(genefilter)library(Biobase)# GSE5859数据集收集了不同人种的基因表达数据# devtools::install_github(&genomicsclass/GSE5859&)library(GSE5859)# 读入数据data(GSE5859)# 提取分组信息,这里先选取两个人种info &- pData(e)g &- info$ethnicitygASNCEU &- which(g == 'ASN' | g == 'CEU')group &- factor(g[gASNCEU])# 提取表达谱原始数据exp &- exprs(e)[,gASNCEU]# 进行分组t检验results &- rowttests(exp,group)# 提取结果p值pvals &- results$p.value# 模拟随机表达谱并提取p值m &- nrow(exp)n &- ncol(exp)randomData &- matrix(rnorm(n*m),m,n)nullresults &- rowttests(randomData,group)nullpvals &- nullresults$p.value# 随机分组比较并提取p值permg &- sample(group)permresults &- rowttests(exp,permg)permpvals &- permresults$p.value# 观察p值分布与火山图par(mfrow = c(2,3))hist(pvals,ylim=c(0,9000))hist(permpvals,ylim=c(0,9000))hist(nullpvals,ylim=c(0,9000))plot(results$dm,-log10(pvals), & & xlab=&Effect size&,ylab=&- log (base 10) p-values&)plot(permresults$dm,-log10(permpvals), & & xlab=&Effect size&,ylab=&- log (base 10) p-values&)plot(nullresults$dm,-log10(nullpvals), & & xlab=&Effect size&,ylab=&- log (base 10) p-values&)从上面的分析我们可以看出p值的分布在实际样品与随机数据是有差异的。随机数据中p值的分布是均匀分布,但样品中明显是偏态分布,而且火山图可以看出均值差较小时出现了很多有显著性差异的数值。毋庸置疑,这会干扰我们后续的通路分析。数据也就长这样了,问题就是多次比较后假阳性比较多。我们可以用比较保守的Bonferroni矫正来用比较小的p值控制假阳性,当然为了保证统计功效,也可以使用控制错误发现率的方法来减少假阳性。一般控制错误发现率都是针对全局的,但q值法提供了一种对每个对比进行检验的方法,当q值比较小,我们认为这个结果还是比较靠谱的。这样当一个基因同时满足q值与p值小于0.05,那么我们大概可以说这组数的差异是显著的,我们也筛到了想要的基因。另一个更常用的解决方法是使用经验贝叶斯方法。我们注意看一下随机数据生成的火山图,这里面与实际数据相比差异与p值大致趋势一致。当我们假设多数基因应该是不变化时,我们就应该同时收敛差异与p值的离散状况。这里我们假设各组基因的变化服从一个超分布,然后计算t值时对方差进行贝叶斯加权。当基因组内差异小其方差权重小而整体权重大,当差异大时整体权重小,这样就实现了t值的一个收敛,最后给出的火山图也跟着收敛了。经验贝叶斯方法算是基因组数据分析里比较常用的方法,单看效果应该不错,可以配合q值去筛选差异基因。下一篇我们从t检验推广到线性模型,并想办法矫正掉一些批次效应。
转载本文请联系原作者获取授权,同时请注明本文来自于淼科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的精选博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &石器时代OL合宠计算器4.0 绿色免费版-东坡下载
东坡下载:内容最丰富最安全的下载站!|||
→ 石器时代OL合宠计算器 4.0 绿色免费版
石器时代OL合宠计算器介绍
ol宠物是这款游戏的最大的一个亮点,不用小编说大家都是知道的,下面的这款石器时代ol宠物融合计算器就是可以更好的帮助你对宠物融合进行计算的工具!石器时代ol宠物融合计算器介绍石器时代ol宠物融合计算器是专业的石器时代ol宠物融合计算器!如果是已经1融的宠物计算2融,只需要把1融做为主宠,2融副1做为1融副1填写即可。基因改造的算法还在推算中,如果有人知道确定的算法,恳请邮件告之!石器时代ol怎么玩1:主线任务;2:每日活动:活跃度做满360,系统自动给经验,活力为额外的领取奖励;目前新人遇到最多的应该是精英副本的难题:如果你是30―39级,那你只需做20精英即可完成获得活跃值,以后类推。3:帕达瓦尔残株2多人任务和公会装修任务(每天必做,给宝石);4:骑宠技能任务;5:每天晚上8点-9点的多人任务(每天必做,给宝石)。石器时代ol加点平均型加点方式中,又有几种分类:3攻2防、3攻2体、3攻2敏、3攻1体1敏;而在这几种加点方式中,推荐选择(3攻2敏)。
石器时代OL相关软件
电脑版相关
手机版相关
石器时代OL合宠计算器 4.0 绿色免费版
美国CZ88.NET 网友 客人 发表于:
本款软件是专业的石器时代ol宠物融合计算器!给你不一样的游戏体验、
5.53G / 06-03 / 绿色中文版
2.2M / 06-03 / 游戏迷版
861KB / 07-11 / V2.0.1.2 无聊版
122KB / 07-10 / v1.0.0.1 bLiZZarD版
10.8M / 07-08 / v1.08汉化版
本类软件排行
装机必备软件
模拟平台对战工具}

我要回帖

更多关于 基因型频率的计算方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信