生信算法流程单细胞分析ATAC_seq

生信 | scATAC-Seq数据获取(超快sra转fq)

2021-07-12  本文已影响0人  生信卷王

部分代码参考自10x genomics官网,但绝大多数代码融入了我自己的思考

1、上游分析(软件安装 + 数据获取 + call peak)

1.1 软件安装

1) 服务器硬件与软件要求

# 先激活任意一个 conda 环境,然后再执行下面的代码
conda install -c freenome bcl2fastq -y
# 检查是否安装成功
bcl2fastq -h

2) Cell Ranger ATAC - 2.0.0软件安装(1.7GB)

wget -O cellranger-atac-2.0.0.tar.gz "https://cf.10xgenomics.com/releases/cell-atac/cellranger-atac-2.0.0.tar.gz?Expires=1626103123&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZi4xMHhnZW5vbWljcy5jb20vcmVsZWFzZXMvY2VsbC1hdGFjL2NlbGxyYW5nZXItYXRhYy0yLjAuMC50YXIuZ3oiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2MjYxMDMxMjN9fX1dfQ__&Signature=VODjodUMuNGP51unCTQHn6ONd8dI~tepKSW0qDcxv2n2LKQoCMxKoTD6Vdkidwl7F~a0XAnc1~ji5V4wgkQgeY5~gbqf~ZMNpAxf3AXU9XreMwsP7izc-EDOelCbcUkK8n3ynfzXSKvq9qR008LjPwIGUAN0prS9xJNFkPD0Dq7GiK~tKZ5-g~20YEwpx--OMeIpzEvVlq-xpKNVy8qjulshKgslmcOPs7lHxv9bI04Xd8XFS5CE9DoKKD~2bCyXTXWYSRAhWLsXDdozGzVaSVJwh8sbarQzRaot79GCS~xQPkmZJmnXuKgHFiwUDmFenOtpkYh2gqpo1nEfaFBlTQ__&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA"
tar -xzvf cellranger-atac-2.0.0.tar.gz
# 永久添加到环境变量
echo 'export PATH=/你的安装路径/cellranger-atac-2.0.0:$PATH' >> ~/.bashrc
source ~/.bashrc
# 检查是否安装成功,需要 3分钟,最后提示Pipestance completed successfully!
cellranger-atac testrun --id=tiny
rm cellranger-atac-2.0.0.tar.gz

1.2 数据获取

1)数据来源一:对下机数据base calling files(BCL)转为fastq文件(做生信的跳过)
软件:cellranger mkfastq : 它借鉴了Illumina的bcl2fastq ,可以将一个或多个lane中的混样测序样本按照index标签生成样本对应的fastq文件。即对下机数据base calling files转为fastq文件。

# 下载Illumina® BCL的测序文件,大小为233MB
wget https://cf.10xgenomics.com/supp/cell-atac/cellranger-atac-tiny-bcl-1.0.0.tar.gz
# 下载样本注释文件,也可以自己手动创造,见下文格式
wget https://cf.10xgenomics.com/supp/cell-atac/cellranger-atac-tiny-bcl-simple-1.0.0.csv
tar -zvxf cellranger-atac-tiny-bcl-1.0.0.tar.gz
rm cellranger-atac-tiny-bcl-1.0.0.tar.gz
head cellranger-atac-tiny-bcl-simple-1.0.0.csv
# 三列,逗号分割
Lane,Sample,Index
1,test_sample,SI-NA-C1
cellranger-atac mkfastq --id=tiny-bcl \
                     --run=cellranger-atac-tiny-bcl-1.0.0 \
                     --csv=cellranger-atac-tiny-bcl-simple-1.0.0.csv \
                     --delete-undetermined

--id:输出文件夹的名字
--run:测序文件夹的名字
--csv:样本注释文件
--delete-undetermined:删除输出文件中的undetermined文件

ls -lh tiny-bcl/outs/fastq_path/HJN3KBCX2/test_sample

\color{red}{2)数据来源二:从SRA/ENA上下载(生信砖家请重点关注)}

wget https://d3gcli72yxqn2z.cloudfront.net/connect_latest/v4/bin/ibm-aspera-connect-3.11.2.63-linux-g2.12-64.tar.gz
tar -zvxf ibm-aspera-connect-3.11.2.63-linux-g2.12-64.tar.gz
sh ibm-aspera-connect-3.11.2.63-linux-g2.12-64.sh
# 永久添加到环境变量
echo 'export PATH=~/.aspera/connect/bin:$PATH' >> ~/.bashrc

wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.9.6/sratoolkit.2.9.6-ubuntu64.tar.gz
tar -zvxf sratoolkit.2.9.6-ubuntu64.tar.gz
echo 'export PATH=/你的安装路径/sratoolkit.2.9.6-ubuntu64/bin:$PATH' >> ~/.bashrc

source ~/.bashrc
prefetch SRR13450125 -O ./

-O:大写的O,表示存放在指定的文件夹下
使用prefetch是极度看脸的,因为你设置的所有想让他使用ascp下载的参数后,他依旧可能使用https下载,因此佛系一点吧,https也不算太慢。

fasterq-dump -p --include-technical -S -e 10 -O ./ SRR13450125.sra

-p:显示进程,非常推荐
--include-technical:这是关键点,如果不加这个参数是不会分解出来index和barcode文件的,这就不同于fastq-dump--split-files
-S:将分解出来的序列存放到不同的文件中,如I1, R1,R2,R3四个文件
-e:设置线程数
-O:大写的O,表示存放在指定的文件夹下

[Sample Name]_S1_L00[Lane Number]_[Read Type]_001.fastq
--------------------------------------------------------------
[Sample Name]:自己对样本的命名
[Lane Number]:同一个样本不同测序泳道的序号
[Read Type]:四种类型,如下
I1: Sample index read (这个文件可要可不要)
R1: Read 1
R2: barcode(这个文件必须要有)
R3: Read 2
--------------------------------------------------------------
举例如下:
SRR13450125_S1_L001_I1_001.fastq
SRR13450125_S1_L001_R1_001.fastq
SRR13450125_S1_L001_R2_001.fastq
SRR13450125_S1_L001_R3_001.fastq

可是,我们怎么知道上面的1,2,3,4怎么对应I1, R1,R2,R3啊?方法很简单,在浏览器中输入下面的网址查询一下文件的基本信息,需要查询其他的修改run=SRR13450125即可

https://trace.ncbi.nlm.nih.gov/Traces/sra/?run=SRR13450125

熟悉barcode的应该知道它为16bp,因此其中的L=16就代表着barcode文件,也就是R2,所以SRR13450125.sra_3.fastq就可以改名为SRR13450125_S1_L001_R2_001.fastq。而R1和R2命名给SRR13450125.sra_2.fastq或者SRR13450125.sra_4.fastq都可以,不放心的可以head一些文件看一看,这里我跑了一下fastqc进一步验证了我的观点

所以根据以上规则改名:
mv SRR13450125.sra_1.fastq SRR13450125_S1_L001_I1_001.fastq
mv SRR13450125.sra_2.fastq SRR13450125_S1_L001_R1_001.fastq
mv SRR13450125.sra_3.fastq SRR13450125_S1_L001_R2_001.fastq
mv SRR13450125.sra_4.fastq SRR13450125_S1_L001_R3_001.fastq
$ head SRR14539571.sra_2.fastq
@SRR14539571.sra.1 NB501658:300:HVW2LBGXF:1:11101:15875:1034 length=118
GTCCANCCATTTGTCTAAGAATTTCATGAATTCGTTGTTTCTAATAGCTAATGGCCGATGCGATGGACTCTTCCCATTGATGCCCGCNTAGGTNATNCTCTGCTACATATGCATCTAN
+SRR14539571.sra.1 NB501658:300:HVW2LBGXF:1:11101:15875:1034 length=118
AAAA/#AEE6/E6EE/EAEAEEAEEEEEEEEE6/EEEE/EEEEE/EAEAA/AAAAAEEAAEEEAEA/6AAAA/A/A6EEEE///E/E#EEEEE#AE#/E/A///EAEEEE//EA<AE#
@SRR14539571.sra.2 NB501658:300:HVW2LBGXF:1:11101:10442:1035 length=118
GTTTANTGGCTAGCTCATCCAGACCCCTCAACTAAACTAGTTTTCTATTGGCCCTTGCCTACAGGCATCGCTATTCTCGGCCCTTCCNGTTCAACANCTAGCCCTGGGTTCCCGAAGG
+SRR14539571.sra.2 NB501658:300:HVW2LBGXF:1:11101:10442:1035 length=118
AA6AA#EEE/E//E/EAEEE/E/AEEEEEE6EEEE6EE6EEEEEE/EEEEEA/A/AEAE/AEAEEAAAAAAAEAEE///EEEEE//A#A/E/EEE/#AEE/E6/6E//<A<EAAE/AE

终于把下载数据折腾完了

1.3 下载【比对索引】或者【自己构建索引】

这里就不得不吐槽10X了,你整那么大的索引干什么,下载起来贼费劲。

wget https://cf.10xgenomics.com/supp/cell-atac/refdata-cellranger-arc-mm10-2020-A-2.0.0.tar.gz
tar -zvxf refdata-cellranger-arc-mm10-2020-A-2.0.0.tar.gz
rm refdata-cellranger-arc-mm10-2020-A-2.0.0.tar.gz #快点删了
# 首先准备一个配置文件
vi config
# 在配置文件中输入以下内容后保存(字典格式)
{
    organism: "mouse"
    genome: ["GRCh38"]
    input_fasta: ["/public/bioinfoYu/genome/GRCm38.assembly.genome.fa"]
    input_gtf: ["/public/bioinfoYu/genome/GRCm38.annotation.gtf"]
    non_nuclear_contigs: ["chrM"]
    input_motifs: "/public/bioinfoYu/genome/motifs.pfm"
}
# 然后执行程序
cellranger-atac mkref --config=config

organism:可选参数,指定你想定义的物种名
genome:必选参数,输出文件所存放的文件夹名称
input_fasta:必选参数,物种的基因组文件
input_gtf:必选参数,物种的gtf注释文件
non_nuclear_contigs:构建索引的时候忽略的染色体,chrM指线粒体上的染色体,指定多个用逗号分割,如:["chrM","chrC"]
input_motifs::可选参数,指定jaspar格式的motif文件,推荐加上啊,可以去扣扣群559758504下载hg38或者mm10的motifs文件

1.4 call peak

这里就以我们下载的SRR13450125SRR13450126为例吧,因为二者是孪生兄弟,因此分析的时候一起分析,所以改名的时候不能说改为SRR13450125_S1...SRR13450126_S1...,要命名成同样的前缀,这里我统一命名为armstrong_IGO_09847_1,和作者保持一致,如下:

开始分析,cellranger-atac count的原理就是单纯的将两个lane文件合并后分析,后面我们看一下差别

cellranger-atac count --id=armstrong_result \
                        --reference=refdata-cellranger-arc-mm10-2020-A-2.0.0 \
                        --fastqs=mm10/ \
                        --sample=armstrong_IGO_09847_1 \
                        --localcores=8 \
                        --localmem=64

--id:输出的文件夹名称
--reference:下载或自己构建的参考基因组索引文件夹
--fastqs:存放样本的文件夹。路径前面一定不要有【/】,否则报错
--sample:样本名,也就是_S1前面的内容,我们前面改名为了armstrong_IGO_09847_1_S1...因此这个地方就是armstrong_IGO_09847_1
--lanes:指定分析一个样本下的单个lane,如--lanes=1则只分析L001的内容。如果不使用,则默认分析一个样本下的所有lanes,这里我们不使用,则同时分析L001L002
--localcores:默认占满服务器的所有核CPU,因此推荐设置的小一点,如8核
--localmem:请调整参数限制占用的运行内存

为了比较差异,我单独跑了一下L001L002的call peak结果,差异比较放到结果解读后面吧

for i in 1 2
do
cellranger-atac count --id=armstrong_result_${i} \
                        --reference=refdata-cellranger-arc-mm10-2020-A-2.0.0 \
                        --fastqs=mm10/test \
                        --sample=armstrong_IGO_09847_1 \
                        --lanes=${i}
                        --localcores=8 \
                        --localmem=64
done

1.5 结果解读

Outputs:
- Per-barcode fragment counts & metrics:        /home/bioinfoYu/armstrong_result/outs/singlecell.csv
- Position sorted BAM file:                     /home/bioinfoYu/armstrong_result/outs/possorted_bam.bam
- Position sorted BAM index:                    /home/bioinfoYu/armstrong_result/outs/possorted_bam.bam.bai
- Summary of all data metrics:                  /home/bioinfoYu/armstrong_result/outs/summary.json
- HTML file summarizing data & analysis:        /home/bioinfoYu/armstrong_result/outs/web_summary.html
- Bed file of all called peak locations:        /home/bioinfoYu/armstrong_result/outs/peaks.bed
- Raw peak barcode matrix in hdf5 format:       /home/bioinfoYu/armstrong_result/outs/raw_peak_bc_matrix.h5
- Raw peak barcode matrix in mex format:        /home/bioinfoYu/armstrong_result/outs/raw_peak_bc_matrix
- Directory of analysis files:                  /home/bioinfoYu/armstrong_result/outs/analysis
- Filtered peak barcode matrix in hdf5 format:  /home/bioinfoYu/armstrong_result/outs/filtered_peak_bc_matrix.h5
- Filtered peak barcode matrix in mex format:   /home/bioinfoYu/armstrong_result/outs/filtered_peak_bc_matrix
- Barcoded and aligned fragment file:           /home/bioinfoYu/armstrong_result/outs/fragments.tsv.gz
- Fragment file index:                          /home/bioinfoYu/armstrong_result/outs/fragments.tsv.gz.tbi
- Filtered tf barcode matrix in hdf5 format:    /home/bioinfoYu/armstrong_result/outs/filtered_tf_bc_matrix.h5
- Filtered tf barcode matrix in mex format:     /home/bioinfoYu/armstrong_result/outs/filtered_tf_bc_matrix
- Loupe Browser input file:                     /home/bioinfoYu/armstrong_result/outs/cloupe.cloupe
- csv summarizing important metrics and values: /home/bioinfoYu/armstrong_result/outs/summary.csv
- Annotation of peaks with genes:               /home/bioinfoYu/armstrong_result/outs/peak_annotation.tsv
- Peak-motif associations:                      /home/bioinfoYu/armstrong_result/outs/peak_motif_mapping.bed
 
Pipestance completed successfully!
上一篇下一篇

猜你喜欢

热点阅读