Skip to content

Update seqfu to version 1.25.1#1634

Merged
erinyoung merged 13 commits into
StaPH-B:masterfrom
cwoodside1278:seqfu-1.25.1
May 6, 2026
Merged

Update seqfu to version 1.25.1#1634
erinyoung merged 13 commits into
StaPH-B:masterfrom
cwoodside1278:seqfu-1.25.1

Conversation

@cwoodside1278

@cwoodside1278 cwoodside1278 commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

Pull Request (PR) checklist:

  • Include a description of what is in this pull request in this message.
  • The dockerfile successfully builds to a test target for the user creating the PR. (i.e. docker build --tag samtools:1.15test --target test docker-builds/build-files/samtools/1.15 )
  • Directory structure as name of the tool in lower case with special characters removed with a subdirectory of the version number in build-files (i.e. docker-builds/build-files/spades/3.12.0/Dockerfile)
    • (optional) All test files are located in same directory as the Dockerfile (i.e. build-files/shigatyper/2.0.1/test.sh)
  • Create a simple container-specific README.md in the same directory as the Dockerfile (i.e. docker-builds/build-files/spades/3.12.0/README.md)
    • If this README is longer than 30 lines, there is an explanation as to why more detail was needed
  • Dockerfile includes the recommended LABELS
  • Main README.md has been updated to include the tool and/or version of the dockerfile(s) in this PR
  • Program_Licenses.md contains the tool(s) used in this PR and has been updated for any missing

Description

Updated seqfu to 1.25.1 version from 21.23.0

  • created new directory structure seqfu/1.25.1
  • changed to Ubuntu:jammy to Ubuntu:noble
  • Updated the nim version to 2.2.8 from 2.2.6
  • Updated the container-specific read me to seqfu/1.25.1
  • Updated the main read me to include the new version

Test Build

[+] Building 21.1s (16/16) FINISHED                                                                                                                                   docker:default
 => [internal] load build definition from Dockerfile                                                                                                                            0.0s
 => => transferring dockerfile: 2.66kB                                                                                                                                          0.0s
 => [internal] load metadata for docker.io/library/ubuntu:noble                                                                                                                 0.3s
 => [internal] load .dockerignore                                                                                                                                               0.0s
 => => transferring context: 2B                                                                                                                                                 0.0s
 => [builder 1/5] FROM docker.io/library/ubuntu:noble@sha256:84e77dee7d1bc93fb029a45e3c6cb9d8aa4831ccfcc7103d36e876938d28895b                                                   0.0s
 => CACHED [builder 2/5] RUN apt-get update && apt-get install -y --no-install-recommends     wget     unzip     build-essential     zlib1g-dev     curl     python3     pytho  0.0s
 => CACHED [builder 3/5] WORKDIR /root                                                                                                                                          0.0s
 => CACHED [builder 4/5] RUN curl https://nim-lang.org/choosenim/init.sh -sSf | sh -s -- -y --ver ${NIM_VER}                                                                    0.0s
 => CACHED [builder 5/5] RUN wget -q https://github.com/telatin/seqfu2/archive/refs/tags/v1.25.1.tar.gz &&     tar -xzf v1.25.1.tar.gz &&     rm v1.25.1.tar.gz &&     cd seqf  0.0s
 => CACHED [app 2/3] COPY --from=builder /root/seqfu2-1.25.1/bin /usr/local/bin                                                                                                 0.0s
 => [app 3/3] RUN apt-get update && apt-get install -y --no-install-recommends     curl     ca-certificates     wget     libpcre3 &&     apt-get autoclean && rm -rf /var/lib  12.8s
 => [test 1/5] RUN seqfu --version && seqfu --help                                                                                                                              0.2s
 => [test 2/5] WORKDIR /test                                                                                                                                                    0.0s
 => [test 3/5] COPY --from=builder /root/seqfu2-1.25.1 /test                                                                                                                    0.6s 
 => [test 4/5] RUN mv test/test-check.sh test/test-check.sh_skip &&     bash test/mini.sh                                                                                       2.8s 
 => [test 5/5] RUN wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_1.fastq.gz &&     wget -q https://github.com/StaPH-B/docker-builds  3.6s 
 => exporting to image                                                                                                                                                          0.7s 
 => => exporting layers                                                                                                                                                         0.7s 
 => => writing image sha256:cd1f1909b636bfa3fab125f7b1a1964ca09aea90df9abcf037a91e49074f1772                                                                                    0.0s 
 => => naming to docker.io/library/seqfu:1.25.1                                    

Diff output

diff -r build-files/seqfu/1.25.1/Dockerfile build-files/seqfu/1.23.0/Dockerfile
2,3c2,3
< ARG SEQFU_VER="1.25.1"
< ARG NIM_VER="2.2.8"
---
> ARG SEQFU_VER="1.23.0"
> ARG NIM_VER="2.2.6"
6c6
< FROM ubuntu:noble AS builder
---
> FROM ubuntu:jammy AS builder
38c38
< FROM ubuntu:noble AS app
---
> FROM ubuntu:jammy AS app
42c42
< LABEL base.image="ubuntu:noble" 
---
> LABEL base.image="ubuntu:jammy" 
60,61c60
<     wget \
<     libpcre3 && \
---
>     wget && \

@erinyoung

Copy link
Copy Markdown
Contributor

This test layer looks like it failed:

#16 [test 5/5] RUN wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_1.fastq.gz &&     wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_2.fastq.gz &&     seqfu check SRR13957123_1.fastq.gz SRR13957123_2.fastq.gz > seqfu_check_test.txt &&     seqfu count -f SRR13957123_1.fastq.gz -r SRR13957123_2.fastq.gz > seqfu_count_test.txt
#16 2.553 [seqfu count] Waiting for STDIN... [Ctrl-C to quit, type with --help for info].

@erinyoung

Copy link
Copy Markdown
Contributor

Some of the built-in tests also failed

#15 0.647 OK: Files exist: /test/test/../data//illumina_1.fq.gz
#15 0.647 OK: Files exist: /test/test/../data//illumina_2.fq.gz
#15 0.653 OK: Empty single-end file is reported as SE with 0 reads
#15 0.660 OK: Invalid --threads value is rejected
#15 0.667 OK: Non-integer --threads value is rejected
#15 0.673 OK: Parallel count matches single-thread output
#15 0.676 OK: STDIN input works with --threads > 1 (sequential fallback)
#15 0.688 OK: Sort mode default/input/name works as expected
#15 0.694 OK: Sort mode counts and --reverse-sort work as expected
#15 0.698 OK: Sort mode none returns all expected rows
#15 0.705 OK: Invalid --sort mode is rejected
#15 0.712 OK: Custom tags are respected in --unpair output
#15 0.716 OK: Custom tags are respected in paired aggregation mode
#15 0.724 OK: Reverse-only input raises explicit error
#15 0.735 FAIL: Read failure handling [exit=0 out=/tmp/tmp.YVwWmjBP7l/broken_1.fq.gz	1	Paired err=]
#15 0.735 FAIL: Finished with 14 passed, 1 failed

@erinyoung

Copy link
Copy Markdown
Contributor

And python is missing

#15 0.952   Testing module: split 
#15 0.952 ------------------------------------------------------------ 
#15 0.953 SKIP: python not found () or fu-split not in /test/test/../bin/
#15 0.954 # Finished with 0 passed, 0 failed
#15 0.955 
#15 0.957   Testing module: split_nozip 
#15 0.957 ------------------------------------------------------------ 
#15 0.958 SKIP: python not found () or fu-split not in /test/test/../bin/
#15 0.958 # Finished with 0 passed, 0 failed

@cwoodside1278

Copy link
Copy Markdown
Contributor Author

This test layer looks like it failed:

#16 [test 5/5] RUN wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_1.fastq.gz &&     wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_2.fastq.gz &&     seqfu check SRR13957123_1.fastq.gz SRR13957123_2.fastq.gz > seqfu_check_test.txt &&     seqfu count -f SRR13957123_1.fastq.gz -r SRR13957123_2.fastq.gz > seqfu_count_test.txt
#16 2.553 [seqfu count] Waiting for STDIN... [Ctrl-C to quit, type with --help for info].

I think I just fixed it. It has to do with the -f flag

#17 [test 5/5] RUN wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_1.fastq.gz &&     wget -q https://github.com/StaPH-B/docker-builds/raw/master/tests/SARS-CoV-2/SRR13957123_2.fastq.gz &&     seqfu check SRR13957123_1.fastq.gz SRR13957123_2.fastq.gz > seqfu_check_test.txt &&     seqfu count SRR13957123_1.fastq.gz SRR13957123_2.fastq.gz > seqfu_count_test.txt
#17 DONE 4.0s

@cwoodside1278

Copy link
Copy Markdown
Contributor Author

Okay I believe this one fix fixed it all! I am no longer seeing it in the workflow tests.

Comment thread build-files/seqfu/1.25.1/README.md Outdated
Comment on lines +48 to +50
seqfu count \
-f SRR13957123_1.fastq.gz \
-r SRR13957123_2.fastq.gz

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you update the example usage so that it matches the current usage?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done!

@erinyoung

Copy link
Copy Markdown
Contributor

I'm still seeing this error

#16 0.821   Testing module: split 
#16 0.821 ------------------------------------------------------------ 
#16 0.822 SKIP: python not found () or fu-split not in /test/test/../bin/
#16 0.822 # Finished with 0 passed, 0 failed
#16 0.824 
#16 0.825   Testing module: split_nozip 
#16 0.825 ------------------------------------------------------------ 
#16 0.826 SKIP: python not found () or fu-split not in /test/test/../bin/
#16 0.826 # Finished with 0 passed, 0 failed

Comment thread build-files/seqfu/1.25.1/Dockerfile
Comment thread build-files/seqfu/1.25.1/Dockerfile
@cwoodside1278

Copy link
Copy Markdown
Contributor Author

I'm still seeing this error

#16 0.821   Testing module: split 
#16 0.821 ------------------------------------------------------------ 
#16 0.822 SKIP: python not found () or fu-split not in /test/test/../bin/
#16 0.822 # Finished with 0 passed, 0 failed
#16 0.824 
#16 0.825   Testing module: split_nozip 
#16 0.825 ------------------------------------------------------------ 
#16 0.826 SKIP: python not found () or fu-split not in /test/test/../bin/
#16 0.826 # Finished with 0 passed, 0 failed

Okay, I think its all fixed!!

#16 0.975   Testing module: split 
#16 0.975 ------------------------------------------------------------ 
#16 0.977 Python 3.12.3
#16 0.978  * Outdir: /tmp/tmp.IgCFbVZYLW
#16 1.144 OK: Split in 7 files: got 7
#16 1.176 OK: Total sequences from splitParts-*.fa.gz equal source: exp=6137 got=6137
#16 1.418 OK: Split by 500000 bases: exp=1847237 got=1847237
#16 1.421 OK: Split by bases: expecting 4 files: got 4
#16 1.432 OK: splitBases-00001.fa.gz contains 499961 bp: no more than 500000
#16 1.442 OK: splitBases-00002.fa.gz contains 499961 bp: no more than 500000
#16 1.452 OK: splitBases-00003.fa.gz contains 499961 bp: no more than 500000
#16 1.461 OK: splitBases-00004.fa.gz contains 347354 bp: no more than 500000
#16 1.764 OK: Split by 1000 seqs: exp=1847237 got=1847237 
#16 1.770 OK: splitSeqs-00001.fa.gz contains 1000 sequences: no more than 1000
#16 1.774 OK: splitSeqs-00002.fa.gz contains 1000 sequences: no more than 1000
#16 1.779 OK: splitSeqs-00003.fa.gz contains 1000 sequences: no more than 1000
#16 1.783 OK: splitSeqs-00004.fa.gz contains 1000 sequences: no more than 1000
#16 1.788 OK: splitSeqs-00005.fa.gz contains 1000 sequences: no more than 1000
#16 1.792 OK: splitSeqs-00006.fa.gz contains 1000 sequences: no more than 1000
#16 1.796 OK: splitSeqs-00007.fa.gz contains 137 sequences: no more than 1000
#16 1.796 # Finished with 16 passed, 0 failed
#16 1.798 
#16 1.800   Testing module: split_nozip 
#16 1.800 ------------------------------------------------------------ 
#16 1.802 Python 3.12.3
#16 1.969 OK: Split in 7 files: got 7
#16 2.002 OK: Total sequences from splitParts-*.fa equal source: exp=6137 got=6137
#16 2.163 OK: Split by 500000 bases: exp=1847237 got=1847237
#16 2.166 OK: Split by bases in 4 files: got 4
#16 2.176 OK: splitBases-00001.fa contains 499961 bp: no more than 500000
#16 2.185 OK: splitBases-00002.fa contains 499961 bp: no more than 500000
#16 2.194 OK: splitBases-00003.fa contains 499961 bp: no more than 500000
#16 2.203 OK: splitBases-00004.fa contains 347354 bp: no more than 500000
#16 2.398 OK: Split by 1000 seqs: exp=1847237 got=1847237
#16 2.402 OK: splitSeqs-00001.fa contains 1000 sequences: no more than 1000
#16 2.406 OK: splitSeqs-00002.fa contains 1000 sequences: no more than 1000
#16 2.410 OK: splitSeqs-00003.fa contains 1000 sequences: no more than 1000
#16 2.413 OK: splitSeqs-00004.fa contains 1000 sequences: no more than 1000
#16 2.417 OK: splitSeqs-00005.fa contains 1000 sequences: no more than 1000
#16 2.421 OK: splitSeqs-00006.fa contains 1000 sequences: no more than 1000
#16 2.424 OK: splitSeqs-00007.fa contains 137 sequences: no more than 1000
#16 2.424 # Finished with 16 passed, 0 failed

@erinyoung

Copy link
Copy Markdown
Contributor

I did some trouble shooting this morning. In essence, the dependencies for seqfu have shifted.

I don't have permission to edit your PR, so this is what I need you do:

Replace your apt-get layer in the 'builder' stage with

RUN apt-get update && apt-get install -y --no-install-recommends \
    wget \
    unzip \
    build-essential \
    zlib1g-dev \
    curl \
    git \
    ca-certificates && \
    rm -rf /var/lib/apt/lists/*

Replace your apt-get layer in the 'app' stage with

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    ca-certificates \
    python3 \
    python-is-python3 \
    wget \
    zlib1g \
    libpcre3 \
    jq \
    coreutils && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

seqfu needs truncate, which is part of the coreutils package as well as jq.

Also, before you run the tests, you need a non-root user. This is likely going to be the norm soon (see #1651), so you can add the user as recommended in that PR or, since it's not the norm yet, you can add these lines to the test stage:

RUN useradd -m -s /bin/bash appuser
USER appuser

This should cause all the tests to pass, so moving one of the tests to ignore it is no longer needed.

@cwoodside1278

Copy link
Copy Markdown
Contributor Author

@erinyoung Thanks for the troubleshooting! I appreciate it. I've updated the Dockerfile with the dependency layers to suggested for the builder and app stages. I also added the non-root user lines to the test stage with the two lines you gave, and removed the test-check.sh skip.

That is odd it won't let you edit my PR. Is there something I can do in the future/settings so you can?

@cwoodside1278

Copy link
Copy Markdown
Contributor Author

Okay I had to add chown to the app user, because wget was running at root and the /test working directory is owned by root, so appuser can't write the downloaded files there

@erinyoung

Copy link
Copy Markdown
Contributor

Thank you! I can confirm that this seems to work as intended. I will merge this PR and get this deployed.

@erinyoung erinyoung merged commit 4a52b1a into StaPH-B:master May 6, 2026
2 checks passed
@erinyoung

Copy link
Copy Markdown
Contributor

Thank you for putting so much effort into this! You can check the status of the deploy here : https://github.com/StaPH-B/docker-builds/actions/runs/25459021903

@cwoodside1278 cwoodside1278 deleted the seqfu-1.25.1 branch May 10, 2026 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants