基于RNN的程序集HELEN。它与MarginPolish搭配使用。

helen的Python项目详细描述


H、 E.L.E.N.公司

H.E.L.E.N.(用于纳米孔的均聚物编码长读误差校正器)

Build Status


预印本介绍了建议的de novo assembly管道的方法和概述:

Efficient de novo assembly of eleven human genomes using PromethION sequencing and a novel nanopore toolkit


概述

HELEN使用基于递归神经网络(RNN)的多任务学习(MTL)模型,该模型可以使用MarginPolish生成的权重来预测每个基因组位置的碱基和运行长度。在

©2020 Kishwar Shafin,Trevor Pesout,Benedict Paten版权所有。
计算基因组学实验室(CGL),加利福尼亚大学圣克鲁兹分校。在

为什么是玛金波利什海伦?在

  • MarginPolish-HELEN优于其他基于图形和神经网络的抛光管道。在
  • 简单的安装步骤。在
  • HELEN可以同时使用多个gpu。在
  • 高度优化的管道,比任何其他可用的抛光工具都要快。在
  • 我们已经对组装好的11个样本进行了排序,以确保健壮性、运行时的一致性和成本效率。在
  • 我们测试了Amazon Web Services (AWS)和{}上的GPU使用情况,以确保可伸缩性。在
  • 开源(MIT License)。在

演练

安装

MarginPolish-HELENUbuntu 16.10/18.04或任何其他基于Linux的系统上都受支持。 嗯

安装先决条件

在执行任何方法之前,请确保安装了所有依赖项:

sudo apt-get -y install git cmake make gcc g++ autoconf bzip2 lzma-dev zlib1g-dev \
libcurl4-openssl-dev libpthread-stubs0-dev libbz2-dev liblzma-dev libhdf5-dev \
python3-pip python3-virtualenv virtualenv
方法1:从GitHub安装MarginPolish HELEN

您可以从GitHub存储库安装:

^{pr2}$

每次要使用它时,请激活virtualenv:

. <path/to/helen/venv/bin/activate>
方法2:使用PyPi安装

使用pip安装先决条件和安装MarginPolish-HELEN

python3 -m pip install helen --user

python3 -m helen.helen --help
python3 -m helen.marginpolish --help

更新已安装的版本:

python3 -m pip install update pip
python3 -m pip install helen --upgrade

还可以将模块位置添加到路径:

echo'export PATH="$(python3 -m site --user-base)/bin":$PATH' >> ~/.bashrc
source ~/.bashrc

marginpolish --help
helen --help

方法三:使用docker image

基于CPU的docker:
# SEE CONFIGURATION
docker run --rm -it --ipc=host kishwars/helen:latest helen --help
docker run --rm -it --ipc=host kishwars/helen:latest marginpolish --help

docker run -it --ipc=host --user=`id -u`:`id -g` --cpus="16"\
-v </directory/with/inputs_outputs>:/data kishwars/helen:latest \
helen --help
基于GPU的docker:
sudo apt-get install -y nvidia-docker2
# SEE CONFIGURATION
nvidia-docker run -it --ipc=host kishwars/helen:latest helen torch_stat
nvidia-docker run -it --ipc=host kishwars/helen:latest helen --help
nvidia-docker run -it --ipc=host kishwars/helen:latest marginpolish --help

# RUN HELEN
nvidia-docker run -it --ipc=host --user=`id -u`:`id -g` --cpus="16"\
-v </directory/with/inputs_outputs>:/data kishwars/helen:latest \
helen --help

使用

MarginPolish需要一个草稿程序集和一个读取到草稿程序集的映射。我们推荐使用Shasta作为初始汇编程序,使用MiniMap2作为映射。在

步骤1:生成初始装配

使用ONT汇编程序之一生成程序集:

步骤2:在reads和shasta assembly之间创建对齐

我们建议使用MiniMap2来生成读取和程序集之间的映射。你不必遵循这些确切的命令。在

minimap2 -ax map-ont -t 32 shasta_assembly.fa reads.fq | samtools view -hb -q 60 -F 0x904 > unsorted.bam ; samtools sort -@ 32 unsorted.bam | samtools view > reads_2_assembly.0x904q60.bam
samtools index -@32 reads_2_assembly.0x904q60.bam

步骤3:使用MarginPolish生成图像

下载型号
helen download_models \
--output_dir <path/to/mp_helen_models/>
运行MarginPolish

通过运行以下命令,可以使用MarginPolish生成图像:

marginpolish reads_2_assembly.bam \
Assembly.fa \
</path/to/model_name.json> \
-t <number_of_threads> \
-o <path/to/marginpolish_images> \
-f

你可以通过下载找到模型。在

第4步:运行HELEN

接下来,运行HELEN以使用RNN进行抛光。在

helen polish \
--image_dir </path/to/marginpolish_images/> \
--model_path </path/to/model.pkl> \
--batch_size 256\
--num_workers 4\
--threads <num_of_threads> \
--output_dir </path/to/output_dir> \
--output_prefix <output_filename.fa> \
--gpu_mode

如果使用的是CPUs,那么删除--gpu_mode参数。在

帮助

如果您遇到任何困难,请打开github问题。在

确认

我们感谢Segey Koren和{a11}对CHM13数据和评估的帮助。在

我们从Telomere-to-telomere consortium下载数据,根据CHM13评估我们的管道。在

我们感谢这些软件包开发人员的工作:

有趣的事实

guppy235guppy235

“海伦”这个名字的灵感来源于托尼·斯塔克在《奇迹漫画》(Earth-616)中创作的人工智能。海伦是为了控制托尼正在建造的名为“特洛伊”的城市而被创造出来的。在

阅读更多:HELEN

©2020 Kishwar Shafin,Trevor Pesout,Benedict Paten版权所有。在

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

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题