[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