华为云计算 云知识 racon是什么
racon是什么

简介

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


上一篇:通用文字识别OCR免费体验 下一篇:资源空间