modssc 0.2.5__tar.gz → 0.3__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.
- {modssc-0.2.5 → modssc-0.3}/.gitignore +3 -0
- {modssc-0.2.5 → modssc-0.3}/CHANGELOG.md +3 -0
- {modssc-0.2.5 → modssc-0.3}/PKG-INFO +1 -1
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/views.md +1 -1
- {modssc-0.2.5 → modssc-0.3}/docs/index.md +1 -1
- {modssc-0.2.5 → modssc-0.3}/docs/reference/configuration.md +1 -1
- {modssc-0.2.5 → modssc-0.3}/src/modssc/__about__.py +1 -1
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/audio.py +7 -16
- modssc-0.3/src/modssc/data_augmentation/ops/common.py +30 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/tabular.py +7 -16
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/text.py +12 -12
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/utils.py +2 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/cache.py +2 -10
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/errors.py +3 -8
- modssc-0.3/src/modssc/data_loader/json_utils.py +39 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/manifest.py +1 -30
- modssc-0.3/src/modssc/data_loader/providers/common.py +75 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/hf.py +20 -49
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/openml.py +9 -34
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/pyg.py +1 -8
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/torchaudio.py +21 -47
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/torchvision.py +21 -47
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/storage/files.py +6 -32
- modssc-0.3/src/modssc/dependency_errors.py +23 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/evaluation/metrics.py +1 -11
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/cache.py +17 -24
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/schemes/anchor.py +2 -12
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/views/struct.py +2 -10
- modssc-0.3/src/modssc/import_utils.py +16 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/adapters/torch.py +2 -4
- modssc-0.3/src/modssc/inductive/backends/torch_backend.py +21 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/deep/bundles.py +2 -4
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/errors.py +3 -5
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/adamatch.py +9 -73
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/adsh.py +2 -5
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/co_training.py +4 -6
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/comatch.py +4 -61
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/daso.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/deep_co_training.py +2 -5
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/deep_utils.py +105 -4
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/defixmatch.py +4 -66
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/fixmatch.py +4 -66
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/flexmatch.py +4 -66
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/free_match.py +4 -66
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/mean_teacher.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/meta_pseudo_labels.py +2 -5
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/mixmatch.py +4 -66
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/noisy_student.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/pi_model.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/setred.py +5 -6
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/simclr_v2.py +2 -5
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/softmatch.py +9 -73
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/temporal_ensembling.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/trinet.py +4 -10
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/uda.py +2 -56
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/utils.py +8 -3
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/vat.py +2 -56
- modssc-0.3/src/modssc/inductive/optional.py +13 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/registry.py +29 -53
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/validation.py +2 -13
- modssc-0.3/src/modssc/io_utils.py +17 -0
- modssc-0.3/src/modssc/numpy_utils.py +17 -0
- modssc-0.3/src/modssc/optional_import_utils.py +16 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/api.py +3 -17
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/errors.py +3 -8
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models.py +1 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/registry.py +1 -13
- modssc-0.3/src/modssc/preprocess/steps/audio/wav2vec2.py +19 -0
- modssc-0.3/src/modssc/preprocess/steps/embeddings/common.py +60 -0
- modssc-0.3/src/modssc/preprocess/steps/text/sentence_transformer.py +22 -0
- modssc-0.3/src/modssc/preprocess/steps/vision/openclip.py +19 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/store.py +1 -1
- modssc-0.3/src/modssc/registry_utils.py +126 -0
- modssc-0.3/src/modssc/sampling/common.py +18 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/labeling.py +1 -15
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/splitters.py +1 -14
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/stats.py +1 -14
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/storage.py +1 -14
- modssc-0.3/src/modssc/seed_utils.py +12 -0
- modssc-0.3/src/modssc/shape_utils.py +13 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/api.py +1 -10
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/numpy/knn.py +8 -5
- modssc-0.3/src/modssc/supervised/backends/sklearn/common.py +70 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/extra_trees.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/gradient_boosting.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/knn.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/linear_svm.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/logreg.py +11 -31
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/naive_bayes.py +5 -69
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/random_forest.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/ridge.py +3 -25
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/svm_rbf.py +13 -19
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/audio_cnn.py +7 -27
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/audio_cnn_scratch.py +5 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/audio_pretrained.py +3 -19
- modssc-0.3/src/modssc/supervised/backends/torch/common.py +138 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/graphsage_inductive.py +3 -6
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/image_cnn.py +9 -38
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/image_pretrained.py +7 -30
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/knn.py +3 -6
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/logreg.py +3 -19
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/lstm_scratch.py +5 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/mlp.py +7 -27
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/text_cnn.py +7 -27
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/base.py +11 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/errors.py +1 -2
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/utils.py +1 -13
- modssc-0.3/src/modssc/torch_backend_common.py +56 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/backends/torch_backend.py +10 -38
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/errors.py +3 -5
- modssc-0.3/src/modssc/transductive/methods/classic/common.py +21 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/dynamic_label_propagation.py +4 -18
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/laplace_learning.py +1 -6
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/lazy_random_walk.py +3 -12
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/appnp.py +10 -18
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/chebnet.py +9 -7
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/common.py +26 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/grand.py +1 -17
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/graphsage.py +9 -7
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/utils.py +3 -10
- modssc-0.3/src/modssc/transductive/optional.py +7 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/registry.py +29 -55
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/validation.py +2 -13
- {modssc-0.2.5 → modssc-0.3}/src/modssc/views/api.py +2 -24
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_text.py +7 -0
- modssc-0.3/tests/data_loader/providers/test_common.py +62 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/adapters}/test_validation_adapters.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/backends}/test_backends_deep_utils.py +96 -1
- modssc-0.3/tests/inductive/methods/test_adsh_guards.py +49 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_comatch.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_daso.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_deep_co_training.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_meta_pseudo_labels.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_methods_classic.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_methods_deep.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_self_training.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_setred.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_simclr_v2.py +1 -1
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_trinet.py +1 -1
- modssc-0.3/tests/supervised/backends/numpy/__init__.py +0 -0
- modssc-0.3/tests/supervised/backends/sklearn/__init__.py +0 -0
- modssc-0.3/tests/supervised/backends/torch/__init__.py +0 -0
- modssc-0.3/tests/supervised/backends/torch/test_common.py +83 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/test_base.py +21 -1
- modssc-0.3/tests/transductive/__init__.py +0 -0
- modssc-0.3/tests/transductive/adapters/__init__.py +0 -0
- modssc-0.3/tests/transductive/backends/__init__.py +0 -0
- modssc-0.3/tests/transductive/methods/__init__.py +0 -0
- modssc-0.3/tests/transductive/methods/classic/__init__.py +0 -0
- modssc-0.3/tests/transductive/methods/gnn/__init__.py +0 -0
- modssc-0.3/tests/transductive/methods/pde/__init__.py +0 -0
- modssc-0.3/tests/transductive/operators/__init__.py +0 -0
- modssc-0.3/tests/transductive/solvers/__init__.py +0 -0
- modssc-0.3/tests/views/__init__.py +0 -0
- modssc-0.2.5/src/modssc/inductive/backends/torch_backend.py +0 -47
- modssc-0.2.5/src/modssc/inductive/optional.py +0 -15
- modssc-0.2.5/src/modssc/preprocess/steps/audio/wav2vec2.py +0 -35
- modssc-0.2.5/src/modssc/preprocess/steps/text/sentence_transformer.py +0 -36
- modssc-0.2.5/src/modssc/preprocess/steps/vision/openclip.py +0 -35
- modssc-0.2.5/src/modssc/transductive/optional.py +0 -15
- modssc-0.2.5/tests/test_bench_seed_sweep.py +0 -154
- modssc-0.2.5/tests/transductive/methods/advanced/__init__.py +0 -1
- {modssc-0.2.5 → modssc-0.3}/.editorconfig +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/CODEOWNERS +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/CODE_OF_CONDUCT.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/CONTRIBUTING.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/GOVERNANCE.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/ISSUE_TEMPLATE/new_method.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/SECURITY.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/dependabot.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/pull_request_template.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/workflows/ci.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/workflows/docs.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.github/workflows/release.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/.pre-commit-config.yaml +0 -0
- {modssc-0.2.5 → modssc-0.3}/CITATION.bib +0 -0
- {modssc-0.2.5 → modssc-0.3}/CITATION.cff +0 -0
- {modssc-0.2.5 → modssc-0.3}/LICENSE +0 -0
- {modssc-0.2.5 → modssc-0.3}/Makefile +0 -0
- {modssc-0.2.5 → modssc-0.3}/README.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/codecov.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/assets/logo.jpeg +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/development/contributing.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/development/release-process.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/getting-started/concepts.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/getting-started/installation.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/getting-started/quickstart.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/augmentation.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/datasets.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/evaluation.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/graph.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/hpo.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/preprocess.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/how-to/sampling.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/javascripts/sidebar-toggle.js +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/data-augmentation.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/data-loader.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/device.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/evaluation.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/graph.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/hpo.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/index.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/inductive.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/logging.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/preprocess.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/sampling.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/supervised.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/transductive.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/api/views.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/benchmarks.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/catalogs.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/reference/cli.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/stylesheets/extra.css +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/tutorials/inductive-toy.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/docs/tutorials/transductive-toy.md +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/00_inductive_toy_pseudo_label.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/01_evaluation_quickstart.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/01_transductive_toy_label_propagation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/02_hpo_primitives_quickstart.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/02_sampling_toy_holdout.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/03_cli_smoke.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/examples/04_inductive_cotraining_two_views.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/mkdocs.yml +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/00_cli_tour.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/01_data_loader_end_to_end.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/02_sampling_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/03_preprocess_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/04_data_augmentation_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/05_views_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/06_graph_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/07_supervised_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/08_inductive_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/09_transductive_quickstart.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/notebooks/10_hpo_bench_smoke.ipynb +0 -0
- {modssc-0.2.5 → modssc-0.3}/pyproject.toml +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/__main__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/_utils.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/app.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/augmentation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/datasets.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/evaluation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/inductive.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/logging.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/preprocess.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/sampling.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/supervised.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/cli/transductive.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/core.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/ops/vision.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_augmentation/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/audio.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/tabular.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/text.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/toy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/catalog/vision.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/formats.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/numpy_adapter.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/tfds.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/providers/toy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/storage/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/data_loader/uri.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/device.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/evaluation/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/adapters/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/adapters/pyg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/artifacts.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/backends/faiss_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/backends/numpy_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/backends/sklearn_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/builder.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/ops/normalize.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/ops/self_loops.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/ops/symmetrize.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/ops/weights.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/construction/schemes/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/node2vec.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/ops/adjacency.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/views/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/views/attr.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/featurization/views/diffusion.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/masks.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/specs.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/graph/validation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/hpo/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/hpo/patching.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/hpo/samplers.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/hpo/space.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/hpo/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/adapters/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/adapters/numpy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/deep/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/deep/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/deep/validation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/democratic_co_learning.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/pseudo_label.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/s4vm.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/self_training.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/methods/tri_training.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/seed.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/inductive/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/logging.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/cache.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/catalog.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/open_clip.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/sentence_transformers.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/stub.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/numpy_adapter.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/audio/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/audio/load_waveform.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/audio/spectrogram.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/cast_dtype.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/cast_fp16.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/copy_raw.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/ensure_2d.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/pca.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/random_projection.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/to_numpy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/core/to_torch.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/embeddings/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/embeddings/auto.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/attach_edge_weight.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/dgi.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/edge_sparsify.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/node2vec.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/graph/sparse_adjacency.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/labels/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/labels/encode.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/labels/ensure_onehot.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/labels/to_numpy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/labels/to_torch.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/tabular/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/tabular/impute.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/tabular/one_hot.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/tabular/standard_scaler.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/text/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/text/ensure_strings.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/text/hash_tokenizer.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/text/tfidf.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/text/vocab_tokenizer.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/channels_order.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/ensure_num_channels.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/layout.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/normalize.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/resize.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/squeeze.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/steps/vision/zca_whitening.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/preprocess/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/imbalance.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/sampling/result.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/numpy/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/sklearn/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/backends/torch/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/supervised/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/adapters/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/adapters/pyg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/backends/numpy_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/base.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/graph_mincuts.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/label_propagation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/label_spreading.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/classic/tsvm.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/gat.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/gcn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/gcnii.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/grafn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/graphhop.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/h_gcn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/n_gcn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/planetoid.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/gnn/sgc.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/pde/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/pde/p_laplace_learning.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/pde/poisson_learning.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/methods/pde/poisson_mbo.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/operators/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/operators/clamp.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/operators/laplacian.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/operators/normalize.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/operators/spmm.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/solvers/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/solvers/cg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/solvers/fixed_point.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/transductive/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/views/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/views/errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/views/plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/src/modssc/views/types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_app.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_augmentation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_augmentation_module.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_cache_commands.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_datasets.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_datasets_app.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_evaluation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_inductive_cli.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_log_level_option.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_main.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_main_datasets.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_preprocess.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_sampling.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_supervised.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_utils.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/cli/test_version.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_audio.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_core.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_tabular.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_torch_mock.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_vision.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/ops/test_vision_numpy.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_api_registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_pipeline.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_augmentation/test_utils.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/catalog/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/catalog/test_catalog.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_hf.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_openml.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_pyg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_stubs.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_tfds.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_torchaudio.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/providers/test_torchvision.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/storage/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/storage/test_edges_masks.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/storage/test_files.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/storage/test_roundtrip.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_api_end_to_end.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_api_meta.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_cache.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_formats.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_import_light.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_manifest.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_numpy_adapter.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_types.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/data_loader/test_uri.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/evaluation/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/evaluation/test_metrics.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/adapters/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/adapters/test_pyg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/backends/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/backends/test_backends.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/backends/test_faiss_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/backends/test_numpy_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/ops/test_ops.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/schemes/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/schemes/test_anchor.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/test_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/test_build_graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/test_builder.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/construction/test_construction.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/ops/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/ops/test_adjacency.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/test_featurization.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/test_node2vec.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/test_views.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/views/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/featurization/views/test_struct.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/test_artifacts.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/test_cache.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/test_masks.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/test_optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/graph/test_specs.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/hpo}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/hpo/test_patching.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/hpo/test_random.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/hpo/test_space.py +0 -0
- {modssc-0.2.5/tests/preprocess → modssc-0.3/tests/inductive}/__init__.py +0 -0
- {modssc-0.2.5/tests/preprocess/models_backends → modssc-0.3/tests/inductive/adapters}/__init__.py +0 -0
- {modssc-0.2.5/tests/preprocess/steps → modssc-0.3/tests/inductive/backends}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/inductive/conftest.py +0 -0
- {modssc-0.2.5/tests/preprocess/steps/labels → modssc-0.3/tests/inductive/deep}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/inductive/deep/test_bundles.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/inductive/dummy_registry_module.py +0 -0
- {modssc-0.2.5/tests/sampling → modssc-0.3/tests/inductive/methods}/__init__.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_adsh_predict_proba.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_co_training_device_validation.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_co_training_helpers.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_graph_dict_helpers.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_methods_utils.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_s4vm.py +0 -0
- {modssc-0.2.5/tests/inductive → modssc-0.3/tests/inductive/methods}/test_tri_training.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/inductive/test_errors_registry_seed.py +0 -0
- {modssc-0.2.5/tests/supervised → modssc-0.3/tests/preprocess}/__init__.py +0 -0
- {modssc-0.2.5/tests/supervised/backends → modssc-0.3/tests/preprocess/models_backends}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/models_backends/test_backends.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/models_backends/test_stub.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/models_backends/test_torchaudio_wav2vec2.py +0 -0
- {modssc-0.2.5/tests/supervised/backends/numpy → modssc-0.3/tests/preprocess/steps}/__init__.py +0 -0
- {modssc-0.2.5/tests/supervised/backends/sklearn → modssc-0.3/tests/preprocess/steps/audio}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/audio/test_load_waveform_fallback.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/audio/test_load_waveform_transform.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/audio/test_spectrogram.py +0 -0
- {modssc-0.2.5/tests/transductive → modssc-0.3/tests/preprocess/steps/core}/__init__.py +0 -0
- {modssc-0.2.5/tests/transductive/adapters → modssc-0.3/tests/preprocess/steps/embeddings}/__init__.py +0 -0
- {modssc-0.2.5/tests/transductive/backends → modssc-0.3/tests/preprocess/steps/graph}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/graph/test_sparse_adjacency.py +0 -0
- {modssc-0.2.5/tests/transductive/methods → modssc-0.3/tests/preprocess/steps/labels}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/labels/test_encode.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/labels/test_ensure_onehot.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/labels/test_to_numpy_torch.py +0 -0
- {modssc-0.2.5/tests/transductive/methods/classic → modssc-0.3/tests/preprocess/steps/tabular}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/tabular/test_impute.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/tabular/test_standard_scaler.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_audio_core.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_base_core.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_embeddings_graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_layout.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_tabular_one_hot.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_text_steps.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_to_numpy_torch.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/test_vision_steps.py +0 -0
- {modssc-0.2.5/tests/transductive/methods/gnn → modssc-0.3/tests/preprocess/steps/text}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/text/test_vocab_tokenizer.py +0 -0
- {modssc-0.2.5/tests/transductive/methods/pde → modssc-0.3/tests/preprocess/steps/vision}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/steps/vision/test_squeeze.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_cache.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_models.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_plan_and_pipeline.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_store.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/preprocess/test_utils.py +0 -0
- {modssc-0.2.5/tests/transductive/operators → modssc-0.3/tests/sampling}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/_stubs.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_api_cache_heuristic.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_api_complex.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_api_graph.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_api_inductive.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_fingerprint.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_imbalance.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_labeling.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_plan.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_result.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_result_properties.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_splitters.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_splitters_holdout.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_splitters_kfold.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_stats.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_storage.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/sampling/test_storage_roundtrip.py +0 -0
- {modssc-0.2.5/tests/transductive/solvers → modssc-0.3/tests/supervised}/__init__.py +0 -0
- {modssc-0.2.5/tests/views → modssc-0.3/tests/supervised/backends}/__init__.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/numpy/test_knn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/sklearn/test_wrappers.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_audio_cnn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_audio_cnn_scratch.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_audio_pretrained.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_graphsage_inductive.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_image_cnn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_image_pretrained.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_knn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_logreg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_lstm_scratch.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_mlp.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/backends/torch/test_text_cnn.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/test_optional.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/test_registry_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/supervised/test_utils.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/test_device.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/test_imports.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/test_logging_config.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/adapters/test_pyg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/backends/test_numpy_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/backends/test_torch_backend.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/classic/test_graph_mincuts.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/classic/test_label_methods.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/gnn/test_common.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/gnn/test_gnn_components.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/gnn/test_methods.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/pde/test_p_laplace_learning.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/pde/test_poisson_learning.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/pde/test_poisson_mbo.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/test_tsvm.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/methods/test_utils.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/operators/test_clamp.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/operators/test_laplacian.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/operators/test_torch_wrappers.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/solvers/test_cg.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/solvers/test_fixed_point.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/test_cli_transductive.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/test_errors.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/test_registry.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/transductive/test_validation.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/views/test_api.py +0 -0
- {modssc-0.2.5 → modssc-0.3}/tests/views/test_plan.py +0 -0
|
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on "Keep a Changelog", and this project adheres to Semantic Versioning.
|
|
6
6
|
|
|
7
|
+
## 0.3
|
|
8
|
+
- Refactored modules to reduce redundancy, centralize shared functions, and improve maintainability and test coverage.
|
|
9
|
+
|
|
7
10
|
## 0.2.5
|
|
8
11
|
- Added env var passthrough for dataset, preprocess, and runs cache directories in benchmarks.
|
|
9
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modssc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3
|
|
4
4
|
Summary: ModSSC: a modular framework for semi-supervised classification on heterogeneous data
|
|
5
5
|
Project-URL: Homepage, https://github.com/ModSSC/ModSSC
|
|
6
6
|
Project-URL: Repository, https://github.com/ModSSC/ModSSC
|
|
@@ -78,7 +78,7 @@ The view plan schema is defined in [`src/modssc/views/plan.py`](https://github.c
|
|
|
78
78
|
<li id="source-3"><a href="https://github.com/ModSSC/ModSSC/blob/main/src/modssc/inductive/methods/co_training.py"><code>src/modssc/inductive/methods/co_training.py</code></a></li>
|
|
79
79
|
<li id="source-4"><a href="https://github.com/ModSSC/ModSSC/blob/main/src/modssc/inductive/types.py"><code>src/modssc/inductive/types.py</code></a></li>
|
|
80
80
|
<li id="source-5"><a href="https://github.com/ModSSC/ModSSC/blob/main/src/modssc/preprocess/plan.py"><code>src/modssc/preprocess/plan.py</code></a></li>
|
|
81
|
-
<li id="source-6"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/
|
|
81
|
+
<li id="source-6"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/minimal/inductive/co_training/text/imdb.yaml"><code>bench/configs/experiments/minimal/inductive/co_training/text/imdb.yaml</code></a></li>
|
|
82
82
|
<li id="source-7"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/schema.py"><code>bench/schema.py</code></a></li>
|
|
83
83
|
</ol>
|
|
84
84
|
</details>
|
|
@@ -33,7 +33,7 @@ ModSSC is a modular framework for semi-supervised classification across heteroge
|
|
|
33
33
|
- [Transductive tutorial](tutorials/transductive-toy.md)
|
|
34
34
|
|
|
35
35
|
## Version
|
|
36
|
-
Current version is `0.
|
|
36
|
+
Current version is `0.3`, sourced from [`src/modssc/__about__.py`](https://github.com/ModSSC/ModSSC/blob/main/src/modssc/__about__.py) and referenced by the Hatch version config in [`pyproject.toml`](https://github.com/ModSSC/ModSSC/blob/main/pyproject.toml). <sup class="cite"><a href="#source-18">[18]</a><a href="#source-2">[2]</a></sup>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
## Project status and support
|
|
@@ -421,6 +421,6 @@ evaluation:
|
|
|
421
421
|
<li id="source-23"><a href="https://github.com/ModSSC/ModSSC/blob/main/src/modssc/hpo/samplers.py"><code>src/modssc/hpo/samplers.py</code></a></li>
|
|
422
422
|
<li id="source-24"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/toy_inductive.yaml"><code>bench/configs/experiments/toy_inductive.yaml</code></a></li>
|
|
423
423
|
<li id="source-25"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/toy_transductive.yaml"><code>bench/configs/experiments/toy_transductive.yaml</code></a></li>
|
|
424
|
-
<li id="source-26"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/
|
|
424
|
+
<li id="source-26"><a href="https://github.com/ModSSC/ModSSC/blob/main/bench/configs/experiments/minimal/inductive/pseudo_label/text/imdb.yaml"><code>bench/configs/experiments/minimal/inductive/pseudo_label/text/imdb.yaml</code></a></li>
|
|
425
425
|
</ol>
|
|
426
426
|
</details>
|
|
@@ -9,6 +9,7 @@ from ..registry import register_op
|
|
|
9
9
|
from ..types import AugmentationContext, Modality
|
|
10
10
|
from ..utils import is_torch_tensor
|
|
11
11
|
from .base import AugmentationOp
|
|
12
|
+
from .common import apply_gaussian_noise
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
@register_op("audio.add_noise")
|
|
@@ -21,22 +22,12 @@ class AddNoise(AugmentationOp):
|
|
|
21
22
|
std: float = 0.005
|
|
22
23
|
|
|
23
24
|
def apply(self, x: Any, *, rng: np.random.Generator, ctx: AugmentationContext) -> Any: # noqa: ARG002
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import importlib
|
|
31
|
-
|
|
32
|
-
torch = importlib.import_module("torch")
|
|
33
|
-
seed = int(rng.integers(0, 1 << 31))
|
|
34
|
-
gen = torch.Generator(device=x.device).manual_seed(seed)
|
|
35
|
-
noise = torch.randn(x.shape, generator=gen, device=x.device, dtype=x.dtype) * std
|
|
36
|
-
return x + noise
|
|
37
|
-
arr = np.asarray(x)
|
|
38
|
-
noise = rng.normal(0.0, std, size=arr.shape).astype(arr.dtype, copy=False)
|
|
39
|
-
return arr + noise
|
|
25
|
+
return apply_gaussian_noise(
|
|
26
|
+
x,
|
|
27
|
+
std=float(self.std),
|
|
28
|
+
rng=rng,
|
|
29
|
+
is_torch_tensor_fn=is_torch_tensor,
|
|
30
|
+
)
|
|
40
31
|
|
|
41
32
|
|
|
42
33
|
@register_op("audio.time_shift")
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def apply_gaussian_noise(
|
|
9
|
+
x: Any,
|
|
10
|
+
*,
|
|
11
|
+
std: float,
|
|
12
|
+
rng: np.random.Generator,
|
|
13
|
+
is_torch_tensor_fn: Any,
|
|
14
|
+
) -> Any:
|
|
15
|
+
std = float(std)
|
|
16
|
+
if std < 0:
|
|
17
|
+
raise ValueError("std must be >= 0")
|
|
18
|
+
if std == 0:
|
|
19
|
+
return x
|
|
20
|
+
if is_torch_tensor_fn(x):
|
|
21
|
+
import importlib
|
|
22
|
+
|
|
23
|
+
torch = importlib.import_module("torch")
|
|
24
|
+
seed = int(rng.integers(0, 1 << 31))
|
|
25
|
+
gen = torch.Generator(device=x.device).manual_seed(seed)
|
|
26
|
+
noise = torch.randn(x.shape, generator=gen, device=x.device, dtype=x.dtype) * std
|
|
27
|
+
return x + noise
|
|
28
|
+
arr = np.asarray(x)
|
|
29
|
+
noise = rng.normal(0.0, std, size=arr.shape).astype(arr.dtype, copy=False)
|
|
30
|
+
return arr + noise
|
|
@@ -9,6 +9,7 @@ from ..registry import register_op
|
|
|
9
9
|
from ..types import AugmentationContext, Modality
|
|
10
10
|
from ..utils import is_torch_tensor
|
|
11
11
|
from .base import AugmentationOp
|
|
12
|
+
from .common import apply_gaussian_noise
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
@register_op("tabular.gaussian_noise")
|
|
@@ -21,22 +22,12 @@ class GaussianNoise(AugmentationOp):
|
|
|
21
22
|
std: float = 0.1
|
|
22
23
|
|
|
23
24
|
def apply(self, x: Any, *, rng: np.random.Generator, ctx: AugmentationContext) -> Any: # noqa: ARG002
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import importlib
|
|
31
|
-
|
|
32
|
-
torch = importlib.import_module("torch")
|
|
33
|
-
seed = int(rng.integers(0, 1 << 31))
|
|
34
|
-
gen = torch.Generator(device=x.device).manual_seed(seed)
|
|
35
|
-
noise = torch.randn(x.shape, generator=gen, device=x.device, dtype=x.dtype) * std
|
|
36
|
-
return x + noise
|
|
37
|
-
arr = np.asarray(x)
|
|
38
|
-
noise = rng.normal(0.0, std, size=arr.shape).astype(arr.dtype, copy=False)
|
|
39
|
-
return arr + noise
|
|
25
|
+
return apply_gaussian_noise(
|
|
26
|
+
x,
|
|
27
|
+
std=self.std,
|
|
28
|
+
rng=rng,
|
|
29
|
+
is_torch_tensor_fn=is_torch_tensor,
|
|
30
|
+
)
|
|
40
31
|
|
|
41
32
|
|
|
42
33
|
@register_op("tabular.feature_dropout")
|
|
@@ -32,9 +32,19 @@ class Lowercase(AugmentationOp):
|
|
|
32
32
|
return out if many else out[0]
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
class _PerItemTextOp(AugmentationOp):
|
|
36
|
+
def _apply_one(self, s: str, *, rng: np.random.Generator) -> str:
|
|
37
|
+
raise NotImplementedError
|
|
38
|
+
|
|
39
|
+
def apply(self, x: Any, *, rng: np.random.Generator, ctx: AugmentationContext) -> Any: # noqa: ARG002
|
|
40
|
+
items, many = _as_list(x)
|
|
41
|
+
out = [self._apply_one(s, rng=rng) for s in items]
|
|
42
|
+
return out if many else out[0]
|
|
43
|
+
|
|
44
|
+
|
|
35
45
|
@register_op("text.word_dropout")
|
|
36
46
|
@dataclass
|
|
37
|
-
class WordDropout(
|
|
47
|
+
class WordDropout(_PerItemTextOp):
|
|
38
48
|
"""Randomly drop words from whitespace-tokenized text."""
|
|
39
49
|
|
|
40
50
|
op_id: str = "text.word_dropout"
|
|
@@ -53,15 +63,10 @@ class WordDropout(AugmentationOp):
|
|
|
53
63
|
keep = [tokens[int(rng.integers(0, len(tokens)))]]
|
|
54
64
|
return " ".join(keep)
|
|
55
65
|
|
|
56
|
-
def apply(self, x: Any, *, rng: np.random.Generator, ctx: AugmentationContext) -> Any: # noqa: ARG002
|
|
57
|
-
items, many = _as_list(x)
|
|
58
|
-
out = [self._apply_one(s, rng=rng) for s in items]
|
|
59
|
-
return out if many else out[0]
|
|
60
|
-
|
|
61
66
|
|
|
62
67
|
@register_op("text.random_swap")
|
|
63
68
|
@dataclass
|
|
64
|
-
class RandomSwap(
|
|
69
|
+
class RandomSwap(_PerItemTextOp):
|
|
65
70
|
"""Randomly swap two words N times."""
|
|
66
71
|
|
|
67
72
|
op_id: str = "text.random_swap"
|
|
@@ -79,8 +84,3 @@ class RandomSwap(AugmentationOp):
|
|
|
79
84
|
j = int(j)
|
|
80
85
|
tokens[i], tokens[j] = tokens[j], tokens[i]
|
|
81
86
|
return " ".join(tokens)
|
|
82
|
-
|
|
83
|
-
def apply(self, x: Any, *, rng: np.random.Generator, ctx: AugmentationContext) -> Any: # noqa: ARG002
|
|
84
|
-
items, many = _as_list(x)
|
|
85
|
-
out = [self._apply_one(s, rng=rng) for s in items]
|
|
86
|
-
return out if many else out[0]
|
|
@@ -5,6 +5,8 @@ from typing import Any
|
|
|
5
5
|
|
|
6
6
|
import numpy as np
|
|
7
7
|
|
|
8
|
+
from modssc.numpy_utils import to_numpy
|
|
9
|
+
|
|
8
10
|
from .types import Backend
|
|
9
11
|
|
|
10
12
|
|
|
@@ -20,19 +22,6 @@ def is_torch_tensor(x: Any) -> bool:
|
|
|
20
22
|
return hasattr(x, "shape") and hasattr(x, "dtype") and hasattr(x, "device")
|
|
21
23
|
|
|
22
24
|
|
|
23
|
-
def to_numpy(x: Any) -> np.ndarray:
|
|
24
|
-
"""Best-effort conversion to numpy (detaches torch tensors)."""
|
|
25
|
-
if isinstance(x, np.ndarray):
|
|
26
|
-
return x
|
|
27
|
-
if hasattr(x, "detach"):
|
|
28
|
-
x = x.detach()
|
|
29
|
-
if hasattr(x, "cpu"):
|
|
30
|
-
x = x.cpu()
|
|
31
|
-
if hasattr(x, "numpy"):
|
|
32
|
-
return x.numpy()
|
|
33
|
-
return np.asarray(x)
|
|
34
|
-
|
|
35
|
-
|
|
36
25
|
def _u64_from_bytes(b: bytes) -> int:
|
|
37
26
|
return int.from_bytes(b[:8], "little", signed=False)
|
|
38
27
|
|
|
@@ -4,7 +4,6 @@ import contextlib
|
|
|
4
4
|
import os
|
|
5
5
|
import shutil
|
|
6
6
|
import sqlite3
|
|
7
|
-
import tempfile
|
|
8
7
|
from collections.abc import Iterable, Iterator
|
|
9
8
|
from contextlib import contextmanager
|
|
10
9
|
from dataclasses import dataclass
|
|
@@ -15,6 +14,7 @@ from platformdirs import user_cache_dir
|
|
|
15
14
|
|
|
16
15
|
from modssc.data_loader.errors import ManifestError
|
|
17
16
|
from modssc.data_loader.manifest import Manifest, read_manifest
|
|
17
|
+
from modssc.io_utils import atomic_write_text as _atomic_write_text
|
|
18
18
|
|
|
19
19
|
CACHE_ENV = "MODSSC_CACHE_DIR"
|
|
20
20
|
CACHE_ROOT_ENV = "MODSSC_CACHE_ROOT"
|
|
@@ -123,15 +123,7 @@ def read_cached_manifest(layout: CacheLayout, fingerprint: str) -> Manifest:
|
|
|
123
123
|
|
|
124
124
|
|
|
125
125
|
def atomic_write_text(path: Path, text: str) -> None:
|
|
126
|
-
path
|
|
127
|
-
with tempfile.NamedTemporaryFile(
|
|
128
|
-
"w", delete=False, dir=str(path.parent), encoding="utf-8"
|
|
129
|
-
) as tmp:
|
|
130
|
-
tmp.write(text)
|
|
131
|
-
tmp.flush()
|
|
132
|
-
os.fsync(tmp.fileno())
|
|
133
|
-
tmp_path = Path(tmp.name)
|
|
134
|
-
tmp_path.replace(path)
|
|
126
|
+
_atomic_write_text(path, text)
|
|
135
127
|
|
|
136
128
|
|
|
137
129
|
def dir_size_bytes(path: Path) -> int:
|
|
@@ -2,6 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
+
from modssc.dependency_errors import MissingExtraErrorMessageMixin
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
class DataLoaderError(RuntimeError):
|
|
7
9
|
"""Base error for modssc.data_loader."""
|
|
@@ -23,19 +25,12 @@ class ProviderNotFoundError(DataLoaderError):
|
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
@dataclass(frozen=True)
|
|
26
|
-
class OptionalDependencyError(DataLoaderError):
|
|
28
|
+
class OptionalDependencyError(MissingExtraErrorMessageMixin, DataLoaderError):
|
|
27
29
|
"""Raised when an optional dependency (extra) required by a provider is missing."""
|
|
28
30
|
|
|
29
31
|
extra: str
|
|
30
32
|
purpose: str | None = None
|
|
31
33
|
|
|
32
|
-
def __str__(self) -> str:
|
|
33
|
-
msg = f"Missing optional dependency extra: {self.extra!r}."
|
|
34
|
-
if self.purpose:
|
|
35
|
-
msg += f" Required for: {self.purpose}."
|
|
36
|
-
msg += f' Install with: pip install "modssc[{self.extra}]"'
|
|
37
|
-
return msg
|
|
38
|
-
|
|
39
34
|
|
|
40
35
|
class DatasetNotCachedError(DataLoaderError):
|
|
41
36
|
def __init__(self, dataset_id: str) -> None:
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def to_jsonable(obj: Any) -> Any:
|
|
11
|
+
if obj is None:
|
|
12
|
+
return None
|
|
13
|
+
if isinstance(obj, (bool, int, float, str)):
|
|
14
|
+
return obj
|
|
15
|
+
if isinstance(obj, Path):
|
|
16
|
+
return str(obj)
|
|
17
|
+
if isinstance(obj, np.ndarray):
|
|
18
|
+
return {"__type__": "ndarray", "shape": list(obj.shape), "dtype": str(obj.dtype)}
|
|
19
|
+
if hasattr(obj, "shape") and hasattr(obj, "dtype"):
|
|
20
|
+
try:
|
|
21
|
+
shape = list(obj.shape)
|
|
22
|
+
except Exception:
|
|
23
|
+
shape = None
|
|
24
|
+
return {
|
|
25
|
+
"__type__": type(obj).__name__,
|
|
26
|
+
"shape": shape,
|
|
27
|
+
"dtype": str(getattr(obj, "dtype", "")),
|
|
28
|
+
}
|
|
29
|
+
if isinstance(obj, Mapping):
|
|
30
|
+
return {str(k): to_jsonable(v) for k, v in obj.items()}
|
|
31
|
+
if isinstance(obj, (list, tuple)):
|
|
32
|
+
if len(obj) > 50:
|
|
33
|
+
return {"__type__": type(obj).__name__, "len": len(obj)}
|
|
34
|
+
return [to_jsonable(v) for v in obj]
|
|
35
|
+
return {"__type__": type(obj).__name__}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def mapping_to_jsonable(meta: Mapping[str, Any]) -> dict[str, Any]:
|
|
39
|
+
return {str(k): to_jsonable(v) for k, v in meta.items()}
|
|
@@ -9,8 +9,7 @@ from datetime import datetime, timezone
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
|
-
import
|
|
13
|
-
|
|
12
|
+
from modssc.data_loader.json_utils import to_jsonable as _jsonable
|
|
14
13
|
from modssc.data_loader.types import DatasetIdentity, LoadedDataset
|
|
15
14
|
|
|
16
15
|
|
|
@@ -22,34 +21,6 @@ def python_version() -> str:
|
|
|
22
21
|
return sys.version.split()[0]
|
|
23
22
|
|
|
24
23
|
|
|
25
|
-
def _jsonable(obj: Any) -> Any:
|
|
26
|
-
if obj is None:
|
|
27
|
-
return None
|
|
28
|
-
if isinstance(obj, (bool, int, float, str)):
|
|
29
|
-
return obj
|
|
30
|
-
if isinstance(obj, Path):
|
|
31
|
-
return str(obj)
|
|
32
|
-
if isinstance(obj, np.ndarray):
|
|
33
|
-
return {"__type__": "ndarray", "shape": list(obj.shape), "dtype": str(obj.dtype)}
|
|
34
|
-
if hasattr(obj, "shape") and hasattr(obj, "dtype"):
|
|
35
|
-
try:
|
|
36
|
-
shape = list(obj.shape)
|
|
37
|
-
except Exception:
|
|
38
|
-
shape = None
|
|
39
|
-
return {
|
|
40
|
-
"__type__": type(obj).__name__,
|
|
41
|
-
"shape": shape,
|
|
42
|
-
"dtype": str(getattr(obj, "dtype", "")),
|
|
43
|
-
}
|
|
44
|
-
if isinstance(obj, Mapping):
|
|
45
|
-
return {str(k): _jsonable(v) for k, v in obj.items()}
|
|
46
|
-
if isinstance(obj, (list, tuple)):
|
|
47
|
-
if len(obj) > 50:
|
|
48
|
-
return {"__type__": type(obj).__name__, "len": len(obj)}
|
|
49
|
-
return [_jsonable(v) for v in obj]
|
|
50
|
-
return {"__type__": type(obj).__name__}
|
|
51
|
-
|
|
52
|
-
|
|
53
24
|
def dataset_summary(ds: LoadedDataset) -> dict[str, Any]:
|
|
54
25
|
def shape_dtype(x: Any) -> dict[str, Any]:
|
|
55
26
|
if x is None:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
|
|
7
|
+
from modssc.data_loader.types import Split
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def normalize_filter(values: Any) -> list[Any] | None:
|
|
11
|
+
if values is None:
|
|
12
|
+
return None
|
|
13
|
+
if isinstance(values, (list, tuple, set, np.ndarray)):
|
|
14
|
+
return list(values)
|
|
15
|
+
return [values]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def apply_class_filter(
|
|
19
|
+
X: np.ndarray, y: np.ndarray, *, class_filter: list[Any] | None
|
|
20
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
|
21
|
+
if class_filter is None:
|
|
22
|
+
return X, y
|
|
23
|
+
mask = np.isin(y, np.asarray(class_filter))
|
|
24
|
+
return X[mask], y[mask]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def limit_samples(
|
|
28
|
+
X: np.ndarray, y: np.ndarray, *, max_samples: int | None, seed: int | None
|
|
29
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
|
30
|
+
if max_samples is None:
|
|
31
|
+
return X, y
|
|
32
|
+
n = int(y.shape[0])
|
|
33
|
+
max_n = int(max_samples)
|
|
34
|
+
if max_n <= 0 or n == 0:
|
|
35
|
+
return X[:0], y[:0]
|
|
36
|
+
take = min(n, max_n)
|
|
37
|
+
idx = np.arange(n, dtype=np.int64)
|
|
38
|
+
if seed is not None:
|
|
39
|
+
rng = np.random.default_rng(int(seed))
|
|
40
|
+
rng.shuffle(idx)
|
|
41
|
+
return X[idx[:take]], y[idx[:take]]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def apply_limits(
|
|
45
|
+
X: np.ndarray,
|
|
46
|
+
y: np.ndarray,
|
|
47
|
+
*,
|
|
48
|
+
class_filter: list[Any] | None,
|
|
49
|
+
max_samples: int | None,
|
|
50
|
+
seed: int | None,
|
|
51
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
|
52
|
+
X, y = apply_class_filter(X, y, class_filter=class_filter)
|
|
53
|
+
X, y = limit_samples(X, y, max_samples=max_samples, seed=seed)
|
|
54
|
+
return X, y
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def apply_limits_to_split(
|
|
58
|
+
split: Split | None,
|
|
59
|
+
*,
|
|
60
|
+
class_filter: list[Any] | None,
|
|
61
|
+
max_samples: int | None,
|
|
62
|
+
seed: int | None,
|
|
63
|
+
) -> Split | None:
|
|
64
|
+
if split is None:
|
|
65
|
+
return None
|
|
66
|
+
X = np.asarray(split.X)
|
|
67
|
+
y = np.asarray(split.y)
|
|
68
|
+
X, y = apply_limits(
|
|
69
|
+
X,
|
|
70
|
+
y,
|
|
71
|
+
class_filter=class_filter,
|
|
72
|
+
max_samples=max_samples,
|
|
73
|
+
seed=seed,
|
|
74
|
+
)
|
|
75
|
+
return Split(X=X, y=y)
|
|
@@ -8,68 +8,39 @@ import numpy as np
|
|
|
8
8
|
|
|
9
9
|
from modssc.data_loader.optional import optional_import
|
|
10
10
|
from modssc.data_loader.providers.base import BaseProvider
|
|
11
|
+
from modssc.data_loader.providers.common import (
|
|
12
|
+
apply_class_filter,
|
|
13
|
+
apply_limits_to_split,
|
|
14
|
+
limit_samples,
|
|
15
|
+
normalize_filter,
|
|
16
|
+
)
|
|
11
17
|
from modssc.data_loader.types import DatasetIdentity, LoadedDataset, Split
|
|
12
18
|
from modssc.data_loader.uri import ParsedURI
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
ref = ref.strip()
|
|
17
|
-
if "/" in ref:
|
|
18
|
-
name, cfg = ref.split("/", 1)
|
|
19
|
-
name = name.strip()
|
|
20
|
-
cfg = cfg.strip() or None
|
|
21
|
-
return name, cfg
|
|
22
|
-
return ref, None
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def _normalize_filter(values: Any) -> list[Any] | None:
|
|
26
|
-
if values is None:
|
|
27
|
-
return None
|
|
28
|
-
if isinstance(values, (list, tuple, set, np.ndarray)):
|
|
29
|
-
return list(values)
|
|
30
|
-
return [values]
|
|
20
|
+
_apply_limits = apply_limits_to_split
|
|
21
|
+
_normalize_filter = normalize_filter
|
|
31
22
|
|
|
32
23
|
|
|
33
24
|
def _apply_class_filter(
|
|
34
25
|
X: np.ndarray, y: np.ndarray, *, class_filter: list[Any] | None
|
|
35
26
|
) -> tuple[np.ndarray, np.ndarray]:
|
|
36
|
-
|
|
37
|
-
return X, y
|
|
38
|
-
mask = np.isin(y, np.asarray(class_filter))
|
|
39
|
-
return X[mask], y[mask]
|
|
27
|
+
return apply_class_filter(X, y, class_filter=class_filter)
|
|
40
28
|
|
|
41
29
|
|
|
42
30
|
def _limit_samples(
|
|
43
31
|
X: np.ndarray, y: np.ndarray, *, max_samples: int | None, seed: int | None
|
|
44
32
|
) -> tuple[np.ndarray, np.ndarray]:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return X[idx[:take]], y[idx[:take]]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def _apply_limits(
|
|
60
|
-
split: Split | None,
|
|
61
|
-
*,
|
|
62
|
-
class_filter: list[Any] | None,
|
|
63
|
-
max_samples: int | None,
|
|
64
|
-
seed: int | None,
|
|
65
|
-
) -> Split | None:
|
|
66
|
-
if split is None:
|
|
67
|
-
return None
|
|
68
|
-
X = np.asarray(split.X)
|
|
69
|
-
y = np.asarray(split.y)
|
|
70
|
-
X, y = _apply_class_filter(X, y, class_filter=class_filter)
|
|
71
|
-
X, y = _limit_samples(X, y, max_samples=max_samples, seed=seed)
|
|
72
|
-
return Split(X=X, y=y)
|
|
33
|
+
return limit_samples(X, y, max_samples=max_samples, seed=seed)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _split_ref(ref: str) -> tuple[str, str | None]:
|
|
37
|
+
ref = ref.strip()
|
|
38
|
+
if "/" in ref:
|
|
39
|
+
name, cfg = ref.split("/", 1)
|
|
40
|
+
name = name.strip()
|
|
41
|
+
cfg = cfg.strip() or None
|
|
42
|
+
return name, cfg
|
|
43
|
+
return ref, None
|
|
73
44
|
|
|
74
45
|
|
|
75
46
|
class HuggingFaceDatasetsProvider(BaseProvider):
|
|
@@ -8,9 +8,18 @@ import numpy as np
|
|
|
8
8
|
|
|
9
9
|
from modssc.data_loader.optional import optional_import
|
|
10
10
|
from modssc.data_loader.providers.base import BaseProvider
|
|
11
|
+
from modssc.data_loader.providers.common import (
|
|
12
|
+
apply_class_filter,
|
|
13
|
+
limit_samples,
|
|
14
|
+
normalize_filter,
|
|
15
|
+
)
|
|
11
16
|
from modssc.data_loader.types import DatasetIdentity, LoadedDataset, Split
|
|
12
17
|
from modssc.data_loader.uri import ParsedURI
|
|
13
18
|
|
|
19
|
+
_apply_class_filter = apply_class_filter
|
|
20
|
+
_limit_samples = limit_samples
|
|
21
|
+
_normalize_filter = normalize_filter
|
|
22
|
+
|
|
14
23
|
|
|
15
24
|
def _parse_openml_ref(ref: str) -> dict[str, Any]:
|
|
16
25
|
ref = ref.strip()
|
|
@@ -34,40 +43,6 @@ def _parse_openml_ref(ref: str) -> dict[str, Any]:
|
|
|
34
43
|
return out
|
|
35
44
|
|
|
36
45
|
|
|
37
|
-
def _normalize_filter(values: Any) -> list[Any] | None:
|
|
38
|
-
if values is None:
|
|
39
|
-
return None
|
|
40
|
-
if isinstance(values, (list, tuple, set, np.ndarray)):
|
|
41
|
-
return list(values)
|
|
42
|
-
return [values]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def _apply_class_filter(
|
|
46
|
-
X: np.ndarray, y: np.ndarray, *, class_filter: list[Any] | None
|
|
47
|
-
) -> tuple[np.ndarray, np.ndarray]:
|
|
48
|
-
if class_filter is None:
|
|
49
|
-
return X, y
|
|
50
|
-
mask = np.isin(y, np.asarray(class_filter))
|
|
51
|
-
return X[mask], y[mask]
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def _limit_samples(
|
|
55
|
-
X: np.ndarray, y: np.ndarray, *, max_samples: int | None, seed: int | None
|
|
56
|
-
) -> tuple[np.ndarray, np.ndarray]:
|
|
57
|
-
if max_samples is None:
|
|
58
|
-
return X, y
|
|
59
|
-
n = int(y.shape[0])
|
|
60
|
-
max_n = int(max_samples)
|
|
61
|
-
if max_n <= 0 or n == 0:
|
|
62
|
-
return X[:0], y[:0]
|
|
63
|
-
take = min(n, max_n)
|
|
64
|
-
idx = np.arange(n, dtype=np.int64)
|
|
65
|
-
if seed is not None:
|
|
66
|
-
rng = np.random.default_rng(int(seed))
|
|
67
|
-
rng.shuffle(idx)
|
|
68
|
-
return X[idx[:take]], y[idx[:take]]
|
|
69
|
-
|
|
70
|
-
|
|
71
46
|
class OpenMLProvider(BaseProvider):
|
|
72
47
|
name = "openml"
|
|
73
48
|
required_extra = "openml"
|
|
@@ -9,6 +9,7 @@ import numpy as np
|
|
|
9
9
|
|
|
10
10
|
from modssc.data_loader.optional import optional_import
|
|
11
11
|
from modssc.data_loader.providers.base import BaseProvider
|
|
12
|
+
from modssc.data_loader.providers.common import normalize_filter as _normalize_filter
|
|
12
13
|
from modssc.data_loader.types import DatasetIdentity, LoadedDataset, Split
|
|
13
14
|
from modssc.data_loader.uri import ParsedURI
|
|
14
15
|
|
|
@@ -163,14 +164,6 @@ def _to_numpy(x: Any) -> np.ndarray:
|
|
|
163
164
|
return np.asarray(obj)
|
|
164
165
|
|
|
165
166
|
|
|
166
|
-
def _normalize_filter(values: Any) -> list[Any] | None:
|
|
167
|
-
if values is None:
|
|
168
|
-
return None
|
|
169
|
-
if isinstance(values, (list, tuple, set, np.ndarray)):
|
|
170
|
-
return list(values)
|
|
171
|
-
return [values]
|
|
172
|
-
|
|
173
|
-
|
|
174
167
|
def _pad_labels(y: np.ndarray, n_nodes: int) -> np.ndarray:
|
|
175
168
|
if int(y.shape[0]) >= n_nodes:
|
|
176
169
|
return y
|