From b98a56e21e93c85544b75c982b1624cd6b5a0ecc Mon Sep 17 00:00:00 2001 From: Vladislav Mogilev Date: Fri, 9 Jan 2026 18:52:57 +0000 Subject: [PATCH 1/5] build(starfish): easyconf and version patch --- .../s/starfish/starfish-1.1.0-foss-2022a.eb | 58 +++++++++ .../s/starfish/starfish-1.1.0_bug-fix.patch | 119 ++++++++++++++++++ ....1.0_updated-version-in-starfish-exe.patch | 13 ++ 3 files changed, 190 insertions(+) create mode 100644 easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb create mode 100644 easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch create mode 100644 easyconfigs/s/starfish/starfish-1.1.0_updated-version-in-starfish-exe.patch diff --git a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb new file mode 100644 index 00000000..ca856fff --- /dev/null +++ b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb @@ -0,0 +1,58 @@ +# This easyconfig was created by the BEAR Software team at the University of Birmingham. +easyblock = 'ConfigureMake' + +name = 'starfish' +version = '1.1.0' + +homepage = "https://github.com/egluckthaler/starfish" +description = """starfish is a modular toolkit for giant mobile element annotation. Built primarily for + annotating Starship elements in fungal genomes, it can be easily adapted to find any large mobile element (≥6kb) + that shares the same basic architecture as a fungal Starship or a bacterial integrative and conjugative element: + a "captain" gene with zero or more "cargo" genes downstream of its 3' end. It is particularly well suited + for annotating low-copy number elements in a content independent manner. +""" +citing = """Gluck-Thaler, E., & Vogan, A. A. (2024). + Systematic identification of cargo-carrying genetic elements reveals + new dimensions of eukaryotic diversity. Nucleic Acids Research, 2024-06 +""" +github_account = 'egluckthaler' + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('Perl', '5.34.1'), + ('Boost', '1.79.0'), + ('Cantera', '2.5.1'), + ('Circos', '0.69-8'), + ('sourmash', '4.6.1'), + ('eggnog-mapper', '2.1.12'), + ('BEDTools', '2.30.0'), + ('SAMtools', '1.16.1'), # differ from pinned 1.6, but mostly bug-fixes and reliability + ('MCL', '14.137'), + ('HMMER', '3.3.2'), + ('BLAST+', '2.13.0'), # no major API change compared to pinned 1.12 + ('minimap2', '2.24'), + ('MetaEuk', '6-a5d39d9'), +# ('MetaEuk', '6'), + ('MAFFT', '7.505', '-with-extensions'), + ('MMseqs2', '14-7e284'), + ('MUMmer', '4.0.0rc1'), +] +source_urls = ['https://github.com/%(github_account)s/%(name)s/archive'] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-%(version)s_updated-version-in-starfish-exe.patch', + '%(name)s-%(version)s_bug-fix.patch] +skipsteps = ['configure', 'install'] + +local_pattern = r's|\(boost/.*\.hpp\)|#include <\1>|' +local_opts = r' CC=$CC -I$EBROOTBOOST/include ' + +prebuildopts = "sed -i '5d' build.sh && chmod +x {build.sh,bin/*} && " +prebuildopts += "sed -i '%s' CNEFinder/qgrams.cc && " % local_pattern +prebuildopts += 'sed -i "s|Makefile|Makefile %s|" build.sh && ' % local_opts +prebuildopts += 'PREFIX=%(installdir)s SRC_DIR=%(start_dir)s ' +build_cmd = './build.sh' +checksums = ['6f734403488d3cc1c2baae45aafdad204d682175556af2721234eab24f9bd49d'] + + +moduleclass = 'bio' diff --git a/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch b/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch new file mode 100644 index 00000000..d71436e8 --- /dev/null +++ b/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch @@ -0,0 +1,119 @@ +diff --git a/aux/process_annotate_output.sh b/aux/process_annotate_output.sh +new file mode 100755 +index 0000000..6375eba +--- a/aux/process_annotate_output.sh ++++ b/aux/process_annotate_output.sh +@@ -0,0 +1,112 @@ ++#!/bin/bash ++ ++# Utility script for combining filt and filt_intersect output from starfish annotate ++# across multiple independent runs ++ ++# Function to display help menu ++display_help() { ++ echo "Usage: $0 [OPTIONS]" ++ echo "" ++ echo "Utility script for combining filt and filt_intersect output from starfish annotate" ++ echo "" ++ echo "Options:" ++ echo " -i, --input FILE Input TSV file with genome codes in the first field (required)" ++ echo " -a, --analysis PREFIX Path to root analysis directory containing an output directory for each genome (required)" ++ echo " -o, --output PREFIX Path and Prefix for output files (required)" ++ echo " -h, --help Display this help menu" ++ echo "" ++ echo "Example:" ++ echo " $0 -i ome2assembly.txt -a starfish_run1 -o all_annotations" ++} ++ ++# Initialize variables ++INPUT_FILE="" ++ANALYSIS_PREFIX="" ++OUTPUT_PREFIX="" ++HELP=false ++ ++# Parse command-line arguments ++while [[ $# -gt 0 ]]; do ++ key="$1" ++ case $key in ++ -i|--input) ++ INPUT_FILE="$2" ++ shift 2 ++ ;; ++ -a|--analysis) ++ ANALYSIS_PREFIX="$2" ++ shift 2 ++ ;; ++ -o|--output) ++ OUTPUT_PREFIX="$2" ++ shift 2 ++ ;; ++ -h|--help) ++ HELP=true ++ shift ++ ;; ++ *) ++ echo "Unknown option: $1" ++ display_help ++ exit 1 ++ ;; ++ esac ++done ++ ++# Display help or validate required arguments ++if [[ "$HELP" = true ]] || [ -z "$INPUT_FILE" ] || [ -z "$ANALYSIS_PREFIX" ] || [ -z "$OUTPUT_PREFIX" ]; then ++ display_help ++ exit 1 ++fi ++ ++output_gff=${OUTPUT_PREFIX}.gff ++output_ids=${OUTPUT_PREFIX}.ids ++output_fas=${OUTPUT_PREFIX}.fas ++ ++# Check if the input file exists ++if [ ! -f "$INPUT_FILE" ]; then ++ echo "Error: Input file $INPUT_FILE does not exist." ++ exit 1 ++fi ++ ++# Initialize counters ++count_filt_intersect=0 ++count_filt=0 ++count_none=0 ++ ++# Clear the output file or create it if it doesn't exist ++> "$output_gff" ++> "$output_ids" ++> "$output_fas" ++ ++# Read each genome code from the input file ++while IFS=$'\t' read -r genome_code rest_of_line || [ -n "$genome_code" ]; do ++ ++ # Trim any potential whitespace from the genome code ++ genome_code=$(echo "$genome_code" | xargs) ++ ++ # Define the directory name based on the genome code ++ dir_name="${ANALYSIS_PREFIX}/$genome_code" ++ ++ # Check for 'filt_intersect' file first ++ if ls "${dir_name}/${genome_code}"*".filt_intersect.ids" &> /dev/null; then ++ cat "${dir_name}/${genome_code}"*"filt_intersect.ids" >> "$output_ids" ++ cat "${dir_name}/${genome_code}"*"filt_intersect.fas" >> "$output_fas" ++ cat "${dir_name}/${genome_code}"*"filt_intersect.gff" >> "$output_gff" ++ ((count_filt_intersect++)) ++ elif ls "${dir_name}/${genome_code}"*".filt.ids" &> /dev/null; then ++ # If 'filt_intersect' doesn't exist, use 'filt' file ++ cat "${dir_name}/${genome_code}"*"filt.ids" >> "$output_ids" ++ cat "${dir_name}/${genome_code}"*"filt.fas" >> "$output_fas" ++ cat "${dir_name}/${genome_code}"*"filt.gff" >> "$output_gff" ++ ((count_filt++)) ++ else ++ echo "No 'filt_intersect' or 'filt' file found for genome code: $genome_code" ++ ((count_none++)) ++ fi ++done < "$INPUT_FILE" ++ ++echo "Total genomes with 'filt_intersect' files: $count_filt_intersect" ++echo "Total genomes with 'filt' files: $count_filt" ++echo "Total genomes with no files: $count_none" ++echo "Processing complete" +\ No newline at end of file diff --git a/easyconfigs/s/starfish/starfish-1.1.0_updated-version-in-starfish-exe.patch b/easyconfigs/s/starfish/starfish-1.1.0_updated-version-in-starfish-exe.patch new file mode 100644 index 00000000..114d7bc0 --- /dev/null +++ b/easyconfigs/s/starfish/starfish-1.1.0_updated-version-in-starfish-exe.patch @@ -0,0 +1,13 @@ +diff --git a/bin/starfish b/bin/starfish +index 86b3db1..053ed3e 100755 +--- a/bin/starfish ++++ b/bin/starfish +@@ -66,7 +66,7 @@ $starfishDIR\/db contains fastas and hmms of genes of interest, including YRs + } + + # Change software version here +-my $VERSION = "1.0.1"; ++my $VERSION = "1.1.0"; + + main: { + From 940394ac3c7036e82857e82038f66bf808937afe Mon Sep 17 00:00:00 2001 From: Vladislav Mogilev Date: Fri, 9 Jan 2026 19:03:35 +0000 Subject: [PATCH 2/5] fix(starfish): correct config file --- .../s/starfish/starfish-1.1.0-foss-2022a.eb | 29 +++-- .../s/starfish/starfish-1.1.0_bug-fix.patch | 119 ------------------ 2 files changed, 19 insertions(+), 129 deletions(-) delete mode 100644 easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch diff --git a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb index ca856fff..bf12ad22 100644 --- a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb +++ b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb @@ -21,38 +21,47 @@ toolchain = {'name': 'foss', 'version': '2022a'} dependencies = [ ('Perl', '5.34.1'), - ('Boost', '1.79.0'), + ('Boost.MPI', '1.79.0'), ('Cantera', '2.5.1'), ('Circos', '0.69-8'), ('sourmash', '4.6.1'), ('eggnog-mapper', '2.1.12'), ('BEDTools', '2.30.0'), - ('SAMtools', '1.16.1'), # differ from pinned 1.6, but mostly bug-fixes and reliability + ('SAMtools', '1.16.1'), # differ from pinned 1.6, but mostly bug-fixes and reliability ('MCL', '14.137'), ('HMMER', '3.3.2'), - ('BLAST+', '2.13.0'), # no major API change compared to pinned 1.12 + ('BLAST+', '2.13.0'), # no major API change compared to pinned 1.12 ('minimap2', '2.24'), - ('MetaEuk', '6-a5d39d9'), -# ('MetaEuk', '6'), + ('MetaEuk', '6-a5d39d9'), # excplicit indication of commit, otherwise the exact same version 6 ('MAFFT', '7.505', '-with-extensions'), ('MMseqs2', '14-7e284'), ('MUMmer', '4.0.0rc1'), ] source_urls = ['https://github.com/%(github_account)s/%(name)s/archive'] sources = ['v%(version)s.tar.gz'] -patches = ['%(name)s-%(version)s_updated-version-in-starfish-exe.patch', - '%(name)s-%(version)s_bug-fix.patch] +patches = ['%(name)s-%(version)s_updated-version-in-starfish-exe.patch'] +checksums = [ + {'v1.1.0.tar.gz': '6f734403488d3cc1c2baae45aafdad204d682175556af2721234eab24f9bd49d'}, + {'starfish-1.1.0_updated-version-in-starfish-exe.patch': + 'c659b63f9f9cf8ecf8a121ce0ddc33750e3c78464452c367bf9ec145502fca65'}, + {'starfish-1.1.0_bug-fix.patch': '96000316169dd06334efc844db5c2d4b1ab5d70917b3af9cbbc2d8d2fe6bff39'}, +] + skipsteps = ['configure', 'install'] -local_pattern = r's|\(boost/.*\.hpp\)|#include <\1>|' -local_opts = r' CC=$CC -I$EBROOTBOOST/include ' +local_pattern = r's|.*\(boost/.*\.hpp\).*|#include <\1>|' +local_opts = r' CC=g++ LFLAGS=\"-std=c++11 -I$EBROOTBOOST/include\" ' prebuildopts = "sed -i '5d' build.sh && chmod +x {build.sh,bin/*} && " prebuildopts += "sed -i '%s' CNEFinder/qgrams.cc && " % local_pattern prebuildopts += 'sed -i "s|Makefile|Makefile %s|" build.sh && ' % local_opts prebuildopts += 'PREFIX=%(installdir)s SRC_DIR=%(start_dir)s ' build_cmd = './build.sh' -checksums = ['6f734403488d3cc1c2baae45aafdad204d682175556af2721234eab24f9bd49d'] +#modextrapaths = {} +sanity_check_paths = { + 'files': ['bin/cnef'], + 'dirs': ['aux', 'main', 'lib', 'bin', 'db'] +} moduleclass = 'bio' diff --git a/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch b/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch deleted file mode 100644 index d71436e8..00000000 --- a/easyconfigs/s/starfish/starfish-1.1.0_bug-fix.patch +++ /dev/null @@ -1,119 +0,0 @@ -diff --git a/aux/process_annotate_output.sh b/aux/process_annotate_output.sh -new file mode 100755 -index 0000000..6375eba ---- a/aux/process_annotate_output.sh -+++ b/aux/process_annotate_output.sh -@@ -0,0 +1,112 @@ -+#!/bin/bash -+ -+# Utility script for combining filt and filt_intersect output from starfish annotate -+# across multiple independent runs -+ -+# Function to display help menu -+display_help() { -+ echo "Usage: $0 [OPTIONS]" -+ echo "" -+ echo "Utility script for combining filt and filt_intersect output from starfish annotate" -+ echo "" -+ echo "Options:" -+ echo " -i, --input FILE Input TSV file with genome codes in the first field (required)" -+ echo " -a, --analysis PREFIX Path to root analysis directory containing an output directory for each genome (required)" -+ echo " -o, --output PREFIX Path and Prefix for output files (required)" -+ echo " -h, --help Display this help menu" -+ echo "" -+ echo "Example:" -+ echo " $0 -i ome2assembly.txt -a starfish_run1 -o all_annotations" -+} -+ -+# Initialize variables -+INPUT_FILE="" -+ANALYSIS_PREFIX="" -+OUTPUT_PREFIX="" -+HELP=false -+ -+# Parse command-line arguments -+while [[ $# -gt 0 ]]; do -+ key="$1" -+ case $key in -+ -i|--input) -+ INPUT_FILE="$2" -+ shift 2 -+ ;; -+ -a|--analysis) -+ ANALYSIS_PREFIX="$2" -+ shift 2 -+ ;; -+ -o|--output) -+ OUTPUT_PREFIX="$2" -+ shift 2 -+ ;; -+ -h|--help) -+ HELP=true -+ shift -+ ;; -+ *) -+ echo "Unknown option: $1" -+ display_help -+ exit 1 -+ ;; -+ esac -+done -+ -+# Display help or validate required arguments -+if [[ "$HELP" = true ]] || [ -z "$INPUT_FILE" ] || [ -z "$ANALYSIS_PREFIX" ] || [ -z "$OUTPUT_PREFIX" ]; then -+ display_help -+ exit 1 -+fi -+ -+output_gff=${OUTPUT_PREFIX}.gff -+output_ids=${OUTPUT_PREFIX}.ids -+output_fas=${OUTPUT_PREFIX}.fas -+ -+# Check if the input file exists -+if [ ! -f "$INPUT_FILE" ]; then -+ echo "Error: Input file $INPUT_FILE does not exist." -+ exit 1 -+fi -+ -+# Initialize counters -+count_filt_intersect=0 -+count_filt=0 -+count_none=0 -+ -+# Clear the output file or create it if it doesn't exist -+> "$output_gff" -+> "$output_ids" -+> "$output_fas" -+ -+# Read each genome code from the input file -+while IFS=$'\t' read -r genome_code rest_of_line || [ -n "$genome_code" ]; do -+ -+ # Trim any potential whitespace from the genome code -+ genome_code=$(echo "$genome_code" | xargs) -+ -+ # Define the directory name based on the genome code -+ dir_name="${ANALYSIS_PREFIX}/$genome_code" -+ -+ # Check for 'filt_intersect' file first -+ if ls "${dir_name}/${genome_code}"*".filt_intersect.ids" &> /dev/null; then -+ cat "${dir_name}/${genome_code}"*"filt_intersect.ids" >> "$output_ids" -+ cat "${dir_name}/${genome_code}"*"filt_intersect.fas" >> "$output_fas" -+ cat "${dir_name}/${genome_code}"*"filt_intersect.gff" >> "$output_gff" -+ ((count_filt_intersect++)) -+ elif ls "${dir_name}/${genome_code}"*".filt.ids" &> /dev/null; then -+ # If 'filt_intersect' doesn't exist, use 'filt' file -+ cat "${dir_name}/${genome_code}"*"filt.ids" >> "$output_ids" -+ cat "${dir_name}/${genome_code}"*"filt.fas" >> "$output_fas" -+ cat "${dir_name}/${genome_code}"*"filt.gff" >> "$output_gff" -+ ((count_filt++)) -+ else -+ echo "No 'filt_intersect' or 'filt' file found for genome code: $genome_code" -+ ((count_none++)) -+ fi -+done < "$INPUT_FILE" -+ -+echo "Total genomes with 'filt_intersect' files: $count_filt_intersect" -+echo "Total genomes with 'filt' files: $count_filt" -+echo "Total genomes with no files: $count_none" -+echo "Processing complete" -\ No newline at end of file From 743f4889de4a5838e0f250bc1cb9fa5e3adbde03 Mon Sep 17 00:00:00 2001 From: Vladislav Mogilev Date: Wed, 14 Jan 2026 21:31:04 +0000 Subject: [PATCH 3/5] build: deps, untested --- .../c/Circos/Circos-0.69-8-GCCcore-11.3.0.eb | 43 +++++++++++++ .../eggnog-mapper-2.1.12-foss-2022a.eb | 51 ++++++++++++++++ .../s/sourmash/sourmash-4.6.1-foss-2022a.eb | 61 +++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 easyconfigs/c/Circos/Circos-0.69-8-GCCcore-11.3.0.eb create mode 100644 easyconfigs/e/eggnog-mapper/eggnog-mapper-2.1.12-foss-2022a.eb create mode 100644 easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb diff --git a/easyconfigs/c/Circos/Circos-0.69-8-GCCcore-11.3.0.eb b/easyconfigs/c/Circos/Circos-0.69-8-GCCcore-11.3.0.eb new file mode 100644 index 00000000..1a2e91f2 --- /dev/null +++ b/easyconfigs/c/Circos/Circos-0.69-8-GCCcore-11.3.0.eb @@ -0,0 +1,43 @@ +# # +# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild +# +# Author: Jonas Demeulemeester +# The Francis Crick Insitute, London, UK +# # +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild + +easyblock = 'Tarball' + +name = 'Circos' +version = '0.69-8' + +homepage = 'https://www.circos.ca/' +description = """Circos is a software package for visualizing data and information. + It visualizes data in a circular layout - this makes Circos ideal for exploring + relationships between objects or positions.""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +source_urls = ['https://%(namelower)s.ca/distribution/'] +sources = [SOURCELOWER_TGZ] +checksums = ['6946ab442bef6b1e97b28486dc44554cf7acf112654d7cf00b960e7dbc27f288'] + +builddependencies = [ + ('binutils', '2.38'), +] +dependencies = [ + ('Perl', '5.34.1'), + ('GD', '2.75'), +] + + +sanity_check_paths = { + 'files': ['bin/%(namelower)s'], + 'dirs': ['lib/%(name)s'], +} + +sanity_check_commands = [('perl', '-e "use %(name)s"')] + +modextrapaths = {'PERL5LIB': 'lib'} + +moduleclass = 'bio' diff --git a/easyconfigs/e/eggnog-mapper/eggnog-mapper-2.1.12-foss-2022a.eb b/easyconfigs/e/eggnog-mapper/eggnog-mapper-2.1.12-foss-2022a.eb new file mode 100644 index 00000000..bdcc8aeb --- /dev/null +++ b/easyconfigs/e/eggnog-mapper/eggnog-mapper-2.1.12-foss-2022a.eb @@ -0,0 +1,51 @@ +# Eggnog DB installation instructions: +# 1. 'export EGGNOG_DATA_DIR=//eggnog-mapper-data' +# 2. run 'download_eggnog_data.py' +# 3. Check the expected DB version with 'emapper.py --version' + +easyblock = 'PythonPackage' + +name = 'eggnog-mapper' +version = "2.1.12" + +homepage = 'https://github.com/eggnogdb/eggnog-mapper' +description = """EggNOG-mapper is a tool for fast functional annotation of novel +sequences. It uses precomputed orthologous groups and phylogenies from the +eggNOG database (http://eggnog5.embl.de) to transfer functional information from +fine-grained orthologs only. Common uses of eggNOG-mapper include the annotation +of novel genomes, transcriptomes or even metagenomic gene catalogs.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +github_account = 'eggnogdb' +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = [] +dependencies = [ + ('Python', '3.10.4'), + ('Biopython', '1.79'), + ('HMMER', '3.3.2'), + ('DIAMOND', '2.1.0'), + ('prodigal', '2.6.3'), + ('wget', '1.21.3'), + ('MMseqs2', '14-7e284'), + ('XlsxWriter', '3.0.8'), +] + +# strip out (too) strict version requirements for dependencies +preinstallopts = "sed -i 's/==[0-9.]*//g' setup.cfg && " + +sanity_check_paths = { + 'files': ['bin/create_dbs.py', 'bin/download_eggnog_data.py', 'bin/emapper.py'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + 'download_eggnog_data.py --help', + 'create_dbs.py --help', + 'emapper.py --version | grep %(version)s', +] + +options = {'modulename': 'eggnogmapper'} + +moduleclass = 'bio' diff --git a/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb b/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb new file mode 100644 index 00000000..1081c440 --- /dev/null +++ b/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb @@ -0,0 +1,61 @@ +# This easyconfig was created by the BEAR Software team at the University of Birmingham. +easyblock = 'PythonBundle' + +name = 'sourmash' +version = "4.6.1" + +homepage = "https://github.com/sourmash-bio/sourmash" +description = """Quickly search, compare, and analyze genomic and metagenomic data sets. sourmash is + a k-mer analysis multitool, and we aim to provide stable, robust programmatic and command-line APIs + for a variety of sequence comparisons.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +builddependencies = [ + ('Rust', '1.65.0'), +# ('maturin', '1.3.2', '-Rust-1.65.0'), +] + +dependencies = [ + ('Python', '3.10.4'), +# ('Python-bundle-PyPI', '2023.06'), + ('PyYAML', '6.0'), + ('SciPy-bundle', '2022.05'), + ('matplotlib', '3.5.2'), +# ('Clang', '13.0.1'), # needed for bindgen (sourmash rust dep) +] + +buildininstalldir = True +exts_list = [ + ('mmh3', '3.0.0', { + 'checksums': ['d1ec578c09a07d3518ec9be540b87546397fa3455de73c166fcce51eaa5c41c5'], + }), + ('deprecation', '2.0.6', { + 'checksums': ['68071e5ae7cd7e9da6c7dffd750922be4825c7c3a6780d29314076009cc39c35'], + }), + ('bz2file', '0.98', { + 'checksums': ['64c1f811e31556ba9931953c8ec7b397488726c63e09a4c67004f43bdd28da88'], + }), + ('screed', '1.0.5', { + 'checksums': ['ad1b894aac81a8ad32fd587d37acb3fb4e575f6d828da73713038cc180098178'], + }), + ('cachetools', '4.0.0', { + 'checksums': ['9a52dd97a85f257f4e4127f15818e71a0c7899f121b34591fcc1173ea79a0198'], + }), + ('milksnake', '0.1.6', { + 'checksums': ['0198f8932b4e136c29c0d0d490ff1bac03f82c3a7b2ee6f666e3683b64314fd9'], + }), + (name, version, { + 'preinstallopts': "sed -i 's/, orcid=.*/ },/g' pyproject.toml && ", + 'checksums': ['c8e6712632a4ff4322946a89c4b81e50f7ac06f878e043aba8fd9e1fa013819c'], + }), +] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["%(name)s --help"] + +moduleclass = 'bio' From 5965a6874fb2dcfd44c699caa0926cd172c1ba4e Mon Sep 17 00:00:00 2001 From: Vladislav Mogilev Date: Thu, 22 Jan 2026 13:29:31 +0000 Subject: [PATCH 4/5] build(starfish): tests pass --- .../m/MetaEuk/MetaEuk-6-a5d39d9-GCC-11.3.0.eb | 30 +++++++++++++++++++ .../s/starfish/starfish-1.1.0-foss-2022a.eb | 24 +++++++++++++-- 2 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 easyconfigs/m/MetaEuk/MetaEuk-6-a5d39d9-GCC-11.3.0.eb diff --git a/easyconfigs/m/MetaEuk/MetaEuk-6-a5d39d9-GCC-11.3.0.eb b/easyconfigs/m/MetaEuk/MetaEuk-6-a5d39d9-GCC-11.3.0.eb new file mode 100644 index 00000000..4def0fcb --- /dev/null +++ b/easyconfigs/m/MetaEuk/MetaEuk-6-a5d39d9-GCC-11.3.0.eb @@ -0,0 +1,30 @@ +easyblock = 'CMakeMake' + +name = 'MetaEuk' +version = "6-a5d39d9" + +homepage = 'https://metaeuk.soedinglab.org' +description = """MetaEuk is a modular toolkit designed for large-scale gene discovery and annotation in eukaryotic + metagenomic contigs.""" + +toolchain = {'name': 'GCC', 'version': '11.3.0'} + +source_urls = ['https://github.com/soedinglab/%(namelower)s/archive'] +sources = ['%(version)s.tar.gz'] +checksums = ['be19c26f5bdb7dcdd7bc48172105afecf19e5a2e5555edb3ba0c4aa0e4aac126'] + +builddependencies = [('CMake', '3.23.1')] + +dependencies = [ + ('bzip2', '1.0.8'), + ('zlib', '1.2.12'), +] + +sanity_check_paths = { + 'files': ['bin/metaeuk'], + 'dirs': [], +} + +sanity_check_commands = ["metaeuk --help"] + +moduleclass = 'bio' diff --git a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb index bf12ad22..544aa7ea 100644 --- a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb +++ b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb @@ -39,12 +39,16 @@ dependencies = [ ] source_urls = ['https://github.com/%(github_account)s/%(name)s/archive'] sources = ['v%(version)s.tar.gz'] -patches = ['%(name)s-%(version)s_updated-version-in-starfish-exe.patch'] +patches = ['%(name)s-%(version)s_updated-version-in-starfish-exe.patch', + ('%(name)s-%(version)s_added-utility-script-for-concatenating-annotate-outp.patch', 1), + '%(name)s-%(version)s_bug-fix.patch'] checksums = [ {'v1.1.0.tar.gz': '6f734403488d3cc1c2baae45aafdad204d682175556af2721234eab24f9bd49d'}, {'starfish-1.1.0_updated-version-in-starfish-exe.patch': 'c659b63f9f9cf8ecf8a121ce0ddc33750e3c78464452c367bf9ec145502fca65'}, - {'starfish-1.1.0_bug-fix.patch': '96000316169dd06334efc844db5c2d4b1ab5d70917b3af9cbbc2d8d2fe6bff39'}, + {'starfish-1.1.0_added-utility-script-for-concatenating-annotate-outp.patch': + '16a59d1da223a23c03fe0349894d6f230a0be9900e82b7160119aed141810afa'}, + {'starfish-1.1.0_bug-fix.patch': '49ff8f0c7e390888a332b7bf77eb2af6a96c08cb5bb9040b51253f97533e092a'}, ] skipsteps = ['configure', 'install'] @@ -57,8 +61,22 @@ prebuildopts += "sed -i '%s' CNEFinder/qgrams.cc && " % local_pattern prebuildopts += 'sed -i "s|Makefile|Makefile %s|" build.sh && ' % local_opts prebuildopts += 'PREFIX=%(installdir)s SRC_DIR=%(start_dir)s ' build_cmd = './build.sh' +buildopts = [' && chmod +x %(installdir)s/{aux/*,bin/cnef,bin/starfish}'] -#modextrapaths = {} +test_cmd = 'PATH="%(installdir)s/bin:$PATH" bash' +runtest = 'test.sh' +#sanity_check_commands = [ +# 'starfish annotate', # tests: metaeuk, hmmer, bedtools +# 'starfish augment', # tests: metaeuk, hmmer, bedtools +# 'starfish flank', # tests: cnef +# 'starfish pair-viz', +# 'starfish locus-viz', +# 'starfish genome-viz', # *-viz tests: circos, gggenomes, mummer4, mafft, minimap2 +# 'starfish group', # tests: mcl +# 'starfish sim', # tests: sourmash +# 'starfish insert', # tests: blastn, mummer4 +# 'starfish extend', # tests: blastn, mummer4 +#] sanity_check_paths = { 'files': ['bin/cnef'], 'dirs': ['aux', 'main', 'lib', 'bin', 'db'] From 4d9fde8c4b0a9e24170994c2237694a434c3978c Mon Sep 17 00:00:00 2001 From: Vladislav Mogilev Date: Thu, 22 Jan 2026 13:41:05 +0000 Subject: [PATCH 5/5] style: remove comments --- easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb | 3 --- easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb | 12 ------------ 2 files changed, 15 deletions(-) diff --git a/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb b/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb index 1081c440..6bd84834 100644 --- a/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb +++ b/easyconfigs/s/sourmash/sourmash-4.6.1-foss-2022a.eb @@ -13,16 +13,13 @@ toolchain = {'name': 'foss', 'version': '2022a'} builddependencies = [ ('Rust', '1.65.0'), -# ('maturin', '1.3.2', '-Rust-1.65.0'), ] dependencies = [ ('Python', '3.10.4'), -# ('Python-bundle-PyPI', '2023.06'), ('PyYAML', '6.0'), ('SciPy-bundle', '2022.05'), ('matplotlib', '3.5.2'), -# ('Clang', '13.0.1'), # needed for bindgen (sourmash rust dep) ] buildininstalldir = True diff --git a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb index 544aa7ea..fd8c5ae6 100644 --- a/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb +++ b/easyconfigs/s/starfish/starfish-1.1.0-foss-2022a.eb @@ -65,18 +65,6 @@ buildopts = [' && chmod +x %(installdir)s/{aux/*,bin/cnef,bin/starfish}'] test_cmd = 'PATH="%(installdir)s/bin:$PATH" bash' runtest = 'test.sh' -#sanity_check_commands = [ -# 'starfish annotate', # tests: metaeuk, hmmer, bedtools -# 'starfish augment', # tests: metaeuk, hmmer, bedtools -# 'starfish flank', # tests: cnef -# 'starfish pair-viz', -# 'starfish locus-viz', -# 'starfish genome-viz', # *-viz tests: circos, gggenomes, mummer4, mafft, minimap2 -# 'starfish group', # tests: mcl -# 'starfish sim', # tests: sourmash -# 'starfish insert', # tests: blastn, mummer4 -# 'starfish extend', # tests: blastn, mummer4 -#] sanity_check_paths = { 'files': ['bin/cnef'], 'dirs': ['aux', 'main', 'lib', 'bin', 'db']