This release includes significant improvements to resource management, build reliability, and portability. ### Memory-Aware Batching (Backward Compatible) - Added configurable batch size and memory limits to prevent excessive memory usage during large dataset processing. - Introduced a new `--batch-mem` command-line option (e.g., `128K`, `64M`, `1G`) to enable adaptive batching based on estimated sequence memory footprint. - Internal batching logic now flushes batches when either size or memory thresholds are exceeded, ensuring predictable behavior. - Conservative memory estimation and explicit garbage collection after large batch discards improve resource efficiency. ### Linux Build Enhancements - Enabled static linking for Linux binaries using musl, producing self-contained executables with no external runtime dependencies. - Refined cross-compilation toolchain to use architecture-specific CGO header paths, improving reliability across target architectures. - Switched Linux builds to use Docker-based static compilation for consistency and reproducibility. ### Build System & Toolchain Improvements - Upgraded Go toolchain to 1.26, with updated dependencies including golang.org/x/net v0.38.0. - Fixed Makefile quoting for LDFLAGS to handle paths containing spaces. - Enhanced build error handling to display logs before cleanup on failure. - Improved install script with correct environment variable setup (GOROOT, GOPATH, GOTOOLCHAIN) and added progress indicators for downloads. Note: All batching behavior remains non-breaking, with default constraints ensuring safe processing of large datasets.
obitools V4
OBITools V4 is the new version of OBITools. They are closer to OBITools2 than to OBITools3. They are implemented in GO and are tens of times faster than OBITools2.
The git for OBITools4 is available at :
Installing OBITools V4
An installation script that compiles the new OBITools on your Unix-like system is available online. The easiest way to run it is to copy and paste the following command into your terminal
curl -L https://raw.githubusercontent.com/metabarcoding/obitools4/master/install_obitools.sh | bash
By default, the script installs the latest version of OBITools commands and other associated files into the /usr/local directory.
Installation Options
The installation script offers several options:
-l, --list List all available versions and exit.
-v, --version Install a specific version (e.g.,
-v 4.4.3). By default, the latest version is installed.-i, --install-dir Directory where obitools are installed (as example use
/usr/localnot/usr/local/bin).-p, --obitools-prefix Prefix added to the obitools command names if you want to have several versions of obitools at the same time on your system (as example
-p gwill producegobigrepcommand instead ofobigrep).-j, --jobs Number of parallel jobs used for compilation (default: 1). Increase this value to speed up compilation on multi-core systems (e.g.,
-j 4).
Examples
List all available versions:
curl -L https://raw.githubusercontent.com/metabarcoding/obitools4/master/install_obitools.sh | bash -s -- --list
Install a specific version:
curl -L https://raw.githubusercontent.com/metabarcoding/obitools4/master/install_obitools.sh | bash -s -- --version 4.4.3
Install in a custom directory with command prefix:
curl -L https://raw.githubusercontent.com/metabarcoding/obitools4/master/install_obitools.sh | \
bash -s -- --install-dir test_install --obitools-prefix k
In this last example, the binaries will be installed in the test_install directory and all command names will be prefixed with the letter k. Thus, obigrep will be named kobigrep.
Note on Version Compatibility
The names of the commands in the new OBITools4 are mostly identical to those in OBITools2.
Therefore, installing the new OBITools may hide or delete the old ones. If you want both versions to be
available on your system, use the --install-dir and --obitools-prefix options as shown above.
Continuing the analysis...
Before with OBITools2 to continue the analysis, obitab was used as last command to produce a tab delimited file that was loadable in R or in any spreadsheet. The generated file was huge and required to load the full dataset in memory to be produced. Hereby OBITools4 proposes to substitute the obitab usage by the ROBIFastRead R module.