简介
racon是一款在Github上发布的C++ 开源 软件,用于对一些不产生consensus的快速组装软件组装得到的原始contig序列的纠错,生成基因组一致性序列,同时支持Pacbio和Oxford Nanopore测序数据。
配置流程
1.配置编译环境
安装wget和cmake工具。
yum install cmake3 wget-y
2.获取源码
获取“racon”源码包。
cd/usr/local/src git clone--recursive https://github.com/isovic/racon.git racon
3.编译和安装
1)进入racon的文件目录。
cd/usr/local/src/racon
2)修改racon编译参数。
Centos7.6中默认使用的gcc-4.8.5不支持通过“-march=native”的配置,来自动识别CPU类型和指令集,需要修改为“-march=armv8-a”。
a)修改当前目录下的“CMakeLists.txt”。
vi CMakeLists.txt
修改下述内容:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic")
修改后为:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=armv8-a")
如图所示,保存并退出。
修改当前目录下的“CMakeLists.txt"
b)修改“spoa”目录下的“CMakeLists.txt”。
vi./vendor/spoa/CMakeLists.txt
修改下述内容:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=native")
修改后为:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=armv8-a")
如图所示,保存并退出。
修改“spoa”目录下的“CMakeLists.txt”
c)修改“thread_pool”目录下的“CMakeLists.txt”。
vi./vendor/thread_pool/CMakeLists.txt
修改下述内容:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=native")
修改后为:
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=armv8-a")
如图所示,保存并退出。
修改“thread_pool”目录下的“CMakeLists.txt”
3)优化racon源码。
a)将“./src/main.cpp”下的“int32_t argument;”改为“int argument;”。
vi./src/main.cpp
修改如图所示,修改完成后,保存退出。
修改“./src”目录下的“main.cpp”
b)将“./vendor/rampler/src/main.cpp”下的“char argument;”改为“int argument;”。
vi./vendor/rampler/src/main.cpp
修改如图所示,修改完成后,保存退出。
修改“./vendor/rampler/src/”目录下的“main.cpp”
c)将“./vendor/spoa/src/main.cpp”下的“char opt;”改为“int opt;”。
vi./vendor/spoa/src/main.cpp
修改如图所示,修改完成后,保存退出。
修改“./vendor/spoa/src/”目录下的“main.cpp”
4)添加关于aarch64的宏定义。
cd/usr/local/src/racon sed-i's/#if defined(__AVX2__)||defined(__SSE4_1__)$/#if defined(__AVX2__)||defined(__SSE4_1__)||defined(__aarch64__)/'./vendor/spoa/src/simd_alignment_engine.cpp sed-i's/#elif defined(__SSE4_1__)$/#elif defined(__SSE4_1__)||defined(__aarch64__)/'./vendor/spoa/src/simd_alignment_engine.cpp
5)下载“sse2neon.h”,使用此头文件替换sse。
由于在X86上指令优化用的是SSE,在鲲鹏下使用是neon,因此下载“sse2neon.h”,使用此头文件替换sse。
wget https://github.com/jratcliff63367/sse2neon/archive/master.zip unzip master.zip mv./sse2neon-master/SSE2NEON.h./sse2neon-master/sse2neon.h cp./sse2neon-master/sse2neon.h./vendor/spoa/src/
6)引入“sse2neon.h”头文件。
修改“./vendor/spoa/src/simd_alignment_engine.cpp”源码,引入“sse2neon.h”头文件。
vi./vendor/spoa/src/simd_alignment_engine.cpp
修改如图所示,修改完成后,保存退出。
修改“./vendor/spoa/src/”目录下的“simd_alignment_engine.cpp”
7)编译racon。
cd/usr/local/src/racon mkdir build cd build cmake3-DCMAKE_BUILD_TYPE=Release.. make&&make install ----结束
4.运行和验证
测试racon。
racon--version
回显内容如下,表示安装正常。
v1.3.2