内容

1简介

的主要功能pqsfinder包的目的是检测可能折叠成分子内g四重体(G4)的DNA和RNA序列模式。G4是一种核酸结构,可以作为标准B-DNA的替代品形成。G4s被认为参与调控多种生物过程,如端粒维持、DNA复制、染色质形成、转录、重组或突变(Maizels and Gray 2013;Kejnovsky, Tokan,和Lexa 2015).我们的算法方法的主要思想是基于这样一个事实:G4结构产生于紧凑的序列基序,由四个连续的、可能不完美的鸟嘌呤序列(G-run)组成,被半任意长度的环打断。该算法首先识别四个连续的g跑序列。随后,它检查这些g运行形成稳定G4的潜力,并为每个g运行分配相应的定量评分。报告了具有阳性评分的非重叠潜在四聚体形成序列(PQS)。

值得注意的是,与许多其他方法不同,我们的算法能够从包含凸起或不匹配的不完美g运行中检测出负责g4折叠的序列,因此比竞争算法更敏感。1我们已经测试过了pqsfinder实验验证的G4序列。该工作的结果反映在搜索的默认设置中。这些测试的细节将在其他地方介绍。我们也相信所提出的解决方案是最具可扩展性的,因为它可以轻松快速地定制(见章节)自定义检测算法详情)。该程序可以用来检测未来可能被发现或研究的新型或实验性G4类型。

对于那些对非b DNA感兴趣的人,我们之前已经编写了一个类似的包,可以用于搜索三复链,另一种类型的非b DNA结构。详情请见三层软件包登陆页面。

2G-quadruplex检测

通常,在第一个包使用之前,有必要加载pqsfinder使用以下命令包:

库(pqsfinder)

识别DNA中潜在的四聚体形成序列(PQS)是使用pqsfinder函数。这个函数有一个必需的参数,以a的形式表示所研究的DNA序列DNAString对象和几个具有预定义值的修改选项。如需完整描述,请参见pqsfinder函数手册页。

2.1基本四重体检测

作为一个简单的例子,让我们在一个短DNA序列中找到所有PQS。

seq <- DNAString(" ttttgggcgggaggagtggagtttttaaccccaaaaatttgggagggtggggggagaa ") pqs <- pqsfinder(seq, min_score = 20) pqs
## PQS视图上的59个字母DNAString主题##主题:ttttggggggggggggtttaaccccaaaaaattttggggggggggagaa ##四层结构:## start width score strand nt nb nm ## [1] 5 17 33 + 3 2 0 [gggcgggaggagggggggggg] ## [2] 41 15 73 + 3 0 0 [gggaggggggtggg]

所检测到的PQS将以PQSViews类的基本容器,该容器用于存储相同输入序列上的一组视图XStringViews对象从Biostrings包中。视图中的每个PQS由(i)起始位置,(ii)宽度,(iii)得分,(iv)链,(v) g四分数定义nt, (vi)凸起数和(vii)不匹配的数量纳米.标准函数可以访问前四个值开始(x)宽度(x)而且分数(x)而且链(x).要获得其他PQS功能,请使用elementMetadata (x)函数。它还提供了检测到的PQS的运行和循环长度(rl1rl2上rl3ll1ll2ll3).

elementMetadata (pq)
## 2行11列## strand score nt nb nm rl1 rl2 ##        ## 1 + 33 3 2 0 3 ## 2 + 73 3 0 0 33 ## rl3 ll1 ll2 ll3 ##     ## 1 4 11 11 ## 2 3 11 11

默认情况下,pqsfinder函数只报告局部最佳的非重叠PQS,而忽略与之重叠的其他PQS。但是,可以通过设置来更改默认行为重叠选项真正的

pqsfinder(seq, overlap = TRUE, min_score = 30)
## PQS对59个字母的DNAString主题的看法##主题:ttttgggcgggaggggggtttaaccccaaaaaattttgggggggggggagaa ##四层结构:##开始宽度评分链nt nb nm ## [1] 5 17 33 + 3 2 0 [gggcgggaggagggggggagtt…]## [2]5 43 37 + 3 0 0 [gggcgggaggagggggagtt…Cccaaaaatttgggaggg] ## [3] 5 47 33 + 3 0 0 [gggcgggaggagggagtt…]aaaatttggggtggg] ## [4] 9 43 37 + 3 0 0 [gggaggagtggagttttta…]aaaatttggggtggg] ## [5] 9 47 33 + 3 0 0 [gggaggagtggagttttta…]tttgggagggtgggtgg] ## [6] 41 15 73 + 30 0 [gggagggtgggggg] ## [7] 41 17 53 + 3 1 0 [gggagggtggggggag] ## [8] 42 13 30 + 2 0 0 [ggagggtgggtgg]

或者,也可以在输入序列的每个位置上获得所有重叠PQS的数量。为了达到这个目的,设置选项真正的然后调用密度(x)函数PQSViews对象:2重叠的PQS集群通常在相邻的g运行数量较低时具有陡峭的边缘,但在其他情况下可能会更加分散。

pqs <- pqsfinder(seq, deep = TRUE, min_score = 20)
## [39] 0 0 0 0 38 42 43 43 71 81 86 86 99 103 103 107 107 111 112 ## [20] 108 108 104 104 104 104 104 104 104 104 104 104 104 104 104 ## [39] 104 104 124 132 132 125 125 125 125 101 101 101 63 63 55 11 11 ## [58] 0 0

下面的例子展示了如何沿着输入序列简单地可视化密度向量GvizBioconductor

库(Gviz) ss <- DNAStringSet(seq) names(ss) <- "chr1" dtrack <- DataTrack(start = 1:length(density(pqs)), width = 1, data = density(pqs),染色体= "chr1",基因组= "",name = "density") strack <- SequenceTrack(ss,染色体= "chr1", name = "sequence") suppressWarnings(plotTracks(c(dtrack, strack), type = "h"))

2.2修改基本算法选项

根据您想要检测的PQS的特定类型,可以调优算法选项以有效且惟一地查找PQS。下表概述了所有基本算法选项及其描述。

选项名称 描述
链规格(+-).
重叠 如果为真,则将报告重叠的PQS。
max_len PQS的最大总长度。
min_score PQS最低评分报告。默认值52表示人类G4测序数据的最佳平衡精度(钱伯斯等,2015)
run_min_len 每次PQS运行的最小长度(G-run)。
run_max_len 每次PQS运行的最大长度。
loop_min_len 每个PQS内回路的最小长度。
loop_max_len 每个PQS内环的最大长度。
max_bulges 包含鼓包的最大运行数。
max_mismatches 包含不匹配的最大运行数。
max_defects 缺陷总数的最大数量(#凸起+ #不匹配)。

根据更短的PQS长度、更窄的运行或循环长度范围和更少的缺陷数量,您越缩小这些选项,检测过程就会越快,可能会失去灵敏度。

重要提示:在每个G-run中,算法最多允许一种类型的缺陷,并且至少有一个G-run必须是完美的,这意味着没有任何缺陷。因此,max_bulgesmax_mismatches而且max_defects必须在0到3的范围内。

示例1:如果你只对具有完美g跑的g四胞胎感兴趣,那就限制一下max_defects为零:

Pqsfinder (seq, max_defects = 0, min_score = 20)
## PQS对59个字母的DNAString主题的看法##主题:ttttgggcgggaggggggtttaaccccaaaaaattttggggggggggagaa ##四层结构:##开始宽度评分strand nt nb nm ## [1] 6 14 29 + 2 0 0 [ggcgggagtgg] ## [2] 41 15 73 + 3 0 0 [gggagggggtggg]

示例2:如果您不介意g运行中的缺陷,但您只想报告高质量PQS,请增加min_score值:

Pqsfinder (seq, min_score = 70)
## 59个字母DNAString主题上的PQS视图##主题:ttttgggcgggaggggggtttaaccccaaaaaattttggggggggggagaa ##四层结构:## start width score strand nt nb nm ## [1] 41 15 73 + 3 0 0 [GGGAGGGTGGGTGGG]

3.输出结果

如前所述,检测结果存储在PQSViews对象。因为PQSViews类的扩展XStringViews类的所有操作XStringViews对象也可应用于PQSViews对象也一样。

另外,PQSViews类支持创建的转换机制农庄对象。因此,所有检测到的PQS都可以很容易地转换为a的元素农庄例如,对象并保存为GFF3文件。

3.1grange转换并导出到GFF3

在本例中,的输出pqsfinder函数将存储在农庄对象,然后作为GFF3文件导出。首先,让我们使用以下命令进行转换:

gr <- as(pqs, "GRanges"
与2 # #农庄对象范围和12元数据列:# # seqnames范围链|得分nt nb nm # # < Rle > < IRanges > < Rle > | <整数> <整数> <整数> <整数> # # [1]chr1‚+ | 33 3 2 0 # # [2]chr1 41-55 + | 73 3 0 0 # # rl1 rl2上rl3 ll1 ll2 ll3源# # <整数> <整数> <整数> <整数> <整数> <整数> <人物> # # [1]3 3 4 1 1 1 pqsfinder # # [2] 3 3 3 1 1 1 pqsfinder # # # # <人物> # #型[1]G_quartet # # [2] G_quartet  ## ------- ## seqinfo:一个未知基因组的序列

请注意,染色体名称是任意设置的chr1,但之后可以自由更改为任何其他值。在下一步的结果农庄对象被导出为GFF3文件。

库(rtracklayer)导出(gr, "test. test ")Gff ", version = "3")

请注意,这是必要的加载rtracklayer库之前运行出口命令。生成的GFF3文件的内容如下:

##gff-version 3 ##source-version rtracklayer 1.50.0 ##date 2020-10-27 chr1 pqsfinder G_quartet 5 21 33 +。rl2=3;rl3=4;ll1=1;ll2=1;元= 3;nb = 0;纳米= 0;rl1 = 3; rl2上= 3;rl3 = 3; ll1 = 1; ll2 = 1; ll3 = 1

利用检测结果的另一种可能性是转换PQSViews对象放入DNAStringSet对象的另一个常用类Biostrings包中。PQS储存在里面DNAStringSet例如,可以导出到FASTA文件中。

3.2DNAStringSet转换并导出到FASTA

在本例中,的输出pqsfinder函数将存储在DNAStringSet对象,然后作为FASTA文件导出。首先,让我们使用以下命令进行转换:

dss <- as(pqs, "DNAStringSet") dss
长度为2的DNAStringSet对象:## width seq names ## [1] 17 gggcgggaggtggag pqsfinder;## [2] 15 GGGAGGGTGGGTGGG pqsfinder;G_quart…

在下一步中,DNAStringSet对象被导出为FASTA文件。

writeXStringSet(dss, file = "test. txt ")Fa ", format = "fasta")

生成的FASTA文件的内容如下:

> pqsfinder; G_quartet;开始= 5;结束= 21;链= +;分数= 33;元= 3;nb = 2;纳米= 0;rl1 = 3; rl2上= 3;rl3 = 4; ll1 = 1; ll2 = 1; ll3 = 1;GGGCGGGAGGAGTGGAG > pqsfinder; G_quartet;开始= 41;结束= 55;链= +;分数= 73;元= 3;nb = 0;纳米= 0;rl1 = 3; rl2上= 3;rl3 = 3; ll1 = 1; ll2 = 1; ll3 = 1;GGGAGGGTGGGTGGG

请注意,检测的所有属性,如起始位置、结束位置和分值都存储为a的名字参数(在DNAStringSet),因此,它们也显示在FASTA格式的标题行(带有首字母的行)中>符号)。

4一个现实世界的例子

在下面的例子中,我们从BSgenome将11号染色体上AHNAK基因区域的所有潜在G4 (PQS)进行打包和鉴定。然后,我们将识别的位置导出到基因组注释跟踪(通过GFF3文件)和附加的FASTA文件。最后,我们绘制了一些图,显示PQS评分分布和PQS沿研究基因组序列的分布。

  1. 加载必要的库和基因组。

    库(pqsfinder)库(bsgenome . hsapians . ucsc .hg38)库(rtracklayer)库(ggplot2)库(Gviz)
  2. 检索AHNAK基因注释。

    gnm <- "hg38" gene <- "AHNAK" #加载缓存的AHNAK区域文件(“extdata”、“gtrack_ahnak。或者,使用以下命令查询biomaRt API: # library(biomaRt) # gtrack <- BiomartGeneRegionTrack(genome = gnm, symbol = gene, name = gene)
  3. 获取AHNAK序列BSgenome包两边延长了1000个核苷酸。

    extend <- 1000 seq_start <- min(start(gtrack)) - extend seq_end <- max(end(gtrack)) + extend chr <-染色体(gtrack) seq <- Hsapiens[[chr]][seq_start:seq_end]
  4. 在两条链上搜索PQS。

    pqs <- pqsfinder(seq, deep = TRUE)
  5. 显示结果。

    魁人党
    ## 124694个字母的DNAString主题的PQS视图##主题:GCGGGTGTCTGTAATCCCAGCTACTTGGGAGGCT…CAATGCACCAGCTGCACCTAGCATTTTCAGATCC ## quadruplexes: ## start width score strand nt nb nm ## [1] 778 29 85 + 4 1 0 [GGGGAGGGGGAGCAAGGGGTGTAAGAGGG] ## [2] 1071 39 71 - 5 2 1 [CCCCCTCTAGTCCCAAA...GCCCACACTCTGTCCCC] ## [3] 1846 29 54 - 3 0 0 [CCCTTCACCTTCCCTCCCTGTCGTCTCCC] ## [4] 1912 32 60 - 4 2 0 [CCTCCTCCCCGAGTCACACCCAACTCATCCCC] ## [5] 2958 34 50 - 4 3 0 [CCCCCGGGGTTCCCGCCATTCTCCTGCCTCAGCC] ## [6] 4531 42 58 - 4 2 0 [CCCCAAAACGTTCCCTC...TCCCAATCCATATCCCC] ## [7] 5111 21 64 - 3 0 0 [CCCAGCCCAAATCCCTTACCC] ## [8] 7613 33 52 + 4 3 0 [GGGCCCTGAGGGAAAAGTGAGGGGGTGGCCGGG] ## [9] 7877 20 52 - 3 1 0 [CCCTCCCAGCCACGAGCCCC] ## ... ... ... ... ... ... ... ... ## [184] 123115 33 51 - 4 1 1 [CCCCTCCCTTCAACATTCTAGGCTTCCCCCACC] ## [185] 123174 27 56 + 3 0 0 [GGGCATGTGGGCAGCTGGTGGGATGGG] ## [186] 123462 26 58 - 4 1 1 [CAGCCCTGAGCCCCGACCCCTTCTCC] ## [187] 123604 46 64 - 4 1 0 [CCCCTGATCCATTCAAA...TTTCTGCTCCTCACCCC] ## [188] 123830 26 47 + 3 1 0 [GGAGAGCCCAGCGGGGATGGGAAGGG] ## [189] 123891 18 52 + 3 1 0 [GGGCAGGGCGGGGGACAG] ## [190] 123977 44 74 - 5 3 0 [CTCCCCTACCCACCACA...CCTTGCATCCCACCCCC] ## [191] 124288 30 72 - 5 1 2 [CCCATGGCCCACCCAGAACCCCCGACCCAC] ## [192] 124618 17 53 - 3 1 0 [CAGCCATCCCCCCACCC]
  6. 把结果按分数排序,看看最好的。

    pqs_s <- pqs[order(score(pqs), reducing = TRUE)] pqs_s
    ## 124694个字母的DNAString主题的PQS视图##主题:GCGGGTGTCTGTAATCCCAGCTACTTGGGAGGCT…CAATGCACCAGCTGCACCTAGCATTTTCAGATCC ## quadruplexes: ## start width score strand nt nb nm ## [1] 114398 42 125 + 6 3 0 [GGGACCCGGGAGTGGGC...AGGGGGGCCGCTGGGGG] ## [2] 103330 36 118 - 6 2 1 [CCCTGCCCTTCCCTCCAACACCCCCACCGACCCCCC] ## [3] 73196 37 115 - 5 1 0 [CCCCCGACACACCTCCCCCTACTCTCCACCCGCCCCC] ## [4] 113317 47 113 + 6 3 0 [GGGAGTTGGGCGGGGGG...CGGAGGGGAAGGGGCGG] ## [5] 109892 24 106 - 4 0 0 [CCCCTCCCCATCACCCCCTTCCCC] ## [6] 114459 36 104 - 5 2 0 [CCCCCTCCCCGCATCCACTGCCCCCTGTCCTGTCCC] ## [7] 72215 27 101 - 4 0 0 [CCCCTGCCCCACCCCCTACCCTGCCCC] ## [8] 111482 29 99 - 4 0 0 [CCCCAGAGCCCCACACACCCCTCCGCCCC] ## [9] 29660 28 94 - 5 3 0 [CCCCCACCCCAACGCCCACCCTCCACCC] ## ... ... ... ... ... ... ... ... ## [184] 114017 35 48 - 4 3 0 [CCCCAACAACGCGCCCTGCCGGAGCACCGCAACCC] ## [185] 121116 46 48 - 4 2 0 [CTGTGCCCGCCCCAGGA...CATCTGACCCTGGCCCC] ## [186] 8193 34 47 - 4 1 1 [CATCCCAGCCCCGTCTCCACAAAGGCAGATCCCC] ## [187] 15962 37 47 + 4 3 0 [GGGGATGTGAGGGCTGAGGAAGAGGGAGGCATTGAGG] ## [188] 22278 26 47 - 4 0 2 [CCCCATGTCTGCTCCAGCCCCTCCTC] ## [189] 59036 33 47 + 4 3 0 [GGCCCAGGAGAAAGAGGGGCTGGGCTCCTGGGG] ## [190] 109797 20 47 - 3 1 0 [CTCCTCCCTGCTCCCTGCCC] ## [191] 115193 26 47 - 3 1 0 [CCCTCCTAGGTGGCCACCCACTGCCC] ## [192] 123830 26 47 + 3 1 0 [GGAGAGCCCAGCGGGGATGGGAAGGG]
  7. 将所有PQS导出到gff3格式的文件中。

    export(as(pqs, "GRanges"), "test. test "。Gff ", version = "3")

    GFF3文件的内容如下(仅前三条记录):

    ##gff-version 3 ##source-version rtracklayer 1.50.0 ##date 20-10-27 chr1 pqsfinder G_quartet 778 806 85 +。nt=4;nb=1;nm=0;rl1=4;rl2=4;rl3=4;ll1=1;元= 5;nb = 2;纳米= 1;rl1 = 5; rl2上= 8;rl3 = 5; ll1 = 6; ll2 = 4; ll3 = 1
  8. 将所有PQS导出到FASTA格式文件中。

    writeXStringSet(as(pqs, "DNAStringSet"), file = "test. txt "。Fa ", format = "fasta")

    FASTA文件的内容如下(仅前三条记录):

    > pqsfinder; G_quartet;开始= 778;结束= 806;链= +;分数= 85;nt = 4; nb = 1;纳米= 0;rl1 = 4; rl2上= 4;rl3 = 4; ll1 = 1; ll2 = 6; ll3 = 1;GGGGAGGGGGAGCAAGGGGTGTAAGAGGG > pqsfinder; G_quartet;开始= 1071;结束= 1109;链= -;分数= 71;nt = 5; nb = 2;纳米= 1;rl1 = 5; rl2上= 8;rl3 = 5; ll1 = 6; ll2 = 4; ll3 = 1;CCCCCTCTAGTCCCAAACCTAAGCCCACACTCTGTCCCC > pqsfinder; G_quartet;开始= 1846;结束= 1874;链= -;分数= 54;元= 3;nb = 0;纳米= 0;rl1 = 3; rl2上= 3;rl3 = 3; ll1 = 8; ll2 = 1; ll3 = 8;CCCTTCACCTTCCCTCCCTGTCGTCTCCC
  9. 显示检测PQS得分分布的直方图。

    Sf <- data.frame(score = score(pqs)) ggplot(Sf) + geom_histogram(mapping = aes(x = score), binwidth = 5)

  10. 显示沿AHNAK基因注释的PQS评分和密度分布Gviz包中。

    strack <- DataTrack(start = start(pqs)+seq_start, end = end(pqs)+seq_start, data = score(pqs),染色体= chr,基因组= gnm, name = "score") dtrack <- DataTrack(start = (seq_start):(seq_start+length(密度(pqs))-1),宽度= 1,data =密度(pqs),染色体= chr,基因组= gnm, name = "density") atrack <- GenomeAxisTrack() suppressWarnings(plotTracks(c(gtrack, strack, dtrack, atrack), type = "h"))

    分数和密度分布的叠加图有助于评价PQS的奇异性。较高的密度值表明低复杂度区域(充满鸟嘌呤),因此它预计包含高得分PQS。另一方面,低密度区域的高得分PQS可能是一个有趣的目标。

5自定义检测算法

底层的检测算法几乎是完全可定制的,它甚至可以被设置为查找根本不同类型的g -四重结构。改变检测行为的第一个选择便是调整得分奖励,惩罚和因素。下表总结了支持的选项:

选项名称 描述
tetrad_bonus g -四分体加成,无论tetrade是否包含错配。
mismatch_penalty 四和弦不匹配的惩罚。
bulge_penalty 对凸起的惩罚。
bulge_len_factor 凸起长度的惩罚因子。
bulge_len_exponent 凸起长度的指数。
loop_mean_factor 环路长度均值的惩罚因子。
loop_mean_exponent 循环长度均值的指数。

5.1自定义评分功能

影响算法输出的一种更复杂的方法是实现一个自定义评分函数,并将其传递给custom_scoring_fn选项。在开始试验此功能之前,请考虑自定义评分功能可以这样做对算法的整体性能影响很大特别是在长序列上。该特性的最佳用例是新评分技术的快速原型,它可以在以后有效地实现,例如在这个包的下一个版本中。因此,如果您对如何进一步改进默认评分系统(DSS)有任何建议,请告诉我们,我们将非常感谢。

基本上,自定义评分函数应该接受以下10个参数:

  • 主题输入DNAString对象,
  • 分数-积极的PQS评分由DSS分配,如果启用,
  • 开始- PQS起始位置,
  • 宽度- PQS宽度,
  • loop_1-循环1起始位置,
  • run_2-运行#2开始位置,
  • loop_2-循环#2起始位置,
  • run_3-运行#3开始位置,
  • loop_3-循环#3起始位置,
  • run_4-运行#4启动位置。

该函数将以单个整数值的形式返回一个新分数。请注意,如果use_default_scoring是否启用自定义评分功能发展支持计划只有在DSS的结果是积极的得分(由于性能原因)。另一方面,当use_default_scoring禁用时,自定义评分功能将对每个PQS进行评估。

例子:想象一下,你想给一种特定类型的四胞胎打一个更有利的分数。例如,你可能想要反映,所有环只包含一个胞嘧啶的g -四复合体往往比在同一位置包含不同核苷酸的相似的g -四复合体更稳定。这可以通过以下自定义评分函数轻松实现:

c_loop_bonus <- function(subject, score, start, width, loop_1, run_2, loop_2, run_3, loop_3, run_3, run_3, run_4) {l1 <- run_2 - loop_1 l2 <- run_3 - loop_2 l3 <- run_4 - loop_3 if (l1 == l2 && l1 == l3 && subject[loop_1] == DNAString("C") && subject[loop_1] == subject[loop_2] && subject[loop_1] == subject[loop_3]) {score <- score + 20} return(score)}

如果没有自定义评分函数,在示例序列中找到的两个PQS将具有相同的评分。

seq <- DNAString(" gggcgggcgggggaaaaaaaaaaaaaaagggggggaggg ") pqsfinder(seq)
## 43个字母的DNAString主题上的PQS视图##主题:gggcgggcgggggaaaaaaaaaaaaagggagaggg ##四重组:##开始宽度评分链nt nb nm ## [1] 1 15 73 + 3 0 0 [gggcgggcgggggggggg] ## [2] 29 15 73 + 3 0 0 [gggagggggaggg]

但是,如果应用了上面给出的自定义评分函数,两个PQS就可以通过分数清楚地区分出来:

Pqsfinder (seq, custom_scoring_fn = c_loop_bonus)
## 43个字母的DNAString主题上的PQS视图##主题:gggcgggcgggggaaaaaaaaaaaaagggagaggg ##四重组:##开始宽度评分链nt nb nm ## [1] 1 15 93 + 3 0 0 [gggcgggcgggggggggg] ## [2] 29 15 73 + 3 0 0 [gggagggggaggg]

5.2完全替换默认评分系统

可能存在不希望启用默认评分系统(DSS)的用例。在这个例子中,我们展示了如何改变检测算法的行为,以找到完全不同类型的序列motif -链间g四plex (isG4)(Kudlicki 2016).与标准的分子内g四聚体不同,isG4可以分别通过鸟嘌呤和胞嘧啶的交错排列来定义。它的标准形式可以用正则表达式G来描述nN一个CnNbGnNcCn

检测isG4spqsfinder功能上,必须更改三个选项。首先,通过设置禁用DSSuse_default_scoring.其次,通过设置指定一个自定义正则表达式,定义四联体的一次运行run_reG{3、6}| C{3、6}.最后一步是定义一个自定义评分函数来验证每个PQS:

isG4 <- function(subject, score, start, width, loop_1, run_2, loop_2, run_3, loop_3, run_4) {r1 <- loop_1 - start r2 <- loop_2 - run_2 r3 <- loop_3 - run_3 r4 <- start + width - run_4 if (!(r1, r2 = = & & r1 = = r3 & & r1 = = r4))回复(0)run_1_s < -主题[启动:启动+ r1-1] run_2_s < -主题[run_2: run_2 + r2-1] run_3_s < -主题[run_3: run_3 + r3-1] run_4_s < -主题[run_4 run_4 + r4-1):如果(长度(grep(“^ G +美元”,run_1_s)) & &长度(grep(“C + $ ^”,run_2_s)) & &长度(grep(“^ G +美元”,run_3_s)) & &长度(grep(“C + $ ^”,run_4_s)))返回其他(r1 * 20)返回(0)}

让我们看看这一切是如何一起工作的:

pqsfinder(DNAString("AAAAGGGATCCCTAAGGGGTCCC"), strand = "+", use_default_scoring = FALSE, run_re = "G{3,6}|C{3,6}", custom_scoring_fn = isG4)
## PQS对一个23个字母的DNAString的看法## subject: AAAAGGGATCCCTAAGGGGTCCC ## four plexes: ## start width score strand nt nb nm ## [1] 5 19 60 + 0 0 0 [GGGATCCCTAAGGGGTCCC]

6会话信息

这是的输出sessionInfo ()在编译本文档的系统上:

## R版本4.0.3(2020-10-10)##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 18.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.12-bio /R/lib/libRblas。因此## LAPACK: /home/biocbuild/bbs-3.12-bio /R/lib/libRlapack。因此## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_US。UTF-8 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_TELEPHONE= c# [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]grid stats4 parallel stats graphics grDevices utils ## [8] datasets methods base ## ##其他附加包:# [9] Biostrings_2.58.0 XVector_0.30.0 ## [11] IRanges_2.24.0 S4Vectors_0.28.0 ## [13] BiocGenerics_0.36.0 BiocStyle_2.18.0 ## ##通过命名空间加载(并没有附加):# # # # [1] colorspace_1.4-1 ellipsis_0.3.1 [3] biovizBase_1.38.0 htmlTable_2.1.0 # # [5] base64enc_0.1-3 dichromat_2.0-0 # # [7] rstudioapi_0.11 farver_2.0.3 # # [9] bit64_4.0.5 AnnotationDbi_1.52.0 # # [11] xml2_1.3.2 splines_4.0.3 # # [13] knitr_1.30 Formula_1.2-4 # # [15] Rsamtools_2.6.0 cluster_2.1.0 # # [17] dbplyr_1.4.4 png_0.1-7 # # [19] BiocManager_1.30.10 compiler_4.0.3 # # [21] httr_1.4.2 backports_1.1.10 # # [23] assertthat_0.2.1 Matrix_1.2-18 # # [25] lazyeval_0.2.2 htmltools_0.5.0 # # [27]# [29] Biobase_2.50.0 vctrs_0.3.4 ## [37] xfun_0.18 stringgr_1 .4.0 ## [39] lifecycle_0.2.0 ensembldb_2.14.0 ## [41] XML_3.99-0.5 zlibbioc_1.36.0 ## [43] scales_1.1.1 VariantAnnotation_1.36.0 ## [45] hms_0.5.3 matrixgenerics_1.22.0 ## [49] AnnotationFilter_1.14.0 RColorBrewer_1.1-2 ## [51] yaml_2.2.1# [59] rsqlite_0.6 -29 stringi_1.5.3 ## [59] RSQLite_2.2.1 checkmate_2.0.0 ## [61] genomic icfeatures_1 .42.0 BiocParallel_1.24.0 ## [65] matrixStats_0.57.0 bitops_1.0-6 ## [67] evaluate_0.14 lattice_0.20-41 ## [69] purrr_0.3.4 genomic icaligns_1.26.0 ## [71] htmlwidgets_1.5.2 labeling_0.4.2 ## [73] bit_4.0.4 tidyselect_1.1.0 ## [77] R6_2.4.1 magick_2.5.0 ## [79] generics_0.0.2 Hmisc_4.4-1 ## [81] DelayedArray_0.16.0 DBI_1.1.0 ## [83] pillar_1.4.6 foreign_0.8-80 ## [85] withr_2.3.0 survival_3.2-7 ## [87] RCurl_1.98-1.2 nnet_7.3-14 ## [89] tibble_3.0.4 crayon_1.3.4 ## [91] BiocFileCache_1.14.0 rmarkdown_2.5 ## [93] jpeg_0.1-8.1 progress_1.2.2 ## [95] data.table_1.13.2 blob_1.2.1 ## [97] digest_0.6.27 openssl_1.4.3 ## [99] munsell_0.5.0 askpass_1.1

参考文献

钱伯斯,Vicki S, Giovanni Marsico, Jonathan M Boutell, Marco Di Antonio, Geoffrey P Smith, Shankar Balasubramanian. 2015。人类基因组中DNA g -四丛结构的高通量测序。自然生物技术33(8).施普林格自然:877-81。https://doi.org/10.1038/nbt.3295

Kejnovsky, Eduard, Viktor Tokan和Matej Lexa, 2015。转座子和g -四聚体染色体的研究23.https://doi.org/10.1007/s10577-015-9491-7

库德利基,Andrzej S. 2016。包含两股基因组Dna的g -四复合体高度丰富,并与人类基因组中的功能位点共定位。《公共科学图书馆•综合》11(1)。https://doi.org/10.1371/journal.pone.0146174

南希和卢卡斯。T.格雷。2013。“G4基因组。”公共科学图书馆麝猫9(4)公共科学图书馆:1-6。https://doi.org/10.1371/journal.pgen.1003468