From cb721f47a5c4f4080f78cfefc95f2b32250c254d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Sat, 20 Dec 2025 12:37:11 +0100 Subject: [PATCH 1/5] hifiasm rule from EU --- tools.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/tools.yml b/tools.yml index bbbfd5c..78111d0 100644 --- a/tools.yml +++ b/tools.yml @@ -214,13 +214,53 @@ tools: cores: 6 mem: 24 toolshed.g2.bx.psu.edu/repos/bgruening/hifiasm/hifiasm/.*: - cores: 20 - mem: 120 + cores: 10 rules: - - id: tpvdb_hifiasm_small_input_rule - if: input_size <= 0.2 - cores: 6 - mem: 40 + - id: hifiasm_memory + # The memory requirement of Hifiasm depends on a wrapper's input + if: | + parameters = {p.name: p.value for p in job.parameters} + parameters = tool.params_from_strings(parameters, app) + + advanced_options = parameters.get("advanced_options", dict()) + hg_size = advanced_options.get("hg_size", "") + + bool(hg_size) + mem: | + from math import ceil + + parameters = {p.name: p.value for p in job.parameters} + parameters = tool.params_from_strings(parameters, app) + + advanced_options = parameters.get("advanced_options", dict()) + + kcov_default = 36 + kcov = advanced_options.get("kcov", kcov_default) + + hg_size = advanced_options.get("hg_size", "") + + value = 0 + if hg_size: + conversion_factors = { + "k": 1000000, + "M": 1000, + "G": 1, + } + conversion_factors = { + key.lower(): value for key, value in conversion_factors.items() + } + suffix = hg_size[-1:].lower() + value = hg_size[:len(hg_size) - 1] + value = value.replace(",", ".") + value = float(value) + # compute hg size in Gb + value = value / conversion_factors[suffix.lower()] + value = ceil(value * (kcov * 2) * 1.75) + + # return the amount of memory needed + value + + toolshed.g2.bx.psu.edu/repos/bgruening/infernal/infernal_cmbuild/.*: cores: 10 mem: 20 From 5b84b243696a99acbc861aa47e444da8e93fe63d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Mon, 22 Dec 2025 10:07:00 +0100 Subject: [PATCH 2/5] Update tools.yml --- tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools.yml b/tools.yml index 2f8209a..f9267e2 100644 --- a/tools.yml +++ b/tools.yml @@ -216,7 +216,7 @@ tools: toolshed.g2.bx.psu.edu/repos/bgruening/hifiasm/hifiasm/.*: cores: 10 rules: - - id: hifiasm_memory + - id: tpvdb_hifiasm_memory # The memory requirement of Hifiasm depends on a wrapper's input if: | parameters = {p.name: p.value for p in job.parameters} From f2f597cec6807ad2f846f5f8f7856991b4b4b9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Mon, 22 Dec 2025 10:15:05 +0100 Subject: [PATCH 3/5] add a comment to the rule --- tools.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools.yml b/tools.yml index f9267e2..4a06b18 100644 --- a/tools.yml +++ b/tools.yml @@ -216,8 +216,10 @@ tools: toolshed.g2.bx.psu.edu/repos/bgruening/hifiasm/hifiasm/.*: cores: 10 rules: - - id: tpvdb_hifiasm_memory - # The memory requirement of Hifiasm depends on a wrapper's input + - id: tpvdb_hifiasm_expert_memory_rule + # The memory requirement of Hifiasm depends on the "Estimated haploid genome size" (hg_size). + # If hg_size is set, and it can be calculated automatically, then we can fit memory more efficiently. + # This is done for example in the VGP workflows. if: | parameters = {p.name: p.value for p in job.parameters} parameters = tool.params_from_strings(parameters, app) From 11b8b8d7580dfb7d89adba3fa049a9341ca32aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Mon, 22 Dec 2025 10:18:31 +0100 Subject: [PATCH 4/5] lint? --- tools.yml | 76 +++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/tools.yml b/tools.yml index 4a06b18..2b23703 100644 --- a/tools.yml +++ b/tools.yml @@ -25,7 +25,7 @@ tools: mem: 40 toolshed.g2.bx.psu.edu/repos/artbio/cap3/cap3/.*: mem: 12 - toolshed.g2.bx.psu.edu/repos/artbio/gsc_scran_normalize/scran_normalize/.*: + toolshed.g2.bx.psu.edu/repos/artbio/gsc_scran_normalize/scran_normalize/.*:m cores: 1 mem: 20 toolshed.g2.bx.psu.edu/repos/artbio/repenrich/repenrich/.*: @@ -216,51 +216,51 @@ tools: toolshed.g2.bx.psu.edu/repos/bgruening/hifiasm/hifiasm/.*: cores: 10 rules: - - id: tpvdb_hifiasm_expert_memory_rule - # The memory requirement of Hifiasm depends on the "Estimated haploid genome size" (hg_size). - # If hg_size is set, and it can be calculated automatically, then we can fit memory more efficiently. - # This is done for example in the VGP workflows. - if: | - parameters = {p.name: p.value for p in job.parameters} - parameters = tool.params_from_strings(parameters, app) + - id: tpvdb_hifiasm_expert_memory_rule + # The memory requirement of Hifiasm depends on the "Estimated haploid genome size" (hg_size). + # If hg_size is set, and it can be calculated automatically, then we can fit memory more efficiently. + # This is done for example in the VGP workflows. + if: | + parameters = {p.name: p.value for p in job.parameters} + parameters = tool.params_from_strings(parameters, app) - advanced_options = parameters.get("advanced_options", dict()) - hg_size = advanced_options.get("hg_size", "") + advanced_options = parameters.get("advanced_options", dict()) + hg_size = advanced_options.get("hg_size", "") - bool(hg_size) - mem: | - from math import ceil + bool(hg_size) + mem: | + from math import ceil - parameters = {p.name: p.value for p in job.parameters} - parameters = tool.params_from_strings(parameters, app) + parameters = {p.name: p.value for p in job.parameters} + parameters = tool.params_from_strings(parameters, app) - advanced_options = parameters.get("advanced_options", dict()) + advanced_options = parameters.get("advanced_options", dict()) - kcov_default = 36 - kcov = advanced_options.get("kcov", kcov_default) + kcov_default = 36 + kcov = advanced_options.get("kcov", kcov_default) - hg_size = advanced_options.get("hg_size", "") + hg_size = advanced_options.get("hg_size", "") - value = 0 - if hg_size: - conversion_factors = { - "k": 1000000, - "M": 1000, - "G": 1, - } - conversion_factors = { - key.lower(): value for key, value in conversion_factors.items() - } - suffix = hg_size[-1:].lower() - value = hg_size[:len(hg_size) - 1] - value = value.replace(",", ".") - value = float(value) - # compute hg size in Gb - value = value / conversion_factors[suffix.lower()] - value = ceil(value * (kcov * 2) * 1.75) + value = 0 + if hg_size: + conversion_factors = { + "k": 1000000, + "M": 1000, + "G": 1, + } + conversion_factors = { + key.lower(): value for key, value in conversion_factors.items() + } + suffix = hg_size[-1:].lower() + value = hg_size[:len(hg_size) - 1] + value = value.replace(",", ".") + value = float(value) + # compute hg size in Gb + value = value / conversion_factors[suffix.lower()] + value = ceil(value * (kcov * 2) * 1.75) - # return the amount of memory needed - value + # return the amount of memory needed + value toolshed.g2.bx.psu.edu/repos/bgruening/infernal/infernal_cmbuild/.*: From 2c0829b02e834db5ee4e19219c85e440a8cfa843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gr=C3=BCning?= Date: Mon, 22 Dec 2025 11:39:14 +0100 Subject: [PATCH 5/5] Update tools.yml --- tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools.yml b/tools.yml index 2b23703..5d5c5ae 100644 --- a/tools.yml +++ b/tools.yml @@ -25,7 +25,7 @@ tools: mem: 40 toolshed.g2.bx.psu.edu/repos/artbio/cap3/cap3/.*: mem: 12 - toolshed.g2.bx.psu.edu/repos/artbio/gsc_scran_normalize/scran_normalize/.*:m + toolshed.g2.bx.psu.edu/repos/artbio/gsc_scran_normalize/scran_normalize/.*: cores: 1 mem: 20 toolshed.g2.bx.psu.edu/repos/artbio/repenrich/repenrich/.*: