[med-svn] [bowtie] 01/06: New upstream version 1.2.2+dfsg
Alex Mestiashvili
malex-guest at moszumanska.debian.org
Sat Dec 16 19:08:00 UTC 2017
This is an automated email from the git hooks/post-receive script.
malex-guest pushed a commit to branch master
in repository bowtie.
commit 0e7d77e15d386e1298528866555016b079c88cfd
Author: Alexandre Mestiashvili <alex at biotec.tu-dresden.de>
Date: Sat Dec 16 18:55:00 2017 +0100
New upstream version 1.2.2+dfsg
---
MANUAL | 38 ++++++------
Makefile | 9 ++-
NEWS | 12 ++++
VERSION | 2 +-
bowtie | 8 ++-
doc/manual.html | 44 ++++++-------
doc/website/manual.ssi | 46 +++++++-------
doc/website/old_news.ssi | 38 ++++++++++++
doc/website/recent_news.ssi | 53 +++++-----------
doc/website/rhsidebar.ssi | 4 +-
ebwt_search.cpp | 146 +++++++++++++++++++++++---------------------
multikey_qsort.h | 3 -
12 files changed, 213 insertions(+), 190 deletions(-)
diff --git a/MANUAL b/MANUAL
index e3e1860..d6410c6 100644
--- a/MANUAL
+++ b/MANUAL
@@ -1399,37 +1399,37 @@ right, the fields are:
NM:i:<N>
- Aligned read has an edit distance of `<N>`.
+Aligned read has an edit distance of `<N>`.
CM:i:<N>
- Aligned read has an edit distance of `<N>` in colorspace. This
- field is present in addition to the `NM` field in `-C`/`--color`
- mode, but is omitted otherwise.
+Aligned read has an edit distance of `<N>` in colorspace. This
+field is present in addition to the `NM` field in `-C`/`--color`
+mode, but is omitted otherwise.
MD:Z:<S>
- For aligned reads, `<S>` is a string representation of the
- mismatched reference bases in the alignment. See [SAM] format
- specification for details. For colorspace alignments, `<S>`
- describes the decoded *nucleotide* alignment, not the colorspace
- alignment.
+For aligned reads, `<S>` is a string representation of the
+mismatched reference bases in the alignment. See [SAM] format
+specification for details. For colorspace alignments, `<S>`
+describes the decoded *nucleotide* alignment, not the colorspace
+alignment.
XA:i:<N>
- Aligned read belongs to stratum `<N>`. See [Strata] for definition.
+Aligned read belongs to stratum `<N>`. See [Strata] for definition.
XM:i:<N>
- For a read with no reported alignments, `<N>` is 0 if the read had
- no alignments. If `-m` was specified and the read's alignments
- were supressed because the `-m` ceiling was exceeded, `<N>` equals
- the `-m` ceiling + 1, to indicate that there were at least that
- many valid alignments (but all were suppressed). In `-M` mode, if
- the alignment was randomly selected because the `-M` ceiling was
- exceeded, `<N>` equals the `-M` ceiling + 1, to indicate that there
- were at least that many valid alignments (of which one was reported
- at random).
+For a read with no reported alignments, `<N>` is 0 if the read had
+no alignments. If `-m` was specified and the read's alignments
+were supressed because the `-m` ceiling was exceeded, `<N>` equals
+the `-m` ceiling + 1, to indicate that there were at least that
+many valid alignments (but all were suppressed). In `-M` mode, if
+the alignment was randomly selected because the `-M` ceiling was
+exceeded, `<N>` equals the `-M` ceiling + 1, to indicate that there
+were at least that many valid alignments (of which one was reported
+at random).
[SAM format specification]: http://samtools.sf.net/SAM1.pdf
[FASTQ]: http://en.wikipedia.org/wiki/FASTQ_format
diff --git a/Makefile b/Makefile
index d3eef5d..98b0d20 100644
--- a/Makefile
+++ b/Makefile
@@ -21,8 +21,7 @@ EXTRA_CFLAGS =
EXTRA_CXXFLAGS =
CFLAGS += $(EXTRA_CFLAGS)
CXXFLAGS += $(EXTRA_CXXFLAGS)
-WARNING_FLAGS = -Wall -Wno-unused-private-field \
- -Wno-unused-parameter -Wno-reorder \
+WARNING_FLAGS = -Wall -Wno-unused-parameter -Wno-reorder \
-Wno-unused-local-typedefs
RELEASE_DEPENDENCIES = $(if $(RELEASE_BUILD),static-libs)
@@ -464,13 +463,13 @@ static-libs:
export CFLAGS=-mmacosx-version-min=10.9 ; \
export CXXFLAGS=-mmacosx-version-min=10.9 ; \
fi ; \
- DL=$$([ `which wget` ] && echo "wget --no-check-certificate" || echo "curl -LO") ; \
+ DL=$$([ `which wget` ] && echo "wget --no-check-certificate --content-disposition" || echo "curl -LJkO") ; \
cd /tmp ; \
$$DL https://zlib.net/zlib-1.2.11.tar.gz && tar xzf zlib-1.2.11.tar.gz && cd zlib-1.2.11 ; \
$(if $(MINGW), mingw32-make -f win32/Makefile.gcc, ./configure --static && make) && cp libz.a $(CURDIR)/.lib && cp zconf.h zlib.h $(CURDIR)/.include ; \
cd .. ; \
- $$DL https://github.com/01org/tbb/archive/2017_U8.tar.gz && tar xzf 2017_U8.tar.gz && cd tbb-2017_U8; \
- $(if $(MINGW), mingw32-make comiler=gcc arch=ia64 runtime=mingw, make) extra_inc=big_iron.inc -j4 \
+ $$DL https://github.com/01org/tbb/archive/2017_U8.tar.gz && tar xzf tbb-2017_U8.tar.gz && cd tbb-2017_U8; \
+ $(if $(MINGW), mingw32-make compiler=gcc arch=ia64 runtime=mingw, make) extra_inc=big_iron.inc -j4 \
&& cp -r include/tbb $(CURDIR)/.include && cp build/*_release/*.a $(CURDIR)/.lib
diff --git a/NEWS b/NEWS
index c132d1e..9707d0d 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,18 @@ subscribe to our mailing list:
Version Release History
=======================
+Version 1.2.2 - Dec 11, 2017
+ * Fixed major issue causing corrupt SAM output when using many threads (-p/--threads) on certain systems
+ * Fixed major issue with incorrect alignment offsets being reported in --large-index mode
+ * Fixed major issue with reads files being skipped when multiple inputs were specified together with -p/--threads
+ * The official LICENSE of Bowtie was changed to Artistic License 2.0. This fixes an issue with the previous LICENSE, which mistakenly combined elements of different open-source licenses.
+ * Fixed issue where bowtie would still run for a long time even when -u was set to a small number.
+ * Fixed spurious "Reads file contained a pattern with more than 1024 quality values" error for some colorspace inputs.
+ * Fixed issue with --strata sometimes failing to suppress alignments at lower strata.
+ * Fixed issue with ends of paired-end reads sometimes appearing in non-adjacent lines of the SAM output with -p/--threads >1
+ * Fixed issue whereby the read name of end #2 was not always truncated at the first whitespace character
+ * Code simplifications
+
Version 1.2.1.1 - Jun 13, 2017
* Fixed an issue causing Bowtie to segfault when processing reads from stdin
diff --git a/VERSION b/VERSION
index e563f37..23aa839 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.1.1
+1.2.2
diff --git a/bowtie b/bowtie
index da4a1bd..2c08d7b 100755
--- a/bowtie
+++ b/bowtie
@@ -88,11 +88,17 @@ def main():
if os.path.exists(args.index + idx_ext_l):
bin_spec = os.path.join(ex_path, bin_l)
bowtie_args.insert(0, args.index)
+ else:
+ for arg in bowtie_args:
+ if arg[0] == '-':
+ continue
+ if os.path.exists(arg + idx_ext_l):
+ bin_spec = os.path.join(ex_path, bin_l)
if args.debug:
bin_spec += '-debug'
- bowtie_args.insert(0, bin_name)
+ bowtie_args.insert(0, bin_spec)
bowtie_args.insert(1, 'basic-0')
bowtie_args.insert(1, '--wrapper')
diff --git a/doc/manual.html b/doc/manual.html
index d8cd85b..51876ef 100644
--- a/doc/manual.html
+++ b/doc/manual.html
@@ -756,6 +756,8 @@ T2302111203131231130300111123220
</td>
<td>
<p>Add <code><text></code> (usually of the form <code>TAG:VAL</code>, e.g. <code>ID:IL7LANE2</code>) as a field on the <code>@RG</code> header line. Specify <code>--sam-RG</code> multiple times to set multiple fields. See the <a href="http://samtools.sourceforge.net/SAM1.pdf">SAM Spec</a> for details about what fields are legal. Note that, if any <code>@RG</code> fields are set using this option, the <code>ID</code> and <code>SM</code> fields must both be among them to make the <co [...]
+</td>
+</tr>
<tr>
<td id="bowtie-options-no-unal">
<pre><code>--no-unal</code></pre>
@@ -934,11 +936,12 @@ T2302111203131231130300111123220
<li><p>Inferred insert size. Size is negative if the mate's alignment occurs upstream of this alignment. Size is 0 if there is no mate.</p></li>
<li><p>Read sequence (reverse-complemented if aligned to the reverse strand)</p></li>
<li><p>ASCII-encoded read qualities (reverse-complemented if the read aligned to the reverse strand). The encoded quality values are on the <a href="http://en.wikipedia.org/wiki/FASTQ_format#Variations">Phred quality</a> scale and the encoding is ASCII-offset by 33 (ASCII char <code>!</code>), similarly to a <a href="http://en.wikipedia.org/wiki/FASTQ_format">FASTQ</a> file.</p></li>
-<li><p>Optional fields. Fields are tab-separated. For descriptions of all possible optional fields, see the SAM format specification. <code>bowtie</code> outputs some of these optional fields for each alignment, depending on the type of the alignment:</p>
+<li><p>Optional fields. Fields are tab-separated. For descriptions of all possible optional fields, see the SAM format specification. <code>bowtie</code> outputs some of these optional fields for each alignment, depending on the type of the alignment:</p></li>
+</ol>
<table>
<tr>
<td>
-<pre><code>NM:i:<N></code></pre>
+<pre><code> NM:i:<N></code></pre>
</td>
<td>
<p>Aligned read has an edit distance of <code><N></code>.</p>
@@ -946,7 +949,7 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>CM:i:<N></code></pre>
+<pre><code> CM:i:<N></code></pre>
</td>
<td>
<p>Aligned read has an edit distance of <code><N></code> in colorspace. This field is present in addition to the <code>NM</code> field in <a href="#bowtie-options-C"><code>-C</code>/<code>--color</code></a> mode, but is omitted otherwise.</p>
@@ -954,7 +957,7 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>MD:Z:<S></code></pre>
+<pre><code> MD:Z:<S></code></pre>
</td>
<td>
<p>For aligned reads, <code><S></code> is a string representation of the mismatched reference bases in the alignment. See <a href="http://samtools.sourceforge.net/SAM1.pdf">SAM</a> format specification for details. For colorspace alignments, <code><S></code> describes the decoded <em>nucleotide</em> alignment, not the colorspace alignment.</p>
@@ -962,28 +965,21 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>XA:i:<N></code></pre>
+<pre><code> XA:i:<N></code></pre>
</td>
<td>
-<p>Aligned read belongs to stratum <code><N></code>. See <a href="#strata">Strata</a> for definition.</p></li>
-</ol>
-<pre><code></td></tr><tr><td>
-
- XM:i:<N>
-
-</td><td>
-
-For a read with no reported alignments, `<N>` is 0 if the read had
-no alignments. If [`-m`] was specified and the read's alignments
-were supressed because the [`-m`] ceiling was exceeded, `<N>` equals
-the [`-m`] ceiling + 1, to indicate that there were at least that
-many valid alignments (but all were suppressed). In [`-M`] mode, if
-the alignment was randomly selected because the [`-M`] ceiling was
-exceeded, `<N>` equals the [`-M`] ceiling + 1, to indicate that there
-were at least that many valid alignments (of which one was reported
-at random).
-
-</td></tr></table></code></pre>
+<p>Aligned read belongs to stratum <code><N></code>. See <a href="#strata">Strata</a> for definition.</p>
+</td>
+</tr>
+<tr>
+<td>
+<pre><code> XM:i:<N></code></pre>
+</td>
+<td>
+<p>For a read with no reported alignments, <code><N></code> is 0 if the read had no alignments. If <a href="#bowtie-options-m"><code>-m</code></a> was specified and the read's alignments were supressed because the <a href="#bowtie-options-m"><code>-m</code></a> ceiling was exceeded, <code><N></code> equals the <a href="#bowtie-options-m"><code>-m</code></a> ceiling + 1, to indicate that there were at least that many valid alignments (but all were suppressed). In <a href="#bow [...]
+</td>
+</tr>
+</table>
<h1 id="the-bowtie-build-indexer">The <code>bowtie-build</code> indexer</h1>
<p><code>bowtie-build</code> builds a Bowtie index from a set of DNA sequences. <code>bowtie-build</code> outputs a set of 6 files with suffixes <code>.1.ebwt</code>, <code>.2.ebwt</code>, <code>.3.ebwt</code>, <code>.4.ebwt</code>, <code>.rev.1.ebwt</code>, and <code>.rev.2.ebwt</code>. (If the total length of all the input sequences is greater than about 4 billion, then the index files will end in <code>ebwtl</code> instead of <code>ebwt</code>.) These files together constitute the ind [...]
<p>Use of Karkkainen's <a href="http://portal.acm.org/citation.cfm?id=1314852">blockwise algorithm</a> allows <code>bowtie-build</code> to trade off between running time and memory usage. <code>bowtie-build</code> has three options governing how it makes this trade: <a href="#bowtie-build-options-p"><code>-p</code>/<code>--packed</code></a>, <a href="#bowtie-build-options-bmax"><code>--bmax</code></a>/<a href="#bowtie-build-options-bmaxdivn"><code>--bmaxdivn</code></a>, and <a href="#bow [...]
diff --git a/doc/website/manual.ssi b/doc/website/manual.ssi
index ec2e19c..0819ed5 100644
--- a/doc/website/manual.ssi
+++ b/doc/website/manual.ssi
@@ -1,5 +1,5 @@
<h1>Table of Contents</h1>
-<p>Bowtie 1.2.1</p>
+<p>Bowtie 1.2.2</p>
<div id="TOC">
<ul>
@@ -747,6 +747,8 @@ T2302111203131231130300111123220
</td>
<td>
<p>Add <code><text></code> (usually of the form <code>TAG:VAL</code>, e.g. <code>ID:IL7LANE2</code>) as a field on the <code>@RG</code> header line. Specify <code>--sam-RG</code> multiple times to set multiple fields. See the <a href="http://samtools.sourceforge.net/SAM1.pdf">SAM Spec</a> for details about what fields are legal. Note that, if any <code>@RG</code> fields are set using this option, the <code>ID</code> and <code>SM</code> fields must both be among them to make the <co [...]
+</td>
+</tr>
<tr>
<td id="bowtie-options-no-unal">
<pre><code>--no-unal</code></pre>
@@ -925,11 +927,12 @@ T2302111203131231130300111123220
<li><p>Inferred insert size. Size is negative if the mate's alignment occurs upstream of this alignment. Size is 0 if there is no mate.</p></li>
<li><p>Read sequence (reverse-complemented if aligned to the reverse strand)</p></li>
<li><p>ASCII-encoded read qualities (reverse-complemented if the read aligned to the reverse strand). The encoded quality values are on the <a href="http://en.wikipedia.org/wiki/FASTQ_format#Variations">Phred quality</a> scale and the encoding is ASCII-offset by 33 (ASCII char <code>!</code>), similarly to a <a href="http://en.wikipedia.org/wiki/FASTQ_format">FASTQ</a> file.</p></li>
-<li><p>Optional fields. Fields are tab-separated. For descriptions of all possible optional fields, see the SAM format specification. <code>bowtie</code> outputs some of these optional fields for each alignment, depending on the type of the alignment:</p>
+<li><p>Optional fields. Fields are tab-separated. For descriptions of all possible optional fields, see the SAM format specification. <code>bowtie</code> outputs some of these optional fields for each alignment, depending on the type of the alignment:</p></li>
+</ol>
<table>
<tr>
<td>
-<pre><code>NM:i:<N></code></pre>
+<pre><code> NM:i:<N></code></pre>
</td>
<td>
<p>Aligned read has an edit distance of <code><N></code>.</p>
@@ -937,7 +940,7 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>CM:i:<N></code></pre>
+<pre><code> CM:i:<N></code></pre>
</td>
<td>
<p>Aligned read has an edit distance of <code><N></code> in colorspace. This field is present in addition to the <code>NM</code> field in <a href="#bowtie-options-C"><code>-C</code>/<code>--color</code></a> mode, but is omitted otherwise.</p>
@@ -945,7 +948,7 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>MD:Z:<S></code></pre>
+<pre><code> MD:Z:<S></code></pre>
</td>
<td>
<p>For aligned reads, <code><S></code> is a string representation of the mismatched reference bases in the alignment. See <a href="http://samtools.sourceforge.net/SAM1.pdf">SAM</a> format specification for details. For colorspace alignments, <code><S></code> describes the decoded <em>nucleotide</em> alignment, not the colorspace alignment.</p>
@@ -953,28 +956,21 @@ T2302111203131231130300111123220
</tr>
<tr>
<td>
-<pre><code>XA:i:<N></code></pre>
+<pre><code> XA:i:<N></code></pre>
</td>
<td>
-<p>Aligned read belongs to stratum <code><N></code>. See <a href="#strata">Strata</a> for definition.</p></li>
-</ol>
-<pre><code></td></tr><tr><td>
-
- XM:i:<N>
-
-</td><td>
-
-For a read with no reported alignments, `<N>` is 0 if the read had
-no alignments. If [`-m`] was specified and the read's alignments
-were supressed because the [`-m`] ceiling was exceeded, `<N>` equals
-the [`-m`] ceiling + 1, to indicate that there were at least that
-many valid alignments (but all were suppressed). In [`-M`] mode, if
-the alignment was randomly selected because the [`-M`] ceiling was
-exceeded, `<N>` equals the [`-M`] ceiling + 1, to indicate that there
-were at least that many valid alignments (of which one was reported
-at random).
-
-</td></tr></table></code></pre>
+<p>Aligned read belongs to stratum <code><N></code>. See <a href="#strata">Strata</a> for definition.</p>
+</td>
+</tr>
+<tr>
+<td>
+<pre><code> XM:i:<N></code></pre>
+</td>
+<td>
+<p>For a read with no reported alignments, <code><N></code> is 0 if the read had no alignments. If <a href="#bowtie-options-m"><code>-m</code></a> was specified and the read's alignments were supressed because the <a href="#bowtie-options-m"><code>-m</code></a> ceiling was exceeded, <code><N></code> equals the <a href="#bowtie-options-m"><code>-m</code></a> ceiling + 1, to indicate that there were at least that many valid alignments (but all were suppressed). In <a href="#bow [...]
+</td>
+</tr>
+</table>
<h1 id="the-bowtie-build-indexer">The <code>bowtie-build</code> indexer</h1>
<p><code>bowtie-build</code> builds a Bowtie index from a set of DNA sequences. <code>bowtie-build</code> outputs a set of 6 files with suffixes <code>.1.ebwt</code>, <code>.2.ebwt</code>, <code>.3.ebwt</code>, <code>.4.ebwt</code>, <code>.rev.1.ebwt</code>, and <code>.rev.2.ebwt</code>. (If the total length of all the input sequences is greater than about 4 billion, then the index files will end in <code>ebwtl</code> instead of <code>ebwt</code>.) These files together constitute the ind [...]
<p>Use of Karkkainen's <a href="http://portal.acm.org/citation.cfm?id=1314852">blockwise algorithm</a> allows <code>bowtie-build</code> to trade off between running time and memory usage. <code>bowtie-build</code> has three options governing how it makes this trade: <a href="#bowtie-build-options-p"><code>-p</code>/<code>--packed</code></a>, <a href="#bowtie-build-options-bmax"><code>--bmax</code></a>/<a href="#bowtie-build-options-bmaxdivn"><code>--bmaxdivn</code></a>, and <a href="#bow [...]
diff --git a/doc/website/old_news.ssi b/doc/website/old_news.ssi
index 119cc99..031328e 100644
--- a/doc/website/old_news.ssi
+++ b/doc/website/old_news.ssi
@@ -1,3 +1,41 @@
+<h2>Lighter released</h2>
+<ul>
+ <li>Lighter is an extremely fast and memory-efficient program for correcting sequencing errors in DNA sequencing data. For details on how error correction can help improve the speed and accuracy of downstream analysis tools, see the <a href="http://genomebiology.com/2014/15/11/509">paper in Genome Biology</a>. Source and software <a href="https://github.com/mourisl/Lighter">available at GitHub</a>.
+</ul>
+
+<h2>1.1.1 - 10/1/2014</h2>
+<ul>
+ <li> Fixed a compiling linkage problem related with Mac OS X Mavericks.</li>
+ <li> Improved performance for cases where the reference contains many stretches of Ns.</li>
+ <li> Some minor automatic tests updates.</li>
+</ul>
+
+
+<h2>1.1.0 - 7/19/2014</h2>
+<ul>
+ <li> Added support for large and small indexes, removing 4-billion-nucleotide
+ barrier. Bowtie can now be used with reference genomes of any size.</li>
+ <li> No longer releasing 32-bit binaries. Simplified manual and Makefile accordingly.</li>
+ <li> Phased out CygWin support.</li>
+ <li> Improved efficiency of index files loading.</li>
+ <li> Fixed a bug that made <tt>bowtie-inspect</tt> fail in some situations.</li>
+ <li> (This release was briefly given version number 2.0.0, but we changed it to 1.1.0
+ to avoid confusion with Bowtie 2.)</li>
+</ul>
+
+<h2>1.0.1 release - 3/14/2014</h2>
+<ul>
+ <li>Improved index querying efficiency using "population count" instructions
+ available since SSE4.2.</li>
+ <li>Credits to the Intel(r) enabling team for performance optimizations
+ included in this release. Thank you!</li>
+</ul>
+
+<h2>Bowtie on GitHub - 4/11/13</h2>
+<ul>
+ <li>Bowtie source now lives in a <a href="https://github.com/BenLangmead/bowtie">public GitHub repository</a>.</li>
+</ul>
+
<h2>1.0.0 release - 4/9/13</h2>
<ul>
<li>Finally, a 64-bit Windows binary!</li>
diff --git a/doc/website/recent_news.ssi b/doc/website/recent_news.ssi
index 8904cb6..d063fe0 100644
--- a/doc/website/recent_news.ssi
+++ b/doc/website/recent_news.ssi
@@ -1,3 +1,17 @@
+<h2>1.2.2 - 12/11/2017</h2>
+<ul>
+ <li>Fixed major issue causing corrupt SAM output when using many threads (-p/--threads) on certain systems</li>
+ <li>Fixed major issue with incorrect alignment offsets being reported in --large-index mode</li>
+ <li>Fixed major issue with reads files being skipped when multiple inputs were specified together with -p/--threads</li>
+ <li>The official LICENSE of Bowtie was changed to Artistic License 2.0. This fixes an issue with the previous LICENSE, which mistakenly combined elements of different open-source licenses.</li>
+ <li>Fixed issue where bowtie would still run for a long time even when -u was set to a small number.</li>
+ <li>Fixed spurious "Reads file contained a pattern with more than 1024 quality values" error for some colorspace inputs.</li>
+ <li>Fixed issue with --strata sometimes failing to suppress alignments at lower strata.</li>
+ <li>Fixed issue with ends of paired-end reads sometimes appearing in non-adjacent lines of the SAM output with -p/--threads >1</li>
+ <li>Fixed issue whereby the read name of end #2 was not always truncated at the first whitespace character</li>
+ <li>Code simplifications</li>
+</ul>
+
<h2>1.2.1.1 - 06/13/2017</h2>
<ul>
<li>Fixed an issue causing Bowtie to segfault when processing reads from stdin</li>
@@ -43,42 +57,3 @@ these libraries be pre-installed.</p>
<li> Added minor corrections/addition to the manual.</li>
<li> Fixed bug that caused the wrapper to incorrectly identify the bowtie binary.</li>
</ul>
-
-<h2>Lighter released</h2>
-<ul>
- <li>Lighter is an extremely fast and memory-efficient program for correcting sequencing errors in DNA sequencing data. For details on how error correction can help improve the speed and accuracy of downstream analysis tools, see the <a href="http://genomebiology.com/2014/15/11/509">paper in Genome Biology</a>. Source and software <a href="https://github.com/mourisl/Lighter">available at GitHub</a>.
-</ul>
-
-<h2>1.1.1 - 10/1/2014</h2>
-<ul>
- <li> Fixed a compiling linkage problem related with Mac OS X Mavericks.</li>
- <li> Improved performance for cases where the reference contains many stretches of Ns.</li>
- <li> Some minor automatic tests updates.</li>
-</ul>
-
-
-<h2>1.1.0 - 7/19/2014</h2>
-<ul>
- <li> Added support for large and small indexes, removing 4-billion-nucleotide
- barrier. Bowtie can now be used with reference genomes of any size.</li>
- <li> No longer releasing 32-bit binaries. Simplified manual and Makefile accordingly.</li>
- <li> Phased out CygWin support.</li>
- <li> Improved efficiency of index files loading.</li>
- <li> Fixed a bug that made <tt>bowtie-inspect</tt> fail in some situations.</li>
- <li> (This release was briefly given version number 2.0.0, but we changed it to 1.1.0
- to avoid confusion with Bowtie 2.)</li>
-</ul>
-
-<h2>1.0.1 release - 3/14/2014</h2>
-<ul>
- <li>Improved index querying efficiency using "population count" instructions
- available since SSE4.2.</li>
- <li>Credits to the Intel(r) enabling team for performance optimizations
- included in this release. Thank you!</li>
-</ul>
-
-<h2>Bowtie on GitHub - 4/11/13</h2>
-<ul>
- <li>Bowtie source now lives in a <a href="https://github.com/BenLangmead/bowtie">public GitHub repository</a>.</li>
-</ul>
-
diff --git a/doc/website/rhsidebar.ssi b/doc/website/rhsidebar.ssi
index 29d0973..5561a5f 100644
--- a/doc/website/rhsidebar.ssi
+++ b/doc/website/rhsidebar.ssi
@@ -18,10 +18,10 @@
</tr>
<tr>
<td>
- <a href="https://sourceforge.net/projects/bowtie-bio/files/bowtie/1.2.1.1">Bowtie 1.2.1.1</a>
+ <a href="https://sourceforge.net/projects/bowtie-bio/files/bowtie/1.2.2">Bowtie 1.2.2</a>
</td>
<td align="right">
- 06/13/17
+ 12/11/17
</td>
</tr>
<tr>
diff --git a/ebwt_search.cpp b/ebwt_search.cpp
index f8f79f5..5de9563 100644
--- a/ebwt_search.cpp
+++ b/ebwt_search.cpp
@@ -553,7 +553,6 @@ static void printUsage(ostream& out) {
#ifdef BOWTIE_SHARED_MEM
<< " --shmem use shared mem for index; many 'bowtie's can share" << endl
#endif
- << " --reorder force SAM output order to match order of input reads" << endl
<< "Other:" << endl
<< " --seed <int> seed for random number generator" << endl
<< " --verbose verbose output (for debugging)" << endl
@@ -879,15 +878,14 @@ static void parseOptions(int argc, const char **argv) {
throw 1;
}
} while(next_option != -1);
- if (reorder == true) {
- if (nthreads == 1 && !thread_stealing) {
- reorder = false;
- }
- if (outType != OUTPUT_SAM) {
- cerr << "Bowtie will attempt to reorder its output only when outputting SAM." << endl
- << "Please specify the `-S` parameter if you intend on using this option." << endl;
- reorder = false;
- }
+
+ if (nthreads == 1 && !thread_stealing) {
+ reorder = false;
+ }
+ if (reorder == true && outType != OUTPUT_SAM) {
+ cerr << "Bowtie will attempt to reorder its output only when outputting SAM." << endl
+ << "Please specify the `-S` parameter if you intend on using this option." << endl;
+ reorder = false;
}
//bool paired = mates1.size() > 0 || mates2.size() > 0 || mates12.size() > 0;
if(rangeMode) {
@@ -1138,6 +1136,7 @@ void decrement_thread_counter() {
#endif
}
+#ifndef _WIN32
void del_pid(const char* dirname,int pid) {
struct stat finfo;
char* fname = (char*) calloc(FNAME_SIZE,sizeof(char));
@@ -1163,7 +1162,6 @@ static void write_pid(const char* dirname,int pid) {
free(fname);
}
-#ifndef _WIN32
//from http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c
static int read_dir(const char* dirname,int* num_pids) {
DIR *dir;
@@ -1461,11 +1459,14 @@ static void exactSearch(PatternComposer& _patsrc,
if(!refs->loaded()) throw 1;
}
exactSearch_refs = refs;
+ vector<int> tids;
+ tids.reserve(max(nthreads, thread_ceiling));
#ifdef WITH_TBB
vector<std::thread*> threads;
+ vector<thread_tracking_pair> tps;
+ tps.reserve(max(nthreads, thread_ceiling));
#else
vector<tthread::thread*> threads;
- int *tids = new int[max(nthreads, thread_ceiling)];
#endif
#ifdef WITH_TBB
@@ -1476,36 +1477,37 @@ static void exactSearch(PatternComposer& _patsrc,
{
Timer _t(cerr, "Time for 0-mismatch search: ", timing);
+#ifndef _WIN32
int pid = 0;
if(thread_stealing) {
pid = getpid();
write_pid(thread_stealing_dir.c_str(), pid);
thread_counter = 0;
}
+#endif
for(int i = 0; i < nthreads; i++) {
+ tids[i] = i;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = i;
- tp.done = &all_threads_done;
+ tps[i].tid = i;
+ tps[i].done = &all_threads_done;
if (i == nthreads - 1) {
if(stateful) {
- exactSearchWorkerStateful((void*)&tp);
+ exactSearchWorkerStateful((void*)&tps[i]);
} else {
- exactSearchWorker((void*)&tp);
+ exactSearchWorker((void*)&tps[i]);
}
}
else {
if(stateful) {
- threads.push_back(new std::thread(exactSearchWorkerStateful, (void*)&tp));
+ threads.push_back(new std::thread(exactSearchWorkerStateful, (void*)&tps[i]));
} else {
- threads.push_back(new std::thread(exactSearchWorker, (void*)&tp));
+ threads.push_back(new std::thread(exactSearchWorker, (void*)&tps[i]));
}
threads[i]->detach();
SLEEP(10);
}
#else
- tids[i] = i;
if (i == nthreads - 1) {
if(stateful) {
exactSearchWorkerStateful((void*)(tids + i));
@@ -1532,19 +1534,18 @@ static void exactSearch(PatternComposer& _patsrc,
while(thread_counter > 0) {
if(steal_thread(pid, orig_threads)) {
nthreads++;
+ tids[nthreads-1] = nthreads;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = nthreads - 1;
- tp.done = &all_threads_done;
+ tps[nthreads-1].tid = nthreads - 1;
+ tps[nthreads-1].done = &all_threads_done;
if(stateful) {
- threads.push_back(new std::thread(exactSearchWorkerStateful, (void*) &tp));
+ threads.push_back(new std::thread(exactSearchWorkerStateful, (void*)&tps[nthreads-1]));
} else {
- threads.push_back(new std::thread(exactSearchWorker, (void*) &tp));
+ threads.push_back(new std::thread(exactSearchWorker, (void*)&tps[nthreads-1]));
}
threads[nthreads-1]->detach();
SLEEP(10);
#else
- tids[nthreads-1] = nthreads;
if(stateful) {
threads.push_back(new tthread::thread(exactSearchWorkerStateful, (void *)(tids + nthreads - 1)));
} else {
@@ -1843,11 +1844,14 @@ static void mismatchSearchFull(PatternComposer& _patsrc,
}
mismatchSearch_refs = refs;
+ vector<int> tids;
+ tids.reserve(max(nthreads, thread_ceiling));
#ifdef WITH_TBB
vector<std::thread*> threads;
+ vector<thread_tracking_pair> tps;
+ tps.reserve(max(nthreads, thread_ceiling));
#else
vector<tthread::thread*> threads;
- int *tids = new int[max(nthreads, thread_ceiling)];
#endif
#ifdef WITH_TBB
@@ -1869,28 +1873,27 @@ static void mismatchSearchFull(PatternComposer& _patsrc,
#endif
for(int i = 0; i < nthreads; i++) {
+ tids[i] = i;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = i;
- tp.done = &all_threads_done;
+ tps[i].tid = i;
+ tps[i].done = &all_threads_done;
if (i == nthreads - 1) {
if(stateful) {
- mismatchSearchWorkerFullStateful((void*)&tp);
+ mismatchSearchWorkerFullStateful((void*)&tps[i]);
} else {
- mismatchSearchWorkerFull((void*)&tp);
+ mismatchSearchWorkerFull((void*)&tps[i]);
}
}
else {
if(stateful) {
- threads.push_back(new std::thread(mismatchSearchWorkerFullStateful, (void*)&tp));
+ threads.push_back(new std::thread(mismatchSearchWorkerFullStateful, (void*)&tps[i]));
} else {
- threads.push_back(new std::thread(mismatchSearchWorkerFull, (void*)&tp));
+ threads.push_back(new std::thread(mismatchSearchWorkerFull, (void*)&tps[i]));
}
threads[i]->detach();
SLEEP(10);
}
#else
- tids[i] = i;
if (i == nthreads - 1) {
if(stateful) {
mismatchSearchWorkerFullStateful((void*)(tids + i));
@@ -1917,19 +1920,18 @@ static void mismatchSearchFull(PatternComposer& _patsrc,
while(thread_counter > 0) {
if(steal_thread(pid, orig_threads)) {
nthreads++;
+ tids[nthreads-1] = nthreads;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = nthreads - 1;
- tp.done = &all_threads_done;
+ tps[nthreads-1].tid = nthreads - 1;
+ tps[nthreads-1].done = &all_threads_done;
if(stateful) {
- threads.push_back(new std::thread(mismatchSearchWorkerFullStateful, (void*)&tp));
+ threads.push_back(new std::thread(mismatchSearchWorkerFullStateful, (void*)&tps[nthreads-1]));
} else {
- threads.push_back(new std::thread(mismatchSearchWorkerFull, (void*)&tp));
+ threads.push_back(new std::thread(mismatchSearchWorkerFull, (void*)&tps[nthreads-1]));
}
threads[nthreads - 1]->detach();
SLEEP(10);
#else
- tids[nthreads-1] = nthreads;
if(stateful) {
threads.push_back(new tthread::thread(mismatchSearchWorkerFullStateful, (void *)(tids + nthreads - 1)));
} else {
@@ -2347,11 +2349,14 @@ static void twoOrThreeMismatchSearchFull(
twoOrThreeMismatchSearch_hitMask = NULL;
twoOrThreeMismatchSearch_two = two;
+ vector<int> tids;
+ tids.reserve(max(nthreads, thread_ceiling));
#ifdef WITH_TBB
vector<std::thread*> threads;
+ vector<thread_tracking_pair> tps;
+ tps.reserve(max(nthreads, thread_ceiling));
#else
vector<tthread::thread*> threads;
- int *tids = new int[max(nthreads, thread_ceiling)];
#endif
#ifdef WITH_TBB
@@ -2373,28 +2378,27 @@ static void twoOrThreeMismatchSearchFull(
#endif
for(int i = 0; i < nthreads; i++) {
+ tids[i] = i;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = i;
- tp.done = &all_threads_done;
+ tps[i].tid = i;
+ tps[i].done = &all_threads_done;
if (i == nthreads - 1) {
if(stateful) {
- twoOrThreeMismatchSearchWorkerStateful((void*)&tp);
+ twoOrThreeMismatchSearchWorkerStateful((void*)&tps[i]);
} else {
- twoOrThreeMismatchSearchWorkerFull((void*)&tp);
+ twoOrThreeMismatchSearchWorkerFull((void*)&tps[i]);
}
}
else {
if(stateful) {
- threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerStateful, (void*)&tp));
+ threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerStateful, (void*)&tps[i]));
} else {
- threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerFull, (void*)&tp));
+ threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerFull, (void*)&tps[i]));
}
threads[i]->detach();
SLEEP(10);
}
#else
- tids[i] = i;
if (i == nthreads - 1) {
if(stateful) {
twoOrThreeMismatchSearchWorkerStateful((void*)(tids + i));
@@ -2421,19 +2425,18 @@ static void twoOrThreeMismatchSearchFull(
while(thread_counter > 0) {
if(steal_thread(pid, orig_threads)) {
nthreads++;
+ tids[nthreads-1] = nthreads;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = nthreads - 1;
- tp.done = &all_threads_done;
+ tps[nthreads-1].tid = nthreads - 1;
+ tps[nthreads-1].done = &all_threads_done;
if(stateful) {
- threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerStateful, (void*) &tp));
+ threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerStateful, (void*)&tps[nthreads-1]));
} else {
- threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerFull, (void*) &tp));
+ threads.push_back(new std::thread(twoOrThreeMismatchSearchWorkerFull, (void*)&tps[nthreads-1]));
}
threads[nthreads-1]->detach();
SLEEP(10);
#else
- tids[nthreads-1] = nthreads;
if(stateful) {
threads.push_back(new tthread::thread(twoOrThreeMismatchSearchWorkerStateful, (void *)(tids + nthreads - 1)));
} else {
@@ -2898,11 +2901,14 @@ static void seededQualCutoffSearchFull(
}
seededQualSearch_refs = refs;
+ vector<int> tids;
+ tids.reserve(max(nthreads, thread_ceiling));
#ifdef WITH_TBB
vector<std::thread*> threads;
+ vector<thread_tracking_pair> tps;
+ tps.reserve(max(nthreads, thread_ceiling));
#else
vector<tthread::thread*> threads;
- int *tids = new int[max(nthreads, thread_ceiling)];
#endif
#ifdef WITH_TBB
@@ -2932,28 +2938,27 @@ static void seededQualCutoffSearchFull(
#endif
for(int i = 0; i < nthreads; i++) {
+ tids[i] = i;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = i;
- tp.done = &all_threads_done;
+ tps[i].tid = i;
+ tps[i].done = &all_threads_done;
if (i == nthreads - 1) {
if(stateful) {
- seededQualSearchWorkerFullStateful((void*)&tp);
+ seededQualSearchWorkerFullStateful((void*)&tps[i]);
} else {
- seededQualSearchWorkerFull((void*)&tp);
+ seededQualSearchWorkerFull((void*)&tps[i]);
}
}
else {
if(stateful) {
- threads.push_back(new std::thread(seededQualSearchWorkerFullStateful, (void*)&tp));
+ threads.push_back(new std::thread(seededQualSearchWorkerFullStateful, (void*)&tps[i]));
} else {
- threads.push_back(new std::thread(seededQualSearchWorkerFull, (void*)&tp));
+ threads.push_back(new std::thread(seededQualSearchWorkerFull, (void*)&tps[i]));
}
threads[i]->detach();
SLEEP(10);
}
#else
- tids[i] = i;
if (i == nthreads - 1) {
if(stateful) {
seededQualSearchWorkerFullStateful((void*)(tids + i));
@@ -2980,19 +2985,18 @@ static void seededQualCutoffSearchFull(
while(thread_counter > 0) {
if(steal_thread(pid, orig_threads)) {
nthreads++;
+ tids[nthreads-1] = nthreads - 1;
#ifdef WITH_TBB
- thread_tracking_pair tp;
- tp.tid = nthreads - 1;
- tp.done = &all_threads_done;
+ tps[nthreads-1].tid = nthreads - 1;
+ tps[nthreads-1].done = &all_threads_done;
if(stateful) {
- threads.push_back(new std::thread(seededQualSearchWorkerFullStateful, (void*) &tp));
+ threads.push_back(new std::thread(seededQualSearchWorkerFullStateful, (void*)&tps[nthreads-1]));
} else {
- threads.push_back(new std::thread(seededQualSearchWorkerFull, (void*) &tp));
+ threads.push_back(new std::thread(seededQualSearchWorkerFull, (void*)&tps[nthreads-1]));
}
threads[nthreads-1]->detach();
SLEEP(10);
#else
- tids[nthreads-1] = nthreads - 1;
if(stateful) {
threads.push_back(new tthread::thread(seededQualSearchWorkerFullStateful, (void *)(tids + nthreads - 1)));
} else {
diff --git a/multikey_qsort.h b/multikey_qsort.h
index 18936de..e5d3095 100644
--- a/multikey_qsort.h
+++ b/multikey_qsort.h
@@ -820,9 +820,6 @@ void qsortSufDcU8(const T1& host1,
#define BUCKET_SORT_CUTOFF (4 * 1024 * 1024)
#define SELECTION_SORT_CUTOFF 6
-// 5 64-element buckets for bucket-sorting A, C, G, T, $
-static TIndexOffU bkts[4][4 * 1024 * 1024];
-
/**
* Straightforwardly obtain a uint8_t-ized version of t[off]. This
* works fine as long as TStr is not packed.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/bowtie.git
More information about the debian-med-commit
mailing list