Skip to content

Commit

Permalink
Bioconda compatibility fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
agudys committed May 19, 2022
1 parent 56d174a commit 9ececa0
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 36 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@

Progressive algorithm for large-scale multiple sequence alignments.

## New features in FAMSA 2 release candidate
## New features in FAMSA 2
In version 2.0.0-rc the following important changes have been introduced:
* Fast guide tree heuristic called Medoid Tree (`-medoidtree` switch) for ultra-scale alignments:
* the entire Pfam-A v33.1 in its largest NCBI variant (over 18 thousand families, 60 GB of raw FASTA files) was analyzed in 8 hours,
* the famility PF00005 of 3 million ABC transporters was aligned in 5 minutes and 24 GB of RAM.
* the family PF00005 of 3 million ABC transporters was aligned in 5 minutes and 24 GB of RAM.
* Remarkable time and memory optimizations - SLINK has been replaced with Prim’s minimum spanning tree algorithm when constructing default (single linkage) guide trees. NOTE: This may change quality results slightly compared to FAMSA 1 due to different ties resolution.
* Neighbour joining guide trees (`-gt nj` option). NOTE: Neighbour joining trees are calculated with a use of original *O*(*N*<sup>3</sup>) algorithm, thus their applicability on large sets is limited (unless they are used as subtrees with Medoid Tree heuristic),
* Option for compressing output aligment to gzip (`-gz` switch).
Expand Down Expand Up @@ -150,8 +150,8 @@ The analysis was performed on our extHomFam 2 benchmark produced by combining Ho
| MAFFT PartTree | 7.453 | `mafft --thread 32 --anysymbol --quiet --parttree <input> -o <output>` |
| MAFFT DPPartTree | 7.453 | `mafft --thread 32 --anysymbol --quiet --dpparttree <input> -o <output>` |
| FAMSA | 1.6.2 | `famsa -t 32 <input> <output>` |
| FAMSA 2-rc | 2.0.0-rc | `famsa -t 32 -gz <input> <output>` |
| FAMSA 2-rc Medoid | 2.0.0-rc | `famsa -t 32 -medoidtree -gt upgma -gz <input> <output>` |
| FAMSA 2 | 2.0.1 | `famsa -t 32 -gz <input> <output>` |
| FAMSA 2 Medoid | 2.0.1 | `famsa -t 32 -medoidtree -gt upgma -gz <input> <output>` |


The tests were performed with 32 computing threads on a machine with AMD Ryzen Threadripper 3990X CPU and 256 GB of RAM. For each extHomFam 2 subset we measured a fraction of properly aligned columns (TC score) as well as a total running time and a maximum memory requirements. The results are presented in the figure below. Notches at boxplots indicate 95% confidence interval for median, triangle represent means. The missing series for some algorithm-set pairs indicate that either the algorithm failed to complete all the families in a set or the running times exceeded a week. FAMSA 2 alignments were stored in gzip format (`-gz` switch).
Expand Down
File renamed without changes.
55 changes: 27 additions & 28 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
GCC_VERSION=8
ABI_FLAG =
CLINK_FLAGS =
else
GCC_VERSION = $(shell $(CXX) -dumpversion | cut -f1 -d.)
ABI_FLAG = -fabi-version=0
CLINK_FLAGS = -lrt
endif


Expand Down Expand Up @@ -100,16 +102,16 @@ endif


ifeq ($(STATIC_LINK), true)
CFLAGS = -Wall -Wno-char-subscripts -Wno-attributes -O3 -$(COMMON_FLAGS) $(DEFINE_FLAGS) -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=$(CPP_STD) -I $(LIBS_DIR)
CXXFLAGS = -Wall -Wno-char-subscripts -Wno-attributes -O3 -$(COMMON_FLAGS) $(DEFINE_FLAGS) -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=$(CPP_STD) -I $(LIBS_DIR)
CLINK = -lm -static -O3 -msse4 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=$(CPP_STD)
else
CFLAGS = -Wall -Wno-char-subscripts -Wno-attributes -O3 $(COMMON_FLAGS) $(DEFINE_FLAGS) -std=$(CPP_STD) -pthread -I $(LIBS_DIR)
CLINK = -lm -O3 $(COMMON_FLAGS) -std=$(CPP_STD) -pthread
CXXFLAGS = -Wall -Wno-char-subscripts -Wno-attributes -O3 $(COMMON_FLAGS) $(DEFINE_FLAGS) -std=$(CPP_STD) -pthread -I $(LIBS_DIR)
CLINK = -lm $(CLINK_FLAGS) -O3 $(COMMON_FLAGS) -std=$(CPP_STD) -pthread
endif

CFLAGS_AVX = $(CFLAGS) -mavx ${ABI_FLAG} -mpopcnt -funroll-loops
CFLAGS_AVX2 = $(CFLAGS) -mavx2 ${ABI_FLAG} -mpopcnt -funroll-loops
CFLAGS_NEON = $(CFLAGS) ${ABI_FLAG} -funroll-loops
CXXFLAGS_AVX = $(CXXFLAGS) -mavx ${ABI_FLAG} -mpopcnt -funroll-loops
CXXFLAGS_AVX2 = $(CXXFLAGS) -mavx2 ${ABI_FLAG} -mpopcnt -funroll-loops
CXXFLAGS_NEON = $(CXXFLAGS) ${ABI_FLAG} -funroll-loops



Expand All @@ -136,17 +138,17 @@ COMMON_OBJS := src/msa.o \
libs/mimalloc/static.o

src/lcs/lcsbp_classic.o : src/lcs/lcsbp_classic.cpp
$(CXX) $(CFLAGS) -c src/lcs/lcsbp_classic.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/lcs/lcsbp_classic.cpp -o $@

ifeq ($(SIMD), NONE)
LCS_OBJS := src/lcs/lcsbp.o \
src/lcs/lcsbp_classic.o
UTILS_OBJS := src/utils/utils.o

src/lcs/lcsbp.o : src/lcs/lcsbp.cpp
$(CXX) $(CFLAGS) -c src/lcs/lcsbp.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/lcs/lcsbp.cpp -o $@
src/utils/utils.o : src/utils/utils.cpp
$(CXX) $(CFLAGS) -c src/utils/utils.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/utils/utils.cpp -o $@

else ifeq ($(SIMD), AVX1)
LCS_OBJS := src/lcs/lcsbp.o \
Expand All @@ -156,14 +158,14 @@ UTILS_OBJS := src/utils/utils.o \
src/utils/utils_avx.o

src/lcs/lcsbp.o : src/lcs/lcsbp.cpp
$(CXX) $(CFLAGS) -c src/lcs/lcsbp.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/lcs/lcsbp.cpp -o $@
src/lcs/lcsbp_avx_intr.o : src/lcs/lcsbp_avx_intr.cpp
$(CXX) $(CFLAGS_AVX) -c src/lcs/lcsbp_avx_intr.cpp -o $@
$(CXX) $(CXXFLAGS_AVX) -c src/lcs/lcsbp_avx_intr.cpp -o $@

src/utils/utils.o : src/utils/utils.cpp
$(CXX) $(CFLAGS) -c src/utils/utils.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/utils/utils.cpp -o $@
src/utils/utils_avx.o : src/utils/utils_avx.cpp
$(CXX) $(CFLAGS_AVX) -c src/utils/utils_avx.cpp -o $@
$(CXX) $(CXXFLAGS_AVX) -c src/utils/utils_avx.cpp -o $@
else ifeq ($(SIMD), NEON)
LCS_OBJS := src/lcs/lcsbp.o \
src/lcs/lcsbp_classic.o \
Expand All @@ -172,14 +174,14 @@ UTILS_OBJS := src/utils/utils.o \
src/utils/utils_neon.o

src/lcs/lcsbp.o : src/lcs/lcsbp.cpp
$(CXX) $(CFLAGS) -c src/lcs/lcsbp.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/lcs/lcsbp.cpp -o $@
src/lcs/lcsbp_avx_intr.o : src/lcs/lcsbp_avx_intr.cpp
$(CXX) $(CFLAGS_NEON) -c src/lcs/lcsbp_neon_intr.cpp -o $@
$(CXX) $(CXXFLAGS_NEON) -c src/lcs/lcsbp_neon_intr.cpp -o $@

src/utils/utils.o : src/utils/utils.cpp
$(CXX) $(CFLAGS) -c src/utils/utils.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/utils/utils.cpp -o $@
src/utils/utils_neon.o : src/utils/utils_neon.cpp
$(CXX) $(CFLAGS_NEON) -c src/utils/utils_neon.cpp -o $@
$(CXX) $(CXXFLAGS_NEON) -c src/utils/utils_neon.cpp -o $@
else
LCS_OBJS := src/lcs/lcsbp.o \
src/lcs/lcsbp_classic.o \
Expand All @@ -191,26 +193,23 @@ UTILS_OBJS := src/utils/utils.o \
src/utils/utils_avx2.o

src/lcs/lcsbp.o : src/lcs/lcsbp.cpp
$(CXX) $(CFLAGS) -c src/lcs/lcsbp.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/lcs/lcsbp.cpp -o $@
src/lcs/lcsbp_avx_intr.o : src/lcs/lcsbp_avx_intr.cpp
$(CXX) $(CFLAGS_AVX) -c src/lcs/lcsbp_avx_intr.cpp -o $@
$(CXX) $(CXXFLAGS_AVX) -c src/lcs/lcsbp_avx_intr.cpp -o $@
src/lcs/lcsbp_avx2_intr.o : src/lcs/lcsbp_avx2_intr.cpp
$(CXX) $(CFLAGS_AVX2) -c src/lcs/lcsbp_avx2_intr.cpp -o $@
$(CXX) $(CXXFLAGS_AVX2) -c src/lcs/lcsbp_avx2_intr.cpp -o $@

src/utils/utils.o : src/utils/utils.cpp
$(CXX) $(CFLAGS) -c src/utils/utils.cpp -o $@
$(CXX) $(CXXFLAGS) -c src/utils/utils.cpp -o $@
src/utils/utils_avx.o : src/utils/utils_avx.cpp
$(CXX) $(CFLAGS_AVX) -c src/utils/utils_avx.cpp -o $@
$(CXX) $(CXXFLAGS_AVX) -c src/utils/utils_avx.cpp -o $@
src/utils/utils_avx2.o : src/utils/utils_avx2.cpp
$(CXX) $(CFLAGS_AVX2) -c src/utils/utils_avx2.cpp -o $@
$(CXX) $(CXXFLAGS_AVX2) -c src/utils/utils_avx2.cpp -o $@
endif


.cpp.o:
$(CXX) $(CFLAGS) -c $< -o $@

.c.o:
$(CXX) $(CFLAGS) -c $< -o $@
$(CXX) $(CXXFLAGS) -c $< -o $@

famsa: deflate src/famsa.o $(COMMON_OBJS) $(LCS_OBJS) $(UTILS_OBJS)
$(CXX) $(CLINK) -o $@ src/famsa.o $(COMMON_OBJS) $(LCS_OBJS) $(UTILS_OBJS) $(LIB_FILES)
Expand All @@ -222,6 +221,6 @@ clean:
-rm src/tree/*.o
-rm src/utils/*.o
-rm src/*.o
-rm lib/mimalloc/*.o
-rm libs/mimalloc/*.o
-rm famsa

11 changes: 7 additions & 4 deletions src/core/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,21 @@ Authors: Sebastian Deorowicz, Agnieszka Debudaj-Grabysz, Adam Gudys
#ifndef _VERSION_H
#define _VERSION_H

#define FAMSA_VER "2.0.0-rc"
#define FAMSA_DATE "2022-05-17"
#define FAMSA_VER "2.0.1"
#define FAMSA_DATE "2022-05-19"
#define FAMSA_AUTHORS "S. Deorowicz, A. Debudaj-Grabysz, A. Gudys"

#endif

/*
Version history:
2.0.1:
- Several fixes for bioconda.
2.0.0-rc:
- default algorithm for single linkage trees changed from SLINK to MST Prim,
- small fixes.
- Default algorithm for single linkage trees changed from SLINK to MST Prim,
- Small fixes.
1.16.0 (2022-04-29):
- mimalloc added as a single source library (no external linking).
Expand Down

0 comments on commit 9ececa0

Please sign in to comment.