ELIGOS2
摘要
Oxford Nanopore Technology (ONT) 提供的测序平台允许我们在无需扩增的情况下对 DNA 和 RNA 进行本征测序。因此,任何存在于本征序列上的修饰都被保留下来,从而记录了离子信号。信号的变化,与标准碱基呼叫模型不同,导致碱基呼叫器错误地将这些变化解释为测序错误。我们利用这些错误来识别 RNA 转录本或 DNA 序列上修饰的位置。
ELIGOS 是为了从特定碱基上的错误 (ESB) 差异中识别本征 RNA 序列上的修饰位置而开发的。我们采用标准的统计分析方法,费舍尔精确检验 (Fisher’s exact test) 来评估错误的差别。参考序列可以是体外转录得到的未修饰 RNA 序列、cDNA 序列,或者是我们开发的背景错误模型 (rBEM),后者模拟了未修饰 RNA 序列的系统误差。
ELIGOS 目前可以应用于执行:
- 两种不同条件下的表观转录组差异分析(DNA、RNA)(参见示例 1)
- 表观转录组分析(RNA)(参见示例 2)
- DNA 修饰的识别,如 DNA 加合物(参见示例 3)
引用文献:
- Piroon Jenjaroenpun, Thidathip Wongsurawat, Taylor D Wadley, Trudy M Wassenaar, Jun Liu, Qing Dai, Visanu Wanchai, Nisreen S Akel, Azemat Jamshidi-Parsian, Aime T Franco, Gunnar Boysen, Michael L Jennings, David W Ussery, Chuan He, Intawat Nookaew, “从本征 RNA 序列解码表观转录组景观”。《核酸研究》, 2020, gkaa620, https://doi.org/10.1093/nar/gkaa620
- Intawat Nookaew, Piroon Jenjaroenpun, Hua Du, Pengcheng Wang, Jun Wu, Thidathip Wonsurawat, Sun Hee Moon, En Huang, Yinsheng Wang, Gunnar Boysen, “通过纳米孔测序检测和区分大小、区域化学和功能团不同的 DNA 加合物”。《化学研究毒理学》, 2020, https://doi.org/10.1021/acs.chemrestox.0c00202
SRA Fast5:
https://trace.ncbi.nlm.nih.gov/Traces/sra/?study=SRP166020
期刊封面:
安装
ELIGOS 在 Linux/Mac/Windows(WSL) 上的安装
Miniconda3 安装
点击链接
通过 GitLab 下载 ELIGOS
## 从 GitLab 下载 ELIGOS
git clone https://gitlab.com/piroonj/eligos2.git
转到 ELIGOS 文件夹
cd eligos2
3. 创建 ELIGOS 的 conda 环境
-
使用以下命令创建环境:bash
安装环境
这个 conda create 可能会遇到包冲突
conda create -n eligos2 -c bioconda -c conda-forge -c anaconda python=3.6 pysam=0.13 pandas=0.23.4 pybedtools=0.8.0 bedtools=2.25 rpy2=2.8.5 r-base=3.4.1 tqdm=4.40.2 numpy=1.11.3
我最近尝试不指定版本,并且对我有用。
conda install mamba
conda update mamba
mamba create -n eligos2 -c conda-forge -c bioconda -c r python=3.10 pysam pandas pybedtools bedtools rpy2 r-base tqdm numpy
激活 ELIGOS 环境
conda activate eligos2
安装 samplesizeCMH 模块
Rscript -e 'install.packages("samplesizeCMH", repos="https://cloud.r-project.org")'
将 ELIGOS 导出到系统环境
export PATH=$PWD:$PWD/Scripts:$PATH
运行 ELIGOS
eligos2 -h
-
从 environment.yml 文件创建环境:bash
安装环境
conda env create -f eligos2.linux.yml
激活 ELIGOS 环境
conda activate eligos2
安装 samplesizeCMH 模块
Rscript -e 'install.packages("samplesizeCMH", repos="https://cloud.r-project.org")'
将 ELIGOS 导出到系统环境
export PATH=$PWD:$PWD/Scripts:$PATH
运行 ELIGOS
eligos2 -h
ELIGOS 在 Docker 或 Singularity 容器上的安装
在计算机上安装 Docker 或 Singularity。点击链接:Docker 或 Singularity
安装 ELIGOS
从 DockerHub 安装 ELIGOS
## 从 DockerHub 安装 ELIGOS
docker pull piroonj/eligos2
运行 ELIGOS
docker run --rm -v $PWD:$PWD -w $PWD piroonj/eligos2 eligos2 -h
- 从 Dockerfile 安装 ELIGOS
从 GitLab 下载 ELIGOS
git clone https://gitlab.com/piroonj/eligos2.git
转到 DockerFiles 文件夹
cd eligos2/DockerFiles
在 docker 上构建 ELIGOS
docker build -t piroonj/eligos2:latest .
运行 ELIGOS
docker run --rm -v $PWD:$PWD -w $PWD piroonj/eligos2 eligos2 -h
通过 Singularity 图像安装 ELIGOS
## 从 DockerHub 创建 ELIGOS 的 Singularity 图像
singularity build eligos2.sif docker://piroonj/eligos2:latest
运行 ELIGOS
singularity exec eligos2.sif eligos2 -h
使用说明
主要功能
eligos2 -h
usage: eligos2 [-h] [-v]
{map_preprocess,build_genedb,rna_mod,pair_diff_mod,bedgraph,filter}
...
ELIGOS 是一套用于识别纳米孔测序数据中修饰核苷酸的工具包。
ELIGOS 命令组:
map_preprocess 预处理映射读取
build_genedb 从基因数据库构建 bam 文件
rna_mod 根据 rBEM5+2 模型识别 RNA 修饰
pair_diff_mod 根据对照条件识别 RNA 修饰
bedgraph 过滤和创建 IGV 图表的 BedGraph
filter 过滤 Eligos 结果
可选参数:
-h, --help 显示此帮助消息并退出
-v, --version 显示 ELIGOS 版本并退出。
索引 BAM 和参考序列
在使用 eligos2 之前,需要对 BAM 文件和参考序列进行索引。
索引 BAM
samtools index file.bam
索引参考序列
samtools faidx file.fasta
示例
- 对酵母减数分裂转录组进行差异 ESB 分析,以识别 m6A 和富集的 RRACH 基序
使用 Lui 等人 (https://doi.org/10.1038/s41467-019-11713-9) 的 m6A 甲基转移酶敲除株 (∆ime4) 和野生型在减数分裂状态下生长的本征 RNA 序列进行此示例。示例使用了预先鉴定为含有腺嘌呤差异 %ESB 位点的 531 个转录本的子集。
运行 ELIGOS 比较野生型和敲除株的本征 RNA
1.1 下载数据:示例文件包含两个映射读取 (BAM 文件) 的 ∆ime4 和野生型,基因位置 (BED 文件),和参考 (FASTA 文件)。
1.dRNA_m6A_yeast_knockout.tar.gz 下载
1.dRNA_m6A_yeast_knockout/
├── sc_KO.selected.bam
├── sc_KO.selected.bam.bai
├── sc_WT.selected.bam
├── sc_WT.selected.bam.bai
├── yeast.S288C.genes.selected_set.bed
├── yeast.S288C.genome.fa.gz
├── yeast.S288C.genome.fa.gz.fai
└── yeast.S288C.genome.fa.gz.gzi
1.2 运行 ELIGOS 命令
索引参考序列
samtools faidx yeast.S288C.genome.fa.gz
运行 ELIGOS 比较 Wild-type (-tbam) 和 Knock-out (-cbam)
eligos2 pair_diff_mod -tbam sc_WT.selected.bam -cbam sc_KO.selected.bam -reg yeast.S288C.genes.selected_set.bed -ref yeast.S288C.genome.fa.gz -t 34 --pval 0.001
--oddR 1.2 --esb 0 -o results
使用 eligos2 filter 提取潜在的碱基 A 修饰,并过滤掉同聚物序列
eligos2 filter -i results/sc_WT.selected_vs_sc_KO.selected_on_yeast.S288C.genes.selected_set_baseExt0.txt -sb A --homopolymer --esb 0 --oddR 1.2 --pval 0.001
显示输出文件
head sc_WT.selected_vs_sc_KO.selected_on_yeast.S288C.genes.selected_set_baseExt0.A.filtered.txt
1.3 提取具有 6bp 上下游扩展的潜在修饰 A 序列
从压缩的 fasta 文件中提取 fasta
gunzip -c yeast.S288C.genome.fa.gz > yeast.S288C.genome.fa
samtools faidx yeast.S288C.genome.fa
将 Eligos 输出转换为带有 6bp 上下游扩展的 fasta 文件
table2fa_eligos.mergeextend.sh results_5_test_pval_and_adjP/sc_WT.selected_vs_sc_KO.selected_on_yeast.S288C.genes.selected_set_baseExt0.A.filtered.txt yeast.S288C.genome.fa
检查序列输出
head sc_WT.selected_vs_sc_KO.selected_on_yeast.S288C.genes.selected_set_baseExt0.A.filtered.fa
1.4 使用 BaMM motif 进行去新基序发现
上述差异腺嘌呤 (above) 的序列可用于使用 BaMM motif 发现 (https://doi.org/10.1093/nar/gky431) 通过 web 服务 (https://bammmotif.soedinglab.org/job/denovo/) 识别共识基序。
BaMM motif 网站
使用去新基序发现
上传上述输出 fasta 文件和 BaMM!。我们将获得下图所示的共识 RRACH 基序。
- 使用 rBEM_k5+2 模型检测 MYC 和 JUNB 转录本的 RNA 修饰
使用 Workman 等人 (https://doi.org/10.1038/s41592-019-0617-2) 的人类转录组本征 RNA 序列进行此示例。示例使用了两个癌基因转录本 MYC 和 JUNB。
2.1 下载数据:示例文件包含映射读取 (BAM 文件),基因位置 (BED 文件),cDNA (BCF 文件),和染色体 (FASTA 文件)。
2.dRNA_m6A_MYC_JUNB.tar.gz 下载
2.dRNA_m6A_MYC_JUNB
├── chr8_chr19.fa.gz
├── chr8_chr19.fa.gz.fai
├── chr8_chr19.fa.gz.gzi
├── myc_junb.bed
├── rna_consortium.myc_junb.bam
├── rna_consortium.myc_junb.bam.bai
├── rna_consortium.myc_junb.bcf
└── rna_consortium.myc_junb.bcf.csi
2.2 运行 eligos 比较本征 RNA 和 rBEM5+2 模型
运行 ELIGOS
eligos2 rna_mod -i rna_consortium.myc_junb.bam -bcf rna_consortium.myc_junb.bcf -reg myc_junb.bed -ref chr8_chr19.fa.gz -o results_myc_junb --pval 1e-5 --oddR 5 --esb 0.2
2.3 创建带有过滤选项的 BedGraph 文件格式
创建选择 A 碱基并过滤掉同聚物序列的 ESB 信号的 BedGraph 文件
eligos2 bedgraph -i results_myc_junb/rna_consortium.myc_junb_vs_model_on_myc_junb_baseExt0.txt --select_base A --signal ESB --homopolymer
检查 Native RNA 读取中 ESB 频率的输出 (test)
head results_myc_junb/rna_consortium.myc_junb_vs_model_on_myc_junb_baseExt0.A.ESB_test.bdg
检查 rBEM5+2 模型中 ESB 频率的输出 (ctrl)
head results_myc_junb/rna_consortium.myc_junb_vs_model_on_myc_junb_baseExt0.A.ESB_ctrl.bdg
生成的 bed 图文件可用于在 IGV (http://software.broadinstitute.org/software/igv/) 中可视化腺嘌呤的差异 ESB 位置。
PS: dRNA ESB 频率以青色显示,rBEM5+2 ESB 频率以洋红色显示
- 对合成质粒进行差异 ESB 分析以识别 DNA 加合物
使用含有一个 N2-Ethyl Deoxyguanine 的合成质粒的本征 DNA 序列进行此示例。
3.1 下载数据:示例文件包含两个映射读取 (BAM 文件) 的 N2Et 和 WT,基因位置 (BED 文件),cDNA (BCF 文件),和质粒 (FASTA 文件)。
3.DNA_N2Et_adduct.tar.gz 下载
3.DNA_N2Et_adduct
├── N2Et.DNA.bam
├── N2Et.DNA.bam.bai
├── WT.DNA.bam
├── WT.DNA.bam.bai
├── WT.plasmid.bed
├── WT.plasmid.fa.gz
├── WT.plasmid.fa.gz.fai
└── WT.plasmid.fa.gz.gzi
3.2 运行 ELIGOS 比较 N2Et 修饰 DNA 和本征 DNA
过滤掉短于 200 碱基的映射读取
eligos2 map_preprocess -aln 200 -i N2Et.DNA.bam
eligos2 map_preprocess -aln 200 -i WT.DNA.bam
运行 ELIGOS
eligos2 pair_diff_mod -tbam N2Et.DNA.preprocess.bam -cbam WT.DNA.preprocess.bam -reg WT.plasmid.bed -ref WT.plasmid.fa.gz -o results --oddR 0 --esb 0 --pval 1 --adjPval 1
3.3 创建带有过滤选项的 BedGraph 文件格式
创建过滤掉同聚物序列的奇数比率信号的 BedGraph 文件
eligos2 bedgraph -i results/N2Et.DNA.preprocess_vs_WT.DNA.preprocess_on_WT.plasmid_baseExt0.txt --signal oddR --homopolymer
检查输出
head results/N2Et.DNA.preprocess_vs_WT.DNA.preprocess_on_WT.plasmid_baseExt0.oddR.bdg
从生成的 BedGraph 文件中绘制的单个核苷酸的奇数比率水平显示了合成质粒上 N2-Ethyl Deoxyguanine 位置的正确识别。
- 使用 Cochran-Mantel-Haenszel (CMH) 测试从重复中识别 RNA 修改
为了执行,使用 CMH 测试在具有生物重复的两种条件下进行比较
4.1 下载数据:示例文件包含三个 rna_mod 结果 (TSV 文件) 的 RNA-seq 在乙醇条件下,以及三个 rna_mod 结果的葡萄糖条件,来自先前步骤 (eligos2 rna_mod)。
4.example_YPL061W_baseExt0.tar.gz 下载
tar -xvzf 4.example_YPL061W_baseExt0.tar.gz
4.example_YPL061W_baseExt0
├── drna_ethanol_11.mn200_vs_model_on_YPL061W_baseExt0.txt
├── drna_ethanol_21.mn200_vs_model_on_YPL061W_baseExt0.txt
├── drna_ethanol_31.mn200_vs_model_on_YPL061W_baseExt0.txt
├── drna_glucose_12.mn200_vs_model_on_YPL061W_baseExt0.txt
├── drna_glucose_22.mn200_vs_model_on_YPL061W_baseExt0.txt
└── drna_glucose_32.mn200_vs_model_on_YPL061W_baseExt0.txt
4.2 运行多样本测试
运行 multi_samples_test
eligos2 multi_samples_test --test_mods 4.example_YPL061W_baseExt0/drna_ethanol_.txt --ctrl_mods 4.example_YPL061W_baseExt0/drna_glucose_.txt --prefix ethanol_vs_glucose
wc -l ethanol_vs_glucose.CMH_testing.txt
结果描述
列 | 描述 |
---|---|
chrom | 参考名称 |
start_loc | 映射起始位置 |
end_loc | 映射结束位置 |
strand | 映射方向 |
name | 来自 bed 文件的区域/基因名称 |
ref | 参考序列 |
homo_seq | 与同聚物序列重叠 |
kmer5 | 碱基 5 聚体:第三个位置的参考 |
majorAllel | 频率最高的碱基 (主要等位基因) |
majorAllelFreq | 主要等位基因的最高频率 |
kmer7 | 碱基 7 聚体:第三个位置的参考 |
test_err_1 | 测试样本中错误碱基的计数 |
model_err_1 | rBEM 模型中错误碱基的计数 |
test_cor_1 | 测试样本中正确碱基的计数 |
model_cor_1 | rBEM 模型中正确碱基的计数 |
oddR | 奇数比率 |
pval | P 值 |
adjPval | 校正 P 值 |
baseExt | 碱基扩展 (0, 1, 或 2 碱基) |
total_reads | 总读取计数 |
ESB_test | 测试样本中特定碱基的误差百分比 |
ESB_ctrl | 测试 rBEM 模型中特定碱基的误差百分比 |