[med-svn] [Git][med-team/bowtie2][upstream] New upstream version 2.5.1
Michael R. Crusoe (@crusoe)
gitlab at salsa.debian.org
Tue Sep 12 12:18:39 BST 2023
Michael R. Crusoe pushed to branch upstream at Debian Med / bowtie2
Commits:
412d3f3e by Michael R. Crusoe at 2023-08-25T14:21:59+02:00
New upstream version 2.5.1
- - - - -
12 changed files:
- AUTHORS
- BOWTIE2_VERSION
- MANUAL
- Makefile
- NEWS
- README.md
- bowtie2
- bt2_search.cpp
- doc/website/recent_news.ssi
- doc/website/rhsidebar.ssi
- pat.cpp
- pat.h
Changes:
=====================================
AUTHORS
=====================================
@@ -19,10 +19,6 @@ The file ls.h includes an implementation of the Larsson-Sadakane suffix sorting
algorithm. The implementation is by N. Jesper Larsson and was adapted somewhat
for use in Bowtie 2.
-TinyThreads is a portable thread implementation with a fairly compatible subset
-of C++11 thread management classes written by Marcus Geelnard. For more info
-check http://tinythreadpp.bitsnbites.eu/
-
Various users have kindly supplied patches, bug reports and feature requests
over the years. Many, many thanks go to them.
=====================================
BOWTIE2_VERSION
=====================================
@@ -1 +1 @@
-2.5.0
\ No newline at end of file
+2.5.1
\ No newline at end of file
=====================================
MANUAL
=====================================
@@ -775,7 +775,7 @@ alignment to be considered valid, and x is the read length.
Usage
- bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | --sra-acc <acc> | b <bam>} -S [<sam>]
+ bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | --sra-acc <acc> | -b <bam>} -S [<sam>]
Main arguments
=====================================
Makefile
=====================================
@@ -32,14 +32,13 @@ BOWTIE_SHARED_MEM :=
CXXFLAGS += -std=c++11
-ARCH = $(shell uname -m)
-NGS_VER ?= 2.9.2
-VDB_VER ?= 2.9.2-1
+NGS_VER ?= 2.10.2
+VDB_VER ?= 2.10.2
# Detect Cygwin or MinGW
WINDOWS :=
MINGW :=
-ifneq (,$(findstring MINGW,$(shell uname)))
+ifneq (,$(findstring mingw,$(shell $(CXX) --version)))
WINDOWS := 1
MINGW := 1
# POSIX memory-mapped files not currently supported on Windows
@@ -62,7 +61,8 @@ ifneq (,$(findstring Darwin,$(shell uname)))
endif
BITS := 32
-ifneq (,$(findstring $(shell uname -m), x86_64 amd64))
+ARCH ?= $(shell uname -m)
+ifneq (,$(findstring $(ARCH), x86_64 amd64))
BITS := 64
ifeq (1, $(SSE_AVX2))
SSE_FLAG := -mavx2 -faligned-new -DSSE_AVX2
@@ -71,7 +71,7 @@ ifneq (,$(findstring $(shell uname -m), x86_64 amd64))
endif
POPCNT_CAPABILITY ?= 1
-else ifneq (,$(findstring $(shell uname -m), aarch64 arm64 s390x ppc64 ppc64le))
+else ifneq (,$(findstring $(ARCH), aarch64 arm64 s390x powerpc64 powerpc64le ppc64 ppc64le))
BITS := 64
SSE_FLAG :=
CXXFLAGS += -fopenmp-simd
=====================================
NEWS
=====================================
@@ -4,7 +4,7 @@ Bowtie 2 NEWS
Bowtie 2 is available for download from the project website,
http://bowtie-bio.sf.net/bowtie2 and on Github,
https://github.com/BenLangmead/bowtie2/releases. 2.0.0-beta1 is
-the first version released to the public and 2.5.0 is the latest
+the first version released to the public and 2.5.1 is the latest
version. Bowtie 2 is licensed under the GPLv3 license. See `LICENSE'
file for details.
@@ -19,6 +19,14 @@ Please report any issues to the Bowtie 2 Github page or using the Sourceforge bu
Version Release History
=======================
+## Version 2.5.1 - Feb 17, 2023 ##
+
+### bowtie2 ###
+ * Fixed an issue affecting `bowtie2` alignment accuracy.
+ * Updated the versions of the NCBI `NGS` and `VDB` libraries used by `bowtie2`.
+ * Fixed a segmentation fault that would occur while aligning SRA data.
+ * Fixed an issue preventing `--un-mates` from properly saving unaligned mates.
+
## Version 2.5.0 - Oct 31, 2022 ##
### bowtie2 ###
=====================================
README.md
=====================================
@@ -2,7 +2,7 @@
<!-- badges: start -->
![Random Tests](https://github.com/BenLangmead/bowtie2/actions/workflows/random-tests.yml/badge.svg)
![Simple Tests](https://github.com/BenLangmead/bowtie2/actions/workflows/simple-tests.yml/badge.svg)
-[![Version](https://img.shields.io/badge/version-2.5.0-green.svg)](https://shields.io/)
+[![Version](https://img.shields.io/badge/version-2.5.1-green.svg)](https://shields.io/)
<!-- [![Build Status](https://travis-ci.org/BenLangmead/bowtie2.svg?branch=master)](https://travis-ci.org/BenLangmead/bowtie2) -->
[![License: GPL v3](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
<!--badges: end -->
@@ -117,7 +117,7 @@ bowtie2-inspect --large-index example/index/lambda_virus
- Langmead B, Salzberg S. __[Fast gapped-read alignment with Bowtie 2](http://www.nature.com/nmeth/journal/v9/n4/full/nmeth.1923.html)__. [Nature Methods](http://www.nature.com/nmeth). 2012, 9:357-359.
-- Langmead B, Trapnell C, Pop M, Salzberg SL. __[Ultrafast and memory-efficient alignment of short DNA sequences to the human genome](http://genomebiology.com/2009/10/3/R25)__. [Genome Biology](http://genomebiology.com/) 10:R25.
+- Langmead B, Trapnell C, Pop M, Salzberg SL. __[Ultrafast and memory-efficient alignment of short DNA sequences to the human genome](https://genomebiology.biomedcentral.com/articles/10.1186/gb-2009-10-3-r25)__. [Genome Biology](https://genomebiology.biomedcentral.com/) 10:R25.
### Related Publications
=====================================
bowtie2
=====================================
@@ -516,7 +516,7 @@ if(defined($cap_out)) {
$base_spec_dir = $read_fns{$i};
$base_fname = undef;
}
- if($i =~ /-conc$|^un-mate$/) {
+ if($i =~ /-conc$|^un-mates$/) {
# Open 2 output files, one for mate 1, one for mate 2
my ($fn1, $fn2);
if ($base_fname) {
@@ -609,7 +609,7 @@ if(defined($cap_out)) {
}
}
# paired read failed to align concordantly or discordantly
- if (defined($read_fhs{"un-mates"}) && $pair && $unal && ($fl & 8) != 0) {
+ if (defined($read_fhs{"un-mates"}) && $pair && $unal && ($fl & 4) != 0) {
if ($mate1) {
print {$read_fhs{"un-mates"}{1}} $l if defined($read_fhs{"un-mates"});
} else {
=====================================
bt2_search.cpp
=====================================
@@ -3323,7 +3323,7 @@ static void multiseedSearchWorker(void *vp) {
exhaustive[0] = exhaustive[1] = false;
size_t matemap[2] = { 0, 1 };
bool pairPostFilt = filt[0] && filt[1];
- if(false && pairPostFilt) {
+ if(pairPostFilt) {
rnd.init(ps->read_a().seed ^ ps->read_b().seed);
} else {
rnd.init(ps->read_a().seed);
@@ -3903,7 +3903,7 @@ static void multiseedSearchWorker(void *vp) {
// Sort seed hits into ranks
shs[mate].rankSeedHits(rnd, msinkwrap.allHits());
int ret = 0;
- if(false && paired) {
+ if(paired) {
// Paired-end dynamic programming driver
ret = sd.extendSeedsPaired(
*rds[mate], // mate to align as anchor
@@ -3973,11 +3973,11 @@ static void multiseedSearchWorker(void *vp) {
nceil[mate], // N ceil for anchor
maxhalf, // max width on one DP side
doUngapped, // do ungapped alignment
- mxIter[mate] * 2, // max extend loop iters
- mxUg[mate] * 2, // max # ungapped extends
- mxDp[mate] * 2, // max # DPs
- streak[mate] * 2, // stop after streak of this many end-to-end fails
- streak[mate] * 2, // stop after streak of this many ungap fails
+ mxIter[mate], // max extend loop iters
+ mxUg[mate], // max # ungapped extends
+ mxDp[mate], // max # DPs
+ streak[mate], // stop after streak of this many end-to-end fails
+ streak[mate], // stop after streak of this many ungap fails
doExtend, // extend seed hits
enable8, // use 8-bit SSE where possible
cminlen, // checkpoint if read is longer
@@ -4071,9 +4071,9 @@ static void multiseedSearchWorker(void *vp) {
assert_leq(prm.nMateDps, mxDp[i]);
assert_leq(prm.nExUgs, mxUg[i]);
assert_leq(prm.nMateUgs, mxUg[i]);
- // assert_leq(prm.nDpFail, streak[i]);
- // assert_leq(prm.nUgFail, streak[i]);
- // assert_leq(prm.nEeFail, streak[i]);
+ assert_leq(prm.nDpFail, streak[i]);
+ assert_leq(prm.nUgFail, streak[i]);
+ assert_leq(prm.nEeFail, streak[i]);
}
// Commit and report paired-end/unpaired alignments
@@ -4380,7 +4380,7 @@ static void multiseedSearchWorker_2p5(void *vp) {
}
exhaustive[0] = exhaustive[1] = false;
bool pairPostFilt = filt[0] && filt[1];
- if(false && pairPostFilt) {
+ if(pairPostFilt) {
rnd.init(ROTL((rds[0]->seed ^ rds[1]->seed), 10));
}
// Calculate streak length
=====================================
doc/website/recent_news.ssi
=====================================
@@ -1,9 +1,18 @@
+<h2>Version 2.5.1 - Feb 17, 2023</h2>
+<h3 id="bowtie2">bowtie2</h3>
+<ul>
+ <li>Fixed an issue affecting <code>bowtie2</code> alignment accuracy.</li>
+ <li>Updated the versions of the NCBI <code>NGS</code> and <code>VDB</code> libraries used by <code>bowtie2</code>.</li>
+ <li>Fixed a segmentation fault that would occur while aligning SRA data.</li>
+ <li>Fixed an issue preventing <code><a href="manual.shtml#bowtie2-options-un-mates">--un-mates</a></code> from properly saving unaligned mates.</li>
+</ul>
+
<h2>Version 2.5.0 - Oct 31, 2022</h2>
<h3 id="bowtie2">bowtie2</h3>
<ul>
<li>Overall improvements in the use of prefetch instructions. (contribution by Igor Sfiligoi)</li>
<li>Made input/output fully asynchronous by using a dedicated thread. (contribution by Igor Sfiligoi)</li>
- <li>Added support for AVX2 256-bit instructions with can be enabled by setting the <code>SSE_AXV2<code> environment variable at compile time. (contribution by Igor Sfiligoi)</li>
+ <li>Added support for AVX2 256-bit instructions with can be enabled by setting the <code>SSE_AXV2</code> environment variable at compile time. (contribution by Igor Sfiligoi)</li>
<li>Fixed an issue causing <code>bowtie2</code> to crash when processing ZSTD files with high compression ratios.</li>
<li>Changed the way that unique alignments are counted in summary message to better match up with filters on SAM output</li>
</ul>
=====================================
doc/website/rhsidebar.ssi
=====================================
@@ -18,10 +18,10 @@
</tr>
<tr>
<td>
- <a href="https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.5.0">Bowtie2 v2.4.5</a>
+ <a href="https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.5.1">Bowtie2 v2.5.1</a>
</td>
<td align="right">
- 10/31/22
+ 02/17/23
</td>
</tr>
<tr>
=====================================
pat.cpp
=====================================
@@ -1699,28 +1699,29 @@ std::pair<bool, int> SRAPatternSource::nextBatchImpl(
size_t readi = 0;
bool done = false;
- for(; readi < pt.max_buf_; readi++) {
- if(!sra_its_[pt.tid_]->nextRead() || !sra_its_[pt.tid_]->nextFragment()) {
+ while (readi < pt.max_buf_) {
+ if(!read_iter_->nextRead() || !read_iter_->nextFragment()) {
done = true;
break;
}
- const ngs::StringRef rname = sra_its_[pt.tid_]->getReadId();
- const ngs::StringRef ra_seq = sra_its_[pt.tid_]->getFragmentBases();
- const ngs::StringRef ra_qual = sra_its_[pt.tid_]->getFragmentQualities();
+ const ngs::StringRef rname = read_iter_->getReadId();
+ const ngs::StringRef ra_seq = read_iter_->getFragmentBases();
+ const ngs::StringRef ra_qual = read_iter_->getFragmentQualities();
readbuf[readi].readOrigBuf.install(rname.data(), rname.size());
readbuf[readi].readOrigBuf.append('\t');
readbuf[readi].readOrigBuf.append(ra_seq.data(), ra_seq.size());
readbuf[readi].readOrigBuf.append('\t');
readbuf[readi].readOrigBuf.append(ra_qual.data(), ra_qual.size());
- if(sra_its_[pt.tid_]->nextFragment()) {
- const ngs::StringRef rb_seq = sra_its_[pt.tid_]->getFragmentBases();
- const ngs::StringRef rb_qual = sra_its_[pt.tid_]->getFragmentQualities();
+ if(read_iter_->nextFragment()) {
+ const ngs::StringRef rb_seq = read_iter_->getFragmentBases();
+ const ngs::StringRef rb_qual = read_iter_->getFragmentQualities();
readbuf[readi].readOrigBuf.append('\t');
readbuf[readi].readOrigBuf.append(rb_seq.data(), rb_seq.size());
readbuf[readi].readOrigBuf.append('\t');
readbuf[readi].readOrigBuf.append(rb_qual.data(), rb_qual.size());
}
readbuf[readi].readOrigBuf.append('\n');
+ readi++;
}
pt.setReadId(readCnt_);
@@ -1877,26 +1878,14 @@ void SRAPatternSource::open() {
return;
}
- size_t window_size = MAX_ROW / sra_its_.size();
- size_t remainder = MAX_ROW % sra_its_.size();
- size_t i = 0, start = 1;
+ size_t start = 1;
if (pp_.skip > 0) {
start = pp_.skip + 1;
readCnt_ = pp_.skip;
}
- while (i < sra_its_.size()) {
- sra_its_[i] = new ngs::ReadIterator(sra_run.getReadRange(start, window_size, ngs::Read::all));
- assert(sra_its_[i] != NULL);
-
- i++;
- start += window_size;
- if (i == sra_its_.size() - 1) {
- window_size += remainder;
- }
- }
-
+ read_iter_ = new ngs::ReadIterator(sra_run.getReadRange(start, MAX_ROW, ngs::Read::all));
} catch(...) {
cerr << "Warning: Could not access \"" << sra_acc << "\" for reading; skipping..." << endl;
}
=====================================
pat.h
=====================================
@@ -1444,7 +1444,6 @@ public:
sra_acc_cur_(0),
cur_(0),
first_(true),
- sra_its_(p.nthreads),
mutex_m(),
pp_(p)
{
@@ -1456,12 +1455,7 @@ public:
}
virtual ~SRAPatternSource() {
- for (size_t i = 0; i < sra_its_.size(); i++) {
- if(sra_its_[i] != NULL) {
- delete sra_its_[i];
- sra_its_[i] = NULL;
- }
- }
+ delete read_iter_;
}
/**
@@ -1488,7 +1482,9 @@ public:
*/
virtual void reset() {
PatternSource::reset();
- sra_acc_cur_ = 0,
+ sra_acc_cur_ = 0;
+ if (read_iter_)
+ delete read_iter_;
open();
sra_acc_cur_++;
}
@@ -1510,7 +1506,7 @@ protected:
size_t cur_; // current read id
bool first_;
- std::vector<ngs::ReadIterator*> sra_its_;
+ ngs::ReadIterator* read_iter_;
/// Lock enforcing mutual exclusion for (a) file I/O, (b) writing fields
/// of this or another other shared object.
View it on GitLab: https://salsa.debian.org/med-team/bowtie2/-/commit/412d3f3ee8325cc661d4fe6f7e58ea1680fcf4b0
--
View it on GitLab: https://salsa.debian.org/med-team/bowtie2/-/commit/412d3f3ee8325cc661d4fe6f7e58ea1680fcf4b0
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20230912/f1cd8193/attachment-0001.htm>
More information about the debian-med-commit
mailing list