基于记忆有效分类分配的长读预分类

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建立索引的分类器都应该可以工作。在

外卖

Memory Consumption - Bare Classifier (33 GB) vs PLoT-ME (3.6 GB for 20 bins)

  • 内存需求大幅度减少,由群集数量决定*
  • 兼容增强现有分类分类器
  • 略高于预分类(目前时间约为3-5倍,未来版本的改进)

*小批量K-均值,Web规模K-均值聚类D.Sculley 2010

要求

  • Linux(在Ubuntu 18.04上测试)

  • 分类分类器

    • Kraken2或离心机(请随时请求更多支持)
  • Python>;=3.7

    PackageVersion
    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.preprocessplot-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 assignmentssegments-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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java代码中实现两个侦听器时发生swing错误   Lambda是否完全取消了Java8中匿名内部类的使用?   swing OpenSuse 12.3+Java双显示   POM中的java错误。xml文件,即使在清理{users}/之后。m2/用于*上次更新文件的存储库   JavaEDT特定的方法和其他东西   java如何使用GridLayout设置组件大小?有更好的办法吗?   java在itext7中生成二维码时,如何调整点的大小?   java如何在多行上显示文本并右对齐?   java在WebSphereCluString环境中分离Log4j日志   JAVA从文件读取,返回BigInteger值   当使用rxjava2进行排列时,使用javamockito。重试()   在java fasterxml中创建Xml   使用64位整数进行模运算的64位整数的java快速乘法,无溢出   java静态变量保留以前发布的值   datastax enterprise SSTable loader流式处理无法提供java。木卫一。IOException:对等方重置连接   java匹配的通配符是严格的,但找不到元素“mvc:annotationdriven”的声明。标准包装。可抛出   java无法在浏览器上下载文件文档?