这个软件包产生于我为获得博士学位所做的工作。如果对你的分析有帮助,请引用
@Manual{, title = {motifcounter:分析DNA序列中TFBSs的R包},作者= {Wolfgang Kopp},年= {2017},doi = {10.18129/B9.bioc。motifcounter}}
关于复合泊松模型的详细信息,请参阅
@文章{改进化合物,标题={DNA序列中motif命中数的改进化合物泊松模型},作者={Kopp, Wolfgang and Vingron, Martin},期刊={生物信息学},页数={btx539},年份={2017},出版商={牛津大学出版社}}
1用法示例
2简介
2.1生物背景
转录因子在基因调控中起着至关重要的作用。它们通过识别和结合特定的DNA片段来发挥作用,通常长度为5-30bp转录因子结合位点(TFBSs)。tf结合通过上调或下调邻近基因的表达水平作用于邻近基因。
的目的motifcounter
该软件包为研究给定DNA序列中假定的TFBSs提供了统计工具,包括TFBSs的存在和位置以及TFBSs的富集情况。
2.2的标志motifcounter
分析用的主要成分motifcounter
由
- 位置频率矩阵(PFM)(也称为TF motif)
- 作为统计分析参考的背景模型
- 用于TFBS分析的一组DNA序列
- 一个假阳性概率\α(\ \)用于预测随机序列中的TFBSs。如。\α= 0.001 (\ \).
一个烤瓷表示TF结合某一DNA片段的亲和性。大量已知的PFMs可以获得,例如从MotifDb
包(@motifdb).另一方面,背景模型定义未结合DNA序列的特性。motifcounter
将后台模型实现为订单- - - - -\ (d \)马尔可夫模型,在那里\ (d \)由用户指定。使用高阶背景模型的优势在于,它们能够捕获高阶序列特征,这对于研究自然发生的DNA序列(例如CpGs岛)至关重要。
利用PFM和背景模型,motifcounter
计算母题的分数对于给定的DNA序列,其定义为PFM与背景之间的对数似然比。基序分数表示一种测量方法,表明DNA序列中的某个位置是否被TF结合或不结合。直观地说,分数越高,序列就越像TFBS。
母题分数也用于确定图案打(例如,假定的TFBSs)。为此,motifcounter
使用预先确定的分数阈值并在给定位置的观察分数大于或等于分数阈值时调用假定的TFBSs。motifcounter
建立了分数阈值自动基于1)分数分布2)用户规定的假阳性水平\α(\ \).为此,采用一种高效的动态规划算法确定分数分布\ (d \)背景模型。算法的细节在我们的论文中描述(见上文)。
测试母题打击丰富在motifcounter
是基于母题命中次数在一组DNA序列中观察到的。为了能够判断观察到的命中数的显著性(例如,在长度为10kb的序列中有10个预测的TFBSs),包近似于母题命中数的分布在长度匹配的随机DNA序列中
因此,motifcounter
提供两个快速准确的近似该分布的替代方案:
- 复合泊松近似(见Kopp和Vingron(2017)生物信息学。)
- 组合模型(手稿准备中)
这两种方法都支持高阶背景模型,并考虑了self-overlapping主题的结构。例如,一个类似重复的单词,例如' AAAA ',可能会产生一串相互重叠的命中
被称为团[@reinert, @pape]1.motifcounter
不仅可以解释相对于单个DNA链的重叠基序命中,还可以解释重叠的反向互补命中,如果两条DNA链都被扫描基序命中。重要的是要解释结块,因为这会影响母题命中数的分布,从而影响母题命中富集测试。忽视这一影响可能会得出误导性的统计结论。
3.开始
3.1初步的步骤
3.1.1获取一个背景模型
背景模型用于指定未结合DNA序列的性质。也就是说,它可以作为识别假定的TFBSs以及判断母题命中富集的参考。
motifcounter
提供了使用秩序的机会\ (d \)用户自定义马尔可夫模型\ (d \).背景模型是在一组用户提供的DNA序列上估计的DNAStringSet
对象Biostrings
Bioconductor包。
下面的代码片段说明了一个命令如何-\ [1 \)背景模型是根据一组给定的DNA序列估计的:
以< -1文件< -执行(“extdata”,“seq.fasta”,包=“motifcounter”)seq < -Biostrings::readDNAStringSet(文件)bg < -readBackground(seq,顺序)
提示:理想情况下,用于估计背景模型的DNA序列应该与后来分析的序列具有代表性(甚至相同)(例如,用于motif命中富集)。
提示:为了motif富集测试的目的,我们建议使用顺序\ (d = 1 \)或\ (d = 2 \).使用非常高阶的背景\ (d \)可能是非常昂贵的计算,更重要的是,由于其增加的灵活性,可能捕获相关的TFBS信号。在这种情况下,丰富的主题可能无法恢复。
3.1.2获得主题
motifcounter
处理母题位置频率矩阵(PFMs),通常用于表示转录因子(tf)的结合亲和力。
已知母题的一个方便来源是MotifDb
Bioconductor包(@motifdb),这将是我们教程的基础。例如,我们检索人类的母题Pou5f1(或Oct4)转录因子
从MotifDb中提取Oct4 motif图书馆(MotifDb)oct4 < -as.list(查询(查询(查询(MotifDb“hsapiens”),“pou5f1”),“jolma2013”)) ((1]]主题< -oct4使用seqLogo可视化主题图书馆(seqLogo)seqLogo(主题)
提示:motifcounter
对PFM要求严格的正分项。如果不是这样,则包提供该功能normalizeMotif
,它添加了伪观测值并重新归一化列:
3.1.3可选设置
默认情况下,motifcounter
的假阳性概率来识别TFBS\α= 0.001 (\ \).的严格级别\α(\ \),这是由motifcounterOptions
:
如需其他选择,请咨询motifcounterOptions ?
.
3.2检索位置和特定的得分和命中
对于下面的例子,我们探索一组的DNA序列Oct4-ChIP-seq在人体内获得的峰值hESCENCODE项目(@encode2012).峰值区域以中点为中心被削减到200个bps。
3.2.1之上单个DNA序列分析
的motifcounter
包提供了在单个DNA序列中探索位置和链特异性假定TFBSs的功能。探索TFBSs给定DNA序列的一种方法是利用scoreSequence
.该函数返回给定对象的每个位置和链分数Biostring: DNAString
-object(下面左面板)。为了使观察到的分数更直观,右图显示了随机序列中的理论分数分布,该分布由scoreDist
2.分布尾部的分数很少是偶然出现的。这些也是导致TFBS预测的因素:
#确定每个位置和每个链的分数分数< -scoreSequence(oct4peaks [[1]],母题,bg)#作为比较,计算理论分数分布sd < -scoreDist(主题、bg)票面价值(mfrow =c(1,2))绘制观察到的分数,每个位置和每条线情节(1:长度(成绩$fscores),分数$fscores,类型=“l”,坳=“蓝色”,xlab =“位置”,ylab =“分数”,ylim =c(最小值(sd$分数),马克斯(sd$分数),xlim =c(1,250))点(成绩$rscores,坳=“红色”,类型=“l”)传说(“topright”,c(“forw。”,“启”),坳=c(“蓝色”,“红色”),lty =c(1,1))#绘制比较的理论分数分布情节(sd$dist, sd$分数,类型=“l”,xlab =“概率”,ylab ="")
为了获得预测的TFBSs位置和链,motifcounter
提供功能motifHits
.如果观察到的分数超过预先确定的分数阈值,则此函数调用motif hits3..
#调用假定的TFBSsmhits < -motifHits(oct4peaks [[1]],母题,bg)#检查结果fhitpos < -哪一个(mhits$fhit基因= =1)rhitpos < -哪一个(mhits$rhits= =1)fhitpos
# #整数(0)
94
在示例序列中,我们获得了在前链上没有命中的基序,而在94号位置上有一个命中反链的基序。这次袭击的DNA序列可以通过
9个字母的DNAString对象
接下来,我们将说明放宽的严格级别如何影响母题命中的数量。使用motifcounterOptions
的假阳性概率\α= 0.01 (\ \)(默认为\α= 0.001 (\ \)).这将增加产生主题命中的倾向
#规定呼叫TFBSs的新假阳性级别motifcounterOptions(α=0.01)#确定TFBSsmhits < -motifHits(oct4peaks [[1]],母题,bg)fhitpos < -哪一个(mhits$fhit基因= =1)rhitpos < -哪一个(mhits$rhits= =1)fhitpos
## [1] 54 87 93 112
## [1] 55 94 111 118
现在每条链上都有四次命中。
3.2.2一组DNA序列的分析
同时,scoreSequence
而且motifHits
可用于研究单个DNA序列中的TFBSs(由aDNAString
-object),人们可能也会对多个相同长度序列的平均得分或主题命中情况感兴趣。这可能揭示了基序出现的位置限制,例如TSS,或ChIP-seq峰值的顶峰。一方面,motifcounter
提供方法scoreProfile
哪些可以申请Biostrings: DNAStringSet
对象。
#确定所有Oct4结合位点的平均得分分数< -scoreProfile(oct4peaks, motif, bg)情节(1:长度(成绩$fscores),分数$fscores,类型=“l”,坳=“蓝色”,xlab =“位置”,ylab =“分数”)点(成绩$rscores,坳=“红色”,类型=“l”)传说(“bottomleft”,传说=c(“转发”,“反向”),坳=c(“蓝色”,“红色”),lty =c(1,1))
另一方面,motifHitProfile
通过计算位置和特定链的平均基序命中频率来构造相似的剖面
3.3测试母题打击的丰富程度
的一个主要特征motifcounter
代表了一种复杂的新方法,用于识别DNA序列中的基序击中富集。
为此,包中包含方法motifEnrichment
,它评估假定值与观察序列中发现的motif命中数相关,与背景模型相比。
# # # # $ pvalue [1] 6.624993 e-07 # # # # # #折4.710889 [1]
该方法返回一个包含pvalue
还有褶皱
.同时,pvalue
表示随机DNA序列中产生更多或相等数量命中的概率,褶皱
表示随机DNA序列中基序命中数相对于期望命中数的折叠富集。也就是说,它代表了效应量的度量。
提示:如果对很长或很多的DNA序列进行TFBSs扫描,基序命中数的分布就会变得非常狭窄。在这种情况下,观察到的命中数和预期命中数之间的最小差异也会产生非常小的差异假定值.在这种情况下,应该参考折叠富集来揭示效应大小是否具有生物学相关性。
提示:默认情况下,motifEnrichment
扫描两条DNA链的基序命中,并根据复合泊松模型得出统计结论。然而,motif富集也可以在扫描单链时进行(例如在分析RNA序列时)。请咨询motifEnrichment ?
对于单链选项。
提示:motifEnrichment
可以有选择地调用两种替代方法来近似假定值, 1)由a复合泊松近似2) a组合近似(见motifEnrichment ?
).根据经验,我们建议使用复合泊松模型来研究具有相当严格的长(或多)DNA序列\α(\ \)(例如0.001或更小)。另一方面,如果放松\α(\ \)是您的分析所需要的(例如0.01 \α(\ \组\)),组合近似可能会给出更准确的结果。
提示:我们不建议使用过于宽松的选择\α(\ \)(如0.05 \α(\ \组\)),因为这违反了模型所基于的一些假设。结果可能是结果的显著偏差。
4会话信息
## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基础包:## [1]grid stats4 stats graphics grDevices utils datasets ##[8]方法基础## ##其他附加包:## [1]seqLogo_1.64.0 MotifDb_1.40.0 Biostrings_2.66.0 ## [4] XVector_0.38.0 GenomicRanges_1.50.0 GenomeInfoDb_1.34.0 ## [7] IRanges_2.32.0 S4Vectors_0.36.0 BiocGenerics_0.44.0 ## [10] motifcounter_1.22.0 knitr_1.40 ## ##通过命名空间加载(且未附加):# # # # [1] bslib_0.4.0 compiler_4.2.1 [3] restfulr_0.0.15 jquerylib_0.1.4 # # [5] MatrixGenerics_1.10.0 prettydoc_0.4.1 # # [7] bitops_1.0-7 tools_4.2.1 # # [9] zlibbioc_1.44.0 digest_0.6.30 # # [11] lattice_0.20-45 jsonlite_1.8.3 # # [13] evaluate_0.17 rlang_1.0.6 # # [15] Matrix_1.5-1 DelayedArray_0.24.0 # # [17] cli_3.4.1 parallel_4.2.1 # # [19] yaml_2.3.6 xfun_0.34 # # [21] fastmap_1.1.0 GenomeInfoDbData_1.2.9 # # [23] rtracklayer_1.58.0 stringr_1.4.1 # # [25] sass_0.4.2 data.table_1.14.4 # # [27][37] htmltools_0.5.3 summarizedexperiment_1 .4.8 stringi_1.7.8 ## [41] RCurl_1.98-1.9 cachem_1.0.6 ## [43] crayon_1.5.2 rjson_0.2.21 ## [45] BiocIO_1.8.0 ## [45] matrixstats_1.34.0 ## [35] codetools_0.2-18 Rsamtools_2.14.0