Skip to content
Commits on Source (5)
### Version 2.2.4 - 2019-02-10
* Fixed bug in --trim5p N which would AdapterRemoval to abort if N was greater
than the pre-trimmed read length.
* Fixed --identify-adapters not respecting the --mate-separator option.
### Version 2.2.3 - 2019-01-22
* Added support for trimming reads by a fixed amount: --trim5p N --trim3p N.
......
adapterremoval (2.2.4-2) UNRELEASED; urgency=medium
* d/copyright: Add upstream contact
-- Andreas Tille <tille@debian.org> Tue, 05 Mar 2019 11:05:51 +0100
adapterremoval (2.2.4-1) unstable; urgency=medium
* New upstream pure bugfix release
* Run upstream unit tests
-- Andreas Tille <tille@debian.org> Thu, 21 Feb 2019 11:22:41 +0100
adapterremoval (2.2.3-1) unstable; urgency=medium
* New upstream version
......
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: AdapterRemoval
Upstream-Contact: Mikkel Schubert <mikkelsch@gmail.com>
Source: https://github.com/MikkelSchubert/adapterremoval/releases
Files: *
......
......@@ -16,7 +16,8 @@ override_dh_auto_build:
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
# dh_auto_test
echo "*********** Needs adapting to libgtest-dev. ***************"
make test
make clean_tests
endif
override_dh_auto_install:
......
......@@ -57,16 +57,17 @@ const char* assert_failed::what() const noexcept
void debug_raise_assert(const char* filename, size_t lineno, const char* what)
{
std::stringstream message;
message << "\nFATAL ERROR:\n"
<< "Debug assertion failed in '" << filename << "', line "
<< lineno << ": " << what << "\n\n"
<< "This should not happen! Please file a bug-report at\n "
<< "https://github.com/MikkelSchubert/adapterremoval/issues/new";
message << "Assertion failed in '" << filename << "', line "
<< lineno << ": " << what;
#ifdef AR_TEST_BUILD
throw assert_failed(message.str());
#else
std::cerr << message.str() << std::endl;
std::cerr << "\nFATAL ERROR:\n"
<< message.str() << "\n\n"
<< "This should not happen! Please file a bug-report at\n "
<< "https://github.com/MikkelSchubert/adapterremoval/issues/new"
<< std::endl;
std::abort();
#endif
......
......@@ -57,8 +57,8 @@ private:
* Aborts after printing the filename, line-number, and message, plus
* instructions for how to report the problem.
*/
void debug_raise_assert(const char* filename, size_t lineno,
const char* what) __attribute__ ((noreturn));
[[noreturn]] void debug_raise_assert(const char* filename, size_t lineno,
const char* what);
/** Custom assert which prints various information on failure; always enabled. */
......
......@@ -244,6 +244,8 @@ fastq::ntrimmed fastq::trim_windowed_bases(const bool trim_ns,
void fastq::truncate(size_t pos, size_t len)
{
AR_DEBUG_ASSERT(pos == 0 || pos <= length());
if (pos || len < length()) {
m_sequence = m_sequence.substr(pos, len);
m_qualities = m_qualities.substr(pos, len);
......
......@@ -36,9 +36,6 @@
namespace ar
{
void invalid_solexa(const char offset, const char max_score, const char raw) __attribute__((noreturn));
///////////////////////////////////////////////////////////////////////////////
// fastq_error
......@@ -108,7 +105,7 @@ const std::string g_phred_to_solexa = calc_phred_to_solexa();
///////////////////////////////////////////////////////////////////////////////
void invalid_phred(const char offset, const char max_score, const char raw)
[[noreturn]] void invalid_phred(const char offset, const char max_score, const char raw)
{
if (raw < offset) {
AR_DEBUG_ASSERT(offset == 33 || offset == 64);
......@@ -134,6 +131,8 @@ void invalid_phred(const char offset, const char max_score, const char raw)
"\"--qualitybase solexa\"\n\n"
"See README for more information.");
} else {
AR_DEBUG_FAIL("TODO");
}
} else {
AR_DEBUG_FAIL("Unexpected offset in fastq_encoding::decode");
......@@ -181,11 +180,13 @@ void invalid_phred(const char offset, const char max_score, const char raw)
} else {
AR_DEBUG_FAIL("Unexpected offset in fastq_encoding::decode");
}
} else {
AR_DEBUG_FAIL("invalid_phred called on valid PHRED score");
}
}
void invalid_solexa(const char offset, const char max_score, const char raw)
[[noreturn]] void invalid_solexa(const char offset, const char max_score, const char raw)
{
if (raw < ';') {
if (raw < '!') {
......@@ -311,7 +312,7 @@ void fastq_encoding_solexa::decode(std::string& qualities) const
const char max_score = m_offset + m_max_score;
for (auto& quality : qualities) {
if (quality < ';' || quality > max_score) {
invalid_phred(m_offset, m_max_score, quality);
invalid_solexa(m_offset, m_max_score, quality);
}
quality = g_solexa_to_phred.at(quality - ';') + '!';
......
......@@ -31,7 +31,7 @@ namespace ar
{
const std::string NAME = "AdapterRemoval";
const std::string VERSION = "ver. 2.2.3";
const std::string VERSION = "ver. 2.2.4";
const std::string HELPTEXT = \
"This program searches for and removes remnant adapter sequences from\n"
"your read data. The program can analyze both single end and paired end\n"
......
......@@ -414,7 +414,7 @@ private:
fastq& read2)
{
// Throws if read-names or mate numbering does not match
fastq::validate_paired_reads(read1, read2);
fastq::validate_paired_reads(read1, read2, m_config.mate_separator);
// Reverse complement to match the orientation of read1
read2.reverse_complement();
......
......@@ -317,7 +317,11 @@ void trim_read_termini_if_enabled(const userconfig& config, fastq& read, read_ty
}
if (trim_5p || trim_3p) {
if (trim_5p + trim_3p < read.length()) {
read.truncate(trim_5p, read.length() - std::min(read.length(), trim_5p + trim_3p));
} else {
read.truncate(0, 0);
}
}
}
......
{
"arguments": ["--trim3p", "4"],
"return_code": 0,
"stderr": [
]
}
@read_150_158/1
ATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACCACCTAATCTCGTATGCCGTCTTCTGCTTGAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAA
+
HHHHHHHHFGHHGGFHHDFF;CEEEEGC=@?19@A@<ACDCGFHHHHHHHHHHHHHHHHHHGBDGBE@24A4-EDE35D8DAFFHHEEB;&1''<DBHFC
@read_150_158/2
CATAGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
GIIGHHFHHGCFHHHHHHHHDDB@;B@D?>5BBGBGEBDHHHHHHHHHHGGDDCDEHFHHFHHFFFGHHHHHHBG51?HDEEHHHBFHHHHFDEBEBGFH
AdapterRemoval ver. 2.2.3
Trimming of paired-end reads
[Adapter sequences]
Adapter1[1]: AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG
Adapter2[1]: AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT
[Adapter trimming]
RNG seed: 1695835713
Alignment shift value: 2
Global mismatch threshold: 0.333333
Quality format (input): Phred+33
Quality score max (input): 41
Quality format (output): Phred+33
Quality score max (output): 41
Mate-number separator (input): '/'
Trimming 5p: 0
Trimming 3p: 4
Trimming Ns: No
Trimming Phred scores <= 2: No
Trimming using sliding windows: No
Minimum genomic length: 15
Maximum genomic length: 4294967295
Collapse overlapping reads: No
Minimum overlap (in case of collapse): 11
[Trimming statistics]
Total number of read pairs: 1
Number of unaligned read pairs: 0
Number of well aligned read pairs: 1
Number of discarded mate 1 reads: 1
Number of singleton mate 1 reads: 0
Number of discarded mate 2 reads: 1
Number of singleton mate 2 reads: 0
Number of reads with adapters[1]: 2
Number of retained reads: 0
Number of retained nucleotides: 0
Average length of retained reads: 0
[Length distribution]
Length Mate1 Mate2 Singleton Discarded All
0 0 0 0 2 2
{
"arguments": ["--trim5p", "4"],
"return_code": 0,
"stderr": [
]
}