首页 > 其他分享 >ATAC-seq分析:比对(3)

ATAC-seq分析:比对(3)

时间:2023-01-03 22:55:48浏览次数:49  
标签:分析 文件 读取 seq ATAC hg19 我们 BSgenome

1. 质控

在比对之前,我们建议花一些时间查看 FASTQ 文件。一些基本的 QC 检查可以帮助我们了解您的测序是否存在任何偏差,例如读取质量的意外下降或非随机 GC 内容。

2. Greenleaf

在本节中,我们将稍微处理一下 Greenleaf 数据集。

我们将处理从 FASTQ 到 BAM 的 Greenleaf 数据的一个样本,以允许我们审查 ATACseq 数据的一些特征,并创建一些处理过的文件以供审查和进一步分析。

3.参考基因组

首先,我们需要创建一个参考基因组来比对我们的 ATACseq 数据。我们可以创建一个 FASTA 文件用于从 Bioconductor BSGenome 对象进行比对。

这次我们正在处理人类数据,因此我们将使用 BSgenome.Hsapiens.UCSC.hg19 库构建 hg19 基因组。

library(BSgenome.Hsapiens.UCSC.hg19)
mainChromosomes <- paste0("chr",c(1:21,"X","Y","M"))
mainChrSeq <- lapply(mainChromosomes,
                     function(x)BSgenome.Hsapiens.UCSC.hg19[[x]])
names(mainChrSeq) <- mainChromosomes
mainChrSeqSet <- DNAStringSet(mainChrSeq)
writeXStringSet(mainChrSeqSet,
                "BSgenome.Hsapiens.UCSC.hg19.mainChrs.fa")

4. Rsubread

对于 Rsubread,我们必须在 Rsubread 的对齐步骤之前建立我们的索引。

这里我额外指定参数 indexSplit 为 TRUE 并结合 memory 参数设置为 1000 (1000MB) 以控制 Rsubread 对齐步骤中的内存使用。

library(Rsubread)
buildindex("BSgenome.Hsapiens.UCSC.hg19.mainChrs",
           "BSgenome.Hsapiens.UCSC.hg19.mainChrs.fa",
           indexSplit = TRUE,
           memory = 1000)

5. 比对准备

现在我们有了索引,我们可以比对我们的 ATACseq 读数。由于 ATACseq 数据通常是双端测序,我们需要对比对步骤进行一些小的调整。

双端测序数据通常以两个文件的形式出现,通常在文件名中带有 _1_2_R1_R2 来表示一个文件是成对的数字。

read1 <- "ATAC_Data/ATAC_FQs/SRR891269_1.fastq.gz"
read2 <- "ATAC_Data/ATAC_FQs/SRR891269_2.fastq.gz"

我们的两个匹配的双端读取文件将(通常)包含相同数量的读取,并且两个文件中的读取顺序相同。读取名称将跨文件匹配以进行配对读取,但名称中的 1 或 2 除外,以表示读取是一对中的第一个还是第二个。

require(ShortRead)
read1 <- readFastq("data/ATACSample_r1.fastq.gz")
read2 <- readFastq("data/ATACSample_r2.fastq.gz")
id(read1)[1:2]

id(read2)[1:2]

成对读数之间的距离在 ATACseq 中很重要,它使我们能够区分读数映射与分别指示信号的无核小体和核小体部分的短或长片段。在比对步骤之后,插入大小为我们提供了 read1 和 read2 起点之间的总距离。

我们可以对 DNA 使用标准比对(对于 ChIPseq),但我们增加了最大允许片段长度以捕获代表多核小体信号的长片段。

此处设置的最大允许片段长度基于 Greenleaf 研究中使用的参数。为了控制允许的最大片段长度,我将 maxFragLength 参数设置为 2000。我还将 unique 参数设置为 TRUE 以仅包括唯一映射读取。

align("BSgenome.Hsapiens.UCSC.hg19.mainChrs",
      readfile1=read1,readfile2=read2,
      output_file = "ATAC_50K_2.bam",
      nthreads=2,type=1,
      unique=TRUE,maxFragLength = 2000)

要使用 Rbowtie2,我们还必须在比对之前构建我们的索引。在这里,我们使用 bowtie2_build() 函数指定我们的 FASTA 文件的参数来构建索引和所需的索引名称。

library(Rbowtie2)
bowtie2_build(references="BSgenome.Hsapiens.UCSC.hg19.mainChrs.fa", 
              bt2Index="BSgenome.Hsapiens.UCSC.hg19.mainChrs_bowtie2")

6. 解压

一旦我们有了索引,我们必须使用 gunzip() 函数解压缩我们的 FASTQ 文件。

gunzip("ATAC_Data/ATAC_FQs/SRR891269_1.fastq.gz")
gunzip("ATAC_Data/ATAC_FQs/SRR891269_2.fastq.gz")

7. 比对

现在我们可以使用 bowtie2() 函数将我们的 FASTQ 与基因组对齐,指定我们的 read1 和 read2 到 seq1 和 seq2 参数。最后,我们可以使用 asBam() 函数将输出的 SAM 文件转换为 BAM 文件。

注意NOTE: SAM 和未压缩的FASTQ 文件会占用大量磁盘空间。完成后,最好重新压缩 FASTQ 并使用 unlink() 函数删除 SAM 文件。

library(Rsamtools)
bowtie2(bt2Index = "BSgenome.Hsapiens.UCSC.hg19.mainChrs_bowtie2",
          samOutput = "ATAC_50K_2_bowtie2.sam",
          seq1 = "ATAC_Data/ATAC_FQs/SRR891269_1.fastq",
          seq1 = "ATAC_Data/ATAC_FQs/SRR891269_2.fastq"
        )
asBam("ATAC_50K_2_bowtie2.sam")

8. 排序

比对后,我们希望对 BAM 文件进行排序和索引,以便与外部工具一起使用。首先,我们按序列顺序对比对数据进行排序(此处不是 Read Name)。然后我们索引我们的文件,允许其他程序(例如 IGV、Samtools)和我们将使用的 R/Bioconductor 包快速访问特定的基因组位置。

library(Rsamtools)
sortedBAM <- file.path(dirname(outBAM),
                       paste0("Sorted_",basename(outBAM))
                       )

sortBam(outBAM,gsub("\\.bam","",basename(sortedBAM)))
indexBam(sortedBAM)

9. 结果探索

在 ATACseq 中,我们将要检查映射读取跨染色体的分布。我们可以使用 idxstatsBam() 函数检查每条染色体上映射读取的数量。已知 ATACseq 在线粒体染色体上具有高信号,因此我们可以在此处进行检查。

library(Rsamtools)
mappedReads <- idxstatsBam(sortedBAM)

我们现在可以使用映射的读取数据框来制作跨染色体读取的条形图。在这个例子中,我们看到了线粒体基因组映射率很高的情况。

library(ggplot2)

ggplot(mappedReads, aes(seqnames, mapped, fill = seqnames)) + geom_bar(stat = "identity") +
    coord_flip()


欢迎Star -> 学习目录

更多教程 -> 转录组测序分析教程合集

更多教程 -> 单细胞系列教程:合集


本文由mdnice多平台发布

标签:分析,文件,读取,seq,ATAC,hg19,我们,BSgenome
From: https://www.cnblogs.com/swindler/p/17023618.html

相关文章

  • jstack和线程dump分析
          jstack命令的语法格式:jstack <pid>。可以用jps查看java进程id。这里要注意的是:      1.不同的JAVA虚机的线程DUMP的创建方法和文件格式是不一样的,......
  • [答疑]对分析工作量的误解
    仁达华2018-11-510:37老师,分析做到什么详细程度呢,好像要花很多工作量而且还做不好。潘加宇:分析的详细程度:【尽力】把【当前用例所需要的】核心域知识展示出来,包括类图、序......
  • 上海或北京和分析模式专家Eduardo B. Fernandez交流
    EduardoB.Fernandez这段时间在中国度假,他很希望有机会和中国的软件开发人员交流。感兴趣的同学,如果刚好在Fernandez教授所在地点附近,可以买他的书上门求签名并交流---【不......
  • 《软件方法》第9章 分析之分析类图—案例篇Part1(20211114更新)
    鸳鸯扣,宜结不宜解《身似摇红烛影》,词:唐涤生,曲:王粤生,唱:红线女,1954​9.1本书案例介绍9.1.1案例更换《软件方法(上)》以及下册2018年发布的电子版本,使用的案例是“UMLChina系统......
  • jsjiami.v6算法分析
    这是一个例子:constjsjiami={v6:(str)=>{letresult='';for(leti=0;i<str.length;i++){result+=String.fromCharCode(str.charCodeAt(i)......
  • 分析模式(1)幻灯片
    分析模式(1)幻灯片......
  • 分析cookie session token区别
    github找个springMVC的例子,运行起来以供测试。​​https://github.com/Cenyol/SpringMVC​​修改部分代码//首页@RequestMapping(value="/",method=RequestMethod......
  • 巧用数据分析表达式,让数据指标创建更简单
    实现数据+业务一体化的指标分析从零售系统进化史get数据统计的需求变更零售系统需要的数据统计需求V1.0只需要获取当日累计的销售额,于是店老板就用Excel或者纸质的表......
  • python脚本性能分析
    1.python脚本性能分析cProfile思路使用cProfile模块生成脚本执行的统计信息文件使用pstats格式化统计信息,并根据需要做排序分析处理使用snakeviz图形化页面显示2.cP......
  • 基于类加载的dex热修复分析
    dex文件的热修复方法有很多,例如通过类加载器或者偏底层的实现通过修改ArtMethod。这里只分析基于类加载器的dex热修复原理,实际dex插件化的原理和热修复的原理也有类似之处......