From c05ef971847df792f8c02644de6cd43c30f644a8 Mon Sep 17 00:00:00 2001 From: Ladislav Hovan <19410951+ladislav-hovan@users.noreply.github.com> Date: Wed, 8 Oct 2025 11:06:51 +0200 Subject: [PATCH 1/5] Update links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a1c1ef2..4089a2a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![master](https://github.com/ladislav-hovan/sponge/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/ladislav-hovan/sponge/actions/workflows/test.yaml) -[![devel](https://github.com/ladislav-hovan/sponge/actions/workflows/test.yaml/badge.svg?branch=devel)](https://github.com/ladislav-hovan/sponge/actions/workflows/test.yaml) +[![master](https://github.com/kuijjerlab/sponge/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/kuijjerlab/sponge/actions/workflows/test.yaml) +[![devel](https://github.com/kuijjerlab/sponge/actions/workflows/test.yaml/badge.svg?branch=devel)](https://github.com/kuijjerlab/sponge/actions/workflows/test.yaml) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) From 9ea3877ef2141d5083ae68103674c5d8be3ff8b6 Mon Sep 17 00:00:00 2001 From: Ladislav Hovan <19410951+ladislav-hovan@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:02:59 +0200 Subject: [PATCH 2/5] Update the tests --- .github/workflows/test.yaml | 2 ++ tests/sponge/test_motif_prior.tsv | 26 ++++++++++++++++++++++++-- tests/sponge/test_user_config.yaml | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index cf00293..41bd151 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,6 +9,8 @@ on: branches: - main - devel + schedule: + - cron: '15 3 1 * *' # 1st of every month at 3:15 workflow_dispatch: jobs: diff --git a/tests/sponge/test_motif_prior.tsv b/tests/sponge/test_motif_prior.tsv index 3bdb66f..a293041 100644 --- a/tests/sponge/test_motif_prior.tsv +++ b/tests/sponge/test_motif_prior.tsv @@ -2,6 +2,7 @@ FOXF2 AATBC 1 FOXF2 ABCC13 1 FOXF2 AGPAT3 1 FOXF2 ASMER1 1 +FOXF2 B3GALT5 1 FOXF2 BACH1 1 FOXF2 BACH1-IT1 1 FOXF2 BACH1-IT3 1 @@ -9,6 +10,7 @@ FOXF2 BAGE2 1 FOXF2 BTF3P6 1 FOXF2 C21orf58 1 FOXF2 C21orf91 1 +FOXF2 CFAP298 1 FOXF2 CFAP298-TCP10L 1 FOXF2 CHODL 1 FOXF2 CLDN14 1 @@ -51,7 +53,6 @@ FOXF2 ENSG00000231713 1 FOXF2 ENSG00000232193 1 FOXF2 ENSG00000232360 1 FOXF2 ENSG00000232806 1 -FOXF2 ENSG00000232855 1 FOXF2 ENSG00000232884 1 FOXF2 ENSG00000233783 1 FOXF2 ENSG00000234340 1 @@ -151,9 +152,11 @@ FOXF2 ENSG00000310309 1 FOXF2 ERG 1 FOXF2 ETS2 1 FOXF2 ETS2-AS1 1 +FOXF2 EVA1C 1 FOXF2 FDPSP6 1 FOXF2 FGF7P2 1 FOXF2 FTCD 1 +FOXF2 GART 1 FOXF2 GET1 1 FOXF2 GPX1P2 1 FOXF2 GRIK1-AS1 1 @@ -166,6 +169,7 @@ FOXF2 IL10RB 1 FOXF2 IMMTP1 1 FOXF2 ITSN1 1 FOXF2 KCNE1 1 +FOXF2 KCNJ15 1 FOXF2 KCNJ6-AS1 1 FOXF2 KRTAP10-11 1 FOXF2 KRTAP13-5P 1 @@ -199,6 +203,7 @@ FOXF2 LINC01687 1 FOXF2 LINC01695 1 FOXF2 LINC01700 1 FOXF2 LINC03105 1 +FOXF2 LINC03138 1 FOXF2 LIPI 1 FOXF2 LLPHP2 1 FOXF2 LNCTSI 1 @@ -249,10 +254,12 @@ FOXF2 SAMSN1-AS1 1 FOXF2 SETD4 1 FOXF2 SH3BGR 1 FOXF2 SIM2 1 +FOXF2 SLC19A1 1 FOXF2 SOD1-DT 1 FOXF2 SPATA20P1 1 FOXF2 TIMM9P2 1 FOXF2 TMPRSS15 1 +FOXF2 TMPRSS2 1 FOXF2 TMPRSS3 1 FOXF2 TRPM2-AS 1 FOXF2 U6 1 @@ -264,6 +271,7 @@ FOXF2 ZNF295-AS1 1 FOXF2 ZNF299P 1 FOXF2 ZNF355P 1 GATA2 ABCC13 1 +GATA2 BACH1 1 GATA2 BACH1-IT1 1 GATA2 C1QBPP1 1 GATA2 C2CD2 1 @@ -366,6 +374,7 @@ GATA2 GRIK1-AS1 1 GATA2 HLCS 1 GATA2 HLCS-IT1 1 GATA2 ITSN1 1 +GATA2 KCNJ15 1 GATA2 KCNJ6 1 GATA2 KRTAP19-10P 1 GATA2 KRTAP19-7 1 @@ -387,6 +396,7 @@ GATA2 LINC01700 1 GATA2 LINC02573 1 GATA2 LINC02940 1 GATA2 LNCTSI 1 +GATA2 MAP3K7CL 1 GATA2 MIR3156-3 1 GATA2 MIR4327 1 GATA2 MIR4760 1 @@ -396,6 +406,7 @@ GATA2 MX1 1 GATA2 MX2 1 GATA2 NCAM2 1 GATA2 NIPA2P3 1 +GATA2 OLIG2 1 GATA2 RHOT1P2 1 GATA2 RN7SL163P 1 GATA2 RNU6-113P 1 @@ -409,10 +420,12 @@ GATA2 RUNX1-AS1 1 GATA2 SAMSN1 1 GATA2 SAMSN1-AS1 1 GATA2 TERF1P1 1 +GATA2 TMPRSS2 1 GATA2 U3 1 GATA2 UBE2G2 1 GATA2 UBE3AP2 1 GATA2 Y_RNA 1 +GATA2 ZBTB21 1 GATA2 ZNF295-AS1 1 JUN AATBC 1 JUN ABCC13 1 @@ -422,6 +435,7 @@ JUN AGPAT3 1 JUN AIRE 1 JUN APP 1 JUN ASMER1 1 +JUN ATP5PF 1 JUN B3GALT5 1 JUN BACH1-IT2 1 JUN BRWD1-AS1 1 @@ -479,7 +493,6 @@ JUN ENSG00000231136 1 JUN ENSG00000231867 1 JUN ENSG00000231986 1 JUN ENSG00000232124 1 -JUN ENSG00000232855 1 JUN ENSG00000233783 1 JUN ENSG00000235023 1 JUN ENSG00000235277 1 @@ -596,6 +609,7 @@ JUN ETS2 1 JUN ETS2-AS1 1 JUN EXOSC3P1 1 JUN FAM3B 1 +JUN GABPA 1 JUN GATD3 1 JUN GET1 1 JUN GET1-SH3BGR 1 @@ -604,6 +618,7 @@ JUN HLCS-IT1 1 JUN HSF2BP 1 JUN IFNAR1 1 JUN IFNAR2 1 +JUN ITGB2 1 JUN KCNE1 1 JUN KCNJ15 1 JUN KCNJ6-AS1 1 @@ -641,6 +656,7 @@ JUN LINC01690 1 JUN LINC01695 1 JUN LINC02573 1 JUN LINC03104 1 +JUN LINC03138 1 JUN LTN1 1 JUN MIR155HG 1 JUN MIR4760 1 @@ -654,6 +670,7 @@ JUN MTCO1P3 1 JUN MTND6P21 1 JUN MTRES1P2 1 JUN MX1 1 +JUN MX2 1 JUN MYL6P1 1 JUN MYL6P2 1 JUN OLIG2 1 @@ -662,6 +679,7 @@ JUN PCBP3-AS1 1 JUN PCP4 1 JUN PCSEAT 1 JUN PICSAR 1 +JUN PKNOX1 1 JUN PLAC4 1 JUN POLR2CP1 1 JUN PSMA6P3 1 @@ -688,10 +706,13 @@ JUN RPSAP68 1 JUN RRP1 1 JUN RRP1B 1 JUN RUNX1 1 +JUN S100B 1 JUN SAMSN1-AS1 1 JUN SETD4 1 JUN SIK1 1 +JUN SLC19A1 1 JUN SLC37A1 1 +JUN SMIM11 1 JUN SMIM34 1 JUN SNX18P10 1 JUN SOD1 1 @@ -700,6 +721,7 @@ JUN TCP10L 1 JUN TFF1 1 JUN TIAM1 1 JUN TMEM97P1 1 +JUN TMPRSS2 1 JUN TMPRSS3 1 JUN TPT1P1 1 JUN TRPM2-AS 1 diff --git a/tests/sponge/test_user_config.yaml b/tests/sponge/test_user_config.yaml index 97faedb..bf3c7de 100644 --- a/tests/sponge/test_user_config.yaml +++ b/tests/sponge/test_user_config.yaml @@ -30,4 +30,4 @@ motif_output: weighted: False # False by default ppi_output: file_name: "ppi_prior.tsv" - weighted: False # False by default \ No newline at end of file + weighted: False # False by default From 84e3d168c24029869b02bfdc4b3a844b809d75fc Mon Sep 17 00:00:00 2001 From: Ladislav Hovan <19410951+ladislav-hovan@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:13:14 +0200 Subject: [PATCH 3/5] Change to src-layout --- pyproject.toml | 3 --- {sponge => src/sponge}/__init__.py | 0 {sponge => src/sponge}/cli.py | 0 {sponge => src/sponge}/config.yaml | 0 {sponge => src/sponge}/config_manager.py | 0 {sponge => src/sponge}/modules/__init__.py | 0 {sponge => src/sponge}/modules/analysis/__init__.py | 0 {sponge => src/sponge}/modules/analysis/analysis.py | 0 {sponge => src/sponge}/modules/data_retriever/__init__.py | 0 .../sponge}/modules/data_retriever/data_retriever.py | 0 .../sponge}/modules/data_retriever/file_retriever.py | 0 .../sponge}/modules/data_retriever/region_retriever.py | 0 .../sponge}/modules/data_retriever/tfbs_retriever.py | 0 {sponge => src/sponge}/modules/file_writer/__init__.py | 0 {sponge => src/sponge}/modules/file_writer/file_writer.py | 0 {sponge => src/sponge}/modules/match_aggregator/__init__.py | 0 .../sponge}/modules/match_aggregator/match_aggregator.py | 0 {sponge => src/sponge}/modules/match_filter/__init__.py | 0 {sponge => src/sponge}/modules/match_filter/match_filter.py | 0 {sponge => src/sponge}/modules/motif_selector/__init__.py | 0 .../sponge}/modules/motif_selector/homology_retriever.py | 0 .../sponge}/modules/motif_selector/jaspar_retriever.py | 0 .../sponge}/modules/motif_selector/motif_selector.py | 0 {sponge => src/sponge}/modules/ppi_retriever/__init__.py | 0 {sponge => src/sponge}/modules/ppi_retriever/ppi_retriever.py | 0 {sponge => src/sponge}/modules/protein_id_mapper/__init__.py | 0 .../sponge}/modules/protein_id_mapper/protein_id_mapper.py | 0 {sponge => src/sponge}/modules/utils/__init__.py | 0 {sponge => src/sponge}/modules/utils/data_retrieval.py | 0 {sponge => src/sponge}/modules/utils/dictionary_update.py | 0 {sponge => src/sponge}/modules/utils/jaspar_versioning.py | 0 {sponge => src/sponge}/modules/utils/motif_information.py | 0 {sponge => src/sponge}/modules/utils/string_manipulation.py | 0 {sponge => src/sponge}/modules/utils/tfbs_filtering.py | 0 {sponge => src/sponge}/modules/version_logger/__init__.py | 0 .../sponge}/modules/version_logger/version_logger.py | 0 {sponge => src/sponge}/sponge.py | 0 {sponge => src/sponge}/user_config.yaml | 0 38 files changed, 3 deletions(-) rename {sponge => src/sponge}/__init__.py (100%) rename {sponge => src/sponge}/cli.py (100%) rename {sponge => src/sponge}/config.yaml (100%) rename {sponge => src/sponge}/config_manager.py (100%) rename {sponge => src/sponge}/modules/__init__.py (100%) rename {sponge => src/sponge}/modules/analysis/__init__.py (100%) rename {sponge => src/sponge}/modules/analysis/analysis.py (100%) rename {sponge => src/sponge}/modules/data_retriever/__init__.py (100%) rename {sponge => src/sponge}/modules/data_retriever/data_retriever.py (100%) rename {sponge => src/sponge}/modules/data_retriever/file_retriever.py (100%) rename {sponge => src/sponge}/modules/data_retriever/region_retriever.py (100%) rename {sponge => src/sponge}/modules/data_retriever/tfbs_retriever.py (100%) rename {sponge => src/sponge}/modules/file_writer/__init__.py (100%) rename {sponge => src/sponge}/modules/file_writer/file_writer.py (100%) rename {sponge => src/sponge}/modules/match_aggregator/__init__.py (100%) rename {sponge => src/sponge}/modules/match_aggregator/match_aggregator.py (100%) rename {sponge => src/sponge}/modules/match_filter/__init__.py (100%) rename {sponge => src/sponge}/modules/match_filter/match_filter.py (100%) rename {sponge => src/sponge}/modules/motif_selector/__init__.py (100%) rename {sponge => src/sponge}/modules/motif_selector/homology_retriever.py (100%) rename {sponge => src/sponge}/modules/motif_selector/jaspar_retriever.py (100%) rename {sponge => src/sponge}/modules/motif_selector/motif_selector.py (100%) rename {sponge => src/sponge}/modules/ppi_retriever/__init__.py (100%) rename {sponge => src/sponge}/modules/ppi_retriever/ppi_retriever.py (100%) rename {sponge => src/sponge}/modules/protein_id_mapper/__init__.py (100%) rename {sponge => src/sponge}/modules/protein_id_mapper/protein_id_mapper.py (100%) rename {sponge => src/sponge}/modules/utils/__init__.py (100%) rename {sponge => src/sponge}/modules/utils/data_retrieval.py (100%) rename {sponge => src/sponge}/modules/utils/dictionary_update.py (100%) rename {sponge => src/sponge}/modules/utils/jaspar_versioning.py (100%) rename {sponge => src/sponge}/modules/utils/motif_information.py (100%) rename {sponge => src/sponge}/modules/utils/string_manipulation.py (100%) rename {sponge => src/sponge}/modules/utils/tfbs_filtering.py (100%) rename {sponge => src/sponge}/modules/version_logger/__init__.py (100%) rename {sponge => src/sponge}/modules/version_logger/version_logger.py (100%) rename {sponge => src/sponge}/sponge.py (100%) rename {sponge => src/sponge}/user_config.yaml (100%) diff --git a/pyproject.toml b/pyproject.toml index dffe547..28acd00 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,9 +2,6 @@ requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta" -[tool.setuptools.packages.find] -namespaces = false - [project] name = "netzoopy-sponge" authors = [ diff --git a/sponge/__init__.py b/src/sponge/__init__.py similarity index 100% rename from sponge/__init__.py rename to src/sponge/__init__.py diff --git a/sponge/cli.py b/src/sponge/cli.py similarity index 100% rename from sponge/cli.py rename to src/sponge/cli.py diff --git a/sponge/config.yaml b/src/sponge/config.yaml similarity index 100% rename from sponge/config.yaml rename to src/sponge/config.yaml diff --git a/sponge/config_manager.py b/src/sponge/config_manager.py similarity index 100% rename from sponge/config_manager.py rename to src/sponge/config_manager.py diff --git a/sponge/modules/__init__.py b/src/sponge/modules/__init__.py similarity index 100% rename from sponge/modules/__init__.py rename to src/sponge/modules/__init__.py diff --git a/sponge/modules/analysis/__init__.py b/src/sponge/modules/analysis/__init__.py similarity index 100% rename from sponge/modules/analysis/__init__.py rename to src/sponge/modules/analysis/__init__.py diff --git a/sponge/modules/analysis/analysis.py b/src/sponge/modules/analysis/analysis.py similarity index 100% rename from sponge/modules/analysis/analysis.py rename to src/sponge/modules/analysis/analysis.py diff --git a/sponge/modules/data_retriever/__init__.py b/src/sponge/modules/data_retriever/__init__.py similarity index 100% rename from sponge/modules/data_retriever/__init__.py rename to src/sponge/modules/data_retriever/__init__.py diff --git a/sponge/modules/data_retriever/data_retriever.py b/src/sponge/modules/data_retriever/data_retriever.py similarity index 100% rename from sponge/modules/data_retriever/data_retriever.py rename to src/sponge/modules/data_retriever/data_retriever.py diff --git a/sponge/modules/data_retriever/file_retriever.py b/src/sponge/modules/data_retriever/file_retriever.py similarity index 100% rename from sponge/modules/data_retriever/file_retriever.py rename to src/sponge/modules/data_retriever/file_retriever.py diff --git a/sponge/modules/data_retriever/region_retriever.py b/src/sponge/modules/data_retriever/region_retriever.py similarity index 100% rename from sponge/modules/data_retriever/region_retriever.py rename to src/sponge/modules/data_retriever/region_retriever.py diff --git a/sponge/modules/data_retriever/tfbs_retriever.py b/src/sponge/modules/data_retriever/tfbs_retriever.py similarity index 100% rename from sponge/modules/data_retriever/tfbs_retriever.py rename to src/sponge/modules/data_retriever/tfbs_retriever.py diff --git a/sponge/modules/file_writer/__init__.py b/src/sponge/modules/file_writer/__init__.py similarity index 100% rename from sponge/modules/file_writer/__init__.py rename to src/sponge/modules/file_writer/__init__.py diff --git a/sponge/modules/file_writer/file_writer.py b/src/sponge/modules/file_writer/file_writer.py similarity index 100% rename from sponge/modules/file_writer/file_writer.py rename to src/sponge/modules/file_writer/file_writer.py diff --git a/sponge/modules/match_aggregator/__init__.py b/src/sponge/modules/match_aggregator/__init__.py similarity index 100% rename from sponge/modules/match_aggregator/__init__.py rename to src/sponge/modules/match_aggregator/__init__.py diff --git a/sponge/modules/match_aggregator/match_aggregator.py b/src/sponge/modules/match_aggregator/match_aggregator.py similarity index 100% rename from sponge/modules/match_aggregator/match_aggregator.py rename to src/sponge/modules/match_aggregator/match_aggregator.py diff --git a/sponge/modules/match_filter/__init__.py b/src/sponge/modules/match_filter/__init__.py similarity index 100% rename from sponge/modules/match_filter/__init__.py rename to src/sponge/modules/match_filter/__init__.py diff --git a/sponge/modules/match_filter/match_filter.py b/src/sponge/modules/match_filter/match_filter.py similarity index 100% rename from sponge/modules/match_filter/match_filter.py rename to src/sponge/modules/match_filter/match_filter.py diff --git a/sponge/modules/motif_selector/__init__.py b/src/sponge/modules/motif_selector/__init__.py similarity index 100% rename from sponge/modules/motif_selector/__init__.py rename to src/sponge/modules/motif_selector/__init__.py diff --git a/sponge/modules/motif_selector/homology_retriever.py b/src/sponge/modules/motif_selector/homology_retriever.py similarity index 100% rename from sponge/modules/motif_selector/homology_retriever.py rename to src/sponge/modules/motif_selector/homology_retriever.py diff --git a/sponge/modules/motif_selector/jaspar_retriever.py b/src/sponge/modules/motif_selector/jaspar_retriever.py similarity index 100% rename from sponge/modules/motif_selector/jaspar_retriever.py rename to src/sponge/modules/motif_selector/jaspar_retriever.py diff --git a/sponge/modules/motif_selector/motif_selector.py b/src/sponge/modules/motif_selector/motif_selector.py similarity index 100% rename from sponge/modules/motif_selector/motif_selector.py rename to src/sponge/modules/motif_selector/motif_selector.py diff --git a/sponge/modules/ppi_retriever/__init__.py b/src/sponge/modules/ppi_retriever/__init__.py similarity index 100% rename from sponge/modules/ppi_retriever/__init__.py rename to src/sponge/modules/ppi_retriever/__init__.py diff --git a/sponge/modules/ppi_retriever/ppi_retriever.py b/src/sponge/modules/ppi_retriever/ppi_retriever.py similarity index 100% rename from sponge/modules/ppi_retriever/ppi_retriever.py rename to src/sponge/modules/ppi_retriever/ppi_retriever.py diff --git a/sponge/modules/protein_id_mapper/__init__.py b/src/sponge/modules/protein_id_mapper/__init__.py similarity index 100% rename from sponge/modules/protein_id_mapper/__init__.py rename to src/sponge/modules/protein_id_mapper/__init__.py diff --git a/sponge/modules/protein_id_mapper/protein_id_mapper.py b/src/sponge/modules/protein_id_mapper/protein_id_mapper.py similarity index 100% rename from sponge/modules/protein_id_mapper/protein_id_mapper.py rename to src/sponge/modules/protein_id_mapper/protein_id_mapper.py diff --git a/sponge/modules/utils/__init__.py b/src/sponge/modules/utils/__init__.py similarity index 100% rename from sponge/modules/utils/__init__.py rename to src/sponge/modules/utils/__init__.py diff --git a/sponge/modules/utils/data_retrieval.py b/src/sponge/modules/utils/data_retrieval.py similarity index 100% rename from sponge/modules/utils/data_retrieval.py rename to src/sponge/modules/utils/data_retrieval.py diff --git a/sponge/modules/utils/dictionary_update.py b/src/sponge/modules/utils/dictionary_update.py similarity index 100% rename from sponge/modules/utils/dictionary_update.py rename to src/sponge/modules/utils/dictionary_update.py diff --git a/sponge/modules/utils/jaspar_versioning.py b/src/sponge/modules/utils/jaspar_versioning.py similarity index 100% rename from sponge/modules/utils/jaspar_versioning.py rename to src/sponge/modules/utils/jaspar_versioning.py diff --git a/sponge/modules/utils/motif_information.py b/src/sponge/modules/utils/motif_information.py similarity index 100% rename from sponge/modules/utils/motif_information.py rename to src/sponge/modules/utils/motif_information.py diff --git a/sponge/modules/utils/string_manipulation.py b/src/sponge/modules/utils/string_manipulation.py similarity index 100% rename from sponge/modules/utils/string_manipulation.py rename to src/sponge/modules/utils/string_manipulation.py diff --git a/sponge/modules/utils/tfbs_filtering.py b/src/sponge/modules/utils/tfbs_filtering.py similarity index 100% rename from sponge/modules/utils/tfbs_filtering.py rename to src/sponge/modules/utils/tfbs_filtering.py diff --git a/sponge/modules/version_logger/__init__.py b/src/sponge/modules/version_logger/__init__.py similarity index 100% rename from sponge/modules/version_logger/__init__.py rename to src/sponge/modules/version_logger/__init__.py diff --git a/sponge/modules/version_logger/version_logger.py b/src/sponge/modules/version_logger/version_logger.py similarity index 100% rename from sponge/modules/version_logger/version_logger.py rename to src/sponge/modules/version_logger/version_logger.py diff --git a/sponge/sponge.py b/src/sponge/sponge.py similarity index 100% rename from sponge/sponge.py rename to src/sponge/sponge.py diff --git a/sponge/user_config.yaml b/src/sponge/user_config.yaml similarity index 100% rename from sponge/user_config.yaml rename to src/sponge/user_config.yaml From 2b54dfdca514e286712a670726b7cc5d27390d43 Mon Sep 17 00:00:00 2001 From: Ladislav Hovan <19410951+ladislav-hovan@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:00:07 +0100 Subject: [PATCH 4/5] Fix tests --- tests/test_sponge.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_sponge.py b/tests/test_sponge.py index 2da6eaa..c80d7ec 100644 --- a/tests/test_sponge.py +++ b/tests/test_sponge.py @@ -9,7 +9,7 @@ from Bio.motifs.jaspar import Motif from pathlib import Path -from pyjaspar import jaspardb +from pyjaspar import jaspardb, JASPAR_LATEST_RELEASE from typing import Tuple from sponge.config_manager import ConfigManager @@ -221,7 +221,7 @@ def test_recursive_update(input, expected_output): import sponge.modules.utils.jaspar_versioning as jaspar_f @pytest.mark.parametrize('input, expected_output', [ - (None, 'JASPAR2024'), + (None, JASPAR_LATEST_RELEASE), ('JASPAR2022', 'JASPAR2022'), ('2024', 'JASPAR2024'), ]) @@ -417,7 +417,7 @@ def test_full_default_workflow(tmp_path): _,_ = run_integration_test_common( tmp_path, # Default config file - os.path.join('sponge', 'user_config.yaml'), + os.path.join('src', 'sponge', 'user_config.yaml'), ) From 964f58a69c7dc84141ef21a871fd5d0846bcfc3d Mon Sep 17 00:00:00 2001 From: Ladislav Hovan <19410951+ladislav-hovan@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:54:44 +0100 Subject: [PATCH 5/5] Overlap enhancement (#29) * Make compatible with current JASPAR TFBS format * Update Python versions for tests --- .github/workflows/test.yaml | 2 +- pyproject.toml | 21 ++++++++++--------- .../data_retriever/region_retriever.py | 4 ++-- .../modules/ppi_retriever/ppi_retriever.py | 4 ++-- src/sponge/modules/utils/tfbs_filtering.py | 5 +++++ 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 41bd151..c3ce1e5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -20,7 +20,7 @@ jobs: strategy: matrix: os: [ 'ubuntu-latest', 'macos-latest' ] - python: [ '3.9', '3.10', '3.11', '3.12' ] + python: [ '3.10', '3.11', '3.12', '3.13' ] runs-on: ${{ matrix.os }} diff --git a/pyproject.toml b/pyproject.toml index 28acd00..9a669dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,14 +17,14 @@ classifiers = [ "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Bio-Informatics", ] -dependencies = [ - "bioframe", - "numpy", - "pandas", - "pybbi", - "pyjaspar", - "scikit-learn", - "tqdm", +dependencies = [ + "bioframe>=0.8.0,<0.9", + "numpy>=2.2.6,<3", + "pandas>=2.3.3,<3", + "pybbi>=0.4.2,<0.5", + "pyjaspar>=4.0.0,<5", + "scikit-learn>=1.7.2,<2", + "tqdm>=4.67.1,<5", ] [project.scripts] @@ -49,15 +49,16 @@ channels = ["conda-forge"] platforms = ["linux-64"] [tool.pixi.tasks] +sponge = "netzoopy-sponge" [tool.pixi.dependencies] -python = "3.10.*" +python = ">=3.10.0" [tool.pixi.pypi-dependencies] netzoopy-sponge = { path = ".", editable = true } [tool.pixi.feature.sponge-dev.dependencies] -pytest = "*" +pytest = ">=8.4.0" [tool.pixi.feature.sponge-dev.tasks] test = "pytest -m 'not slow'" diff --git a/src/sponge/modules/data_retriever/region_retriever.py b/src/sponge/modules/data_retriever/region_retriever.py index aa2402c..4b5b851 100644 --- a/src/sponge/modules/data_retriever/region_retriever.py +++ b/src/sponge/modules/data_retriever/region_retriever.py @@ -121,7 +121,7 @@ def _retrieve_region( # Convert the response into a DataFrame df = pd.read_csv(buffer, sep='\t', dtype=dtype_dict) - print ('Filtering and modifying dataframe...') + print ('\nFiltering and modifying dataframe...\n') if self.settings['filter_basic']: # Filter only for GENCODE basic df = df[df['GENCODE basic annotation'] == 'GENCODE basic'].copy() @@ -162,7 +162,7 @@ def _retrieve_region( # Columns to be saved into a file columns = ['Chromosome', 'Start', 'End', 'Transcript stable ID', 'Gene stable ID', 'Gene name', 'Gene type'] - print (f'Saving data to: {self.temp_filename}') + print (f'\nSaving data to: {self.temp_filename}') # Save the file self.df = df[columns] self.df.to_csv(self.temp_filename, sep='\t', index=False) diff --git a/src/sponge/modules/ppi_retriever/ppi_retriever.py b/src/sponge/modules/ppi_retriever/ppi_retriever.py index 2e04359..607ffe7 100644 --- a/src/sponge/modules/ppi_retriever/ppi_retriever.py +++ b/src/sponge/modules/ppi_retriever/ppi_retriever.py @@ -141,8 +141,8 @@ def retrieve_ppi( 'preferredName_B': 'tf2'}, inplace=True) if len(ids_to_check) > 0: # Replace with names that have been queried (as used by JASPAR) - ppi_df['tf1'].replace(p_to_q, inplace=True) - ppi_df['tf2'].replace(p_to_q, inplace=True) + ppi_df['tf1'] = ppi_df['tf1'].replace(p_to_q) + ppi_df['tf2'] = ppi_df['tf2'].replace(p_to_q) ppi_df.sort_values(by=['tf1', 'tf2'], inplace=True) print ('\nFinal number of TFs in the PPI network: ' diff --git a/src/sponge/modules/utils/tfbs_filtering.py b/src/sponge/modules/utils/tfbs_filtering.py index 50115d5..9d2c0af 100644 --- a/src/sponge/modules/utils/tfbs_filtering.py +++ b/src/sponge/modules/utils/tfbs_filtering.py @@ -78,6 +78,11 @@ def filter_edges( start,end = bed_df.loc[transcript][['Start', 'End']] # Load all matches in that region from the bigbed file motifs = bioframe.read_bigbed(bb_ref, chrom, start=start, end=end) + # This is a temporary guard until the name of TFName column + # is fixed for the 2026 release + colnames = ['chrom', 'start', 'end', 'name', 'score', 'strand', + 'TFName'] + motifs.columns = colnames # Ensure the entire motif fits within range (not default behaviour) motifs = motifs[(motifs['start'] >= start) & (motifs['end'] <= end)] # Filter only the transcription factors in the list