簡介
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