[med-svn] [Git][med-team/vsearch][upstream] New upstream version 2.30.0

Étienne Mollier (@emollier) gitlab at salsa.debian.org
Wed Mar 5 12:56:52 GMT 2025



Étienne Mollier pushed to branch upstream at Debian Med / vsearch


Commits:
d9bc5598 by Étienne Mollier at 2025-03-05T13:46:29+01:00
New upstream version 2.30.0
- - - - -


9 changed files:

- README.md
- configure.ac
- man/vsearch.1
- src/align_simd.cc
- src/filter.cc
- src/linmemalign.cc
- src/showalign.cc
- src/vsearch.cc
- src/vsearch.h


Changes:

=====================================
README.md
=====================================
@@ -39,7 +39,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.29.4/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.30.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.
 
 ## Example
 
@@ -52,9 +52,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.29.4.tar.gz
-tar xzf v2.29.4.tar.gz
-cd vsearch-2.29.4
+wget https://github.com/torognes/vsearch/archive/v2.30.0.tar.gz
+tar xzf v2.30.0.tar.gz
+cd vsearch-2.30.0
 ./autogen.sh
 ./configure CFLAGS="-O2" CXXFLAGS="-O2"
 make ARFLAGS="cr"
@@ -91,7 +91,7 @@ wget https://github.com/torognes/vsearch/releases/download/v{VERSION}/vsearch-{V
 tar xzf vsearch-{VERSION}-{OS}-{ARCH}.tar.gz
 ```
 
-Replace `{VERSION}` with the VSEARCH version number (e.g. `2.29.4`), `{OS}` with the target operating system (`linux` or `macos`), and `{ARCH}` with the architecture (`x86_64`, `aarch64`, `ppc64le`, `riscv64`, or `mips64el`). You could add `-static` after `{ARCH}` to get a statically compiled version for Linux (except x86_64). The name of the binary for the RHEL 7 and CentOS 7 Linux distributions ends in `-ubi7`.
+Replace `{VERSION}` with the VSEARCH version number (e.g. `2.30.0`), `{OS}` with the target operating system (`linux` or `macos`), and `{ARCH}` with the architecture (`x86_64`, `aarch64`, `ppc64le`, `riscv64`, or `mips64el`). You could add `-static` after `{ARCH}` to get a statically compiled version for Linux (except x86_64). The name of the binary for the RHEL 7 and CentOS 7 Linux distributions ends in `-ubi7`.
 
 Or, if you are using Windows, download and extract (unzip) the contents of this file:
 
@@ -115,7 +115,7 @@ and `zlib1.dll` files required for reading compressed input
 files. These DLL's have been obtained for mingw-w64 from the MSYS2
 platform.
 
-**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.29.4/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.29.4/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.30.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.30.0/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.29.4], [torognes at ifi.uio.no], [vsearch], [https://github.com/torognes/vsearch])
+AC_INIT([vsearch], [2.30.0], [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,7 +1,7 @@
 .\" import www macros (URL, TAG, MTO)
 .mso www.tmac
 .\" ============================================================================
-.TH vsearch 1 "February 14, 2025" "version 2.29.4" "USER COMMANDS"
+.TH vsearch 1 "February 27, 2025" "version 2.30.0" "USER COMMANDS"
 .\" ============================================================================
 .SH NAME
 vsearch \(em a versatile open-source tool for microbiome analysis,
@@ -1886,6 +1886,12 @@ merged sequence. The default is 1.
 .BI \-\-fastq_minovlen\~ "positive integer"
 When using \-\-fastq_mergepairs, specify the minimum overlap between
 the merged reads. The default is 10. Must be at least 5.
+.TAG fastq_minqual
+.TP
+.BI \-\-fastq_minqual\~ "positive integer"
+When using \-\-fastq_filter or \-\-fastx_filter, discard reads having
+any base with a quality score below the given value. The default is 0,
+which discards none.
 .TAG fastq_nostagger
 .TP
 .B \-\-fastq_nostagger
@@ -2030,6 +2036,15 @@ default, \fIk\fR = 4.
 When using \-\-fastq_filter or \-\-fastx_filter, truncate sequences so
 that their total expected error is not higher than the specified
 value.
+.TAG fastq_truncee_rate
+.TP
+.BI \-\-fastq_truncee_rate\~ real
+When using \-\-fastq_filter or \-\-fastx_filter, truncate sequences so
+that their average expected error per base is not higher than the
+specified value. The truncation will happen at the first
+occurence. The average expected error per base is calculated as the
+total expected number of errors divided by the length of the sequence
+after truncation.
 .TAG fastq_trunclen
 .TP
 .BI \-\-fastq_trunclen\~ "positive integer"
@@ -2095,26 +2110,27 @@ corresponding output will be written to the files specified with the
 files if the input is in FASTA format. The sequences are first trimmed
 and then filtered based on the remaining bases. Sequences may be
 trimmed using the options \-\-fastq_stripleft, \-\-fastq_stripright,
-\-\-fastq_truncee, \-\-fastq_trunclen, \-\-fastq_trunclen_keep and
-\-\-fastq_truncqual. The sequences may be filtered using the options
-\-\-fastq_maxee, \-\-fastq_maxee_rate, \-\-fastq_maxlen,
-\-\-fastq_maxns, \-\-fastq_minlen (default 1), \-\-fastq_trunclen,
-\-\-maxsize, and \-\-minsize. Sequences not satisfying the
-requirements are discarded. For pairs of sequences, both sequences in
-a pair must satisfy the requirements, otherwise both are discarded. If
-no shortening or filtering options are given, all sequences are
-written to the output files, possibly after conversion from FASTQ to
-FASTA format. The \-\-relabel option may be used to relabel the output
+\-\-fastq_truncee, \-\-fastq_truncee_rate, \-\-fastq_trunclen,
+\-\-fastq_trunclen_keep and \-\-fastq_truncqual. The sequences may be
+filtered using the options \-\-fastq_maxee, \-\-fastq_maxee_rate,
+\-\-fastq_maxlen, \-\-fastq_maxns, \-\-fastq_minlen (default 1),
+\-\-fastq_minqual, \-\-fastq_trunclen, \-\-maxsize, and
+\-\-minsize. Sequences not satisfying the requirements are
+discarded. For pairs of sequences, both sequences in a pair must
+satisfy the requirements, otherwise both are discarded. If no
+shortening or filtering options are given, all sequences are written
+to the output files, possibly after conversion from FASTQ to FASTA
+format. The \-\-relabel option may be used to relabel the output
 sequences. The \-\-eeout option may be used to output the expected
 number of errors in each sequence. After all sequences have been
 processed, the number of kept and discarded sequences will be shown,
 as well as how many of the kept sequences were trimmed. When the input
 is in FASTA format, the following options are not accepted because
 quality scores are not available: \-\-eeout, \-\-fastq_ascii,
-\-\-fastq_eeout, \-\-fastq_maxee, \-\-fastq_maxee_rate, \-\-fastq_out,
-\-\-fastq_qmax, \-\-fastq_qmin, \-\-fastq_truncee,
-\-\-fastq_truncqual, \-\-fastqout_discarded,
-\-\-fastqout_discarded_rev, \-\-fastqout_rev.
+\-\-fastq_eeout, \-\-fastq_maxee, \-\-fastq_maxee_rate,
+\-\-fastq_minqual, \-\-fastq_out, \-\-fastq_qmax, \-\-fastq_qmin,
+\-\-fastq_truncee, \-\-fastq_truncee_rate, \-\-fastq_truncqual,
+\-\-fastqout_discarded, \-\-fastqout_discarded_rev, \-\-fastqout_rev.
 .TAG fastx_revcomp
 .TP
 .BI \-\-fastx_revcomp \0filename
@@ -5015,6 +5031,19 @@ Adjust the window size used for chimera detection down from 64 to
 2.23.0, leading to somewhat fewer chimeras being predicted.
 In addition, a compiler pragma has been included in align_simd.cc to
 further protect the compiler from generating wrong code.
+.TP
+.BR v2.30.0\~ "released February 27th, 2025"
+Add options `\-\-n_mismatch`, `\-\-fastq_minqual`, and
+`\-\-fastq_truncee_rate`.  The `\-\-n_mismatch` option will count N's
+as mismatches in alignments, which may be useful to get sensible
+alignments for sequences with lots of N's. By default N's are counted
+as matches. Both the scoring and the counting of matches are
+affected. The new `\-\-fastq_minqual` option for the `fastq_filter`
+and `fastx_filter` commands will discard sequences with any bases with
+a quality scores below the given value. The new
+`\-\-fastq_truncee_rate` option for the same commands will truncate
+sequences at the first position where the number of expected errors
+per base is below the given value.
 .\" ============================================================================
 .\" TODO:
 .\"


=====================================
src/align_simd.cc
=====================================
@@ -1026,7 +1026,11 @@ auto backtrack16(s16info_s * s,
         {
           if (chrmap_4bit[(int) (qseq[i])] & chrmap_4bit[(int) (dseq[j])])
             {
-              ++matches;
+              if (opt_n_mismatch && ((chrmap_4bit[(int) (qseq[i])] == 15) ||
+                                     (chrmap_4bit[(int) (dseq[j])] == 15)))
+                ++mismatches;
+              else
+                ++matches;
             }
           else
             {
@@ -1111,7 +1115,11 @@ auto search16_init(CELL score_match,
       for (int j = 0; j < 16; j++)
         {
           CELL value = 0;
-          if (ambiguous_4bit[i] or ambiguous_4bit[j])
+          if (opt_n_mismatch && ((i == 15) || (j == 15)))
+            {
+              value = opt_mismatch;
+            }
+          else if (ambiguous_4bit[i] or ambiguous_4bit[j])
             {
               value = 0;
             }
@@ -1216,7 +1224,11 @@ auto search16_qprep(s16info_s * s, char * qseq, int qlen) -> void
   GNU C++ 9 or later generates incorrect code on x86_64 if turned on.
 */
 
+#ifdef __GNUC__
+#ifndef __clang__
 #pragma GCC optimize ("-fno-tree-partial-pre")
+#endif
+#endif
 
 auto search16(s16info_s * s,
               unsigned int sequences,


=====================================
src/filter.cc
=====================================
@@ -183,12 +183,18 @@ auto analyse(fastx_handle h) -> struct analysis_res
           res.ee += e;
 
           if ((qual <= opt_fastq_truncqual) ||
-              (res.ee > opt_fastq_truncee))
+              (res.ee > opt_fastq_truncee) ||
+              (res.ee > opt_fastq_truncee_rate * (i + 1)))
             {
               res.ee -= e;
               res.length = i;
               break;
             }
+
+          if (qual < opt_fastq_minqual)
+            {
+              res.discarded = true;
+            }
         }
 
       /* filter by expected errors (ee) */
@@ -287,12 +293,14 @@ auto filter(bool fastq_only, char * filename) -> void
                (opt_fastq_qmax < 41) ||
                (opt_fastq_qmin > 0) ||
                (opt_fastq_truncee < dbl_max) ||
+               (opt_fastq_truncee_rate < dbl_max) ||
                (opt_fastq_truncqual < long_min) ||
+               (opt_fastq_minqual > 0) ||
                opt_fastqout_discarded ||
                opt_fastqout_discarded_rev ||
                opt_fastqout_rev)
         {
-          fatal("The following options are not accepted with the fastx_filter command when the input is a FASTA file, because quality scores are not available: eeout, fastq_ascii, fastq_eeout, fastq_maxee, fastq_maxee_rate, fastq_out, fastq_qmax, fastq_qmin, fastq_truncee, fastq_truncqual,  fastqout_discarded, fastqout_discarded_rev, fastqout_rev");
+          fatal("The following options are not accepted with the fastx_filter command when the input is a FASTA file, because quality scores are not available: eeout, fastq_ascii, fastq_eeout, fastq_maxee, fastq_maxee_rate, fastq_minqual, fastq_out, fastq_qmax, fastq_qmin, fastq_truncee, fastq_truncee_rate, fastq_truncqual,  fastqout_discarded, fastqout_discarded_rev, fastqout_rev");
         }
     }
 
@@ -311,30 +319,6 @@ auto filter(bool fastq_only, char * filename) -> void
         {
           fatal("The forward and reverse input sequence must in the same format, either FASTA or FASTQ");
         }
-
-      if (! (h2->is_fastq || h2->is_empty))
-        {
-          if (fastq_only)
-            {
-              fatal("FASTA input files not allowed with fastq_filter, consider using fastx_filter command instead");
-            }
-          else if (opt_eeout ||
-                   (opt_fastq_ascii != 33) ||
-                   opt_fastq_eeout ||
-                   (opt_fastq_maxee < dbl_max) ||
-                   (opt_fastq_maxee_rate < dbl_max) ||
-                   opt_fastqout ||
-                   (opt_fastq_qmax < 41) ||
-                   (opt_fastq_qmin > 0) ||
-                   (opt_fastq_truncee < dbl_max) ||
-                   (opt_fastq_truncqual < long_min) ||
-                   opt_fastqout_discarded ||
-                   opt_fastqout_discarded_rev ||
-                   opt_fastqout_rev)
-            {
-              fatal("The following options are not accepted with the fastx_filter command when the input is a FASTA file, because quality scores are not available: eeout, fastq_ascii, fastq_eeout, fastq_maxee, fastq_maxee_rate, fastq_out, fastq_qmax, fastq_qmin, fastq_truncee, fastq_truncqual,  fastqout_discarded, fastqout_discarded_rev, fastqout_rev");
-            }
-        }
     }
 
   FILE * fp_fastaout = nullptr;


=====================================
src/linmemalign.cc
=====================================
@@ -139,7 +139,11 @@ auto LinearMemoryAligner::scorematrix_create(int64_t match, int64_t mismatch) ->
       for (int j = 0; j < 16; j++)
         {
           int64_t value = 0;
-          if (ambiguous_4bit[i] || ambiguous_4bit[j])
+          if (opt_n_mismatch && ((i == 15) || (j == 15)))
+            {
+              value = mismatch;
+            }
+          else if (ambiguous_4bit[i] || ambiguous_4bit[j])
             {
               value = 0;
             }
@@ -743,8 +747,13 @@ auto LinearMemoryAligner::alignstats(char * cigar,
             {
               nwscore += subst_score(a_pos, b_pos);
 
-              if (chrmap_4bit[(int)(a_seq[a_pos])] &
-                  chrmap_4bit[(int)(b_seq[b_pos])])
+              if (opt_n_mismatch && ((chrmap_4bit[(int) (a_seq[a_pos])] == 15) ||
+                                     (chrmap_4bit[(int) (b_seq[b_pos])] == 15)))
+                {
+                  nwmismatches++;
+                }
+              else if (chrmap_4bit[(int)(a_seq[a_pos])] &
+                       chrmap_4bit[(int)(b_seq[b_pos])])
                 {
                   nwmatches++;
                 }


=====================================
src/showalign.cc
=====================================
@@ -127,7 +127,11 @@ inline auto putop(char c, int64_t len) -> void
 
           qs4 = chrmap_4bit[static_cast<int>(qs)];
           ds4 = chrmap_4bit[static_cast<int>(ds)];
-          if ((qs4 == ds4) and (ambiguous_4bit[qs4] == 0U))
+          if (opt_n_mismatch && ((qs4 == 15) || (ds4 == 15)))
+            {
+              a_line[line_pos] = ' ';
+            }
+          else if ((qs4 == ds4) and (ambiguous_4bit[qs4] == 0U))
             {
               a_line[line_pos] = '|';
             }


=====================================
src/vsearch.cc
=====================================
@@ -115,6 +115,7 @@ bool opt_fastq_nostagger;
 bool opt_gzip_decompress;
 bool opt_label_substr_match;
 bool opt_lengthout;
+bool opt_n_mismatch;
 bool opt_no_progress;
 bool opt_quiet;
 bool opt_relabel_keep;
@@ -225,6 +226,7 @@ double opt_fastq_maxdiffpct;
 double opt_fastq_maxee;
 double opt_fastq_maxee_rate;
 double opt_fastq_truncee;
+double opt_fastq_truncee_rate;
 double opt_id;
 double opt_lca_cutoff;
 double opt_max_unmasked_pct;
@@ -283,6 +285,7 @@ int64_t opt_fastq_maxns;
 int64_t opt_fastq_minlen;
 int64_t opt_fastq_minmergelen;
 int64_t opt_fastq_minovlen;
+int64_t opt_fastq_minqual;
 int64_t opt_fastq_qmax;
 int64_t opt_fastq_qmaxout;
 int64_t opt_fastq_qmin;
@@ -838,6 +841,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
   opt_fastq_minlen = 1;
   opt_fastq_minmergelen = 0;
   opt_fastq_minovlen = 10;
+  opt_fastq_minqual = 0;
   opt_fastq_nostagger = true;
   opt_fastq_qmax = 41;
   opt_fastq_qmaxout = 41;
@@ -847,6 +851,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
   opt_fastq_stripleft = 0;
   opt_fastq_stripright = 0;
   opt_fastq_truncee = dbl_max;
+  opt_fastq_truncee_rate = dbl_max;
   opt_fastq_trunclen = -1;
   opt_fastq_trunclen_keep = -1;
   opt_fastq_truncqual = long_min;
@@ -932,6 +937,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
   opt_mismatch = -4;
   opt_mothur_shared_out = nullptr;
   opt_msaout = nullptr;
+  opt_n_mismatch = false;
   opt_no_progress = false;
   opt_nonchimeras = nullptr;
   opt_notmatched = nullptr;
@@ -1080,6 +1086,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       option_fastq_minlen,
       option_fastq_minmergelen,
       option_fastq_minovlen,
+      option_fastq_minqual,
       option_fastq_nostagger,
       option_fastq_qmax,
       option_fastq_qmaxout,
@@ -1091,6 +1098,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       option_fastq_stripright,
       option_fastq_tail,
       option_fastq_truncee,
+      option_fastq_truncee_rate,
       option_fastq_trunclen,
       option_fastq_trunclen_keep,
       option_fastq_truncqual,
@@ -1172,6 +1180,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       option_mismatch,
       option_mothur_shared_out,
       option_msaout,
+      option_n_mismatch,
       option_no_progress,
       option_nonchimeras,
       option_notmatched,
@@ -1327,6 +1336,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       {"fastq_minlen",          required_argument, nullptr, 0 },
       {"fastq_minmergelen",     required_argument, nullptr, 0 },
       {"fastq_minovlen",        required_argument, nullptr, 0 },
+      {"fastq_minqual",         required_argument, nullptr, 0 },
       {"fastq_nostagger",       no_argument,       nullptr, 0 },
       {"fastq_qmax",            required_argument, nullptr, 0 },
       {"fastq_qmaxout",         required_argument, nullptr, 0 },
@@ -1338,6 +1348,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       {"fastq_stripright",      required_argument, nullptr, 0 },
       {"fastq_tail",            required_argument, nullptr, 0 },
       {"fastq_truncee",         required_argument, nullptr, 0 },
+      {"fastq_truncee_rate",    required_argument, nullptr, 0 },
       {"fastq_trunclen",        required_argument, nullptr, 0 },
       {"fastq_trunclen_keep",   required_argument, nullptr, 0 },
       {"fastq_truncqual",       required_argument, nullptr, 0 },
@@ -1419,6 +1430,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
       {"mismatch",              required_argument, nullptr, 0 },
       {"mothur_shared_out",     required_argument, nullptr, 0 },
       {"msaout",                required_argument, nullptr, 0 },
+      {"n_mismatch",            no_argument,       nullptr, 0 },
       {"no_progress",           no_argument,       nullptr, 0 },
       {"nonchimeras",           required_argument, nullptr, 0 },
       {"notmatched",            required_argument, nullptr, 0 },
@@ -2595,6 +2607,18 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
           opt_sintax_random = true;
           break;
 
+        case option_n_mismatch:
+          opt_n_mismatch = true;
+          break;
+
+        case option_fastq_minqual:
+          opt_fastq_minqual = args_getlong(optarg);
+          break;
+
+        case option_fastq_truncee_rate:
+          opt_fastq_truncee_rate = args_getdouble(optarg);
+          break;
+
         default:
           fatal("Internal error in option parsing");
         }
@@ -2675,7 +2699,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
     The first line is the command and the lines below are the valid options.
   */
 
-  const int valid_options[][98] =
+  const int valid_options[][99] =
     {
       {
         option_allpairs_global,
@@ -2724,6 +2748,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_mintsize,
         option_minwordmatches,
         option_mismatch,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -2856,6 +2881,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_mismatch,
         option_mothur_shared_out,
         option_msaout,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -2953,6 +2979,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_mismatch,
         option_mothur_shared_out,
         option_msaout,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -3050,6 +3077,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_mismatch,
         option_mothur_shared_out,
         option_msaout,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -3149,6 +3177,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_mismatch,
         option_mothur_shared_out,
         option_msaout,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -3456,11 +3485,13 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_fastq_maxlen,
         option_fastq_maxns,
         option_fastq_minlen,
+        option_fastq_minqual,
         option_fastq_qmax,
         option_fastq_qmin,
         option_fastq_stripleft,
         option_fastq_stripright,
         option_fastq_truncee,
+        option_fastq_truncee_rate,
         option_fastq_trunclen,
         option_fastq_trunclen_keep,
         option_fastq_truncqual,
@@ -3598,11 +3629,13 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_fastq_maxlen,
         option_fastq_maxns,
         option_fastq_minlen,
+        option_fastq_minqual,
         option_fastq_qmax,
         option_fastq_qmin,
         option_fastq_stripleft,
         option_fastq_stripright,
         option_fastq_truncee,
+        option_fastq_truncee_rate,
         option_fastq_trunclen,
         option_fastq_trunclen_keep,
         option_fastq_truncqual,
@@ -4469,6 +4502,7 @@ auto args_init(int argc, char ** argv, struct Parameters & parameters) -> void
         option_minwordmatches,
         option_mismatch,
         option_mothur_shared_out,
+        option_n_mismatch,
         option_no_progress,
         option_notmatched,
         option_notrunclabels,
@@ -5385,6 +5419,7 @@ auto cmd_help(struct Parameters const & parameters) -> void {
           "  --mintsize INT              reject if target abundance lower\n"
           "  --minwordmatches INT        minimum number of word matches required (12)\n"
           "  --mismatch INT              score for mismatch (-4)\n"
+          "  --n_mismatch                consider aligning with N's as mismatches\n"
           "  --pattern STRING            option is ignored\n"
           "  --qmask none|dust|soft      mask query with dust, soft or no method (dust)\n"
           "  --query_cov REAL            reject if fraction of query seq. aligned lower\n"
@@ -5483,11 +5518,13 @@ auto cmd_help(struct Parameters const & parameters) -> void {
           "  --fastq_maxlen INT          discard if length of sequence is longer\n"
           "  --fastq_maxns INT           discard if number of N's is higher\n"
           "  --fastq_minlen INT          discard if length of sequence is shorter\n"
+          "  --fastq_minqual INT         discard if any base quality value lower (0)\n"
           "  --fastq_qmax INT            maximum base quality value for FASTQ input (41)\n"
           "  --fastq_qmin INT            minimum base quality value for FASTQ input (0)\n"
           "  --fastq_stripleft INT       delete given number of bases from the 5' end\n"
           "  --fastq_stripright INT      delete given number of bases from the 3' end\n"
           "  --fastq_truncee REAL        truncate to given maximum expected error\n"
+          "  --fastq_truncee_rate REAL   truncate to given maximum expected error rate\n"
           "  --fastq_trunclen INT        truncate to given length (discard if shorter)\n"
           "  --fastq_trunclen_keep INT   truncate to given length (keep if shorter)\n"
           "  --fastq_truncqual INT       truncate to given minimum base quality\n"


=====================================
src/vsearch.h
=====================================
@@ -236,6 +236,7 @@ extern bool opt_fastq_nostagger;
 extern bool opt_gzip_decompress;
 extern bool opt_label_substr_match;
 extern bool opt_lengthout;
+extern bool opt_n_mismatch;
 extern bool opt_no_progress;
 extern bool opt_quiet;
 extern bool opt_relabel_keep;
@@ -345,6 +346,7 @@ extern double opt_fastq_maxdiffpct;
 extern double opt_fastq_maxee;
 extern double opt_fastq_maxee_rate;
 extern double opt_fastq_truncee;
+extern double opt_fastq_truncee_rate;
 extern double opt_id;
 extern double opt_lca_cutoff;
 extern double opt_max_unmasked_pct;
@@ -403,6 +405,7 @@ extern int64_t opt_fastq_maxns;
 extern int64_t opt_fastq_minlen;
 extern int64_t opt_fastq_minmergelen;
 extern int64_t opt_fastq_minovlen;
+extern int64_t opt_fastq_minqual;
 extern int64_t opt_fastq_qmax;
 extern int64_t opt_fastq_qmaxout;
 extern int64_t opt_fastq_qmin;



View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/d9bc55981964c6a4496980a488ccef41ae4fb95c

-- 
View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/d9bc55981964c6a4496980a488ccef41ae4fb95c
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/20250305/01b9437c/attachment-0001.htm>


More information about the debian-med-commit mailing list