[med-svn] [Git][med-team/fastp][master] 6 commits: New upstream version 0.24.0+dfsg

Dylan Aïssi (@daissi) gitlab at salsa.debian.org
Mon Feb 3 20:51:44 GMT 2025



Dylan Aïssi pushed to branch master at Debian Med / fastp


Commits:
a08b8141 by Dylan Aïssi at 2025-02-03T21:44:47+01:00
New upstream version 0.24.0+dfsg
- - - - -
f116938a by Dylan Aïssi at 2025-02-03T21:44:47+01:00
Update upstream source from tag 'upstream/0.24.0+dfsg'

Update to upstream version '0.24.0+dfsg'
with Debian dir a8910210a9cbcabff333bdc4aa7c4f7c2bc7f3a8
- - - - -
6046123e by Dylan Aïssi at 2025-02-03T21:46:52+01:00
Refresh patches

- - - - -
220d321e by Dylan Aïssi at 2025-02-03T21:48:16+01:00
Bump debian/changelog

- - - - -
a1e9b7a4 by Dylan Aïssi at 2025-02-03T21:50:08+01:00
Drop invalid metadata

- - - - -
8acd9d5f by Dylan Aïssi at 2025-02-03T21:51:09+01:00
Standards-Version: 4.7.0 (no changes required)

- - - - -


14 changed files:

- README.md
- debian/changelog
- debian/control
- debian/patches/fix-riscv64.patch
- debian/patches/makefile.patch
- src/common.h
- src/main.cpp
- src/peprocessor.cpp
- src/read.cpp
- src/readpool.cpp
- src/seprocessor.cpp
- src/singleproducersingleconsumerlist.h
- src/threadconfig.cpp
- src/writerthread.cpp


Changes:

=====================================
README.md
=====================================
@@ -7,8 +7,12 @@ https://badges.debian.net/badges/debian/unstable/fastp/version.svg)](https://pac
 [![fastp ci](https://github.com/OpenGene/fastp/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/OpenGene/fastp/actions/workflows/ci.yml)
 
 # fastp
-A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance.
-- [fastp](#fastp)
+A tool designed to provide ultrafast all-in-one preprocessing and quality control for FastQ data.     
+
+This tool is designed for processing short reads (i.e. Illumina NovaSeq, MGI), if you are looking for tools to process long reads (i.e. Nanopore, PacBio, Cyclone), please use [fastplong](https://github.com/OpenGene/fastplong)  
+
+Citation: Shifu Chen. 2023. Ultrafast one-pass FASTQ data preprocessing, quality control, and deduplication using fastp. iMeta 2: e107. https://doi.org/10.1002/imt2.107
+
 - [features](#features)
 - [simple usage](#simple-usage)
 - [examples of report](#examples-of-report)
@@ -16,8 +20,8 @@ A tool designed to provide fast all-in-one preprocessing for FastQ files. This t
   - [install with Bioconda](#install-with-bioconda)
   - [or download the latest prebuilt binary for Linux users](#or-download-the-latest-prebuilt-binary-for-linux-users)
   - [or compile from source](#or-compile-from-source)
-    - [Step 1: download and build libisal](#step-1-download-and-build-libisal)
-    - [step 2: download and build libdeflate](#step-2-download-and-build-libdeflate)
+    - [Step 1: install isa-l](#step-1-install-isa-l)
+    - [step 2: install libdeflate](#step-2-install-libdeflate)
     - [Step 3: download and build fastp](#step-3-download-and-build-fastp)
 - [input and output](#input-and-output)
   - [output to STDOUT](#output-to-stdout)
@@ -103,28 +107,28 @@ This binary was compiled on CentOS, and tested on CentOS/Ubuntu
 wget http://opengene.org/fastp/fastp
 chmod a+x ./fastp
 
-# or download specified version, i.e. fastp v0.23.1
-wget http://opengene.org/fastp/fastp.0.23.1
-mv fastp.0.23.1 fastp
+# or download specified version, i.e. fastp v0.23.4
+wget http://opengene.org/fastp/fastp.0.23.4
+mv fastp.0.23.4 fastp
 chmod a+x ./fastp
 ```
 ## or compile from source
 `fastp` depends on `libdeflate` and `libisal`, while `libisal` is not compatible with gcc 4.8. If you use gcc 4.8, your fastp will fail to run. Please upgrade your gcc before you build the libraries and fastp.
 
-### Step 1: download and build libisal
-See https://github.com/intel/isa-l
-`autoconf`, `automake`, `libtools`, `nasm (>=v2.11.01)` and `yasm (>=1.2.0)` are required to build this isal
+### Step 1: install isa-l
+It's recommended that to install it using your package manager, for example `apt install isa-l` on ubuntu, or `brew install isa-l` on Mac. Otherwise you can compile it from source. Please be noted that `isa-l` is not compatible with gcc 4.8 or older versions. See https://github.com/intel/isa-l
+`autoconf`, `automake`, `libtools`, `nasm (>=2.11.01)` and `yasm (>=1.2.0)` are required to build isa-l.
 ```shell
 git clone https://github.com/intel/isa-l.git
 cd isa-l
 ./autogen.sh
 ./configure --prefix=/usr --libdir=/usr/lib64
-make
+make -j
 sudo make install
 ```
 
-### step 2: download and build libdeflate
-See https://github.com/ebiggers/libdeflate
+### step 2: install libdeflate
+It's recommended that to install it using your package manager, for example `apt install libdeflate` on ubuntu, or `brew install libdeflate` on Mac. Otherwise you can compile it from source. See https://github.com/ebiggers/libdeflate
 ```shell
 git clone https://github.com/ebiggers/libdeflate.git
 cd libdeflate
@@ -140,12 +144,11 @@ git clone https://github.com/OpenGene/fastp.git
 
 # build
 cd fastp
-make
+make -j
 
 # Install
 sudo make install
 ```
-You can add `-j8` option to `make/cmake` to use 8 threads for the compilation. 
 
 # input and output
 `fastp` supports both single-end (SE) and paired-end (PE) input/output.


=====================================
debian/changelog
=====================================
@@ -1,9 +1,16 @@
-fastp (0.23.4+dfsg-2) UNRELEASED; urgency=medium
+fastp (0.24.0+dfsg-1) UNRELEASED; urgency=medium
 
+  [ Andreas Tille ]
   * Team upload.
   * Fix filename for upstream tarball
+  * Build-Depends does not exist on i386 - do not generate noise on salsa-ci
 
- -- Andreas Tille <tille at debian.org>  Wed, 12 Jul 2023 15:27:18 +0200
+  [ Dylan Aïssi ]
+  * New upstream version 0.24.0+dfsg
+  * Refresh patches
+  * Standards-Version: 4.7.0 (no changes required)
+
+ -- Dylan Aïssi <daissi at debian.org>  Mon, 03 Feb 2025 21:47:25 +0100
 
 fastp (0.23.4+dfsg-1) unstable; urgency=medium
 


=====================================
debian/control
=====================================
@@ -6,7 +6,7 @@ Priority: optional
 Build-Depends: debhelper-compat (= 13),
                libisal-dev,
                libdeflate-dev
-Standards-Version: 4.6.2
+Standards-Version: 4.7.0
 Vcs-Browser: https://salsa.debian.org/med-team/fastp
 Vcs-Git: https://salsa.debian.org/med-team/fastp.git
 Homepage: https://github.com/OpenGene/fastp


=====================================
debian/patches/fix-riscv64.patch
=====================================
@@ -2,9 +2,9 @@ Description: Correctly link the binary with -pthread, to include -latomic when n
 Author: Aurelien Jarno <aurel32 at debian.org>
 Last-Update: 2021-12-11
 
---- fastp-0.23.2+dfsg.orig/Makefile
-+++ fastp-0.23.2+dfsg/Makefile
-@@ -16,9 +16,9 @@ BIN_TARGET := ${TARGET}
+--- a/Makefile
++++ b/Makefile
+@@ -16,9 +16,9 @@
  
  CXX ?= g++
  CXXFLAGS += -std=c++11 -pthread -g -O3 -I${DIR_INC} $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))


=====================================
debian/patches/makefile.patch
=====================================
@@ -1,7 +1,6 @@
 Author: Dylan Aïssi <bob.dybian at gmail.com>
 Description: Inject some compiler flags.
 Last-Update: 2019-01-18
-Forwarded: TODO
 
 --- a/Makefile
 +++ b/Makefile


=====================================
src/common.h
=====================================
@@ -1,7 +1,7 @@
 #ifndef COMMON_H
 #define COMMON_H
 
-#define FASTP_VER "0.23.4"
+#define FASTP_VER "0.24.0"
 
 #define _DEBUG false
 
@@ -29,20 +29,15 @@ const char ATCG_BASES[] = {'A', 'T', 'C', 'G'};
 
 #pragma pack() 
 
-// the limit of the queue to store the packs
-// error may happen if it generates more packs than this number
-static const int PACK_NUM_LIMIT  = 10000000;
 
 // how many reads one pack has
-static const int PACK_SIZE = 1000;
+static const int PACK_SIZE = 256;
 
 // if one pack is produced, but not consumed, it will be kept in the memory
 // this number limit the number of in memory packs
 // if the number of in memory packs is full, the producer thread should sleep
-static const int PACK_IN_MEM_LIMIT = 500;
+static const int PACK_IN_MEM_LIMIT = 128;
 
-// if read number is more than this, warn it
-static const int WARN_STANDALONE_READ_LIMIT = 10000;
 
 // different filtering results, bigger number means worse
 // if r1 and r2 are both failed, then the bigger one of the two results will be recorded


=====================================
src/main.cpp
=====================================
@@ -319,7 +319,7 @@ int main(int argc, char* argv[]){
             || cmd.exist("cut_front_window_size") || cmd.exist("cut_front_mean_quality") 
             || cmd.exist("cut_tail_window_size") || cmd.exist("cut_tail_mean_quality") 
             || cmd.exist("cut_right_window_size") || cmd.exist("cut_right_mean_quality"))
-            cerr << "WARNING: you specified the options for cutting by quality, but forogt to enable any of cut_front/cut_tail/cut_right. This will have no effect." << endl;
+            cerr << "WARNING: you specified the options for cutting by quality, but forgot to enable any of cut_front/cut_tail/cut_right. This will have no effect." << endl;
     }
 
     // quality filtering


=====================================
src/peprocessor.cpp
=====================================
@@ -58,6 +58,8 @@ PairEndProcessor::~PairEndProcessor() {
         delete mRightReadPool;
         mRightReadPool = NULL;
     }
+    delete[] mLeftInputLists;
+    delete[] mRightInputLists;
 }
 
 void PairEndProcessor::initOutput() {


=====================================
src/read.cpp
=====================================
@@ -56,7 +56,6 @@ Read* Read::reverseComplement(){
 	string seq = Sequence::reverseComplement(mSeq);
 	string qual;
 	qual.assign(mQuality->rbegin(), mQuality->rend());
-	string* strand=new string("+");
 	return new Read(mName->c_str(), seq.c_str(), "+", qual.c_str());
 }
 
@@ -181,7 +180,9 @@ bool Read::fixMGI() {
 	int len = mName->length();
 	if((*mName)[len-1]=='1' || (*mName)[len-1]=='2') {
 		if((*mName)[len-2] == '/') {
-			mName = new string(mName->substr(0, len-2) + " " + mName->substr(len-2, 2));
+			string* newName = new string(mName->substr(0, len-2) + " " + mName->substr(len-2, 2));
+			delete mName;
+			mName = newName;
 			return true;
 		}
 	}


=====================================
src/readpool.cpp
=====================================
@@ -31,8 +31,15 @@ bool ReadPool::input(int tid, Read* data) {
 }
 
 void ReadPool::cleanup() {
-    //TODO: delete unused pooled Reads.
-    //But since this is only called when the program exits, the one-by-one deletion can be skipped to save time
+    for(int t=0; t<mOptions->thread; t++) {
+        while(mBufferLists[t]->canBeConsumed()) {
+            Read* r = mBufferLists[t]->consume();
+            mConsumed++;
+            delete r;
+        }
+        delete mBufferLists[t];
+    }
+    delete[] mBufferLists;
 }
 
 void ReadPool::initBufferLists() {


=====================================
src/seprocessor.cpp
=====================================
@@ -41,6 +41,7 @@ SingleEndProcessor::~SingleEndProcessor() {
         delete mReadPool;
         mReadPool = NULL;
     }
+    delete[] mInputLists;
 }
 
 void SingleEndProcessor::initOutput() {


=====================================
src/singleproducersingleconsumerlist.h
=====================================
@@ -83,6 +83,8 @@ public:
             blocks[recycled & blocksRingBufferSizeMask] = NULL;
             recycled++;
         }
+        delete[] blocks;
+        blocks = NULL;
     }
     inline size_t size() {
         return produced -  consumed;


=====================================
src/threadconfig.cpp
=====================================
@@ -41,6 +41,26 @@ void ThreadConfig::cleanup() {
         delete mRightInputList;
         mRightInputList = NULL;
     }
+    if(mPreStats1) {
+        delete mPreStats1;
+        mPreStats1 = NULL;
+    }
+    if(mPostStats1) {
+        delete mPostStats1;
+        mPostStats1 = NULL;
+    }
+    if(mPreStats2) {
+        delete mPreStats2;
+        mPreStats2 = NULL;
+    }
+    if(mPostStats2) {
+        delete mPostStats2;
+        mPostStats2 = NULL;
+    }
+    if(mFilterResult) {
+        delete mFilterResult;
+        mFilterResult = NULL;
+    }
 }
 
 


=====================================
src/writerthread.cpp
=====================================
@@ -55,6 +55,11 @@ void WriterThread::input(int tid, string* data) {
 
 void WriterThread::cleanup() {
     deleteWriter();
+    for(int t=0; t<mOptions->thread; t++) {
+        delete mBufferLists[t];
+    }
+    delete[] mBufferLists;
+    mBufferLists = NULL;
 }
 
 void WriterThread::deleteWriter() {



View it on GitLab: https://salsa.debian.org/med-team/fastp/-/compare/bdf824ef5644da2ba0cae30aa33d5470ebb88f89...8acd9d5fd64a52f482ba681938220e28cece499d

-- 
View it on GitLab: https://salsa.debian.org/med-team/fastp/-/compare/bdf824ef5644da2ba0cae30aa33d5470ebb88f89...8acd9d5fd64a52f482ba681938220e28cece499d
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/20250203/fd12ae22/attachment-0001.htm>


More information about the debian-med-commit mailing list