physioex 2.0.1__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {physioex-2.0.1 → physioex-2.0.2}/CHANGELOG.md +12 -0
- {physioex-2.0.1 → physioex-2.0.2}/PKG-INFO +14 -2
- {physioex-2.0.1 → physioex-2.0.2}/README.md +13 -1
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/explain/explain.md +6 -0
- physioex-2.0.2/physioex/__init__.py +1 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/protosleepnet.py +16 -6
- physioex-2.0.2/tests/test_modality_dropout.py +62 -0
- physioex-2.0.1/physioex/__init__.py +0 -1
- {physioex-2.0.1 → physioex-2.0.2}/.claudeignore +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.github/copilot-instructions.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.github/workflows/black.yml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.github/workflows/ci.yml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.github/workflows/publish.yaml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.github/workflows/test.yml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/.gitignore +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/LICENSE +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/MANIFEST.in +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/REPO_MAP.txt +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/_ext/related_works.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/_static/custom.css +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/api/index.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/assets/images/data/sequence_viz.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/assets/images/logo.psd +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/assets/images/logo.svg +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/assets/images/logo_bar.svg +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/conf.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/index.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/library/data.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/library/explain.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/library/models.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/library/overview.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/library/train.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/architecture/testing/overview.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/contribute.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/data.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/preprocess.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/train/cli.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/train/networks/chambon2018.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/train/networks.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/train/train.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/unavailable.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/pages/user_guide.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/related/_thumbs/_placeholder.svg +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/related/fetch_citations.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/related/index.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/docs/related/works.yaml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/compare_strategies.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/extract_all_concepts.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/report.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/utils.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/analyze_csd_concepts/visualize_concepts.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/README.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/explain_csd.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/train_probe.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/utils.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/visualize.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/explain/lrp_seqsleepnet_n3.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/bendr/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/biot/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/cbramod/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/labram/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/neurolm/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/reve/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/sjepa/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/sleepfm/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/foundation/tfc/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/extract_embeddings.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/smoke.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/chambon2018/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/coresleep-kontras/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/coresleep-kontras/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/smoke.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/test_pretrained.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/protosleepnet/README.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/protosleepnet/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/extract_embeddings.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/test.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/test_pretrained.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/test_stages_sites.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/train_shhs.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/train_shhs.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/extract_embeddings.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/smoke.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/test_pretrained.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/extract_embeddings.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/smoke.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/test_pretrained.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/extract_embeddings.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/quickstart.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/smoke.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/test_pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tsinalis-2016/train.sbatch +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/notebook.ipynb +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell11_tiny_barplot.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell11_tiny_hypnogram.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell13_seq_barplot.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell13_seq_hypnogram.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell17_ig_tiny.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell19_ig_seq.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell19b_attr_vs_psd.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell5_raw_n3_psd.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell7_spec_n3_psd.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/run_notebook.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/script.pdf +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/slides.pdf +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/util.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/README.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/assets/kuleuven_logo.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/assets/physioex_logo.png +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/lectures/assets/physioex_logo.svg +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/base.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/cache.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/collate.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datareader.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/dataset.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/_nsrr.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/_splits/shhs.json +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/alzheimers.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/channels_table.md +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/dcsm.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/hmc.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/hpap.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/mass.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/mesa.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/mros.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/parkinsons.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/shhs.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/sleepedf.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/stages.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/datasets/wsc.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/events.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/modality.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/multi.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/pipeline.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/presets.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/readers/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/readers/annotations.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/readers/edf.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/bandpass.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/highpass.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/identity.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/normalize.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/notch.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/resample.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/data/steps/spectrogram.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/csd.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/multichannel_sg.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/report.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/sleep_bands.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/foundational/specificity.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/_functional.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/_rules.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/attributor.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/canonizers.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/composites.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/diagnostics.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/model.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/pooling.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/recurrent.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/lrp/transformer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/filters.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/functionizer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/gradients.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/metrics/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/spectralgradients.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/vidft.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/posthoc/vistdft.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/local.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/posthoc/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/posthoc/nmf.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/posthoc/utils.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/posthoc/vq.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/explain/prototypes/reconstruct.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/bendr.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/biot.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/cbramod.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/chambon2018.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/coresleep.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/embed.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/foundation_base.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/foundation_channel_mapping.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/foundation_checkpoints.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/foundation_datasets.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/foundation_preproc.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/labram.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/lseqsleepnet.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/neurolm.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/pretrained.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/reve.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/seqsleepnet.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/sjepa.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/sleep_tokenizer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/sleepfm.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/sleeptransformer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/tfc.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/tinysleepnet.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/models/tsinalis.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/bin/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/bin/_common.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/bin/finetune.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/bin/test.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/bin/train.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/logger.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/metrics.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/models/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/models/check_table.csv +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/models/load.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/multidevicetrainer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/progress.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/stats.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/physioex/train/trainer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/pyproject.toml +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/conftest.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/data/test_base_smoke.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/data/test_modality.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/data/test_multi.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/data/test_readers_annotations.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/foundational/test_sleep_bands.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/foundational/test_specificity.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_functional.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_lrp.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_model.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_real_models.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_recurrent.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/lrp/test_transformer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/test_gradients.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/test_metrics.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/test_spectralgradients.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/test_vidft.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/posthoc/test_vistdft.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/explain/prototypes/posthoc/test_nmf_vq.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/factories/__init__.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/factories/edf.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_architectures.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_foundation_base.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_foundation_encoders.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_foundation_preproc.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_pretrained_embed_helpers.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/models/test_sleep_tokenizer.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_alzheimers_parkinsons.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_api_surface.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_cache.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_cache_enabled.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_channel_resolution.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_cli_workflows.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_dataset_config.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_e2e_smoke.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_events.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_explain_fixes.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_label_hardening.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_load_model.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_mass_dataset.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_metrics_and_packaging.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_phase_b_datasets.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_phase_c_datasets.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_pipeline.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_presets.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_raw_dataset_integration.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_reading_modes.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_stages_dataset.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_trainer_enhancements.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_trainer_fixes.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_trainer_integration.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_wake_trimming.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/test_wsc_dataset.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/train/test_logger.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/train/test_progress.py +0 -0
- {physioex-2.0.1 → physioex-2.0.2}/tests/train/test_stats.py +0 -0
|
@@ -4,6 +4,18 @@ All notable changes to PhysioEx are documented here. Versions follow the
|
|
|
4
4
|
`physioex.__version__` string (read dynamically by the build) and the `v*` git tags
|
|
5
5
|
that publish to PyPI.
|
|
6
6
|
|
|
7
|
+
## 2.0.2 — 2026-10-10
|
|
8
|
+
|
|
9
|
+
### Fixed — accuracy-weighted modality dropout (`physioex.models.protosleepnet`)
|
|
10
|
+
|
|
11
|
+
`ZeroEmbeddingDropout` now samples the channels to occlude with probability
|
|
12
|
+
proportional to their accuracy, `p_c = a_c / sum_j a_j`, so the channels the
|
|
13
|
+
model relies on most are dropped most often. This is the rule the released
|
|
14
|
+
ProtoSleepNet and ProtoSleepTransformer models were trained with; a later
|
|
15
|
+
refactoring had inverted the sampling weights to `1 - a_c`. When no accuracy
|
|
16
|
+
estimate is available yet the sampling is uniform. Unit tests in
|
|
17
|
+
`tests/test_modality_dropout.py`.
|
|
18
|
+
|
|
7
19
|
## 2.0.1 — 2026-09-13
|
|
8
20
|
|
|
9
21
|
### Added — Layer-wise Relevance Propagation (`physioex.explain.lrp`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: physioex
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: A python package for explainable sleep staging via deep learning
|
|
5
5
|
Project-URL: Homepage, https://github.com/guidogagl/physioex
|
|
6
6
|
Project-URL: Documentation, https://guidogagl.github.io/physioex
|
|
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
|
|
|
64
64
|
# PhysioEx
|
|
65
65
|
|
|
66
66
|

|
|
67
|
-
[](https://pypi.org/project/physioex/)
|
|
67
|
+
[](https://pypi.org/project/physioex/)
|
|
68
68
|
|
|
69
69
|
**PhysioEx ( Physiological Signal Explainer )** is a versatile python library tailored for building, training, and explaining deep learning models for physiological signal analysis.
|
|
70
70
|
|
|
@@ -172,8 +172,20 @@ Note: the github version of the library is kept updated weekly, the PiPy version
|
|
|
172
172
|
$ pip install "physioex[foundation]" # transformers, for the REVE encoder
|
|
173
173
|
$ pip install "physioex[datasets]" # mne, for the HOMEPAP EDF fallback reader
|
|
174
174
|
$ pip install "physioex[tracking]" # tensorboard / wandb logging
|
|
175
|
+
$ pip install "physioex[explain]" # zennit, for Layer-wise Relevance Propagation
|
|
175
176
|
```
|
|
176
177
|
|
|
178
|
+
> **Note on `torchvision` (CPU-only installs).** The `explain` extra depends on
|
|
179
|
+
> `zennit`, which requires `torchvision`. If your `torch` comes from the PyTorch
|
|
180
|
+
> CPU index, install `torchvision` from the **same** index *before* the extra,
|
|
181
|
+
> otherwise pip pulls a CUDA build from PyPI that fails at import with
|
|
182
|
+
> `operator torchvision::nms does not exist`:
|
|
183
|
+
>
|
|
184
|
+
> ```bash
|
|
185
|
+
> $ pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
|
|
186
|
+
> $ pip install "physioex[explain]"
|
|
187
|
+
> ```
|
|
188
|
+
|
|
177
189
|
## Quickstart
|
|
178
190
|
|
|
179
191
|
Set `PHYSIOEX_DATA` to the directory holding your datasets, then use the raw-EDF
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# PhysioEx
|
|
6
6
|
|
|
7
7
|

|
|
8
|
-
[](https://pypi.org/project/physioex/)
|
|
8
|
+
[](https://pypi.org/project/physioex/)
|
|
9
9
|
|
|
10
10
|
**PhysioEx ( Physiological Signal Explainer )** is a versatile python library tailored for building, training, and explaining deep learning models for physiological signal analysis.
|
|
11
11
|
|
|
@@ -113,8 +113,20 @@ Note: the github version of the library is kept updated weekly, the PiPy version
|
|
|
113
113
|
$ pip install "physioex[foundation]" # transformers, for the REVE encoder
|
|
114
114
|
$ pip install "physioex[datasets]" # mne, for the HOMEPAP EDF fallback reader
|
|
115
115
|
$ pip install "physioex[tracking]" # tensorboard / wandb logging
|
|
116
|
+
$ pip install "physioex[explain]" # zennit, for Layer-wise Relevance Propagation
|
|
116
117
|
```
|
|
117
118
|
|
|
119
|
+
> **Note on `torchvision` (CPU-only installs).** The `explain` extra depends on
|
|
120
|
+
> `zennit`, which requires `torchvision`. If your `torch` comes from the PyTorch
|
|
121
|
+
> CPU index, install `torchvision` from the **same** index *before* the extra,
|
|
122
|
+
> otherwise pip pulls a CUDA build from PyPI that fails at import with
|
|
123
|
+
> `operator torchvision::nms does not exist`:
|
|
124
|
+
>
|
|
125
|
+
> ```bash
|
|
126
|
+
> $ pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
|
|
127
|
+
> $ pip install "physioex[explain]"
|
|
128
|
+
> ```
|
|
129
|
+
|
|
118
130
|
## Quickstart
|
|
119
131
|
|
|
120
132
|
Set `PHYSIOEX_DATA` to the directory holding your datasets, then use the raw-EDF
|
|
@@ -64,6 +64,12 @@ is **optional** — install the extra:
|
|
|
64
64
|
pip install "physioex[explain]"
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
The extra pulls in `zennit`, and therefore `torchvision`. On a CPU-only `torch`
|
|
68
|
+
from the PyTorch index, install `torch torchvision` from that same index *first*
|
|
69
|
+
(`pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu`),
|
|
70
|
+
or pip will fetch a mismatched CUDA `torchvision` from PyPI that fails at import
|
|
71
|
+
(`operator torchvision::nms does not exist`).
|
|
72
|
+
|
|
67
73
|
Two entry points, both seeding the target neuron with its **logit value** so
|
|
68
74
|
that `Σ R ≈ f_c(x)` and returning relevance shaped like the input:
|
|
69
75
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.0.2"
|
|
@@ -52,9 +52,17 @@ from physioex.train.metrics import accuracy_score
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class ZeroEmbeddingDropout(nn.Module):
|
|
55
|
-
"""
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
"""Accuracy-weighted modality dropout.
|
|
56
|
+
|
|
57
|
+
Replaces the embeddings of selected channels with the encoder's
|
|
58
|
+
zero-input embedding. The drop probability of channel ``c`` is
|
|
59
|
+
proportional to its accuracy, ``p_c = a_c / sum_j a_j``, so the
|
|
60
|
+
channels the model relies on most are occluded most often and the
|
|
61
|
+
model must learn to stage from the secondary modalities.
|
|
62
|
+
|
|
63
|
+
For each sample, with probability ``p_apply`` a number ``n`` of
|
|
64
|
+
channels drawn uniformly in ``{1, ..., C-1}`` is sampled without
|
|
65
|
+
replacement according to ``{p_c}`` and replaced.
|
|
58
66
|
|
|
59
67
|
Only active during training.
|
|
60
68
|
|
|
@@ -84,11 +92,13 @@ class ZeroEmbeddingDropout(nn.Module):
|
|
|
84
92
|
else:
|
|
85
93
|
acc = torch.tensor(channel_acc, device=device, dtype=torch.float32)
|
|
86
94
|
|
|
87
|
-
proba =
|
|
95
|
+
proba = acc.clamp(min=0.0)
|
|
88
96
|
proba_sum = proba.sum()
|
|
89
97
|
if proba_sum <= 0:
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
# No accuracy estimate yet: fall back to uniform sampling.
|
|
99
|
+
proba = torch.full((nchan,), 1.0 / nchan, device=device)
|
|
100
|
+
else:
|
|
101
|
+
proba = proba / proba_sum
|
|
92
102
|
|
|
93
103
|
apply_mask = torch.rand(batch, device=device) < self.p_apply
|
|
94
104
|
n_to_drop = torch.randint(1, nchan, (batch,), device=device)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Accuracy-weighted modality dropout of ProtoSleepNet.
|
|
2
|
+
|
|
3
|
+
The drop probability of a channel must be proportional to its accuracy,
|
|
4
|
+
``p_c = a_c / sum_j a_j``: the most accurate channel is the one occluded
|
|
5
|
+
most often.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
torch = pytest.importorskip("torch")
|
|
12
|
+
|
|
13
|
+
from physioex.models.protosleepnet import ZeroEmbeddingDropout # noqa: E402
|
|
14
|
+
|
|
15
|
+
pytestmark = pytest.mark.unit
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _drop_counts(acc, n_samples=4000, seed=0):
|
|
19
|
+
torch.manual_seed(seed)
|
|
20
|
+
nchan = len(acc)
|
|
21
|
+
drop = ZeroEmbeddingDropout(p_apply=1.0).train()
|
|
22
|
+
x = torch.ones(n_samples, nchan, 4)
|
|
23
|
+
zero_emb = torch.zeros(1, 4)
|
|
24
|
+
out = drop(x, zero_emb, torch.tensor(acc))
|
|
25
|
+
dropped = (out == 0).all(dim=-1) # (n_samples, nchan)
|
|
26
|
+
return dropped.float().sum(dim=0)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_high_accuracy_channel_is_dropped_most():
|
|
30
|
+
counts = _drop_counts([0.9, 0.3, 0.1])
|
|
31
|
+
assert counts[0] > counts[1] > counts[2]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_drop_frequency_follows_accuracy_ratio():
|
|
35
|
+
# With two channels, exactly one is dropped per sample (n in {1}), so
|
|
36
|
+
# the empirical drop frequency equals p_c = a_c / sum_j a_j.
|
|
37
|
+
counts = _drop_counts([0.8, 0.2], n_samples=20000)
|
|
38
|
+
freq = counts / counts.sum()
|
|
39
|
+
assert abs(freq[0].item() - 0.8) < 0.02
|
|
40
|
+
assert abs(freq[1].item() - 0.2) < 0.02
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_never_drops_all_channels():
|
|
44
|
+
torch.manual_seed(0)
|
|
45
|
+
drop = ZeroEmbeddingDropout(p_apply=1.0).train()
|
|
46
|
+
x = torch.ones(512, 3, 4)
|
|
47
|
+
out = drop(x, torch.zeros(1, 4), torch.tensor([0.5, 0.3, 0.2]))
|
|
48
|
+
kept = (out != 0).any(dim=-1).sum(dim=1)
|
|
49
|
+
assert (kept >= 1).all()
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_uniform_fallback_without_accuracy_estimates():
|
|
53
|
+
counts = _drop_counts([0.0, 0.0, 0.0], n_samples=6000)
|
|
54
|
+
freq = counts / counts.sum()
|
|
55
|
+
assert (freq - 1.0 / 3).abs().max().item() < 0.03
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_identity_in_eval_mode():
|
|
59
|
+
drop = ZeroEmbeddingDropout(p_apply=1.0).eval()
|
|
60
|
+
x = torch.randn(8, 3, 4)
|
|
61
|
+
out = drop(x, torch.zeros(1, 4), torch.tensor([0.9, 0.1, 0.1]))
|
|
62
|
+
assert torch.equal(out, x)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.0.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/README.md
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/explain_csd.py
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/train_probe.py
RENAMED
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/explain/conceptualspectraldecomposition/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/coresleep-kontras/extract_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/extract_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/lseqsleepnet-phan/test_pretrained.sbatch
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/extract_embeddings.py
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/extract_embeddings.sbatch
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/seqsleepnet-phan/test_pretrained.sbatch
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/extract_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/test_pretrained.py
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/sleeptransformer-phan/test_pretrained.sbatch
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/extract_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/test_pretrained.py
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/examples/pretrained/tinysleepnet-supratak/test_pretrained.sbatch
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell11_tiny_barplot.png
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell11_tiny_hypnogram.png
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell13_seq_barplot.png
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell13_seq_hypnogram.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell19b_attr_vs_psd.png
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell5_raw_n3_psd.png
RENAMED
|
File without changes
|
{physioex-2.0.1 → physioex-2.0.2}/lectures/2026-06-24_ugent_xai/outputs/cell7_spec_n3_psd.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|