racon是什么

簡介

racon是一款在Github上發(fā)布的C++開源軟件,用于對一些不產(chǎn)生consensus的快速組裝軟件組裝得到的原始contig序列的糾錯,生成基因組一致性序列,同時(shí)支持Pacbio和Oxford Nanopore測序數(shù)據(jù)。

配置流程

1.配置編譯環(huán)境

安裝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)進(jìn)入racon的文件目錄。

cd/usr/local/src/racon

2)修改racon編譯參數(shù)。

Centos7.6中默認(rèn)使用的gcc-4.8.5不支持通過“-march=native”的配置,來自動識別CPU類型和指令集,需要修改為“-march=armv8-a”。

a)修改當(dāng)前目錄下的“CMakeLists.txt”。

vi CMakeLists.txt

修改下述內(nèi)容:

set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic")

修改后為:

set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall-Wextra-pedantic-march=armv8-a")

如圖所示,保存并退出。

修改當(dāng)前目錄下的“CMakeLists.txt"

b)修改“spoa”目錄下的“CMakeLists.txt”。

vi./vendor/spoa/CMakeLists.txt

修改下述內(nèi)容:

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

修改下述內(nèi)容:

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)優(yōu)化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)添加關(guān)于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上指令優(yōu)化用的是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
----結(jié)束

4.運(yùn)行和驗(yàn)證

測試racon。

racon--version

回顯內(nèi)容如下,表示安裝正常。

v1.3.2