[med-svn] [Git][med-team/vsearch][upstream] New upstream version 2.21.1
Nilesh Patra (@nilesh)
gitlab at salsa.debian.org
Sat Jan 22 11:19:56 GMT 2022
Nilesh Patra pushed to branch upstream at Debian Med / vsearch
Commits:
8245891e by Nilesh Patra at 2022-01-22T16:40:55+05:30
New upstream version 2.21.1
- - - - -
9 changed files:
- − .travis.yml
- README.md
- configure.ac
- man/vsearch.1
- src/align_simd.cc
- src/cpu.cc
- src/derep.cc
- src/fastx.cc
- src/fastx.h
Changes:
=====================================
.travis.yml deleted
=====================================
@@ -1,40 +0,0 @@
-language:
-- cpp
-
-arch:
-#- amd64
-- arm64
-- ppc64le
-
-os:
-- linux
-#- osx
-
-dist:
-- xenial
-
-osx_image:
-- xcode12.5
-
-addons:
- apt:
- packages:
- - ghostscript
- - valgrind
- - groff
- homebrew:
- packages:
- - ghostscript
-
-compiler:
-- g++
-- clang
-
-script:
-- ./autogen.sh
-- ./configure
-- make
-- export PATH=$PWD/bin:$PATH
-- git clone https://github.com/frederic-mahe/vsearch-tests.git
-- cd vsearch-tests
-- bash ./run_all_tests.sh
=====================================
README.md
=====================================
@@ -37,7 +37,7 @@ Most of the nucleotide based commands and options in USEARCH version 7 are suppo
## Getting Help
-If you can't find an answer in the [VSEARCH documentation](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf), please visit the [VSEARCH Web Forum](https://groups.google.com/forum/#!forum/vsearch-forum) to post a question or start a discussion.
+If you can't find an answer in the [VSEARCH documentation](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf), please visit the [VSEARCH Web Forum](https://groups.google.com/forum/#!forum/vsearch-forum) to post a question or start a discussion.
## Example
@@ -50,9 +50,9 @@ In the example below, VSEARCH will identify sequences in the file database.fsa t
**Source distribution** To download the source distribution from a [release](https://github.com/torognes/vsearch/releases) and build the executable and the documentation, use the following commands:
```
-wget https://github.com/torognes/vsearch/archive/v2.21.0.tar.gz
-tar xzf v2.21.0.tar.gz
-cd vsearch-2.21.0
+wget https://github.com/torognes/vsearch/archive/v2.21.1.tar.gz
+tar xzf v2.21.1.tar.gz
+cd vsearch-2.21.1
./autogen.sh
./configure CFLAGS="-O3" CXXFLAGS="-O3"
make
@@ -81,43 +81,43 @@ Binary distributions are provided for x86-64 systems running GNU/Linux, macOS (v
Download the appropriate executable for your system using the following commands if you are using a Linux x86_64 system:
```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-x86_64.tar.gz
-tar xzf vsearch-2.21.0-linux-x86_64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-x86_64.tar.gz
+tar xzf vsearch-2.21.1-linux-x86_64.tar.gz
```
Or these commands if you are using a Linux ppc64le system:
```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-ppc64le.tar.gz
-tar xzf vsearch-2.21.0-linux-ppc64le.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-ppc64le.tar.gz
+tar xzf vsearch-2.21.1-linux-ppc64le.tar.gz
```
Or these commands if you are using a Linux aarch64 (arm64) system:
```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-aarch64.tar.gz
-tar xzf vsearch-2.21.0-linux-aarch64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-aarch64.tar.gz
+tar xzf vsearch-2.21.1-linux-aarch64.tar.gz
```
Or these commands if you are using a Mac:
```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-macos-x86_64.tar.gz
-tar xzf vsearch-2.21.0-macos-x86_64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-macos-x86_64.tar.gz
+tar xzf vsearch-2.21.1-macos-x86_64.tar.gz
```
Or if you are using Windows, download and extract (unzip) the contents of this file:
```
-https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-win-x86_64.zip
+https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-win-x86_64.zip
```
-Linux and Mac: You will now have the binary distribution in a folder called `vsearch-2.21.0-linux-x86_64` or `vsearch-2.21.0-macos-x86_64` in which you will find three subfolders `bin`, `man` and `doc`. We recommend making a copy or a symbolic link to the vsearch binary `bin/vsearch` in a folder included in your `$PATH`, and a copy or a symbolic link to the vsearch man page `man/vsearch.1` in a folder included in your `$MANPATH`. The PDF version of the manual is available in `doc/vsearch_manual.pdf`. Versions with statically compiled libraries are available for Linux systems. These have "-static" in their name, and could be used on systems that do not have all the necessary libraries installed.
+Linux and Mac: You will now have the binary distribution in a folder called `vsearch-2.21.1-linux-x86_64` or `vsearch-2.21.1-macos-x86_64` in which you will find three subfolders `bin`, `man` and `doc`. We recommend making a copy or a symbolic link to the vsearch binary `bin/vsearch` in a folder included in your `$PATH`, and a copy or a symbolic link to the vsearch man page `man/vsearch.1` in a folder included in your `$MANPATH`. The PDF version of the manual is available in `doc/vsearch_manual.pdf`. Versions with statically compiled libraries are available for Linux systems. These have "-static" in their name, and could be used on systems that do not have all the necessary libraries installed.
-Windows: You will now have the binary distribution in a folder called `vsearch-2.21.0-win-x86_64`. The vsearch executable is called `vsearch.exe`. The manual in PDF format is called `vsearch_manual.pdf`.
+Windows: You will now have the binary distribution in a folder called `vsearch-2.21.1-win-x86_64`. The vsearch executable is called `vsearch.exe`. The manual in PDF format is called `vsearch_manual.pdf`.
-**Documentation** The VSEARCH user's manual is available in the `man` folder in the form of a [man page](https://github.com/torognes/vsearch/blob/master/man/vsearch.1). A pdf version ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf)) will be generated by `make`. To install the manpage manually, copy the `vsearch.1` file or a create a symbolic link to `vsearch.1` in a folder included in your `$MANPATH`. The manual in both formats is also available with the binary distribution. The manual in PDF form ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf)) is also attached to the latest [release](https://github.com/torognes/vsearch/releases).
+**Documentation** The VSEARCH user's manual is available in the `man` folder in the form of a [man page](https://github.com/torognes/vsearch/blob/master/man/vsearch.1). A pdf version ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf)) will be generated by `make`. To install the manpage manually, copy the `vsearch.1` file or a create a symbolic link to `vsearch.1` in a folder included in your `$MANPATH`. The manual in both formats is also available with the binary distribution. The manual in PDF form ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf)) is also attached to the latest [release](https://github.com/torognes/vsearch/releases).
## Packages, plugins, and wrappers
=====================================
configure.ac
=====================================
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
-AC_INIT([vsearch], [2.21.0], [torognes at ifi.uio.no], [vsearch], [https://github.com/torognes/vsearch])
+AC_INIT([vsearch], [2.21.1], [torognes at ifi.uio.no], [vsearch], [https://github.com/torognes/vsearch])
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
AC_LANG([C++])
=====================================
man/vsearch.1
=====================================
@@ -1,5 +1,5 @@
.\" ============================================================================
-.TH vsearch 1 "January 12, 2022" "version 2.21.0" "USER COMMANDS"
+.TH vsearch 1 "January 18, 2022" "version 2.21.1" "USER COMMANDS"
.\" ============================================================================
.SH NAME
vsearch \(em a versatile open-source tool for microbiome analysis,
@@ -4627,6 +4627,10 @@ end when using multiple threads.
.BR v2.21.0\~ "released January 12th, 2022"
This version adds the sample, qsegout and tsegout options. It enables
the use of UDB databases with uchime_ref.
+.TP
+.BR v2.21.1\~ "released January 18th, 2022"
+Fix a problem with dereplication of empty input files. Update Altivec
+code on ppc64le for improved compiler compatibility (vector->__vector).
.LP
.\" ============================================================================
.\" TODO:
=====================================
src/align_simd.cc
=====================================
@@ -102,25 +102,25 @@ static int64_t scorematrix[16][16];
#ifdef __PPC__
-typedef vector signed short VECTOR_SHORT;
+typedef __vector signed short VECTOR_SHORT;
-const vector unsigned char perm_merge_long_low =
+const __vector unsigned char perm_merge_long_low =
{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17};
-const vector unsigned char perm_merge_long_high =
+const __vector unsigned char perm_merge_long_high =
{0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f};
#define v_init(a,b,c,d,e,f,g,h) (const VECTOR_SHORT){a,b,c,d,e,f,g,h}
#define v_load(a) vec_ld(0, (VECTOR_SHORT *)(a))
-#define v_store(a, b) vec_st((vector unsigned char)(b), 0, \
- (vector unsigned char *)(a))
+#define v_store(a, b) vec_st((__vector unsigned char)(b), 0, \
+ (__vector unsigned char *)(a))
#define v_add(a, b) vec_adds((a), (b))
#define v_sub(a, b) vec_subs((a), (b))
#define v_sub_unsigned(a, b) ((VECTOR_SHORT) \
- vec_subs((vector unsigned short) (a), \
- (vector unsigned short) (b)))
+ vec_subs((__vector unsigned short) (a), \
+ (__vector unsigned short) (b)))
#define v_max(a, b) vec_max((a), (b))
#define v_min(a, b) vec_min((a), (b))
#define v_dup(a) vec_splat((VECTOR_SHORT){(short)(a), 0, 0, 0, 0, 0, 0, 0}, 0);
@@ -298,13 +298,13 @@ void dprofile_fill16(CELL * dprofile_word,
{
#ifdef __PPC__
- vector signed short reg0, reg1, reg2, reg3,
+ __vector signed short reg0, reg1, reg2, reg3,
reg4, reg5, reg6, reg7;
- vector signed int reg8, reg9, reg10,reg11,
+ __vector signed int reg8, reg9, reg10,reg11,
reg12,reg13,reg14,reg15;
- vector signed long long reg16,reg17,reg18,reg19,
+ __vector signed long long reg16,reg17,reg18,reg19,
reg20,reg21,reg22,reg23;
- vector signed long long reg24,reg25,reg26,reg27,
+ __vector signed long long reg24,reg25,reg26,reg27,
reg28,reg29,reg30,reg31;
#else
VECTOR_SHORT reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7;
@@ -323,39 +323,39 @@ void dprofile_fill16(CELL * dprofile_word,
reg7 = v_load(score_matrix_word + d[7] + i);
#ifdef __PPC__
- reg8 = (vector signed int) vec_mergeh(reg0, reg1);
- reg9 = (vector signed int) vec_mergel(reg0, reg1);
- reg10 = (vector signed int) vec_mergeh(reg2, reg3);
- reg11 = (vector signed int) vec_mergel(reg2, reg3);
- reg12 = (vector signed int) vec_mergeh(reg4, reg5);
- reg13 = (vector signed int) vec_mergel(reg4, reg5);
- reg14 = (vector signed int) vec_mergeh(reg6, reg7);
- reg15 = (vector signed int) vec_mergel(reg6, reg7);
-
- reg16 = (vector signed long long) vec_mergeh(reg8, reg10);
- reg17 = (vector signed long long) vec_mergel(reg8, reg10);
- reg18 = (vector signed long long) vec_mergeh(reg12, reg14);
- reg19 = (vector signed long long) vec_mergel(reg12, reg14);
- reg20 = (vector signed long long) vec_mergeh(reg9, reg11);
- reg21 = (vector signed long long) vec_mergel(reg9, reg11);
- reg22 = (vector signed long long) vec_mergeh(reg13, reg15);
- reg23 = (vector signed long long) vec_mergel(reg13, reg15);
-
- reg24 = (vector signed long long) vec_perm
+ reg8 = (__vector signed int) vec_mergeh(reg0, reg1);
+ reg9 = (__vector signed int) vec_mergel(reg0, reg1);
+ reg10 = (__vector signed int) vec_mergeh(reg2, reg3);
+ reg11 = (__vector signed int) vec_mergel(reg2, reg3);
+ reg12 = (__vector signed int) vec_mergeh(reg4, reg5);
+ reg13 = (__vector signed int) vec_mergel(reg4, reg5);
+ reg14 = (__vector signed int) vec_mergeh(reg6, reg7);
+ reg15 = (__vector signed int) vec_mergel(reg6, reg7);
+
+ reg16 = (__vector signed long long) vec_mergeh(reg8, reg10);
+ reg17 = (__vector signed long long) vec_mergel(reg8, reg10);
+ reg18 = (__vector signed long long) vec_mergeh(reg12, reg14);
+ reg19 = (__vector signed long long) vec_mergel(reg12, reg14);
+ reg20 = (__vector signed long long) vec_mergeh(reg9, reg11);
+ reg21 = (__vector signed long long) vec_mergel(reg9, reg11);
+ reg22 = (__vector signed long long) vec_mergeh(reg13, reg15);
+ reg23 = (__vector signed long long) vec_mergel(reg13, reg15);
+
+ reg24 = (__vector signed long long) vec_perm
(reg16, reg18, perm_merge_long_low);
- reg25 = (vector signed long long) vec_perm
+ reg25 = (__vector signed long long) vec_perm
(reg16, reg18, perm_merge_long_high);
- reg26 = (vector signed long long) vec_perm
+ reg26 = (__vector signed long long) vec_perm
(reg17, reg19, perm_merge_long_low);
- reg27 = (vector signed long long) vec_perm
+ reg27 = (__vector signed long long) vec_perm
(reg17, reg19, perm_merge_long_high);
- reg28 = (vector signed long long) vec_perm
+ reg28 = (__vector signed long long) vec_perm
(reg20, reg22, perm_merge_long_low);
- reg29 = (vector signed long long) vec_perm
+ reg29 = (__vector signed long long) vec_perm
(reg20, reg22, perm_merge_long_high);
- reg30 = (vector signed long long) vec_perm
+ reg30 = (__vector signed long long) vec_perm
(reg21, reg23, perm_merge_long_low);
- reg31 = (vector signed long long) vec_perm
+ reg31 = (__vector signed long long) vec_perm
(reg21, reg23, perm_merge_long_high);
#else
reg8 = v_merge_lo_16(reg0, reg1);
@@ -428,38 +428,38 @@ void dprofile_fill16(CELL * dprofile_word,
/* The VSX vec_bperm instruction puts the 16 selected bits of the first
source into bits 48-63 of the destination. */
-const vector unsigned char perm = { 120, 112, 104, 96, 88, 80, 72, 64,
+const __vector unsigned char perm = { 120, 112, 104, 96, 88, 80, 72, 64,
56, 48, 40, 32, 24, 16, 8, 0 };
#define ALIGNCORE(H, N, F, V, RES, QR_q, R_q, QR_t, R_t, H_MIN, H_MAX) \
{ \
- vector unsigned short W, X, Y, Z; \
- vector unsigned int WX, YZ; \
- vector short VV; \
+ __vector unsigned short W, X, Y, Z; \
+ __vector unsigned int WX, YZ; \
+ __vector short VV; \
VV = v_load(&V); \
H = v_add(H, VV); \
- W = (vector unsigned short) VECTORBYTEPERMUTE \
- ((vector unsigned char) vec_cmpgt(F, H), perm); \
+ W = (__vector unsigned short) VECTORBYTEPERMUTE \
+ ((__vector unsigned char) vec_cmpgt(F, H), perm); \
H = v_max(H, F); \
- X = (vector unsigned short) VECTORBYTEPERMUTE \
- ((vector unsigned char) vec_cmpgt(E, H), perm); \
+ X = (__vector unsigned short) VECTORBYTEPERMUTE \
+ ((__vector unsigned char) vec_cmpgt(E, H), perm); \
H = v_max(H, E); \
H_MIN = v_min(H_MIN, H); \
H_MAX = v_max(H_MAX, H); \
N = H; \
HF = v_sub(H, QR_t); \
F = v_sub(F, R_t); \
- Y = (vector unsigned short) VECTORBYTEPERMUTE \
- ((vector unsigned char) vec_cmpgt(F, HF), perm); \
+ Y = (__vector unsigned short) VECTORBYTEPERMUTE \
+ ((__vector unsigned char) vec_cmpgt(F, HF), perm); \
F = v_max(F, HF); \
HE = v_sub(H, QR_q); \
E = v_sub(E, R_q); \
- Z = (vector unsigned short) VECTORBYTEPERMUTE \
- ((vector unsigned char) vec_cmpgt(E, HE), perm); \
+ Z = (__vector unsigned short) VECTORBYTEPERMUTE \
+ ((__vector unsigned char) vec_cmpgt(E, HE), perm); \
E = v_max(E, HE); \
- WX = (vector unsigned int) vec_mergel(W, X); \
- YZ = (vector unsigned int) vec_mergel(Y, Z); \
- RES = (vector unsigned long long) vec_mergeh(WX, YZ); \
+ WX = (__vector unsigned int) vec_mergel(W, X); \
+ YZ = (__vector unsigned int) vec_mergel(Y, Z); \
+ RES = (__vector unsigned long long) vec_mergeh(WX, YZ); \
}
#else
@@ -527,7 +527,7 @@ void aligncolumns_first(VECTOR_SHORT * Sm,
VECTOR_SHORT h_max = v_zero;
#ifdef __PPC__
- vector unsigned long long RES1, RES2, RES;
+ __vector unsigned long long RES1, RES2, RES;
#endif
int64_t i;
@@ -679,7 +679,7 @@ void aligncolumns_rest(VECTOR_SHORT * Sm,
VECTOR_SHORT h_max = v_zero;
#ifdef __PPC__
- vector unsigned long long RES1, RES2, RES;
+ __vector unsigned long long RES1, RES2, RES;
#endif
int64_t i;
=====================================
src/cpu.cc
=====================================
@@ -121,32 +121,32 @@ void increment_counters_from_bitmap(count_t * counters,
unsigned char * bitmap,
unsigned int totalbits)
{
- const vector unsigned char c1 =
+ const __vector unsigned char c1 =
{ 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
- const vector unsigned char c2 =
+ const __vector unsigned char c2 =
{ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f,
0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f };
- const vector unsigned char c3 =
+ const __vector unsigned char c3 =
{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
unsigned short * p = (unsigned short *)(bitmap);
- vector signed short * q = (vector signed short *) (counters);
+ __vector signed short * q = (__vector signed short *) (counters);
int r = (totalbits + 15) / 16;
for(int j=0; j<r; j++)
{
- vector unsigned char r0, r1, r2;
- vector __bool char r3;
- vector signed short r4, r5;
+ __vector unsigned char r0, r1, r2;
+ __vector __bool char r3;
+ __vector signed short r4, r5;
memcpy(&r0, p, 2);
p++;
r1 = vec_perm(r0, r0, c1);
r2 = vec_or(r1, c2);
r3 = vec_cmpeq(r2, c3);
- r4 = (vector signed short) vec_unpackl(r3);
- r5 = (vector signed short) vec_unpackh(r3);
+ r4 = (__vector signed short) vec_unpackl(r3);
+ r5 = (__vector signed short) vec_unpackh(r3);
*q = vec_subs(*q, r4);
q++;
*q = vec_subs(*q, r5);
=====================================
src/derep.cc
=====================================
@@ -286,17 +286,20 @@ void derep(char * input_filename, bool use_header)
fatal("Unrecognized input file type (not proper FASTA or FASTQ format)");
}
- if (fastx_is_fastq(h))
+ if (! fastx_is_empty(h))
{
- if (!opt_fastx_uniques)
- fatal("FASTQ input is only allowed with the fastx_uniques command");
- }
- else
- {
- if (opt_fastqout)
- fatal("Cannot write FASTQ output when input file is not in FASTQ format");
- if (opt_tabbedout)
- fatal("Cannot write tab separated output file when input file is not in FASTQ format");
+ if (fastx_is_fastq(h))
+ {
+ if (!opt_fastx_uniques)
+ fatal("FASTQ input is only allowed with the fastx_uniques command");
+ }
+ else
+ {
+ if (opt_fastqout)
+ fatal("Cannot write FASTQ output when input file is not in FASTQ format");
+ if (opt_tabbedout)
+ fatal("Cannot write tab separated output file when input file is not in FASTQ format");
+ }
}
FILE * fp_fastaout = nullptr;
=====================================
src/fastx.cc
=====================================
@@ -464,6 +464,11 @@ bool fastx_is_fastq(fastx_handle h)
return h->is_fastq || h->is_empty;
}
+bool fastx_is_empty(fastx_handle h)
+{
+ return h->is_empty;
+}
+
void fastx_close(fastx_handle h)
{
/* Warn about stripped chars */
=====================================
src/fastx.h
=====================================
@@ -115,6 +115,7 @@ typedef struct fastx_s * fastx_handle;
/* fastx input */
bool fastx_is_fastq(fastx_handle h);
+bool fastx_is_empty(fastx_handle h);
void fastx_filter_header(fastx_handle h, bool truncateatspace);
fastx_handle fastx_open(const char * filename);
void fastx_close(fastx_handle h);
View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/8245891e5dcbf0d413785deb883df3a306543dad
--
View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/8245891e5dcbf0d413785deb883df3a306543dad
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/20220122/b4a146b7/attachment-0001.htm>
More information about the debian-med-commit
mailing list