基于记忆有效分类分配的长读预分类
PLoT-ME的Python项目详细描述
策划我
Long reads预分类,用于内存高效的分类赋值 Sylvain Riondet,Niranjan Ngarajan,NUS/SoC,GIS/Biopolis,新加坡
说明
预处理
- NCBI-RefSeq的聚类分割
- 为每个聚类建立分类分类器索引
分类
模拟群落/元基因组fastq文件的分类
- 将长DNA读数(纳米孔/PacBio)分配给每个簇
- 以RefSeq为子集的分类器进行分类
- 合并报表
Kraken2(Derrick E.Wood et al.2019)和离心机(D.Kim等人,2016)目前是自动化的,任何能够在一组.fna文件上用提供的taxid建立索引的分类器都应该可以工作。在
外卖
- 内存需求大幅度减少,由群集数量决定*
- 兼容和增强现有分类分类器
- 略高于预分类(目前时间约为3-5倍,未来版本的改进)
*小批量K-均值,Web规模K-均值聚类D.Sculley 2010
要求
- 在
Linux(在Ubuntu 18.04上测试)
在 - 在
分类分类器
- Kraken2或离心机(请随时请求更多支持)
- 在
Python>;=3.7
在Package Version biopython >= 1.72 ete3 >= 3.1.1 numpy >= 1.17.3 pandas >= 0.23 scikit-learn >= 0.18 tqdm >= 4.24.0
安装
使用conda创建Python3环境
或pyenv。
然后使用pip完成安装:
python3 -m pip install plot-me
这将创建两个命令,plot-me.preprocess
和plot-me.classify
,详见“用法”。
也可以克隆PLoT-ME's repo,
直接用python启动命令path/to/PLoT-ME/parse_DB.py or classify.py
使用
预处理
完整帮助:plot-me.preprocess -h
典型用法:
plot-me.preprocess <path/NCBI/refseq> <folder/for/clusters> <path/taxonomy> -k 4 -w 10000 -n 10 -o <OmitFoldersContainingString>
预分类+分类
完整帮助:plot-me.classify -h
典型用法:
plot-me.classify <folder/with/clusters> <folder/reports> -i <fastq files to preclassify>
示例
/mnt/data
|-- mock_files
| |-- mock_community_1.fastq
| | \-- minikm_b10_k3_s10000_oplant-vertebrate (one tmp file per cluster, generated by PLoT-ME)
| \-- mock_community_2.fastq
|-- PLoT-ME
| |-- k3_s10000
| | | -- kmer_counts
| | | |-- counts.k3_s10000 (same tree as RefSeq, with <sequencing_name>.3mer_count.pd)
| | | \-- all-counts.k3_s10000_oplant-vertebrate.csv
| | | -- minikm_b10_k3_s10000_oplant-vertebrate <*>
| | | |-- centrifuge (10 folders with indexes)
| | | |-- kraken2 (10 folders with indexes)
| | | |-- RefSeq_binned (10 folders with fna files)
| | | |-- model.minikm_b10_k3_s10000_oplant-vertebrate.pkl
| | | \-- segments-clustered.minikm_b10_k3_s10000_oplant-vertebrate.pd
| | \ -- minikm_b20_k3_s10000_oplant-vertebrate
| | \-- (same structure)
| |-- k4_s10000
| | ` -- (same structure)
| \-- no-binning
| |-- oAllRefSeq
| \-- oplant-vertebrate
| |-- centrifuge
| \-- kraken2
|-- NCBI
| \-- refseq
|-- reports
| \-- mock_community_1 (one report per cluster)
\-- taxonomy
此<*>
可以通过以下方式生成:
plot-me.preprocess /mnt/data/NCBI/refseq /mnt/data/PLoT-ME /mnt/data/taxonomy -k 3 -w 10000 -n 10 -o plant vertebrate
可用于:
plot-me.classify /mnt/data/PLoT-ME/k3_s10000/minikm_b10_k3_s10000_oplant-vertebrate /mnt/data/reports -i /mnt/data/mock_files/mock_community_1.fastq
技术细节
python3是主要的编程语言,它广泛使用库。 使用PIP解析依赖项
中间数据
数据保存为pickle.pkl
或Pandas DataFrame.pd
- Kmer countsPandas数据帧保存在
.../kmer_counts/counts.<param>
下,并具有以下列:taxon category start end name description fna_path AAAA ... TTTT
- Cluster assignments
segments-clustered.\<param\>.pd
将核苷酸列交换为cluster
列。在 RefSeq_binned
是PLoT ME所做的聚类,每个簇保存一个文件夹,带有串联的基因组片段(每个分类单元一个.fna文件)- ^由分类器生成的{str 1}$库依赖于每个库。在
最终文件
绘图工作需要model*.pkl
和文件夹kraken2
或{
进行中的工作
截至2020年7月:
pre-process
使用大k(5+)和小s(10000-)会产生非常大的kmer计数,成本很高 大量RAM(特别是当所有kmer计数组合在一起时, RAM需要达到~30GB或更高)。在classify
合并报表pre-process
清除预处理文件--clean
未来工作
classify
清除预分类tmp文件classify
多核classify
/pre-process
加速kmer计数pre-process
大小相等的箱子pre-process
重叠簇或技巧以获得更高的精确度
联系人
作者:Sylvain Riondet,新加坡国立大学计算机学院博士生 电子邮件:sylvainriondet@gmail.comLab:新加坡基因组研究所/北美新加坡国立大学 主管:Niranjan Nagarajan&Martin Henz
- 项目
标签: