e -标题:“包装饰图案基因相互作用:ChIA-PET数据输出:pdf_document:默认html_document: keep_md:真正的-
染色质交互分析paired-end标签排序(ChIA-PET)是最近的方法研究protein-mediated在全基因组范围内的相互作用。像大多数技术研究染色质交互是基于染色体构象捕获技术。与3 c, 4 c和5 c,然而,它可以检测全基因组的相互作用,包括一个芯片一步净化交互涉及蛋白质的兴趣。
原始数据的形式从ChIA-PET paired-end读取连着两个链接器序列之一。读取被嵌合连接基团,和参考基因组的数据是一致的。的ChIA-PET工具可以用来找到成对的区域(“锚”),有大量的读它们之间的映射,因此代表生物样本中的有意义的染色质交互。
首先我们需要加载GenomicInteractions包,和mm9参考基因组:
库(GenomicInteractions)
# #加载所需的包:InteractionSet
# #加载所需的包:GenomicRanges
# #加载所需的包:stats4
# #加载所需的包:BiocGenerics
# #加载所需的包:平行
# # # #附加包:“BiocGenerics”
# #以下对象从包:平行的蒙面:# # # # clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, # # clusterExport, clusterMap, parApply, parCapply, parLapply, # # parLapplyLB, parRapply, parSapply parSapplyLB
# #以下对象是蒙面的包:统计数据:# # # #差,疯了,sd, var, xtabs
# #以下对象从包:基地的蒙面:# # # #过滤器,发现,地图,位置,减少,anyDuplicated,追加,# # as.data.frame, basename, cbind colnames,目录名,做。电话,# #复制,eval, evalq, grep, grepl,相交,是。无序、# #拉普兰人、宾州、匹配mget,秩序,粘贴,pmax, pmax.int, pmin, # # pmin.int,排名,rbind, rownames,酸式焦磷酸钠,setdiff,排序,表,# # tapply,联盟,独特的,不可分割的,,。马克斯,which.min
# #加载所需的包:S4Vectors
# # # #附加包:“S4Vectors”
# #以下对象从包:基地的蒙面:# # # # expand.grid
# #加载所需的包:IRanges
# #加载所需的包:GenomeInfoDb
# #加载所需的包:SummarizedExperiment
# #加载所需的包:Biobase
# #欢迎Bioconductor # # # #片段包含介绍性的材料;视图与# #“browseVignettes ()”。引用Bioconductor,看# #引文(“Biobase”),和包的引文(“pkgname”)。
# #加载所需的包:DelayedArray
# #加载所需的包:matrixStats
# # # #附加包:“matrixStats”
# #以下对象是蒙面的包:Biobase: # # # # anyMissing rowMedians
# #加载所需的包:BiocParallel
# # # #附加包:“DelayedArray”
# #以下对象是蒙面的包:matrixStats: # # # # colMaxs, colMins, colRanges, rowMaxs, rowMins rowRanges
# #以下对象从包:基地的蒙面:# # # # aperm,适用,rowsum
库(InteractionSet)库(GenomicRanges)
我们可以直接读取数据的输出ChIA-PET工具。在这个阶段,我们还可以提供信息的细胞类型和描述标记实验。数据来自李et al ., 2012年出版细胞。他们利用抗体波尔的启动形式二世,你会发现在积极推动者,我们观察的数据K562骨髓性白血病细胞株。数据应该给我们一个了解的过程,正在积极转录调节基因。
chiapet。data =执行(“extdata / k562.rep1.cluster.pet3 +。txt”,包= " GenomicInteractions k562”)。rep1 = makeGenomicInteractionsFromFile (chiapet。数据,type = " chiapet。工具”,experiment_name = " k562”,描述= " k562 pol2 8 wg16”)
这将数据加载到一个GenomicInteractions
对象,它包含两个联系在一起GenomicRanges
每个交互对象包含锚,以及假定值,罗斯福和读取的数量相互支持相互作用。
元数据,我们可以很容易地添加accesed,和编辑:
名称(k562.rep1)
# # [1]“k562”
描述(k562.rep1) = " PolII-8wg16 Chia-PET K562”
是可以从ChIA-PET实验数据:
头(interactionCounts (k562.rep1))
# # 562年[1]3 3 3 3 3
头((k562.rep1)罗斯福美元)
# #[1]1.25703平台以及0.00000 2.76777 4.86859 1.17148 e + 00 e-06 e-08 e-08 e-08 3.97019
嘘(log10 (k562.rep1 p.value美元))
这两个链接农庄
对象可以返回,但不改变就地:
anchorOne (k562.rep1)
与64565和0 # #农庄对象元数据列:链# # # # seqnames范围< Rle > < IRanges > < Rle > # # [1] chr1 569922 - 571422 * # # [2] chr1 832761 - 905482 * # # [3] chr1 839092 - 842325 * # # [4] chr1 839393 - 841792 * # # [5] chr1 852731 - 855234 * # #……# # [64561]chrX 154432946 - 154432946 * # # [64562] chrX 154436728 - 154436728 * # # [64563] chrX 154439789 - 154439789 * # # [64564] chrX 154459648 - 154459648 * # # [64565] chrX 154839050 - 154839050 * # # - - - - - - - # # seqinfo: 25从一个未指明的基因组序列;没有seqlengths
anchorTwo (k562.rep1)
与64565和0 # #农庄对象元数据列:链# # # # seqnames范围< Rle > < IRanges > < Rle > # # [1] chrM 8342 - 10675 * # # [2] chr1 838470 - 920603 * # # [3] chr1 935528 - 939051 * # # [4] chr1 955081 - 956755 * # # [5] chr1 933685 - 937006 * # #……# # [64561]chrX 154442294 - 154442294 * # # [64562] chrX 154442540 - 154442540 * # # [64563] chrX 154448371 - 154448371 * # # [64564] chrX 154469339 - 154469339 * # # [64565] chrX 154843728 - 154843728 * # # - - - - - - - # # seqinfo: 25从一个未指明的基因组序列;没有seqlengths
GenomicInteractions
对象可以很容易地处理交互检测染色体之间,被称为反式染色体相互作用,由于锚可以在任何时候在基因组。is.trans
返回一个逻辑向量;同样的is.cis
这个函数的相反。
sprintf (“trans-chromosomal交互的百分比%。2 f”, 100 *总和(is.trans (k562.rep1)) /长度(k562.rep1))
# # [1]“trans-chromosomal交互的百分比1.00”
每个交互的长度不是作为元数据存储,但我们可以计算每个交互使用内部边缘的距离,外缘或锚的中点。这是inter-chromosomal定义交互,所以NA返回,所以排除这些交互是很重要的一些分析。
头(calculateDistances (k562。rep1方法=“中点”))
# # 10415 96581 115325 81363 79098 [1]NA
GenomicRanges
对象可以通过整数或逻辑子集向量最喜欢R对象,也是BioConductorRle
对象。
k562。rep1[1:10] #第一交互数据集
与10交互和3 # # GenomicInteractions对象元数据列:# # seqnames1 ranges1 seqnames2 ranges2 |计数# # < Rle > < IRanges > < Rle > < IRanges > | <整数> # # [1]chr1 569922 - 571422——8342 - 10675 | 3 # # chrM [2] chr1 832761 - 905482——838470 - 920603 | 562 # # chr1 [3] chr1 839092 - 842325——935528 - 939051 | 3 # # chr1 [4] chr1 839393 - 841792——955081 - 956755 | 3 # # chr1 [5] chr1 852731 - 855234——933685 - 937006 | 3 # # chr1 [6] chr1 855856 - 858861——935669 - 937245 | 3 # # chr1 [7] chr1 874165 - 879175——933340 - 938306 | 10 # # chr1 [8] chr1 874190 - 877867——955674 - 959630 | 5 # # chr1 [9] chr1 889676 - 896594——chr1 933897 - 938982 | 13 # # [10] chr1 898753 - 907581——931133 - 939571 | chr1 19 # # p。价值罗斯福# # <数字> <数字> # # [1]1.6214 e-12 1.25703平台以及# # 0 0 # # [2][3]4.21364 e-08 1.17148 e-06 # # [4] 1.45938 e-09 4.86859 e-08 # #[5] 7.85539平台以及2.76777 e-08 # # [6] 1.16802 e-09 3.97019 e-08 # # [7] 1.23139 e-25 3.58932 e-23 # # [8] 6.63691 e15汽油6.98795 e-13 # # [9] 4.91311 e-36 2.33753 e-33 # #[10] 0 0 # # - - - - - - - # #区域:129090和0元数据列# # seqinfo: 25从一个未指明的基因组序列;没有seqlengths
k562.rep1[样本(长度(k562.rep1), 100) # 100子样品的相互作用
与100年# # GenomicInteractions对象交互和3元数据列:# # seqnames1 ranges1 seqnames2 ranges2 | # # < Rle > < IRanges > < Rle > < IRanges > | # # [1] chr1 22070508 - 22076524——chr1 22076524 - 22070508 | # # [2] chr10 98344931 - 98348193——chr10 98348193 - 98344931 | # # [3] chr1 27478684 - 27483490——chr1 27483490 - 27478684 | # # [4] chr1 114887076 - 114890179——chr1 114890179 - 114887076 | # # [5] chr1 115141002 - 115143260——chr1 115143260 - 115141002 | # #………………。# # [96]chr12 48731724 - 48737573——chr12 48737573 - 48731724 | # # [97] chr3 20079279 - 20082964——chr3 20082964 - 20079279 | # # [98] chr19 55868108 - 55872228——chr19 55872228 - 55868108 | # # [99] chr19 6359827 - 6377236——chr19 6377236 - 6359827 | # # [100] chr3 51428575 - 51432934——chr3 51432934 - 51428575 | # #计算p。价值罗斯福# # <整数> <数字> <数字> # # 12 0 0 # # [1][2]3 1.59603 e-12 1.24357平台以及# # [3]13 0 1.33614 3.92364 e-44 # # [4] 3 e-11 8.29612平台以及# # [5]4 1.24031 e-20 2.52793 e-18 # #……# # [96]14 0 0 # # [97]6 1.16492 e-19 2.16863 e-17 # # [98] 4 4.43064 e-18 7.0663 e-16 # # 50 0 0 # # [99] [100] 8 8.65568 e-27 2.69395 e-24 # # - - - - - - - # #区域:129090和0元数据列# # seqinfo: 25从一个未指明的基因组序列;没有seqlengths
k562。独联体= k562.rep1[is.cis(k562.rep1)]
每个交互的长度不是作为元数据存储,但我们可以计算每个交互使用内部边缘的距离,外缘或锚的中点。因为这是不确定的反式染色体相互作用最好的第一子集独联体交互之前调用calculateDistances
,否则NA
年代将出现在返回的向量。
头(calculateDistances (k562。独联体、方法=“中点”))
# # 10415 96581 115325 81363 79098 59153 [1]
k562。短= k562.cis [calculateDistances (k562.cis) < 1 e6] #子集短交互嘘(calculateDistances (k562.short))
我们也可以根据链接的属性子集农庄
对象。
铬= c (“chr17”、“chr18”)子= as.vector (seqnames (anchorOne (k562.rep1)) % %铬& seqnames (anchorTwo (k562.rep1)) % %铬)k562。rep1 = k562.rep1(子)
基因相互作用数据通常是用来观察基因组中不同元素之间的交互,这被认为是不同的功能角色。启动子之间的相互作用及其转录终止网站,例如,被认为是转录过程的副产品,而远程交互与增强子在基因调控中发挥作用。
自GenomicInteractions
是基于GenomicRanges
,很容易审问GenomicInteractions
对象的使用GenomicRanges
数据。在这个例子中,我们要注释的交互重叠启动子,转录终止网站或任何基因的身体。因为这可能是一个耗时和流线化的过程,本例中只运行分析染色体17和18。
首先我们需要RefSeq记录的列表:
图书馆(GenomicFeatures) hg19.refseq。db < - makeTxDbFromUCSC(基因组=“hg19”,表=“refGene”) refseq。基因(hg19.refseq.db) refseq =基因。反式cripts = transcriptsBy(hg19.refseq.db, by="gene") non_pseudogene = names(refseq.transcripts) %in% unlist(refseq.genes$gene_id) refseq.transcripts = refseq.transcripts[non_pseudogene]
而不是下载整个Refseq数据库,这些都是为染色体17和18:
refseq数据(“hg19.refseq.transcripts”)。成绩单= hg19.refseq.transcripts
我们可以使用函数GenomicRanges
调用启动子和终止剂这些记录。我们已经启动子区域在2.5 kb的带注释的TSS和终端在1 kb的一个带注释的文字记录的结束。自基因可以有多个副本,他们也可以有多个启动子/终端,这是GRangesList
对象,这使得处理这些对象稍微复杂。
refseq。启动子= (refseq倡导者。反式cripts, upstream=2500, downstream=2500) # unlist object so "strand" is one vector refseq.transcripts.ul = unlist(refseq.transcripts) # terminators can be called as promoters with the strand reversed strand(refseq.transcripts.ul) = ifelse(strand(refseq.transcripts.ul) == "+", "-", "+") refseq.terminators.ul = promoters(refseq.transcripts.ul, upstream=1000, downstream=1000) # change back to original strand strand(refseq.terminators.ul) = ifelse(strand(refseq.terminators.ul) == "+", "-", "+") # `relist' maintains the original names and structure of the list refseq.terminators = relist(refseq.terminators.ul, refseq.transcripts)
这些可用于一个子集GenomicInteractions
对象直接从农庄
使用GenomicRanges
重叠的方法。findOverlaps
呼吁一个GenomicInteractions
对象将返回一个包含列表支安打
锚的对象。
我们可以发现任何交互涉及RefSeq启动子:
subsetByFeatures (k562)。rep1 unlist (refseq.promoters))
与2907年# # GenomicInteractions对象交互和3元数据列:# # seqnames1 ranges1 seqnames2 ranges2 | # # < Rle > < IRanges > < Rle > < IRanges > | # # [1] chr17 616579 - 621961——chr17 620668 - 626263 | # # [2] chr17 632527 - 638035——chr17 636589 - 641349 | # # [3] chr17 634119 - 651606——chr17 642299 - 659172 | 654892 - 657597 # # [4] chr17——chr17 683191 - 687275 | 656002 - 658841 # # [5] chr17——chr17 679595 - 682692 | # #………………。# # [2903]chr18 77781151 - 77783476——chr18 77783476 - 77781151 | # # [2904] chr18 77784590 - 77787797——chr18 77787797 - 77784590 | # # [2905] chr18 77792093 - 77797983——chr18 77797983 - 77792093 | # # [2906] chr18 77793365 - 77797939——chr18 77797939 - 77793365 | # # [2907] chr18 77863992 - 77870413——chr18 77870413 - 77863992 | # #计算p。价值罗斯福# # <整数> <数字> <数字> # # [1]7 2.06358 e-32 8.50563 e-30 # # [2] 9 2.395 e-36 1.1518 e-33 # # 0 0 # # 55 [3] [4] 6 4.86283 e-24 1.27856 e-21 # # [5] 3 6.23098 e-14 5.72161 e-12 # #……# # [2903]3 8.97548 e-14 8.09366 e-12 # # [2904] 6 4.16341 e-26 1.24576 e-23 # # [2905] 13 0 0 # # [2906] 8 6.61618 e-30 2.41717 e-27 # #[2907] 18 0 0 # # - - - - - - - # #区域:129090和0元数据列# # seqinfo: 25从一个未指明的基因组序列;没有seqlengths
然而,最强大的特性之一GenomicInteractions
包是能够注释每一个锚的基因组区域,然后根据这些特性总结交流。这个注释被实现为元数据列的锚GenomicInteractions
对象也是如此快,并促进更复杂的分析。
我们标注锚的顺序是很重要的,因为每个锚只能有一个node.class
。第一列优先考虑。任何区域不重叠的范围annotation.features
将被贴上远端
。
annotation.features= list(promoter=refseq.promoters, terminator=refseq.terminators, gene.body=refseq.transcripts) annotateInteractions(k562.rep1, annotation.features)
# #注释与启动子…
# #注释与终结者…
# #注释基因。身体……
annotationFeatures (k562.rep1)
# #[1]“远”“基因。身体”“子”“终结者”
我们现在可以找到交互涉及使用带注释的推动者node.class
为每个锚:
p。一个= anchorOne (k562.rep1)美元节点。类= = p“促进者”。两个= anchorTwo (k562.rep1)美元节点。类= =“发起人”k562.rep1 [p.one | p.two]
与2907年# # GenomicInteractions对象交互和3元数据列:# # seqnames1 ranges1 seqnames2 ranges2 | # # < Rle > < IRanges > < Rle > < IRanges > | # # [1] chr17 616579 - 621961——chr17 620668 - 626263 | # # [2] chr17 632527 - 638035——chr17 636589 - 641349 | # # [3] chr17 634119 - 651606——chr17 642299 - 659172 | 654892 - 657597 # # [4] chr17——chr17 683191 - 687275 | 656002 - 658841 # # [5] chr17——chr17 679595 - 682692 | # #………………。# # [2903]chr18 77781151 - 77783476——chr18 77783476 - 77781151 | # # [2904] chr18 77784590 - 77787797——chr18 77787797 - 77784590 | # # [2905] chr18 77792093 - 77797983——chr18 77797983 - 77792093 | # # [2906] chr18 77793365 - 77797939——chr18 77797939 - 77793365 | # # [2907] chr18 77863992 - 77870413——chr18 77870413 - 77863992 | # #计算p。价值罗斯福# # <整数> <数字> <数字> # # [1]7 2.06358 e-32 8.50563 e-30 # # [2] 9 2.395 e-36 1.1518 e-33 # # 0 0 # # 55 [3] [4] 6 4.86283 e-24 1.27856 e-21 # # [5] 3 6.23098 e-14 5.72161 e-12 # #……# # [2903]3 8.97548 e-14 8.09366 e-12 # # [2904] 6 4.16341 e-26 1.24576 e-23 # # [2905] 13 0 0 # # [2906] 8 6.61618 e-30 2.41717 e-27 # #[2907] 18 0 0 # # - - - - - - - # #区域:129090范围和4 # #元数据列seqinfo: 25从一个未指明的基因组序列;没有seqlengths
这个信息可以用来归类交互promoter-distal, promoter-terminator等。可以生成表的交互类型categoriseInteractions
:
categoriseInteractions (k562.rep1)
# # 1 # #类别数distal-distal 396 # # 2 distal-gene。身体76 # # 3 distal-promoter 519 # # 4 distal-terminator 101 # # 5 gene.body-gene。身体795 # # 6基因。body-promoter 917 # # 7基因。body-terminator 164 # # 8 promoter-promoter 1187 # # 9 promoter-terminator 284 # # 10 terminator-terminator 70
或者,我们可以基于交互类型子集的对象:
k562.rep1 [isInteractionType (k562)。rep1“终结者”,“gene.body”))
与164年# # GenomicInteractions对象交互和3元数据列:# # seqnames1 ranges1 seqnames2 ranges2 |计数# # < Rle > < IRanges > < Rle > < IRanges > | <整数> # # [1]chr17 1471460 - 1474306——chr17 1474306 - 1471460 | 4 # # [2] chr17 1632603 - 1638741——chr17 1638741 - 1632603 | 12 # # [3] chr17 3845975 - 3849573——chr17 3849573 - 3845975 | 5 # # [4] chr17 4055645 - 4058706——chr17 4058706 - 4055645 | 4 # # [5] chr17 4443889 - 4451615——chr17 4451615 - 4443889 | 11 # #……………………# # [160]chr18 32873043 - 32876330——chr18 32876330 - 32873043 | 4 # # [161] chr18 33566139 - 33569380——chr18 33569380 - 33566139 | 3 # # [162] chr18 33689982 - 33692774——chr18 33692774 - 33689982 | 4 # # [163] chr18 42638745 - 42641928——chr18 42641928 - 42638745 | 3 # # [164] chr18 77914125 - 77916781——chr18 77916781 - 77914125 | 3 # # p。价值罗斯福# # <数字> <数字> # # [1]1.1438 e-18 1.92712 e-16 # # [2] 0 4.06377 e-44 # # [3] 1.46527 e-19 2.69952 e-17 # # [4] 4.96495 e-19 8.66918 e-17 # # [5] 7.2293 e-42 4.17953 e-39 # #………# # [160]1.37802 e15汽油1.62547 e-13 # # [161] 5.37957 e15汽油5.74333 e-13 # # [162] 1.35703 e-19 2.5096 e-17 # # [163] 1.03659 e15汽油1.24713 e-13 # # [164] 2.9097 e15汽油3.24878 e-13 # # - - - - - - - # #区域:129090范围和4 # #元数据列seqinfo: 25从一个未指明的基因组序列;没有seqlengths
最常见的3node.class
为了方便(见定义值有短函数is.pp ?
对于一个完整列表):
k562.rep1 [is.pp (k562.rep1)] # promoter-promoter交互k562.rep1 [is.dd (k562.rep1)] # distal-distal交互k562.rep1 [is.pt (k562.rep1)] # promoter-terminator交互
总结情节的交互类可以很容易地得到一个整体产生感觉的数据:
plotInteractionAnnotations (k562)。rep1其他= 5)
观点
只会带着这些交互一定吗node.class
:
plotInteractionAnnotations (k562)。rep1 = = 5,观点“发起人”)
这些也是在函数相结合plotSummaryStats
。
的summariseByFeatures
让我们更详细地看涉及一组特定的位点的相互作用。在这个示例中,我们使用所有RefSeq推动者,我们已经在加载GRangesList
对象。
但是可以使用任何数据集可以表示为一个命名农庄
对象,例如转录因子芯片数据,预测基因工程网站或某些类别的基因。
从注释自动生成的类别node.class
值的对象。
k562.rep1.promoter。注释= summariseByFeatures (k562。rep1 refseq。启动子,“子”,距离。方法=“中点”annotate.self = TRUE) colnames (k562.rep1.promoter.annotation)
# #[1]”发起人。id”# # [2]”numberOfPromoterInteractions“# #”[3] numberOfPromoterUniqueInteractions“# # [4]”numberOfPromoterInterChromosomalInteractions“# #”[5] numberOfPromoterUniqueInterChromosomalInteractions“# #”[6] numberOfPromoterDistalInteractions numberOfPromoterGene“# # [7]”。bodyInteractions“# #”[8] numberOfPromoterPromoterInteractions“# #”[9] numberOfPromoterTerminatorInteractions“# #”[10] numberOfUniquePromoterDistalInteractions numberOfUniquePromoterGene“# # [11]”。bodyInteractions“# #”[12] numberOfUniquePromoterPromoterInteractions“# #”[13] numberOfUniquePromoterTerminatorInteractions“# #”[14] PromoterDistanceMedian“# #”[15] PromoterDistanceMean“# #”[16] PromoterDistanceMinimum“# #”[17] PromoterDistanceMaximum“# # [18]”PromoterDistanceWeightedMedian numberOfSelfPromoterGene“# # [19]”。bodyInteractions“# #”[20] numberOfSelfPromoterPromoterInteractions“# # [21]”numberOfSelfPromoterTerminatorInteractions numberOfSelfUniquePromoterGene“# # [22]”。bodyInteractions“# # [23]”numberOfSelfUniquePromoterPromoterInteractions numberOfSelfUniquePromoterTerminatorInteractions“# # [24]
这让我们很快生成的摘要数据和孤立感兴趣的基因提供了一种快速方法。在这种情况下我们生产的RefSeq id列表,它可以很容易地转化为EntrezIDs或基因符号通过现有BioConductor包(在这种情况下org.Hs.eg.db
提供bimaps之间常见的人类基因组注释)。
启动子具有最强的基于PET-counts Promoter-Promoter交互?
我=订单(k562.rep1.promoter。注释numberOfPromoterPromoterInteractions美元,减少= TRUE) [1:10] k562.rep1.promoter.annotation(我,“Promoter.id”)
# # [1]“100506779”“9256”“406934”“54894”“100616220”“6827”# # [7]“56155”“5889”“5034”“396”
发起人所接触最多的远端元素?
我=订单(k562.rep1.promoter。注释numberOfUniquePromoterDistalInteractions美元,减少= TRUE) [1:10] k562.rep1.promoter.annotation(我,“Promoter.id”)
# # [1]“10140”“400604”“7050”“100130581”“100616277”“26118”# # [7]“100874261”“101927666”“140735”“5366”
多少百分比的启动子转录终止点的接触吗?
总= (k562.rep1.promoter求和。注释$ numberOfPromoterTerminatorInteractions > 0) sprintf (“%。2 f % %的推动者- t互动”,100 *总/ nrow (k562.rep1.promoter.annotation))
# #[1]“16.43%的启动子- t互动”
李,郭亮,et al。”软件ChIA-PET工具综合染色质交互分析paired-end标记排序。“基因组医学杂志11 (2010):R22。
李,郭亮,et al。”广泛promoter-centered染色质交互提供一个拓扑转录调控的依据。“细胞148.1 (2012):84 - 98