Skip to content

Commit 4e8fb51

Browse files
authored
Merge pull request #18 from Parsoa/lowcov
Improvements towards v1.0.5
2 parents dc0333e + aee62f4 commit 4e8fb51

13 files changed

+176
-160
lines changed

CMakeLists.txt

+14-23
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
cmake_minimum_required(VERSION 3.14)
22

33
include(ExternalProject)
4+
include(FetchContent)
45

56
set(CMAKE_CXX_STANDARD 14)
67
set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -43,13 +44,8 @@ if(NOT DEFINED CONDAPREFIX)
4344
message(STATUS "libdeflate will be built from source")
4445
ExternalProject_Add(deflate
4546
GIT_REPOSITORY https://github.com/ebiggers/libdeflate.git
46-
GIT_TAG 047aa84e01b38d82f3612810e357bd40f14a3d39
47+
GIT_TAG 020133854ff73b8506fe59f92a9b5b622d360716 # v1.15
4748
BUILD_IN_SOURCE 1
48-
UPDATE_COMMAND ""
49-
CONFIGURE_COMMAND ""
50-
BUILD_COMMAND make PREFIX="."
51-
"CC=${CMAKE_C_COMPILER}"
52-
"CFLAGS=-fPIC -O3" libdeflate.a
5349
INSTALL_COMMAND "")
5450
ExternalProject_Get_Property(deflate SOURCE_DIR)
5551
SET(DEFLATE_SOURCE_DIR ${SOURCE_DIR})
@@ -59,15 +55,15 @@ if(NOT DEFINED CONDAPREFIX)
5955

6056
# HTSLIB
6157
#########
62-
SET(CONF_CMD autoheader && autoreconf && ./configure --disable-libcurl --disable-gcs --with-libdeflate "CC=${CMAKE_C_COMPILER}" "CFLAGS=-O3 -I${DEFLATE_SOURCE_DIR}" "LDFLAGS=-L${DEFLATE_SOURCE_DIR}")
58+
SET(CONF_CMD autoheader && autoreconf -i && ./configure --disable-libcurl --disable-gcs --with-libdeflate "CC=${CMAKE_C_COMPILER}" "CFLAGS=-O3 -I${DEFLATE_SOURCE_DIR}" "LDFLAGS=-L${DEFLATE_SOURCE_DIR}")
6359
if (HOLYBUILD)
6460
# we have to include local libraries (libbz2 and liblzma)
65-
SET(CONF_CMD autoheader && autoreconf && ./configure --disable-libcurl --disable-gcs --with-libdeflate "CC=${CMAKE_C_COMPILER}" "CFLAGS=-O3 -I${DEFLATE_SOURCE_DIR} -I${BZIP_LIB_DIR}" "LDFLAGS=-L${DEFLATE_SOURCE_DIR} -L${BZIP_LIB_DIR} -L${LZMA_LIB_DIR}")
61+
SET(CONF_CMD autoheader && autoreconf -i && ./configure --disable-libcurl --disable-gcs --with-libdeflate "CC=${CMAKE_C_COMPILER}" "CFLAGS=-O3 -I${DEFLATE_SOURCE_DIR} -I${BZIP_LIB_DIR}" "LDFLAGS=-L${DEFLATE_SOURCE_DIR} -L${BZIP_LIB_DIR} -L${LZMA_LIB_DIR}")
6662
endif ()
6763
message(STATUS "htslib will be built from source")
6864
ExternalProject_Add(htslib
6965
GIT_REPOSITORY https://github.com/samtools/htslib.git
70-
GIT_TAG 2cd99cf333938a9eb70393bc59379e1d6ea66b37
66+
GIT_TAG 4e61c128238f3e7cbb3b1f4e9c0fdb4880aa9a10 # v1.16
7167
UPDATE_COMMAND ""
7268
BUILD_IN_SOURCE 1
7369
CONFIGURE_COMMAND ${CONF_CMD}
@@ -98,7 +94,7 @@ else ()
9894
endif ()
9995
ExternalProject_Add(abpoa
10096
GIT_REPOSITORY https://github.com/yangao07/abPOA.git
101-
GIT_TAG 16c64e5163cbd0502792ca20f1069fe40c929b0d
97+
GIT_TAG 16c64e5163cbd0502792ca20f1069fe40c929b0d # v1.41
10298
PATCH_COMMAND ${PATCH_CMD}
10399
INSTALL_COMMAND ""
104100
)
@@ -114,7 +110,7 @@ SET(ABPOA_INCLUDE_DIR ${ABPOA_SOURCE_DIR}/include)
114110
message(STATUS "parasail will be built from source")
115111
ExternalProject_Add(parasail
116112
GIT_REPOSITORY https://github.com/jeffdaily/parasail.git
117-
GIT_TAG e236a6feec7bc84fb81923d783acb345e538a281
113+
GIT_TAG d23aed253fb5ecc7aeab0f81b6d64fcc26448089 # v2.6
118114
UPDATE_COMMAND ""
119115
BUILD_IN_SOURCE 1
120116
CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
@@ -128,30 +124,24 @@ set_target_properties(PARASAIL PROPERTIES IMPORTED_LOCATION ${PARASAIL_SOURCE_DI
128124

129125
# rapidfuzz-cpp
130126
################
131-
ExternalProject_Add(rapidfuzz
132-
GIT_REPOSITORY https://github.com/maxbachmann/rapidfuzz-cpp.git
133-
GIT_TAG d1e82379395cafc6d439c1c1e2cbe7512eaf2518
134-
BUILD_IN_SOURCE 1
135-
UPDATE_COMMAND ""
136-
INSTALL_COMMAND ""
137-
)
138-
ExternalProject_Get_Property(rapidfuzz SOURCE_DIR)
139-
SET(RAPIDFUZZ_SOURCE_DIR ${SOURCE_DIR})
140-
SET(RAPIDFUZZ_INCLUDE_DIR ${RAPIDFUZZ_SOURCE_DIR})
127+
FetchContent_Declare(rapidfuzz
128+
GIT_REPOSITORY https://github.com/maxbachmann/rapidfuzz-cpp.git
129+
GIT_TAG 5412d5d877518e7754394bdbec76e45c8187c631) # v1.10.4
130+
FetchContent_MakeAvailable(rapidfuzz)
141131

142132
# interval-tree
143133
################
144134
ExternalProject_Add(intervaltree
145135
GIT_REPOSITORY https://github.com/5cript/interval-tree.git
146-
GIT_TAG 4d7c66ce4fb542a29a7d74039f8e7c92fae3d6f8
136+
GIT_TAG 309b9c725191d4bb1d134f28a8a32ad2f68a8ffa
147137
UPDATE_COMMAND ""
148138
CONFIGURE_COMMAND ""
149139
BUILD_COMMAND ""
150140
INSTALL_COMMAND ""
151141
)
152142
ExternalProject_Get_Property(intervaltree SOURCE_DIR)
153143
SET(INTERVALTREE_SOURCE_DIR ${SOURCE_DIR})
154-
SET(INTERVALTREE_INCLUDE_DIR ${INTERVALTREE_SOURCE_DIR})
144+
SET(INTERVALTREE_INCLUDE_DIR ${INTERVALTREE_SOURCE_DIR}/include/interval-tree)
155145

156146
# ropebwt2
157147
##########
@@ -213,6 +203,7 @@ else()
213203
endif()
214204

215205
target_link_libraries(SVDSS
206+
PUBLIC rapidfuzz::rapidfuzz
216207
PUBLIC ${BINARY_DIR}/lib/libabpoa.a
217208
PUBLIC PARASAIL
218209
PUBLIC ROPEBWT

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ For inquiries on this software please open an [issue](https://github.com/Parsoa/
210210

211211
### Citation
212212

213-
SVDSS is currently pending peer review. A pre-print is available on [BioRxiv](https://www.biorxiv.org/content/10.1101/2022.02.12.480198v1).
213+
SVDSS is now published in [Nature Methods](https://doi.org/10.1038/s41592-022-01674-1).
214214

215215
##### Experiments
216216
Instructions on how to reproduce the experiments described in the manuscript can be found [here](https://github.com/ldenti/SVDSS-experiments) (also provided as submodule of this repository).

caller.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ void Caller::print_vcf_header() {
164164
ovcf << "##INFO=<ID=IMPRECISE,Number=0,Type=Flag,Description=\"Imprecise "
165165
"structural variation\">"
166166
<< endl;
167+
ovcf << "##INFO=<ID=CIGAR,Number=A,Type=String,Description=\"CIGAR of "
168+
"consensus\">"
169+
<< endl;
167170
ovcf << "##FORMAT=<ID=GT,Number=1,Type=String,Description=\"Genotype\">"
168171
<< endl;
169172
ovcf << "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tDEFAULT"

cluster.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@ string Cluster::poa() {
2727
abpt->out_msa = 0;
2828
abpt->out_cons = 1;
2929
abpt->out_gfa = 0;
30-
// abpt->w = 6, abpt->k = 9;
31-
// abpt->min_w = 10; // minimizer-based seeding and partition
3230
// abpt->is_diploid = 1;
33-
// abpt->min_freq = 0.3;
3431
abpt->progressive_poa = 0;
3532
abpoa_post_set_para(abpt);
3633

34+
// abpt->match = 2; // match score
35+
// abpt->mismatch = 4; // mismatch penalty
36+
// abpt->gap_mode = ABPOA_CONVEX_GAP; // gap penalty mode
37+
// abpt->gap_open1 = 4; // gap open penalty #1
38+
// abpt->gap_ext1 = 2; // gap extension penalty #1
39+
// abpt->gap_open2 = 24; // gap open penalty #2
40+
// abpt->gap_ext2 = 1; // gap extension penalty #2
41+
// gap_penalty = min{gap_open1 + gap_len * gap_ext1, gap_open2 + gap_len *
42+
// gap_ext2}
43+
3744
int *seq_lens = (int *)malloc(sizeof(int) * n_seqs);
3845
uint8_t **bseqs = (uint8_t **)malloc(sizeof(uint8_t *) * n_seqs);
3946
for (uint i = 0; i < n_seqs; ++i) {

config.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ Configuration::Configuration()
3737
"b,binary", "", cxxopts::value<bool>()->default_value("false"))(
3838
"aggregate", "", cxxopts::value<bool>()->default_value("false"))(
3939
"selective", "", cxxopts::value<bool>()->default_value("true"))(
40-
"version", "Print version information.")("help", "Print this help.");
40+
"version", "Print version information.")("help", "Print this help.")(
41+
"l", "", cxxopts::value<float>())(
42+
"acc", "", cxxopts::value<float>())(
43+
"verbose", "", cxxopts::value<bool>()->default_value("false"));
4144
}
4245

4346
void Configuration::parse(int argc, char **argv) {
@@ -107,12 +110,19 @@ void Configuration::parse(int argc, char **argv) {
107110
if (results.count("min-cluster-weight")) {
108111
min_cluster_weight = results["min-cluster-weight"].as<int>();
109112
}
113+
if (results.count("l")) {
114+
min_ratio = results["l"].as<float>();
115+
}
116+
if (results.count("acc")) {
117+
al_accuracy = results["acc"].as<float>();
118+
}
110119
binary = results["binary"].as<bool>();
111120
clipped = results["clipped"].as<bool>();
112121
assemble = results["assemble"].as<bool>();
113122
putative = !(results["noputative"].as<bool>());
114123
aggregate = results["aggregate"].as<bool>();
115124
selective = results["selective"].as<bool>();
116125
version = results["version"].as<bool>();
126+
verbose = results["verbose"].as<bool>();
117127
help = results["help"].as<bool>();
118128
}

config.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class Configuration {
2929
int min_indel_length = 20;
3030
int aggregate_batches = 5;
3131
int min_cluster_weight = 2;
32+
float min_ratio = 0.97; // FIXME: change name
33+
float al_accuracy = 0.02;
3234

3335
bool binary = false;
3436
bool clipped = false;
@@ -37,6 +39,7 @@ class Configuration {
3739
bool aggregate = false;
3840
bool selective = true;
3941
bool version = false;
42+
bool verbose = false;
4043
bool help = false;
4144

4245
std::string bed;

0 commit comments

Comments
 (0)