Skip to content
Commits on Source (8)
......@@ -357,11 +357,14 @@ countingBloomAssembly(int argc, char** argv, const BloomDBG::AssemblyParams& par
cerr << params;
/* Initialize a counting Bloom filter:
Divide the requested memory in bytes by the byte-size of each counter to determine the number
of counters, and then round up that count to the next multiple of 64.*/
Divide the requested memory in bytes by 1.125 to account for the memory used
in building the visitedKmer BloomFilter. Then further divide the byte-size
of each counter to determine the number of counters, and then round up that
count to the next multiple of 64.*/
double countingBloomFilterSize = params.bloomSize / 1.125 / sizeof(BloomCounterType);
size_t counters =
BloomDBG::roundUpToMultiple(params.bloomSize / sizeof(BloomCounterType), (size_t)64);
BloomDBG::roundUpToMultiple((size_t) round(countingBloomFilterSize), (size_t)64);
CountingBloomFilterType bloom(counters, params.numHashes, params.k, params.minCov);
......
2019-09-20 Johnathan Wong <jowong@bcgsc.ca>
* Release version 2.2.3
* Revert memory consumption of Bloom filters to pre 2.2.0 behaviour
ABySS will now share the specified memory among all Bloom filters
instead of just the counting Bloom filter.
* Fix gcc-9 compilation warnings
2019-08-16 Johnathan Wong <jowong@bcgsc.ca>
* Release version 2.2.2
......@@ -11,7 +19,7 @@
2019-08-01 Johnathan Wong <jowong@bcgsc.ca>
* Release version 2.2.0
* Construct a counting bloom filter instead of a cascading bloom filter.
* Construct a counting Bloom filter instead of a cascading Bloom filter.
abyss-bloom:
* Add 'counting' as valid argument to '-t' option to build a counting
......
......@@ -69,6 +69,11 @@ ContigNode operator^(bool sense) const
return ContigNode(m_index ^ sense);
}
/** Copy constructors */
ContigNode(ContigNode&&) = default;
ContigNode& operator=(const ContigNode&) = default;
ContigNode& operator=(ContigNode&&) = default;
/** Return whether this ContigNode is ambiguous. */
bool ambiguous() const
{
......
......@@ -15,6 +15,13 @@ using boost::graph_traits;
template <typename G>
class ContigGraph : public G {
public:
/** Copy constructors */
ContigGraph(const ContigGraph&) = default;
ContigGraph(ContigGraph&&) = default;
ContigGraph& operator=(const ContigGraph&) = default;
ContigGraph& operator=(ContigGraph&&) = default;
typedef G base_type;
// Graph
......
......@@ -545,8 +545,15 @@ class Edge
return ui < m_removed.size() ? m_removed[ui] : false;
}
protected:
/** Copy constructors */
DirectedGraph(const DirectedGraph& d) = default;
DirectedGraph(DirectedGraph&&) = default;
DirectedGraph& operator=(const DirectedGraph&) = default;
DirectedGraph& operator=(DirectedGraph&&) = default;
private:
DirectedGraph& operator =(const DirectedGraph& x);
/** The set of vertices. */
Vertices m_vertices;
......
......@@ -279,7 +279,7 @@ parseArgs = do
where
help = putStr (usageInfo usage options) >> exitSuccess
tryHelp = "Try 'abyss-samtobreak --help' for more information."
version = "abyss-samtobreak (ABySS) 2.2.2\n"
version = "abyss-samtobreak (ABySS) 2.2.3\n"
usage = "Usage: samtobreak [OPTION]... [FILE]...\n\
\Calculate contig and scaffold contiguity and correctness metrics.\n"
......
......@@ -330,8 +330,8 @@ verbose logging enabled:
At the current time, the user must calculate suitable values for `B` and `H` on
their own, and finding the best value for `kc` may require experimentation
(optimal values are typically in the range of 2-4). Internally, the Bloom filter
assembler allocates the entire memory budget (`B`) to a Counting Bloom filter,
and an additional (`B/8`) memory to another Bloom filter that is used to track
assembler allocates the entire memory budget (`B * 8/9`) to a Counting Bloom filter,
and an additional (`B/9`) memory to another Bloom filter that is used to track
k-mers that have previously been included in contigs. Users are recommended to
target a Bloom filter false positive rate (FPR) that is less than 5%, as reported
by the assembly log when using the `v=-v` option (verbose level 1).
......
......@@ -19,16 +19,17 @@ TEST(CountingBloomFilter, base) {
const char *b = "TGGACAGCGTTACCTC";
const char *c = "TAATAACAGTCCCTAT";
const char *d = "GATCGTGGCGGGCGAT";
const char *e = "TTTTTTTTTTTTTTTT";
RollingHashIterator itA(a, numHashes, k);
RollingHashIterator itB(b, numHashes, k);
RollingHashIterator itC(c, numHashes, k);
RollingHashIterator itD(d, numHashes, k);
size_t hash = 0;
RollingHashIterator itE(e, numHashes, k);
x.insert(*itA);
EXPECT_EQ(x.filtered_popcount(), 0U);
EXPECT_FALSE(x.contains(&hash));
EXPECT_FALSE(x.contains(*itE));
x.insert(*itA);
EXPECT_EQ(x.filtered_popcount(), 1U);
EXPECT_TRUE(x.contains(*itA));
......
......@@ -152,10 +152,30 @@ jobs:
steps:
- script: |
brew update
brew install automake boost@1.70 openmpi google-sparsehash make pandoc ghc
brew install automake boost openmpi google-sparsehash make pandoc ghc
displayName: Install common
- script: |
./autogen.sh
./configure --with-boost=/usr/local/Cellar/boost/1.70.0/include/ --with-mpi=/usr/local/Cellar/open-mpi/4.0.1_2/ CPPFLAGS=-I/usr/local/Cellar/google-sparsehash/2.0.3/include/
./configure --with-boost=/usr/local/opt/boost/include --with-mpi=/usr/local/Cellar/open-mpi/4.0.1_2 CPPFLAGS=-I/usr/local/Cellar/google-sparsehash/2.0.3/include
make -j12 distcheck
displayName: Compiling ABySS with default gcc
- job: linux_gcc9
pool:
vmImage: Ubuntu 16.04
steps:
- script: |
sudo apt-get update -qq
sudo apt-get install -qq software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -qq
sudo apt-get install -qq autoconf automake gcc g++ libboost-dev libgtest-dev libopenmpi-dev libsparsehash-dev make pandoc
displayName: Install common
- script: sudo apt-get install -qq gcc-9 g++-9
displayName: Install gcc-9
- script: |
./autogen.sh
export DISTCHECK_CONFIGURE_FLAGS="CC=gcc-9 CXX=g++-9"
./configure CC=gcc-9 CXX=g++-9 --with-mpi=/usr/lib/openmpi
make -j12 distcheck
displayName: Compiling ABySS with gcc-9
......@@ -398,7 +398,7 @@ help:
@echo 'Report bugs to https://github.com/bcgsc/abyss/issues or abyss-users@bcgsc.ca.'
version:
@echo "abyss-pe (ABySS) 2.2.2"
@echo "abyss-pe (ABySS) 2.2.3"
@echo "Written by Shaun Jackman and Anthony Raymond."
@echo
@echo "Copyright 2012 Canada's Michael Smith Genome Science Centre"
......
AC_PREREQ(2.62)
AC_INIT(ABySS, 2.2.2, abyss-users@bcgsc.ca, abyss,
AC_INIT(ABySS, 2.2.3, abyss-users@bcgsc.ca, abyss,
http://www.bcgsc.ca/platform/bioinfo/software/abyss)
AC_CONFIG_MACRO_DIR([m4])
......
abyss (2.2.3-1) unstable; urgency=medium
* New upstream version
* Remove strict-alignment patch as per upstream:
"Adding an additionally memcpy would slow down these inner-loop functions.
Architectures without hardware support for unaligned memory access are
currently unsupported by ABySS."
https://github.com/bcgsc/abyss/pull/279#issuecomment-468079889
* Turn off the 32-bit patch for now. Local testing with i386 shows that it
may not be needed as suggested by upstream.
-- Michael R. Crusoe <michael.crusoe@gmail.com> Sat, 28 Sep 2019 12:04:53 +0200
abyss (2.2.2-1) unstable; urgency=medium
* New upstream version
......
abyss-pe.patch
# gtest.patch
abyss-32-bit.patch
strict_alignment.patch
#abyss-32-bit.patch
spelling
From: Michael R. Crusoe <michael.crusoe@gmail.com>
Subject: typo fixes, courtesy lintian
Forwarded: https://github.com/bcgsc/abyss/pull/301
--- abyss.orig/Sealer/README.md
+++ abyss/Sealer/README.md
@@ -24,7 +24,7 @@
......
Author: David Matthew Mattli <dmm@mattli.us>
Last-Change: Fri, 2 Feb 2018 15:28:32 +0000 (by James Clarke <jrtc27@debian.org>)
Bug-Debian: https://bugs.debian.org/889147
Forwarded: https://github.com/bcgsc/abyss/pull/279
Description: Fix strict alignment violation on sparc64
--- a/Common/Kmer.cpp
+++ b/Common/Kmer.cpp
@@ -188,7 +188,8 @@ static Seq load(const uint8_t *src)
Seq seq;
#if MAX_KMER > 96
# if WORDS_BIGENDIAN
- const size_t *s = reinterpret_cast<const size_t*>(src);
+ size_t s[Kmer::NUM_BYTES / sizeof(size_t)];
+ memcpy(s, src, Kmer::NUM_BYTES);
size_t *d = reinterpret_cast<size_t*>(&seq + 1);
copy(s, s + Kmer::NUM_BYTES/sizeof(size_t), reverse_iterator<size_t*>(d));
# else
@@ -235,9 +236,10 @@ static void storeReverse(uint8_t *dest,
#if MAX_KMER > 96
# if WORDS_BIGENDIAN
const size_t *s = reinterpret_cast<const size_t*>(&seq);
- size_t *d = reinterpret_cast<size_t*>(dest);
+ size_t d[Kmer::NUM_BYTES / sizeof(size_t)];
copy(s, s + Kmer::NUM_BYTES/sizeof(size_t),
reverse_iterator<size_t*>(d + Kmer::NUM_BYTES/sizeof(size_t)));
+ memcpy(dest, d, Kmer::NUM_BYTES);
reverse(dest, dest + Kmer::NUM_BYTES);
# else
memcpy(dest, &seq, Kmer::NUM_BYTES);
#!/usr/bin/make -f
export DEB_CXXFLAGS_MAINT_APPEND = -DGTEST_USE_OWN_TR1_TUPLE=0 -Wno-error=deprecated-copy -Wno-error=array-bounds
export DEB_CXXFLAGS_MAINT_APPEND = -DGTEST_USE_OWN_TR1_TUPLE=0
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
......
.TH ABYSS "1" "2015-May" "ABYSS (ABySS) 2.2.2" "User Commands"
.TH ABYSS "1" "2015-May" "ABYSS (ABySS) 2.2.3" "User Commands"
.SH NAME
ABYSS \- assemble short reads into contigs
.SH SYNOPSIS
......
.TH abyss-pe "1" "2015-May" "abyss-pe (ABySS) 2.2.2" "User Commands"
.TH abyss-pe "1" "2015-May" "abyss-pe (ABySS) 2.2.3" "User Commands"
.SH NAME
abyss-pe - assemble reads into contigs
.SH SYNOPSIS
......
.TH abyss-tofastq "1" "2015-May" "ABySS 2.2.2" "User Commands"
.TH abyss-tofastq "1" "2015-May" "ABySS 2.2.3" "User Commands"
.SH NAME
abyss-tofastq \- convert various file formats to FASTQ format
.br
......