草庐IT

用hifiasm组装基因组

卖萌哥 2023-10-11 原文

hifiasm大概是目前为止支持PacBio HiFi数据组装的所有软件中表现最优异的软件了。它不但能输出primary assembly result,还能分别组装出单倍体(haplotype)基因组的组装结果。

今天的分享就从hifiasm的组装开始,其他的组装软件之后也会介绍到。

可用资源

软件安装

hifiasm的安装也非常简单,conda一条命令就可以了

conda install hifiasm

运行hifiasm

纯PacBio HiFi组装

把命令写到一个名为run_hifiasm.sh的脚本里

vim run_hifiasm.sh

只要填入最基本的

hifiasm \
-o test.hifisam \
-t 24 \
/path/to/PacBio/test1.hifi_reads.fastq.gz \
/path/to/PacBio/test2.hifi_reads.fastq.gz \
/path/to/PacBio/test3.hifi_reads.fastq.gz

用nohup挂在后台运行就可以啦。

nohup bash run_hifiasm.sh &

输出结果如下:

test.hifisam.ovlp.source.bin
test.hifisam.ovlp.reverse.bin
test.hifisam.ec.bin
test.hifisam.bp.r_utg.noseq.gfa
test.hifisam.bp.r_utg.lowQ.bed
test.hifisam.bp.r_utg.gfa 
test.hifisam.bp.p_utg.noseq.gfa
test.hifisam.bp.p_utg.lowQ.bed
test.hifisam.bp.p_utg.gfa
test.hifisam.bp.p_ctg.noseq.gfa
test.hifisam.bp.p_ctg.lowQ.bed
★  test.hifisam.bp.p_ctg.gfa
test.hifisam.bp.hap2.p_ctg.noseq.gfa
test.hifisam.bp.hap2.p_ctg.lowQ.bed
★  test.hifisam.bp.hap2.p_ctg.gfa
test.hifisam.bp.hap1.p_ctg.noseq.gfa
test.hifisam.bp.hap1.p_ctg.lowQ.bed
★  test.hifisam.bp.hap1.p_ctg.gfa

上面打了五角星的三个文件是后续重点关注的文件。根据
https://hifiasm.readthedocs.io/en/latest/interpreting-output.html的描述:

Hifiasm generates the following assembly graphs only with HiFi reads in default:
prefix.bp.p_ctg.gfa: assembly graph of primary contigs.
prefix.bp.hap1.p_ctg.gfa: partially phased contig graph of haplotype1.
prefix.bp.hap2.p_ctg.gfa: partially phased contig graph of haplotype2.

HiC data integrated Integrated

如果你有HiC数据(测基因组的话大概率会有HiC数据的吧?)可以尝试基于HiC的证据的分型,primary的结果不会有什么变化,但是haplotype的结果会有提高。

hifiasm \
-o test.hifisam_hic \
-t 24 \
--h1 /path/to/HiC/1_R1.fastq.gz --h2 /path/to/HiC/1_R2.fastq.gz \
/path/to/PacBio/test1.hifi_reads.fastq.gz \
/path/to/PacBio/test2.hifi_reads.fastq.gz \
/path/to/PacBio/test3.hifi_reads.fastq.gz

格式转换

用gfatools或者自己写个脚本把gfa格式的文件转换成fasta就得到最终的组装结果啦。

如果写脚本转换

参考自:https://github.com/linsalrob/EdwardsLab/blob/master/bin/gfa2fasta.sh
(假设命名为gfa2fasta.sh

#!/usr/bin/env bash

if [ -z $1 ]; then 
    echo "Usage: $0 <gfa file>  >  <fasta file>"
    exit $E_BADARGS
fi

awk -v id=$1 '/^S/{print ">"id"_"$2"\n"$3}' $1

运行:

bash gfa2fasta.sh test.hifisam.bp.hap1.p_ctg.gfa > test.hifisam.bp.hap1.p_ctg.fasta

用gfatools转换

先用conda安装gfatools

conda install gfatools

接下来也写一个如上的脚本方便使用(假设命名为gfa2fa.sh

#!/usr/bin/env bash

if [ -z $1 ]; then 
    echo "$0 <gfa file>"
    echo "It will generate the fasta file like ${1%.*}.fasta"
    exit $E_BADARGS
fi
gfatools gfa2fa ${1} > ${1%.*}.fasta

使用起来就很简单啦:

bash gfa2fa.sh test.hifisam.bp.hap1.p_ctg.gfa

私货时间

  1. 我曾经尝试过把多个PacBio HiFi的gz压缩文件直接用cat给连接成一个文件然后去组装,但是组装结果和保持多个文件一起输入给hifiasm的结果是不一样的。cat到一起的结果的N50要略低于把三个文件分别输给hifiasm的版本。我和老板冥思苦想了好一会儿没想明白原因在哪儿,也就作罢了。所以建议如果有多个文件,就保持多个文件,不需要合并成一个。反正hifiasm是可以接受输入多个文件的。
  2. 建议有HiC的情况下尽量加上HiC数据,结果会更好一些。
  3. PacBio HiFi的组装结果不需要再经过其他的软件polish,不像传统的三代组装软件那样流程冗长而繁琐。

Hifiasm does not need polishing tools like pilon or racon, either.

引用自:(https://hifiasm.readthedocs.io/en/latest/index.html)

有关用hifiasm组装基因组的更多相关文章

  1. xml - 如何从其内部子组件正确组装一个有效的 xlsx 文件? - 2

    我正在尝试在iOS上以编程方式创建一个xlsx文件。由于xlsx文件的内部数据基本上存储在单独的xml文件中,我尝试重新创建xlsx结构及其所有文件和子目录,将它们压缩成一个zip文件并将其扩展名设置为xlsx。我使用GDataXML解析器/编写器来创建所有必需的xml文件。但是,我得到的文件不能作为xlsx文件打开。即使我从有效的xlsx文件中提取所有数据,通过从原始xml文件复制数据并手动压缩它们来手动创建所有xml文件,我也无法重新创建有效的xlsx文件。问题是:xlsx真的只是一个包含xml文件的存档吗?如果我不能将xml文件压缩成zip文件并将其扩展名设置为xlsx,我该如何

  2. c++ - 如何组装一串宽字符,中间插入一些空字符? - 2

    让我们从背景说起。我需要为ODBC命令设置一串属性:SQLConfigDataSource(hwndParent,ODBC_ADD_DSN,sDriver,wcAttrs);属性必须以严格的方式格式化才能工作:LPCWSTRwcAttrs=L"DSN=NiceDB\0DBQ=C:\\Users\\who\\AppData\\Local\\NiceApp\\niceDB.accdb\0";以这种方式进行硬编码是可行的,但实际上我需要动态设置accdb文件(DBQ)的路径。问题是分隔字符串中的属性所需的空字符,而我主要使用wcscat_s的string-fu技能失败了,因为空字符会使它后面

  3. windows - 在 Windows 上组装 - 2

    我有兴趣在Windows上进行最少的汇编编程。没有GUI,只有一个普通的旧.exe程序,它将向控制台打印一些字符。为了查看是否可以在Windows上简单地编译和运行程序集,我尝试了以下操作:测试.s:ret命令行:gcctest.s我得到了以下错误:Infunction'main':undefinedreferenceto'WinMain'所以问题是我如何将一个简单的无用汇编程序编译为Windows可执行文件?我需要在每个程序中定义WinMain吗?它是gcc的标志吗?我真的不在乎我使用哪个汇编器,但是如果有人知道这对于gcc(gas)是否相同或不同,masm和其他汇编程序,那也很好。

  4. c# - 无法加载或组装或其依赖项之一 - 2

    我正在使用Aforge.net框架来进行图像处理工作。我添加了“AForge.Video.FFMPEG.dll”作为我项目的引用。我正在使用VS2012和32位构建目标。构建时我得到System.IO.FileNotFoundExceptionwasunhandledHResult=-2147024770Message=Couldnotloadfileorassembly'AForge.Video.FFMPEG.dll'oroneofitsdependencies.Thespecifiedmodulecouldnotbefound.Source=VideoReadereFileName

  5. c# - 将 lambda 作为 IL 流传递给辅助 AppDomain,然后使用 DynamicMethod 将其组装回去 - 2

    是否可以将lambda表达式作为IL字节流传递给辅助AppDomain,然后使用DynamicMethod将其组装回去以便调用它?一开始我不太确定这是正确的方法,所以这是我问这个问题的(详细)原因...在我的应用程序中,有很多情况需要加载几个程序集进行反射,这样我才能确定接下来要对它们做什么。问题部分是我需要能够在完成反射后卸载程序集。这意味着我需要使用另一个AppDomain加载它们.现在,我的大多数案例都有点相似,只是不完全相似。例如,有时我需要返回一个简单的确认,有时我需要从程序集中序列化资源流,有时我需要进行一两次回调。所以我最终写了同样的半复杂的临时文件AppDomain一遍

  6. 3000元组装电脑配置推荐2023 3000元台式电脑配置清单2023 - 2

    CPUAMDRyzen55600G主板映泰B550M-SILVER内存玖合忆界32GB(2×16GB)DDR432001固态硬盘铭瑄电竞之心M.2(1TB)机箱积至黑骑士(标准版)电源积至权利游戏460WS散热器利民AX120RSE组装电脑怎么搭配更合适这些点很重要看过你就懂了http://www.adiannao.cn/duCPUIntel酷睿i39100F1主板梅捷SY-狂龙B360M内存金士顿骇客神条FURY8GBDDR42400(HX424C15FB/8)硬盘西部数据蓝盘1TB7200转64MBSATA3(WD10EZEX)固态硬盘台电极光A800(480GB)显卡影驰GeForceG

  7. java - Spring Boot 2.1.5 Java 11 模块,组装 JAR : Could not create modular JAR file. 时出错 JDK jar 工具退出 1 -> [帮助 1] - 2

    运行命令-mvnclean-Dmaven.test.skip=truepackage-X我收到以下错误。[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-jar-plugin:3.1.2:jar(default-jar)onprojectmy-module-one:ErrorassemblingJAR:CouldnotcreatemodularJARfile.TheJDKjartoolexitedwith1->[Help1]org.apache.maven.lifecycle.LifecycleExecutionExcep

  8. 用于基因组拼图的 Java 正则表达式 - 2

    当给定一串字母A、C、G或T时,我被分配了一个查找基因的问题,例如ATGCTCCTCTTGATTTTTTTATGTGTAGCCATGCACACACACACATAAGA。一个基因以ATG开始,以TAA、TAG或TGA结束(该基因不包括两个端点)。该基因由字母的三联体组成,因此它的长度是三的倍数,并且这些三联体都不能是上面列出的开始/结束三联体。因此,对于上面的字符串,其中的基因是CTCTCT和CACACACACACA。事实上,我的正则表达式适用于该特定字符串。到目前为止,这是我所拥有的(我对自己能走到这一步感到非常满意):(?但是,如果在另一个结果中存在ATG和末端三元组,并且未与该结果

  9. java - Gradle:将多个源集组装到一个 jar 中 - 2

    我在这里问了一个相关问题JOOQclassgenerationandgradle在那个问题中,我试图找到进行多阶段构建的最佳方法,包括在中间步骤中生成类。我已经采用了选项二的方法,现在发现自己陷入了僵局。我有以下build.gradle文件applyplugin:'java'applyplugin:'eclipse'sourceSets{bootstrapgenerated{compileClasspath+=bootstrap.output}main{compileClasspath+=bootstrap.outputcompileClasspath+=generated.outpu

  10. 你想要的宏基因组-微生物组知识全在这(2023.4) - 2

    欢迎点击上方蓝色”宏基因组”关注我们!宏基因组/微生物组是当今世界科研最热门的研究领域之一,为加强宏基因组学技术和成果交流传播,推动全球华人微生物组领域发展,中科院青年科研人员创立“宏基因组”公众号,联合海内外同行共同打造本领域纯干货技术及思想交流平台。公众号每日推送,工作日分享宏基因组领域最新成果、科研思路、实验和分析技术,理论过硬实战强;周末科普和生活专栏,轻松读文看片涨姿势。目前分享3100+篇原创文章,15万+小伙伴在这里一起交流学习,累计阅读超3500万+。公众号合作创办了宏基因组学、微生物组和生物信息高起点新刊“iMeta”,由威立、肠菌分会和本领域数百位华人科学家合作出版的开放获

随机推荐