m6Anet
m6Anet 是一个 Python 工具,利用多重实例学习框架从纳米孔直接 RNA 测序数据中检测 m6A 修饰。
目录
- 运行 m6Anet
- 安装
- 数据准备
- 推断
- 版本说明
- 2.1.0
- 2.0.0
- 获取帮助
- 引用
- 贡献者
- 许可
运行 m6Anet
安装
m6Anet 需要 Python 版本 3.7 或更高版本。要使用 PyPI 安装最新版本(推荐),请运行:
$ pip install m6anet
或者,也可以使用以下命令通过 conda 安装:
$ conda install m6anet
请参阅我们的文档!
数据准备
m6Anet 数据准备需要 nanopolish eventalign 生成的 eventalign.txt:
nanopolish eventalign --reads reads.fastq --bam reads.sorted.bam --genome transcript.fa --scale-events --signal-index --summary /path/to/summary.txt --threads 50 > /path/to/eventalign.txt
此功能将原始 fast5 信号分割到转录组内的每个位置,允许 m6Anet 基于分割的信号进行修饰预测。为了运行 eventalign,用户将需要:
reads.fastq
: 从原始 .fast5 文件基础调用生成的 fastq 文件reads.sorted.bam
: 从将 reads.fastq 对齐到参考转录组文件得到的排序 bam 文件transcript.fa
: 参考转录组文件
我们还提供了一个演示用的 eventalign.txt 数据集,位于仓库的 /path/to/m6anet/m6anet/tests/data/eventalign.txt
。更多信息请参阅 Nanopolish。
运行 nanopolish eventalign 后,我们需要使用 ‘m6anet dataprep’ 预处理分割的原始信号文件:
m6anet dataprep --eventalign /path/to/m6anet/m6anet/tests/data/eventalign.txt \
--out_dir /path/to/output --n_processes 4
输出文件存储在 /path/to/output
:
data.json
: 包含输入 m6Anet 模型进行预测的特征的 json 文件data.log
: 记录所有已成功预处理的转录本的日志文件data.info
: 包含 data.json 的索引信息的文件,用于更快的文件访问以及 eventalign.txt 中每个 DRACH 位置的读取数量eventalign.index
: 在 dataprep 期间创建的索引文件,允许在 dataprep 期间更快地访问 Nanopolish eventalign.txt
推断
一旦 m6anet dataprep 完成运行,我们可以在 dataprep 输出上运行 m6anet 推断:
m6anet inference --input_dir path/to/output --out_dir path/to/output --n_processes 4 --num_iterations 1000
m6anet 推断将运行默认的人类模型,该模型在 HCT116 细胞系上训练。为了运行基于拟南芥的模型或基于 HEK293T-RNA004 的模型,请提供 --pretrained_model
参数:
## 对于基于拟南芥的模型
m6Anet 将从每个候选位点抽取 20 个读取,并根据 --num_iterations
参数,通过多轮抽样平均修改概率。输出文件 data.indiv_proba.csv
包含每个读取的修改概率:
transcript_id
: 预测位置的转录本 IDtranscript_position
: 预测位置的转录本位置read_index
: nanopolish 中的读取标识符,对应 nanopolish summary.txt 中的实际 read_idprobability_modified
: 给定读取被修改的概率
输出文件 data.site_proba.csv
包含每个转录本每个单独位置的修改概率。输出文件将有 6 列:
transcript_id
: 预测位置的转录本 IDtranscript_position
: 预测位置的转录本位置n_reads
: 特定位置的读取数量probability_modified
: 给定位点被修改的概率kmer
: 给定位点的 5-mer 基序mod_ratio
: 给定位点中被修改的读取的估计百分比
m6Anet 还支持对多个重复进行汇总。为此,只需输入包含 m6anet-dataprep 输出的多个文件夹即可:
m6anet inference --input_dir data_folder_1 data_folder_2 ... --out_dir output_folder --n_processes 4 --num_iterations 1000
版本说明
版本 2.1.0
m6Anet 模型使用 RNA004 化学方法训练(开发版本)
默认的 m6Anet 模型是使用当前可用的 RNA002 直接 RNA-Seq 试剂盒训练的。Oxford Nanopore 目前正在提供下一个版本 RNA004 的开发版本。为了使 RNA004 能够进行 m6 检测,我们现在提供了一个在 HEK293T 细胞系上使用 RNA004 开发版本进行直接 RNA Seq 数据训练的 m6Anet 模型。为了使用 RNA004 试剂盒调用 m6A,可以使用以下命令:
预处理/分割/数据准备。
请使用 RNA004 kmer 模型的 f5c,如这里所述。
kmer 模型可以在这里下载。
然后执行 eventalign,使用 --kmer-model 指向下载的 k-mer 模型的路径,如下所示:
f5c eventalign --rna -b reads.bam -r reads.fastq -g transciptome.fa -o eventalign.tsv \
--kmer-model /path/to/rna004.nucleotide.5mer.model --slow5 reads.blow5 --signal-index \
--scale-events
然后可以使用 m6Anet 数据准备(见 https://m6anet.readthedocs.io/en/latest/quickstart.html)
推断
为了从 RNA004 数据中识别 m6A,必须指定 RNA004 模型:
m6anet inference --input_dir [INPUT_DIR] --out_dir [OUT_DIR] --pretrained_model HEK293T_RNA004
RNA004 模型是在开发版本上训练的,并且与 RNA002 模型相比,在位点级预测上只进行了有限的评估。RNA004 的单个读取概率准确性尚未经过测试。请将任何反馈报告给我们(https://github.com/GoekeLab/m6anet/discussions)
训练和评估 RNA004 m6anet
我们使用 HEK293T 细胞系的 RNA004 直接 RNA-Seq 运行训练 m6anet,m6A 位置由 m6ACE-Seq 定义。然后我们在 Hek293T 和 Hct116 细胞系的 RNA004 数据上评估了基于 RNA004 的 m6anet 性能。在这里,我们使用 RNA002 和 RNA004 数据中识别的所有位点的交集来比较 RNA004 模型(在 RNA004 数据上测试)和 RNA002 模型(在 RNA002 数据上测试),使用 m6ACE-Seq 作为真实情况(图 1-2)。结果表明 RNA002 训练和 RNA004 训练的 m6anet 性能相当。
请注意,RNA004 将生成更高的读取数量,这将导致更多的位点被测试。