modssc 0.0.4__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.0.4/.editorconfig +18 -0
- modssc-0.0.4/.github/CODEOWNERS +1 -0
- modssc-0.0.4/.github/CODE_OF_CONDUCT.md +8 -0
- modssc-0.0.4/.github/CONTRIBUTING.md +13 -0
- modssc-0.0.4/.github/GOVERNANCE.md +22 -0
- modssc-0.0.4/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
- modssc-0.0.4/.github/ISSUE_TEMPLATE/config.yml +5 -0
- modssc-0.0.4/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
- modssc-0.0.4/.github/ISSUE_TEMPLATE/new_method.yml +71 -0
- modssc-0.0.4/.github/SECURITY.md +12 -0
- modssc-0.0.4/.github/dependabot.yml +6 -0
- modssc-0.0.4/.github/pull_request_template.md +11 -0
- modssc-0.0.4/.github/workflows/ci.yml +106 -0
- modssc-0.0.4/.github/workflows/docs.yml +72 -0
- modssc-0.0.4/.github/workflows/release.yml +79 -0
- modssc-0.0.4/.gitignore +45 -0
- modssc-0.0.4/.pre-commit-config.yaml +31 -0
- modssc-0.0.4/CHANGELOG.md +17 -0
- modssc-0.0.4/CITATION.bib +9 -0
- modssc-0.0.4/CITATION.cff +29 -0
- modssc-0.0.4/LICENSE +21 -0
- modssc-0.0.4/Makefile +53 -0
- modssc-0.0.4/PKG-INFO +230 -0
- modssc-0.0.4/README.md +64 -0
- modssc-0.0.4/codecov.yml +34 -0
- modssc-0.0.4/docs/assets/logo.jpeg +0 -0
- modssc-0.0.4/docs/development/contributing.md +109 -0
- modssc-0.0.4/docs/development/release-process.md +57 -0
- modssc-0.0.4/docs/getting-started/concepts.md +95 -0
- modssc-0.0.4/docs/getting-started/installation.md +79 -0
- modssc-0.0.4/docs/getting-started/quickstart.md +76 -0
- modssc-0.0.4/docs/how-to/augmentation.md +84 -0
- modssc-0.0.4/docs/how-to/datasets.md +79 -0
- modssc-0.0.4/docs/how-to/evaluation.md +73 -0
- modssc-0.0.4/docs/how-to/graph.md +84 -0
- modssc-0.0.4/docs/how-to/hpo.md +68 -0
- modssc-0.0.4/docs/how-to/preprocess.md +85 -0
- modssc-0.0.4/docs/how-to/sampling.md +99 -0
- modssc-0.0.4/docs/how-to/views.md +84 -0
- modssc-0.0.4/docs/index.md +100 -0
- modssc-0.0.4/docs/javascripts/sidebar-toggle.js +102 -0
- modssc-0.0.4/docs/reference/api/data-augmentation.md +49 -0
- modssc-0.0.4/docs/reference/api/data-loader.md +45 -0
- modssc-0.0.4/docs/reference/api/device.md +41 -0
- modssc-0.0.4/docs/reference/api/evaluation.md +43 -0
- modssc-0.0.4/docs/reference/api/graph.md +51 -0
- modssc-0.0.4/docs/reference/api/hpo.md +45 -0
- modssc-0.0.4/docs/reference/api/index.md +55 -0
- modssc-0.0.4/docs/reference/api/inductive.md +49 -0
- modssc-0.0.4/docs/reference/api/logging.md +41 -0
- modssc-0.0.4/docs/reference/api/preprocess.md +47 -0
- modssc-0.0.4/docs/reference/api/sampling.md +48 -0
- modssc-0.0.4/docs/reference/api/supervised.md +41 -0
- modssc-0.0.4/docs/reference/api/transductive.md +54 -0
- modssc-0.0.4/docs/reference/api/views.md +50 -0
- modssc-0.0.4/docs/reference/benchmarks.md +68 -0
- modssc-0.0.4/docs/reference/catalogs.md +167 -0
- modssc-0.0.4/docs/reference/cli.md +264 -0
- modssc-0.0.4/docs/reference/configuration.md +403 -0
- modssc-0.0.4/docs/stylesheets/extra.css +348 -0
- modssc-0.0.4/docs/tutorials/inductive-toy.md +164 -0
- modssc-0.0.4/docs/tutorials/transductive-toy.md +168 -0
- modssc-0.0.4/examples/00_inductive_toy_pseudo_label.py +68 -0
- modssc-0.0.4/examples/01_evaluation_quickstart.py +30 -0
- modssc-0.0.4/examples/01_transductive_toy_label_propagation.py +70 -0
- modssc-0.0.4/examples/02_hpo_primitives_quickstart.py +23 -0
- modssc-0.0.4/examples/02_sampling_toy_holdout.py +39 -0
- modssc-0.0.4/examples/03_cli_smoke.py +36 -0
- modssc-0.0.4/examples/04_inductive_cotraining_two_views.py +81 -0
- modssc-0.0.4/mkdocs.yml +111 -0
- modssc-0.0.4/notebooks/00_cli_tour.ipynb +289 -0
- modssc-0.0.4/notebooks/01_data_loader_end_to_end.ipynb +293 -0
- modssc-0.0.4/notebooks/02_sampling_quickstart.ipynb +340 -0
- modssc-0.0.4/notebooks/03_preprocess_quickstart.ipynb +1026 -0
- modssc-0.0.4/notebooks/04_data_augmentation_quickstart.ipynb +178 -0
- modssc-0.0.4/notebooks/05_views_quickstart.ipynb +214 -0
- modssc-0.0.4/notebooks/06_graph_quickstart.ipynb +355 -0
- modssc-0.0.4/notebooks/07_supervised_quickstart.ipynb +194 -0
- modssc-0.0.4/notebooks/08_inductive_quickstart.ipynb +105 -0
- modssc-0.0.4/notebooks/09_transductive_quickstart.ipynb +272 -0
- modssc-0.0.4/notebooks/10_hpo_bench_smoke.ipynb +85 -0
- modssc-0.0.4/pyproject.toml +271 -0
- modssc-0.0.4/src/modssc/__about__.py +4 -0
- modssc-0.0.4/src/modssc/__init__.py +5 -0
- modssc-0.0.4/src/modssc/__main__.py +6 -0
- modssc-0.0.4/src/modssc/cli/__init__.py +5 -0
- modssc-0.0.4/src/modssc/cli/_utils.py +44 -0
- modssc-0.0.4/src/modssc/cli/app.py +164 -0
- modssc-0.0.4/src/modssc/cli/augmentation.py +45 -0
- modssc-0.0.4/src/modssc/cli/datasets.py +160 -0
- modssc-0.0.4/src/modssc/cli/evaluation.py +74 -0
- modssc-0.0.4/src/modssc/cli/graph.py +325 -0
- modssc-0.0.4/src/modssc/cli/inductive.py +60 -0
- modssc-0.0.4/src/modssc/cli/logging.py +10 -0
- modssc-0.0.4/src/modssc/cli/preprocess.py +137 -0
- modssc-0.0.4/src/modssc/cli/sampling.py +106 -0
- modssc-0.0.4/src/modssc/cli/supervised.py +45 -0
- modssc-0.0.4/src/modssc/cli/transductive.py +60 -0
- modssc-0.0.4/src/modssc/data_augmentation/__init__.py +45 -0
- modssc-0.0.4/src/modssc/data_augmentation/api.py +91 -0
- modssc-0.0.4/src/modssc/data_augmentation/errors.py +17 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/__init__.py +15 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/audio.py +66 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/base.py +5 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/core.py +47 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/graph.py +147 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/tabular.py +67 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/text.py +86 -0
- modssc-0.0.4/src/modssc/data_augmentation/ops/vision.py +206 -0
- modssc-0.0.4/src/modssc/data_augmentation/optional.py +14 -0
- modssc-0.0.4/src/modssc/data_augmentation/plan.py +37 -0
- modssc-0.0.4/src/modssc/data_augmentation/registry.py +76 -0
- modssc-0.0.4/src/modssc/data_augmentation/types.py +80 -0
- modssc-0.0.4/src/modssc/data_augmentation/utils.py +98 -0
- modssc-0.0.4/src/modssc/data_loader/__init__.py +66 -0
- modssc-0.0.4/src/modssc/data_loader/api.py +414 -0
- modssc-0.0.4/src/modssc/data_loader/cache.py +317 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/__init__.py +29 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/audio.py +26 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/graph.py +38 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/tabular.py +39 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/text.py +88 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/toy.py +22 -0
- modssc-0.0.4/src/modssc/data_loader/catalog/vision.py +56 -0
- modssc-0.0.4/src/modssc/data_loader/errors.py +49 -0
- modssc-0.0.4/src/modssc/data_loader/formats.py +41 -0
- modssc-0.0.4/src/modssc/data_loader/manifest.py +149 -0
- modssc-0.0.4/src/modssc/data_loader/numpy_adapter.py +66 -0
- modssc-0.0.4/src/modssc/data_loader/optional.py +23 -0
- modssc-0.0.4/src/modssc/data_loader/providers/__init__.py +39 -0
- modssc-0.0.4/src/modssc/data_loader/providers/base.py +34 -0
- modssc-0.0.4/src/modssc/data_loader/providers/hf.py +181 -0
- modssc-0.0.4/src/modssc/data_loader/providers/openml.py +168 -0
- modssc-0.0.4/src/modssc/data_loader/providers/pyg.py +248 -0
- modssc-0.0.4/src/modssc/data_loader/providers/tfds.py +98 -0
- modssc-0.0.4/src/modssc/data_loader/providers/torchaudio.py +223 -0
- modssc-0.0.4/src/modssc/data_loader/providers/torchvision.py +147 -0
- modssc-0.0.4/src/modssc/data_loader/providers/toy.py +68 -0
- modssc-0.0.4/src/modssc/data_loader/storage/__init__.py +3 -0
- modssc-0.0.4/src/modssc/data_loader/storage/files.py +173 -0
- modssc-0.0.4/src/modssc/data_loader/types.py +177 -0
- modssc-0.0.4/src/modssc/data_loader/uri.py +33 -0
- modssc-0.0.4/src/modssc/device.py +74 -0
- modssc-0.0.4/src/modssc/evaluation/__init__.py +27 -0
- modssc-0.0.4/src/modssc/evaluation/metrics.py +139 -0
- modssc-0.0.4/src/modssc/graph/__init__.py +30 -0
- modssc-0.0.4/src/modssc/graph/adapters/__init__.py +1 -0
- modssc-0.0.4/src/modssc/graph/adapters/pyg.py +29 -0
- modssc-0.0.4/src/modssc/graph/artifacts.py +135 -0
- modssc-0.0.4/src/modssc/graph/cache.py +312 -0
- modssc-0.0.4/src/modssc/graph/construction/__init__.py +7 -0
- modssc-0.0.4/src/modssc/graph/construction/api.py +222 -0
- modssc-0.0.4/src/modssc/graph/construction/backends/__init__.py +4 -0
- modssc-0.0.4/src/modssc/graph/construction/backends/faiss_backend.py +140 -0
- modssc-0.0.4/src/modssc/graph/construction/backends/numpy_backend.py +270 -0
- modssc-0.0.4/src/modssc/graph/construction/backends/sklearn_backend.py +87 -0
- modssc-0.0.4/src/modssc/graph/construction/builder.py +144 -0
- modssc-0.0.4/src/modssc/graph/construction/ops/__init__.py +1 -0
- modssc-0.0.4/src/modssc/graph/construction/ops/normalize.py +48 -0
- modssc-0.0.4/src/modssc/graph/construction/ops/self_loops.py +32 -0
- modssc-0.0.4/src/modssc/graph/construction/ops/symmetrize.py +146 -0
- modssc-0.0.4/src/modssc/graph/construction/ops/weights.py +51 -0
- modssc-0.0.4/src/modssc/graph/construction/schemes/__init__.py +9 -0
- modssc-0.0.4/src/modssc/graph/construction/schemes/anchor.py +272 -0
- modssc-0.0.4/src/modssc/graph/errors.py +35 -0
- modssc-0.0.4/src/modssc/graph/featurization/__init__.py +7 -0
- modssc-0.0.4/src/modssc/graph/featurization/api.py +141 -0
- modssc-0.0.4/src/modssc/graph/featurization/ops/__init__.py +1 -0
- modssc-0.0.4/src/modssc/graph/featurization/ops/adjacency.py +59 -0
- modssc-0.0.4/src/modssc/graph/featurization/views/__init__.py +1 -0
- modssc-0.0.4/src/modssc/graph/featurization/views/attr.py +9 -0
- modssc-0.0.4/src/modssc/graph/featurization/views/diffusion.py +86 -0
- modssc-0.0.4/src/modssc/graph/featurization/views/struct.py +314 -0
- modssc-0.0.4/src/modssc/graph/fingerprint.py +98 -0
- modssc-0.0.4/src/modssc/graph/masks.py +69 -0
- modssc-0.0.4/src/modssc/graph/optional.py +43 -0
- modssc-0.0.4/src/modssc/graph/specs.py +302 -0
- modssc-0.0.4/src/modssc/graph/validation.py +49 -0
- modssc-0.0.4/src/modssc/hpo/__init__.py +13 -0
- modssc-0.0.4/src/modssc/hpo/patching.py +31 -0
- modssc-0.0.4/src/modssc/hpo/samplers.py +100 -0
- modssc-0.0.4/src/modssc/hpo/space.py +112 -0
- modssc-0.0.4/src/modssc/hpo/types.py +23 -0
- modssc-0.0.4/src/modssc/inductive/__init__.py +38 -0
- modssc-0.0.4/src/modssc/inductive/adapters/__init__.py +11 -0
- modssc-0.0.4/src/modssc/inductive/adapters/numpy.py +74 -0
- modssc-0.0.4/src/modssc/inductive/adapters/torch.py +153 -0
- modssc-0.0.4/src/modssc/inductive/backends/__init__.py +5 -0
- modssc-0.0.4/src/modssc/inductive/backends/torch_backend.py +47 -0
- modssc-0.0.4/src/modssc/inductive/base.py +50 -0
- modssc-0.0.4/src/modssc/inductive/deep/__init__.py +11 -0
- modssc-0.0.4/src/modssc/inductive/deep/bundles.py +684 -0
- modssc-0.0.4/src/modssc/inductive/deep/types.py +17 -0
- modssc-0.0.4/src/modssc/inductive/deep/validation.py +34 -0
- modssc-0.0.4/src/modssc/inductive/errors.py +32 -0
- modssc-0.0.4/src/modssc/inductive/methods/__init__.py +61 -0
- modssc-0.0.4/src/modssc/inductive/methods/adamatch.py +307 -0
- modssc-0.0.4/src/modssc/inductive/methods/adsh.py +370 -0
- modssc-0.0.4/src/modssc/inductive/methods/co_training.py +375 -0
- modssc-0.0.4/src/modssc/inductive/methods/comatch.py +573 -0
- modssc-0.0.4/src/modssc/inductive/methods/daso.py +556 -0
- modssc-0.0.4/src/modssc/inductive/methods/deep_co_training.py +413 -0
- modssc-0.0.4/src/modssc/inductive/methods/deep_utils.py +139 -0
- modssc-0.0.4/src/modssc/inductive/methods/defixmatch.py +338 -0
- modssc-0.0.4/src/modssc/inductive/methods/democratic_co_learning.py +516 -0
- modssc-0.0.4/src/modssc/inductive/methods/fixmatch.py +273 -0
- modssc-0.0.4/src/modssc/inductive/methods/flexmatch.py +372 -0
- modssc-0.0.4/src/modssc/inductive/methods/free_match.py +363 -0
- modssc-0.0.4/src/modssc/inductive/methods/mean_teacher.py +275 -0
- modssc-0.0.4/src/modssc/inductive/methods/meta_pseudo_labels.py +406 -0
- modssc-0.0.4/src/modssc/inductive/methods/mixmatch.py +339 -0
- modssc-0.0.4/src/modssc/inductive/methods/noisy_student.py +383 -0
- modssc-0.0.4/src/modssc/inductive/methods/pi_model.py +234 -0
- modssc-0.0.4/src/modssc/inductive/methods/pseudo_label.py +217 -0
- modssc-0.0.4/src/modssc/inductive/methods/s4vm.py +201 -0
- modssc-0.0.4/src/modssc/inductive/methods/self_training.py +481 -0
- modssc-0.0.4/src/modssc/inductive/methods/setred.py +506 -0
- modssc-0.0.4/src/modssc/inductive/methods/simclr_v2.py +565 -0
- modssc-0.0.4/src/modssc/inductive/methods/softmatch.py +382 -0
- modssc-0.0.4/src/modssc/inductive/methods/temporal_ensembling.py +283 -0
- modssc-0.0.4/src/modssc/inductive/methods/tri_training.py +299 -0
- modssc-0.0.4/src/modssc/inductive/methods/trinet.py +631 -0
- modssc-0.0.4/src/modssc/inductive/methods/tsvm.py +365 -0
- modssc-0.0.4/src/modssc/inductive/methods/uda.py +302 -0
- modssc-0.0.4/src/modssc/inductive/methods/utils.py +258 -0
- modssc-0.0.4/src/modssc/inductive/methods/vat.py +311 -0
- modssc-0.0.4/src/modssc/inductive/optional.py +15 -0
- modssc-0.0.4/src/modssc/inductive/registry.py +184 -0
- modssc-0.0.4/src/modssc/inductive/seed.py +38 -0
- modssc-0.0.4/src/modssc/inductive/types.py +42 -0
- modssc-0.0.4/src/modssc/inductive/validation.py +90 -0
- modssc-0.0.4/src/modssc/logging.py +109 -0
- modssc-0.0.4/src/modssc/preprocess/__init__.py +28 -0
- modssc-0.0.4/src/modssc/preprocess/api.py +748 -0
- modssc-0.0.4/src/modssc/preprocess/cache.py +309 -0
- modssc-0.0.4/src/modssc/preprocess/catalog.py +304 -0
- modssc-0.0.4/src/modssc/preprocess/errors.py +30 -0
- modssc-0.0.4/src/modssc/preprocess/fingerprint.py +36 -0
- modssc-0.0.4/src/modssc/preprocess/models.py +111 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/__init__.py +4 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/base.py +13 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/open_clip.py +71 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/sentence_transformers.py +44 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/stub.py +47 -0
- modssc-0.0.4/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +65 -0
- modssc-0.0.4/src/modssc/preprocess/numpy_adapter.py +32 -0
- modssc-0.0.4/src/modssc/preprocess/optional.py +28 -0
- modssc-0.0.4/src/modssc/preprocess/plan.py +93 -0
- modssc-0.0.4/src/modssc/preprocess/registry.py +69 -0
- modssc-0.0.4/src/modssc/preprocess/steps/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/audio/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/audio/load_waveform.py +133 -0
- modssc-0.0.4/src/modssc/preprocess/steps/audio/wav2vec2.py +35 -0
- modssc-0.0.4/src/modssc/preprocess/steps/base.py +49 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/cast_dtype.py +18 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/cast_fp16.py +18 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/copy_raw.py +17 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/ensure_2d.py +33 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/pca.py +64 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/random_projection.py +39 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/to_numpy.py +18 -0
- modssc-0.0.4/src/modssc/preprocess/steps/core/to_torch.py +52 -0
- modssc-0.0.4/src/modssc/preprocess/steps/embeddings/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/embeddings/auto.py +121 -0
- modssc-0.0.4/src/modssc/preprocess/steps/graph/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/graph/attach_edge_weight.py +25 -0
- modssc-0.0.4/src/modssc/preprocess/steps/graph/edge_sparsify.py +45 -0
- modssc-0.0.4/src/modssc/preprocess/steps/graph/node2vec.py +145 -0
- modssc-0.0.4/src/modssc/preprocess/steps/labels/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/labels/encode.py +18 -0
- modssc-0.0.4/src/modssc/preprocess/steps/labels/ensure_onehot.py +33 -0
- modssc-0.0.4/src/modssc/preprocess/steps/labels/to_numpy.py +18 -0
- modssc-0.0.4/src/modssc/preprocess/steps/labels/to_torch.py +54 -0
- modssc-0.0.4/src/modssc/preprocess/steps/tabular/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/tabular/one_hot.py +158 -0
- modssc-0.0.4/src/modssc/preprocess/steps/text/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/text/ensure_strings.py +16 -0
- modssc-0.0.4/src/modssc/preprocess/steps/text/hash_tokenizer.py +58 -0
- modssc-0.0.4/src/modssc/preprocess/steps/text/sentence_transformer.py +36 -0
- modssc-0.0.4/src/modssc/preprocess/steps/text/tfidf.py +63 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/__init__.py +1 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/channels_order.py +39 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/ensure_num_channels.py +48 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/layout.py +61 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/normalize.py +40 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/openclip.py +35 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/resize.py +43 -0
- modssc-0.0.4/src/modssc/preprocess/steps/vision/zca_whitening.py +66 -0
- modssc-0.0.4/src/modssc/preprocess/store.py +50 -0
- modssc-0.0.4/src/modssc/preprocess/types.py +74 -0
- modssc-0.0.4/src/modssc/sampling/__init__.py +48 -0
- modssc-0.0.4/src/modssc/sampling/api.py +449 -0
- modssc-0.0.4/src/modssc/sampling/errors.py +17 -0
- modssc-0.0.4/src/modssc/sampling/fingerprint.py +19 -0
- modssc-0.0.4/src/modssc/sampling/imbalance.py +61 -0
- modssc-0.0.4/src/modssc/sampling/labeling.py +141 -0
- modssc-0.0.4/src/modssc/sampling/plan.py +277 -0
- modssc-0.0.4/src/modssc/sampling/result.py +159 -0
- modssc-0.0.4/src/modssc/sampling/splitters.py +193 -0
- modssc-0.0.4/src/modssc/sampling/stats.py +74 -0
- modssc-0.0.4/src/modssc/sampling/storage.py +76 -0
- modssc-0.0.4/src/modssc/supervised/__init__.py +19 -0
- modssc-0.0.4/src/modssc/supervised/api.py +115 -0
- modssc-0.0.4/src/modssc/supervised/backends/__init__.py +3 -0
- modssc-0.0.4/src/modssc/supervised/backends/numpy/__init__.py +1 -0
- modssc-0.0.4/src/modssc/supervised/backends/numpy/knn.py +158 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/__init__.py +1 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/extra_trees.py +108 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/gradient_boosting.py +99 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/knn.py +94 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/linear_svm.py +98 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/logreg.py +109 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/naive_bayes.py +198 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/random_forest.py +108 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/ridge.py +107 -0
- modssc-0.0.4/src/modssc/supervised/backends/sklearn/svm_rbf.py +109 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/__init__.py +1 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/audio_cnn.py +297 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/audio_pretrained.py +231 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/image_cnn.py +288 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/image_pretrained.py +378 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/knn.py +180 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/logreg.py +150 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/mlp.py +200 -0
- modssc-0.0.4/src/modssc/supervised/backends/torch/text_cnn.py +258 -0
- modssc-0.0.4/src/modssc/supervised/base.py +82 -0
- modssc-0.0.4/src/modssc/supervised/errors.py +39 -0
- modssc-0.0.4/src/modssc/supervised/optional.py +37 -0
- modssc-0.0.4/src/modssc/supervised/registry.py +366 -0
- modssc-0.0.4/src/modssc/supervised/types.py +44 -0
- modssc-0.0.4/src/modssc/supervised/utils.py +58 -0
- modssc-0.0.4/src/modssc/transductive/__init__.py +27 -0
- modssc-0.0.4/src/modssc/transductive/adapters/__init__.py +1 -0
- modssc-0.0.4/src/modssc/transductive/adapters/pyg.py +73 -0
- modssc-0.0.4/src/modssc/transductive/backends/__init__.py +5 -0
- modssc-0.0.4/src/modssc/transductive/backends/numpy_backend.py +129 -0
- modssc-0.0.4/src/modssc/transductive/backends/torch_backend.py +177 -0
- modssc-0.0.4/src/modssc/transductive/base.py +55 -0
- modssc-0.0.4/src/modssc/transductive/errors.py +32 -0
- modssc-0.0.4/src/modssc/transductive/methods/__init__.py +26 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/__init__.py +11 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/graphmae2.py +48 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/llm_gnn.py +48 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/nodeformer.py +49 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/oft.py +48 -0
- modssc-0.0.4/src/modssc/transductive/methods/advanced/sgformer.py +48 -0
- modssc-0.0.4/src/modssc/transductive/methods/classic/__init__.py +20 -0
- modssc-0.0.4/src/modssc/transductive/methods/classic/graph_mincuts.py +278 -0
- modssc-0.0.4/src/modssc/transductive/methods/classic/label_propagation.py +323 -0
- modssc-0.0.4/src/modssc/transductive/methods/classic/label_spreading.py +299 -0
- modssc-0.0.4/src/modssc/transductive/methods/classic/tsvm.py +235 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/__init__.py +11 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/appnp.py +160 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/chebnet.py +169 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/common.py +405 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/dgi.py +208 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/gat.py +264 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/gcn.py +142 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/gcnii.py +165 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/grand.py +238 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/graphsage.py +141 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/node2vec.py +297 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/planetoid.py +212 -0
- modssc-0.0.4/src/modssc/transductive/methods/gnn/sgc.py +126 -0
- modssc-0.0.4/src/modssc/transductive/methods/pde/__init__.py +3 -0
- modssc-0.0.4/src/modssc/transductive/methods/pde/poisson_learning.py +340 -0
- modssc-0.0.4/src/modssc/transductive/methods/utils.py +228 -0
- modssc-0.0.4/src/modssc/transductive/operators/__init__.py +1 -0
- modssc-0.0.4/src/modssc/transductive/operators/clamp.py +36 -0
- modssc-0.0.4/src/modssc/transductive/operators/laplacian.py +60 -0
- modssc-0.0.4/src/modssc/transductive/operators/normalize.py +44 -0
- modssc-0.0.4/src/modssc/transductive/operators/spmm.py +47 -0
- modssc-0.0.4/src/modssc/transductive/optional.py +15 -0
- modssc-0.0.4/src/modssc/transductive/registry.py +145 -0
- modssc-0.0.4/src/modssc/transductive/solvers/__init__.py +1 -0
- modssc-0.0.4/src/modssc/transductive/solvers/cg.py +49 -0
- modssc-0.0.4/src/modssc/transductive/solvers/fixed_point.py +105 -0
- modssc-0.0.4/src/modssc/transductive/types.py +24 -0
- modssc-0.0.4/src/modssc/transductive/validation.py +89 -0
- modssc-0.0.4/src/modssc/views/__init__.py +23 -0
- modssc-0.0.4/src/modssc/views/api.py +251 -0
- modssc-0.0.4/src/modssc/views/errors.py +9 -0
- modssc-0.0.4/src/modssc/views/plan.py +128 -0
- modssc-0.0.4/src/modssc/views/types.py +35 -0
- modssc-0.0.4/tests/__init__.py +0 -0
- modssc-0.0.4/tests/cli/__init__.py +0 -0
- modssc-0.0.4/tests/cli/test_app.py +162 -0
- modssc-0.0.4/tests/cli/test_augmentation.py +52 -0
- modssc-0.0.4/tests/cli/test_augmentation_module.py +12 -0
- modssc-0.0.4/tests/cli/test_cache_commands.py +67 -0
- modssc-0.0.4/tests/cli/test_datasets.py +205 -0
- modssc-0.0.4/tests/cli/test_datasets_app.py +37 -0
- modssc-0.0.4/tests/cli/test_evaluation.py +168 -0
- modssc-0.0.4/tests/cli/test_graph.py +453 -0
- modssc-0.0.4/tests/cli/test_inductive_cli.py +50 -0
- modssc-0.0.4/tests/cli/test_log_level_option.py +37 -0
- modssc-0.0.4/tests/cli/test_main.py +26 -0
- modssc-0.0.4/tests/cli/test_main_datasets.py +19 -0
- modssc-0.0.4/tests/cli/test_preprocess.py +251 -0
- modssc-0.0.4/tests/cli/test_preprocess_json.py +30 -0
- modssc-0.0.4/tests/cli/test_sampling.py +401 -0
- modssc-0.0.4/tests/cli/test_supervised.py +55 -0
- modssc-0.0.4/tests/cli/test_utils.py +35 -0
- modssc-0.0.4/tests/cli/test_version.py +13 -0
- modssc-0.0.4/tests/data_augmentation/__init__.py +0 -0
- modssc-0.0.4/tests/data_augmentation/ops/__init__.py +0 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_audio.py +48 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_core_tabular.py +79 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_graph.py +34 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_graph_extra.py +130 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_text.py +26 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_text_extra.py +63 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_torch_mock.py +362 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_vision.py +180 -0
- modssc-0.0.4/tests/data_augmentation/ops/test_vision_numpy.py +45 -0
- modssc-0.0.4/tests/data_augmentation/test_api_registry.py +176 -0
- modssc-0.0.4/tests/data_augmentation/test_optional.py +16 -0
- modssc-0.0.4/tests/data_augmentation/test_pipeline.py +46 -0
- modssc-0.0.4/tests/data_augmentation/test_registry.py +26 -0
- modssc-0.0.4/tests/data_augmentation/test_types.py +22 -0
- modssc-0.0.4/tests/data_augmentation/test_utils.py +159 -0
- modssc-0.0.4/tests/data_loader/__init__.py +0 -0
- modssc-0.0.4/tests/data_loader/catalog/__init__.py +0 -0
- modssc-0.0.4/tests/data_loader/catalog/test_catalog.py +40 -0
- modssc-0.0.4/tests/data_loader/providers/__init__.py +0 -0
- modssc-0.0.4/tests/data_loader/providers/test_hf.py +203 -0
- modssc-0.0.4/tests/data_loader/providers/test_openml.py +194 -0
- modssc-0.0.4/tests/data_loader/providers/test_pyg.py +401 -0
- modssc-0.0.4/tests/data_loader/providers/test_registry.py +41 -0
- modssc-0.0.4/tests/data_loader/providers/test_stubs.py +191 -0
- modssc-0.0.4/tests/data_loader/providers/test_tfds.py +108 -0
- modssc-0.0.4/tests/data_loader/providers/test_torchaudio.py +278 -0
- modssc-0.0.4/tests/data_loader/providers/test_torchvision.py +142 -0
- modssc-0.0.4/tests/data_loader/storage/__init__.py +0 -0
- modssc-0.0.4/tests/data_loader/storage/test_edges_masks.py +51 -0
- modssc-0.0.4/tests/data_loader/storage/test_files.py +158 -0
- modssc-0.0.4/tests/data_loader/storage/test_roundtrip.py +26 -0
- modssc-0.0.4/tests/data_loader/test_api.py +283 -0
- modssc-0.0.4/tests/data_loader/test_api_branches.py +95 -0
- modssc-0.0.4/tests/data_loader/test_api_end_to_end.py +55 -0
- modssc-0.0.4/tests/data_loader/test_api_meta.py +46 -0
- modssc-0.0.4/tests/data_loader/test_cache.py +237 -0
- modssc-0.0.4/tests/data_loader/test_cache_index_and_gc.py +61 -0
- modssc-0.0.4/tests/data_loader/test_errors.py +36 -0
- modssc-0.0.4/tests/data_loader/test_fingerprint.py +53 -0
- modssc-0.0.4/tests/data_loader/test_formats.py +17 -0
- modssc-0.0.4/tests/data_loader/test_import_light.py +28 -0
- modssc-0.0.4/tests/data_loader/test_manifest.py +146 -0
- modssc-0.0.4/tests/data_loader/test_numpy_adapter.py +152 -0
- modssc-0.0.4/tests/data_loader/test_optional.py +36 -0
- modssc-0.0.4/tests/data_loader/test_types.py +105 -0
- modssc-0.0.4/tests/data_loader/test_uri.py +53 -0
- modssc-0.0.4/tests/evaluation/__init__.py +0 -0
- modssc-0.0.4/tests/evaluation/test_metrics.py +234 -0
- modssc-0.0.4/tests/graph/__init__.py +0 -0
- modssc-0.0.4/tests/graph/adapters/__init__.py +0 -0
- modssc-0.0.4/tests/graph/adapters/test_pyg.py +99 -0
- modssc-0.0.4/tests/graph/construction/__init__.py +0 -0
- modssc-0.0.4/tests/graph/construction/backends/__init__.py +0 -0
- modssc-0.0.4/tests/graph/construction/backends/test_backends.py +95 -0
- modssc-0.0.4/tests/graph/construction/backends/test_faiss_backend.py +134 -0
- modssc-0.0.4/tests/graph/construction/backends/test_numpy_backend.py +149 -0
- modssc-0.0.4/tests/graph/construction/backends/test_numpy_resume.py +61 -0
- modssc-0.0.4/tests/graph/construction/ops/__init__.py +0 -0
- modssc-0.0.4/tests/graph/construction/ops/test_ops.py +407 -0
- modssc-0.0.4/tests/graph/construction/schemes/__init__.py +0 -0
- modssc-0.0.4/tests/graph/construction/schemes/test_anchor.py +195 -0
- modssc-0.0.4/tests/graph/construction/test_api_coverage.py +150 -0
- modssc-0.0.4/tests/graph/construction/test_build_graph.py +121 -0
- modssc-0.0.4/tests/graph/construction/test_builder.py +226 -0
- modssc-0.0.4/tests/graph/construction/test_construction.py +368 -0
- modssc-0.0.4/tests/graph/featurization/__init__.py +0 -0
- modssc-0.0.4/tests/graph/featurization/ops/__init__.py +0 -0
- modssc-0.0.4/tests/graph/featurization/ops/test_adjacency.py +94 -0
- modssc-0.0.4/tests/graph/featurization/test_featurization.py +271 -0
- modssc-0.0.4/tests/graph/featurization/test_views.py +64 -0
- modssc-0.0.4/tests/graph/featurization/views/__init__.py +0 -0
- modssc-0.0.4/tests/graph/featurization/views/test_struct.py +322 -0
- modssc-0.0.4/tests/graph/featurization/views/test_struct_extra.py +195 -0
- modssc-0.0.4/tests/graph/test_artifacts.py +74 -0
- modssc-0.0.4/tests/graph/test_cache.py +537 -0
- modssc-0.0.4/tests/graph/test_cache_sklearn_backend.py +429 -0
- modssc-0.0.4/tests/graph/test_masks.py +89 -0
- modssc-0.0.4/tests/graph/test_optional.py +25 -0
- modssc-0.0.4/tests/graph/test_specs.py +79 -0
- modssc-0.0.4/tests/graph/test_specs_validation.py +177 -0
- modssc-0.0.4/tests/hpo/test_patching.py +39 -0
- modssc-0.0.4/tests/hpo/test_random.py +133 -0
- modssc-0.0.4/tests/hpo/test_space.py +57 -0
- modssc-0.0.4/tests/inductive/__init__.py +0 -0
- modssc-0.0.4/tests/inductive/conftest.py +97 -0
- modssc-0.0.4/tests/inductive/deep/test_bundles.py +645 -0
- modssc-0.0.4/tests/inductive/dummy_registry_module.py +5 -0
- modssc-0.0.4/tests/inductive/test_backends_deep_utils.py +226 -0
- modssc-0.0.4/tests/inductive/test_comatch.py +625 -0
- modssc-0.0.4/tests/inductive/test_daso.py +656 -0
- modssc-0.0.4/tests/inductive/test_deep_co_training.py +538 -0
- modssc-0.0.4/tests/inductive/test_democratic_co_learning_additional.py +406 -0
- modssc-0.0.4/tests/inductive/test_errors_registry_seed.py +162 -0
- modssc-0.0.4/tests/inductive/test_meta_pseudo_labels.py +548 -0
- modssc-0.0.4/tests/inductive/test_methods_classic.py +1217 -0
- modssc-0.0.4/tests/inductive/test_methods_deep.py +2548 -0
- modssc-0.0.4/tests/inductive/test_methods_utils.py +189 -0
- modssc-0.0.4/tests/inductive/test_self_training.py +448 -0
- modssc-0.0.4/tests/inductive/test_setred.py +302 -0
- modssc-0.0.4/tests/inductive/test_simclr_v2.py +571 -0
- modssc-0.0.4/tests/inductive/test_trinet.py +705 -0
- modssc-0.0.4/tests/inductive/test_validation_adapters.py +263 -0
- modssc-0.0.4/tests/preprocess/__init__.py +0 -0
- modssc-0.0.4/tests/preprocess/models_backends/__init__.py +0 -0
- modssc-0.0.4/tests/preprocess/models_backends/test_backends.py +250 -0
- modssc-0.0.4/tests/preprocess/models_backends/test_stub.py +57 -0
- modssc-0.0.4/tests/preprocess/steps/__init__.py +0 -0
- modssc-0.0.4/tests/preprocess/steps/labels/__init__.py +0 -0
- modssc-0.0.4/tests/preprocess/steps/labels/test_encode.py +16 -0
- modssc-0.0.4/tests/preprocess/steps/labels/test_ensure_onehot.py +46 -0
- modssc-0.0.4/tests/preprocess/steps/labels/test_to_numpy_torch.py +99 -0
- modssc-0.0.4/tests/preprocess/steps/test_audio_core.py +220 -0
- modssc-0.0.4/tests/preprocess/steps/test_base_core.py +246 -0
- modssc-0.0.4/tests/preprocess/steps/test_embeddings_graph.py +567 -0
- modssc-0.0.4/tests/preprocess/steps/test_layout.py +39 -0
- modssc-0.0.4/tests/preprocess/steps/test_tabular_one_hot.py +186 -0
- modssc-0.0.4/tests/preprocess/steps/test_text_steps.py +139 -0
- modssc-0.0.4/tests/preprocess/steps/test_to_numpy_torch.py +99 -0
- modssc-0.0.4/tests/preprocess/steps/test_vision_steps.py +275 -0
- modssc-0.0.4/tests/preprocess/test_api.py +862 -0
- modssc-0.0.4/tests/preprocess/test_cache.py +547 -0
- modssc-0.0.4/tests/preprocess/test_errors.py +17 -0
- modssc-0.0.4/tests/preprocess/test_fingerprint.py +44 -0
- modssc-0.0.4/tests/preprocess/test_models.py +56 -0
- modssc-0.0.4/tests/preprocess/test_plan.py +93 -0
- modssc-0.0.4/tests/preprocess/test_plan_and_pipeline.py +211 -0
- modssc-0.0.4/tests/preprocess/test_registry.py +44 -0
- modssc-0.0.4/tests/preprocess/test_store.py +34 -0
- modssc-0.0.4/tests/preprocess/test_utils.py +94 -0
- modssc-0.0.4/tests/sampling/__init__.py +0 -0
- modssc-0.0.4/tests/sampling/_stubs.py +62 -0
- modssc-0.0.4/tests/sampling/test_api.py +210 -0
- modssc-0.0.4/tests/sampling/test_api_cache_heuristic.py +38 -0
- modssc-0.0.4/tests/sampling/test_api_complex.py +153 -0
- modssc-0.0.4/tests/sampling/test_api_graph.py +35 -0
- modssc-0.0.4/tests/sampling/test_api_inductive.py +65 -0
- modssc-0.0.4/tests/sampling/test_fingerprint.py +14 -0
- modssc-0.0.4/tests/sampling/test_imbalance.py +170 -0
- modssc-0.0.4/tests/sampling/test_labeling.py +336 -0
- modssc-0.0.4/tests/sampling/test_plan_coverage.py +72 -0
- modssc-0.0.4/tests/sampling/test_result.py +253 -0
- modssc-0.0.4/tests/sampling/test_result_properties.py +67 -0
- modssc-0.0.4/tests/sampling/test_splitters.py +278 -0
- modssc-0.0.4/tests/sampling/test_splitters_holdout.py +30 -0
- modssc-0.0.4/tests/sampling/test_splitters_kfold.py +43 -0
- modssc-0.0.4/tests/sampling/test_stats.py +26 -0
- modssc-0.0.4/tests/sampling/test_storage.py +73 -0
- modssc-0.0.4/tests/sampling/test_storage_roundtrip.py +61 -0
- modssc-0.0.4/tests/supervised/__init__.py +0 -0
- modssc-0.0.4/tests/supervised/backends/__init__.py +0 -0
- modssc-0.0.4/tests/supervised/backends/numpy/__init__.py +0 -0
- modssc-0.0.4/tests/supervised/backends/numpy/test_knn.py +122 -0
- modssc-0.0.4/tests/supervised/backends/sklearn/__init__.py +0 -0
- modssc-0.0.4/tests/supervised/backends/sklearn/test_additional_wrappers.py +197 -0
- modssc-0.0.4/tests/supervised/backends/sklearn/test_wrappers.py +330 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_audio_cnn.py +207 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_audio_pretrained.py +210 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_image_cnn.py +197 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_image_pretrained.py +613 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_knn.py +153 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_logreg.py +134 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_mlp.py +173 -0
- modssc-0.0.4/tests/supervised/backends/torch/test_text_cnn.py +169 -0
- modssc-0.0.4/tests/supervised/test_base.py +132 -0
- modssc-0.0.4/tests/supervised/test_optional.py +29 -0
- modssc-0.0.4/tests/supervised/test_registry_api.py +268 -0
- modssc-0.0.4/tests/supervised/test_utils.py +65 -0
- modssc-0.0.4/tests/test_device.py +235 -0
- modssc-0.0.4/tests/test_imports.py +31 -0
- modssc-0.0.4/tests/test_logging_config.py +116 -0
- modssc-0.0.4/tests/transductive/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/adapters/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/adapters/test_pyg.py +132 -0
- modssc-0.0.4/tests/transductive/backends/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/backends/test_numpy_backend.py +186 -0
- modssc-0.0.4/tests/transductive/backends/test_torch_backend.py +273 -0
- modssc-0.0.4/tests/transductive/methods/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/methods/advanced/__init__.py +1 -0
- modssc-0.0.4/tests/transductive/methods/advanced/test_placeholders.py +27 -0
- modssc-0.0.4/tests/transductive/methods/classic/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/methods/classic/test_graph_mincuts.py +459 -0
- modssc-0.0.4/tests/transductive/methods/classic/test_label_methods.py +1043 -0
- modssc-0.0.4/tests/transductive/methods/gnn/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/methods/gnn/test_common.py +166 -0
- modssc-0.0.4/tests/transductive/methods/gnn/test_methods.py +825 -0
- modssc-0.0.4/tests/transductive/methods/pde/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/methods/pde/test_poisson_learning.py +389 -0
- modssc-0.0.4/tests/transductive/methods/test_tsvm.py +250 -0
- modssc-0.0.4/tests/transductive/methods/test_utils.py +191 -0
- modssc-0.0.4/tests/transductive/operators/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/operators/test_clamp.py +33 -0
- modssc-0.0.4/tests/transductive/operators/test_laplacian.py +82 -0
- modssc-0.0.4/tests/transductive/operators/test_torch_wrappers.py +63 -0
- modssc-0.0.4/tests/transductive/solvers/__init__.py +0 -0
- modssc-0.0.4/tests/transductive/solvers/test_cg.py +66 -0
- modssc-0.0.4/tests/transductive/solvers/test_fixed_point.py +145 -0
- modssc-0.0.4/tests/transductive/test_cli_transductive.py +49 -0
- modssc-0.0.4/tests/transductive/test_registry.py +95 -0
- modssc-0.0.4/tests/transductive/test_utils_coverage.py +26 -0
- modssc-0.0.4/tests/transductive/test_validation.py +227 -0
- modssc-0.0.4/tests/views/__init__.py +0 -0
- modssc-0.0.4/tests/views/test_api.py +274 -0
- modssc-0.0.4/tests/views/test_plan.py +55 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
root = true
|
|
2
|
+
|
|
3
|
+
[*]
|
|
4
|
+
charset = utf-8
|
|
5
|
+
end_of_line = lf
|
|
6
|
+
insert_final_newline = true
|
|
7
|
+
indent_style = space
|
|
8
|
+
indent_size = 4
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
|
|
11
|
+
[*.md]
|
|
12
|
+
trim_trailing_whitespace = false
|
|
13
|
+
|
|
14
|
+
[*.yml]
|
|
15
|
+
indent_size = 2
|
|
16
|
+
|
|
17
|
+
[*.yaml]
|
|
18
|
+
indent_size = 2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @melvinbarbaux
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Governance
|
|
2
|
+
|
|
3
|
+
## Roles
|
|
4
|
+
Maintainers:
|
|
5
|
+
- Review and merge pull requests
|
|
6
|
+
- Cut releases and manage versioning
|
|
7
|
+
- Decide on architectural changes
|
|
8
|
+
|
|
9
|
+
Contributors:
|
|
10
|
+
- Propose changes via pull requests
|
|
11
|
+
- Add tests, docs, and changelog fragments
|
|
12
|
+
|
|
13
|
+
## Decision process
|
|
14
|
+
- Small changes: maintainer review + CI green
|
|
15
|
+
- Architectural changes: short design note in the PR description, maintainer approval
|
|
16
|
+
|
|
17
|
+
## Quality gates for new methods
|
|
18
|
+
A new method must include:
|
|
19
|
+
- tests (at least smoke + unit)
|
|
20
|
+
- a quickstart example
|
|
21
|
+
- a recipe / config used for reproduction or benchmark
|
|
22
|
+
- a changelog fragment
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible bug.
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for reporting. Please provide a minimal reproduction.
|
|
9
|
+
|
|
10
|
+
- type: checkboxes
|
|
11
|
+
attributes:
|
|
12
|
+
label: Preflight
|
|
13
|
+
options:
|
|
14
|
+
- label: I searched existing issues and this is not a duplicate.
|
|
15
|
+
required: true
|
|
16
|
+
- label: I can reproduce this with the latest main branch.
|
|
17
|
+
required: false
|
|
18
|
+
|
|
19
|
+
- type: textarea
|
|
20
|
+
attributes:
|
|
21
|
+
label: Description
|
|
22
|
+
description: What is wrong, and why it matters.
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
- type: textarea
|
|
27
|
+
attributes:
|
|
28
|
+
label: Steps to reproduce
|
|
29
|
+
description: Provide exact steps (commands, config files, minimal code).
|
|
30
|
+
placeholder: |
|
|
31
|
+
1. pip install -e ".[dev]"
|
|
32
|
+
2. modssc-datasets list
|
|
33
|
+
3. ...
|
|
34
|
+
validations:
|
|
35
|
+
required: true
|
|
36
|
+
|
|
37
|
+
- type: textarea
|
|
38
|
+
attributes:
|
|
39
|
+
label: Expected behavior
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
|
|
43
|
+
- type: textarea
|
|
44
|
+
attributes:
|
|
45
|
+
label: Actual behavior / logs
|
|
46
|
+
description: Paste relevant logs or traceback (redact secrets).
|
|
47
|
+
render: text
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: input
|
|
52
|
+
attributes:
|
|
53
|
+
label: ModSSC version
|
|
54
|
+
placeholder: 0.0.2 (or commit hash)
|
|
55
|
+
validations:
|
|
56
|
+
required: false
|
|
57
|
+
|
|
58
|
+
- type: dropdown
|
|
59
|
+
attributes:
|
|
60
|
+
label: Backend
|
|
61
|
+
options:
|
|
62
|
+
- "sklearn"
|
|
63
|
+
- "torch"
|
|
64
|
+
- "tensorflow"
|
|
65
|
+
- "graph (pyg)"
|
|
66
|
+
- "other / not sure"
|
|
67
|
+
validations:
|
|
68
|
+
required: false
|
|
69
|
+
|
|
70
|
+
- type: textarea
|
|
71
|
+
attributes:
|
|
72
|
+
label: Environment
|
|
73
|
+
description: Python version, OS, CPU/GPU, install extras, etc.
|
|
74
|
+
placeholder: |
|
|
75
|
+
python: 3.12
|
|
76
|
+
os: macOS 14
|
|
77
|
+
extras: [torch, vision]
|
|
78
|
+
validations:
|
|
79
|
+
required: false
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest an improvement or a new capability.
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
attributes:
|
|
7
|
+
label: Problem
|
|
8
|
+
description: What problem are you trying to solve.
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: Proposed solution
|
|
15
|
+
description: What you want to happen, API sketch if possible.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
|
|
19
|
+
- type: textarea
|
|
20
|
+
attributes:
|
|
21
|
+
label: Alternatives considered
|
|
22
|
+
validations:
|
|
23
|
+
required: false
|
|
24
|
+
|
|
25
|
+
- type: textarea
|
|
26
|
+
attributes:
|
|
27
|
+
label: Impact
|
|
28
|
+
description: Who benefits, what breaks, what changes in benchmark reproducibility.
|
|
29
|
+
validations:
|
|
30
|
+
required: false
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
name: Add a new SSL method
|
|
2
|
+
description: Request or propose a new semi-supervised method implementation.
|
|
3
|
+
labels: ["method"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
attributes:
|
|
7
|
+
label: Paper reference
|
|
8
|
+
description: Title, authors, venue, year, link (arXiv or DOI).
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
- type: dropdown
|
|
13
|
+
attributes:
|
|
14
|
+
label: Setting
|
|
15
|
+
options:
|
|
16
|
+
- "inductive"
|
|
17
|
+
- "transductive"
|
|
18
|
+
- "both"
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
|
|
22
|
+
- type: dropdown
|
|
23
|
+
attributes:
|
|
24
|
+
label: Modality
|
|
25
|
+
options:
|
|
26
|
+
- "tabular"
|
|
27
|
+
- "vision"
|
|
28
|
+
- "text"
|
|
29
|
+
- "audio"
|
|
30
|
+
- "graph"
|
|
31
|
+
- "multi"
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
- type: dropdown
|
|
36
|
+
attributes:
|
|
37
|
+
label: Backend target
|
|
38
|
+
options:
|
|
39
|
+
- "sklearn"
|
|
40
|
+
- "torch"
|
|
41
|
+
- "tensorflow"
|
|
42
|
+
- "other"
|
|
43
|
+
validations:
|
|
44
|
+
required: true
|
|
45
|
+
|
|
46
|
+
- type: textarea
|
|
47
|
+
attributes:
|
|
48
|
+
label: Expected results
|
|
49
|
+
description: Datasets, label regime, metric, expected numbers and tolerances.
|
|
50
|
+
placeholder: |
|
|
51
|
+
CIFAR-10, 40 labels, accuracy ~ 93.0 ± 0.5
|
|
52
|
+
validations:
|
|
53
|
+
required: false
|
|
54
|
+
|
|
55
|
+
- type: textarea
|
|
56
|
+
attributes:
|
|
57
|
+
label: Notes about reproduction
|
|
58
|
+
description: Any tricky details (augmentations, EMA, schedules, thresholds).
|
|
59
|
+
validations:
|
|
60
|
+
required: false
|
|
61
|
+
|
|
62
|
+
- type: checkboxes
|
|
63
|
+
attributes:
|
|
64
|
+
label: Contribution checklist
|
|
65
|
+
options:
|
|
66
|
+
- label: I will add tests (smoke + unit, integration if relevant).
|
|
67
|
+
required: false
|
|
68
|
+
- label: I will add a recipe config and a quickstart example.
|
|
69
|
+
required: false
|
|
70
|
+
- label: I will add a changelog note (CHANGELOG.md).
|
|
71
|
+
required: false
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported versions
|
|
4
|
+
Security fixes are provided on the latest released version and on the main branch.
|
|
5
|
+
|
|
6
|
+
## Reporting a vulnerability
|
|
7
|
+
Please do not open public issues for security reports.
|
|
8
|
+
|
|
9
|
+
Preferred: use GitHub Security Advisories on the repository.
|
|
10
|
+
Alternative: contact the maintainers privately (see CODEOWNERS / repository maintainers).
|
|
11
|
+
|
|
12
|
+
We will acknowledge receipt and work on a fix as soon as possible.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
lint:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v6
|
|
20
|
+
|
|
21
|
+
- uses: actions/setup-python@v6
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
cache: "pip"
|
|
25
|
+
cache-dependency-path: "pyproject.toml"
|
|
26
|
+
|
|
27
|
+
- name: Install
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip wheel
|
|
30
|
+
pip install --prefer-binary -e ".[dev]"
|
|
31
|
+
|
|
32
|
+
- name: Ruff (lint and format check)
|
|
33
|
+
run: |
|
|
34
|
+
ruff check . && ruff format --check .
|
|
35
|
+
|
|
36
|
+
test:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
strategy:
|
|
39
|
+
fail-fast: false
|
|
40
|
+
matrix:
|
|
41
|
+
python-version: ["3.11", "3.12"]
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v6
|
|
44
|
+
|
|
45
|
+
- name: Free up disk space
|
|
46
|
+
run: |
|
|
47
|
+
sudo rm -rf /usr/local/lib/android
|
|
48
|
+
sudo rm -rf /usr/share/dotnet
|
|
49
|
+
sudo rm -rf /opt/ghc
|
|
50
|
+
sudo rm -rf /opt/hostedtoolcache/CodeQL
|
|
51
|
+
sudo rm -rf /usr/local/.ghcup
|
|
52
|
+
sudo rm -rf /usr/share/swift
|
|
53
|
+
sudo rm -rf /usr/local/share/boost
|
|
54
|
+
sudo docker image prune --all --force
|
|
55
|
+
sudo apt-get clean
|
|
56
|
+
df -h
|
|
57
|
+
|
|
58
|
+
- uses: actions/setup-python@v6
|
|
59
|
+
with:
|
|
60
|
+
python-version: ${{ matrix.python-version }}
|
|
61
|
+
cache: "pip"
|
|
62
|
+
cache-dependency-path: "pyproject.toml"
|
|
63
|
+
|
|
64
|
+
- name: Install
|
|
65
|
+
run: |
|
|
66
|
+
python -m pip install --upgrade pip wheel setuptools
|
|
67
|
+
# Install PyTorch CPU-only to save disk space
|
|
68
|
+
pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
|
69
|
+
# Install other dependencies
|
|
70
|
+
pip install --no-cache-dir --prefer-binary -e ".[dev,full]"
|
|
71
|
+
|
|
72
|
+
- name: Check memory
|
|
73
|
+
run: |
|
|
74
|
+
free -h
|
|
75
|
+
df -h
|
|
76
|
+
|
|
77
|
+
- name: Tests
|
|
78
|
+
run: |
|
|
79
|
+
pytest -n 4 --dist loadgroup --cov-report=xml:coverage.xml
|
|
80
|
+
env:
|
|
81
|
+
PYTHONHASHSEED: 0
|
|
82
|
+
|
|
83
|
+
- name: Upload coverage to Codecov
|
|
84
|
+
if: matrix.python-version == '3.12'
|
|
85
|
+
uses: codecov/codecov-action@v5
|
|
86
|
+
with:
|
|
87
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
88
|
+
files: coverage.xml
|
|
89
|
+
fail_ci_if_error: true
|
|
90
|
+
|
|
91
|
+
build:
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
steps:
|
|
94
|
+
- uses: actions/checkout@v6
|
|
95
|
+
|
|
96
|
+
- uses: actions/setup-python@v6
|
|
97
|
+
with:
|
|
98
|
+
python-version: "3.12"
|
|
99
|
+
cache: "pip"
|
|
100
|
+
cache-dependency-path: "pyproject.toml"
|
|
101
|
+
|
|
102
|
+
- name: Build wheel and sdist
|
|
103
|
+
run: |
|
|
104
|
+
python -m pip install --upgrade pip wheel
|
|
105
|
+
pip install build
|
|
106
|
+
python -m build
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
paths:
|
|
8
|
+
- "docs/**"
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
- ".github/workflows/docs.yml"
|
|
11
|
+
pull_request:
|
|
12
|
+
paths:
|
|
13
|
+
- "docs/**"
|
|
14
|
+
- "mkdocs.yml"
|
|
15
|
+
- ".github/workflows/docs.yml"
|
|
16
|
+
workflow_dispatch:
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
pages: write
|
|
21
|
+
id-token: write
|
|
22
|
+
|
|
23
|
+
concurrency:
|
|
24
|
+
group: "pages"
|
|
25
|
+
cancel-in-progress: false
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
build:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v6
|
|
32
|
+
|
|
33
|
+
- name: Setup Pages
|
|
34
|
+
uses: actions/configure-pages@v5
|
|
35
|
+
|
|
36
|
+
- uses: actions/setup-python@v6
|
|
37
|
+
with:
|
|
38
|
+
python-version: "3.12"
|
|
39
|
+
cache: "pip"
|
|
40
|
+
cache-dependency-path: "pyproject.toml"
|
|
41
|
+
|
|
42
|
+
- name: Install docs dependencies
|
|
43
|
+
run: |
|
|
44
|
+
python -m pip install --upgrade pip
|
|
45
|
+
python -m pip install -e ".[docs]"
|
|
46
|
+
|
|
47
|
+
- name: Build site (strict)
|
|
48
|
+
if: github.event_name == 'pull_request'
|
|
49
|
+
run: |
|
|
50
|
+
mkdocs build --strict --site-dir site
|
|
51
|
+
|
|
52
|
+
- name: Build site
|
|
53
|
+
if: github.event_name != 'pull_request'
|
|
54
|
+
run: |
|
|
55
|
+
mkdocs build --site-dir site
|
|
56
|
+
|
|
57
|
+
- name: Upload Pages artifact
|
|
58
|
+
if: github.event_name == 'push'
|
|
59
|
+
uses: actions/upload-pages-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
path: site
|
|
62
|
+
|
|
63
|
+
deploy:
|
|
64
|
+
if: github.event_name == 'push'
|
|
65
|
+
needs: build
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
environment:
|
|
68
|
+
name: github-pages
|
|
69
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
70
|
+
steps:
|
|
71
|
+
- id: deployment
|
|
72
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
paths:
|
|
8
|
+
- "src/**"
|
|
9
|
+
- "pyproject.toml"
|
|
10
|
+
- ".github/workflows/release.yml"
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-python@v6
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
cache: "pip"
|
|
26
|
+
cache-dependency-path: "pyproject.toml"
|
|
27
|
+
|
|
28
|
+
- name: Build sdist and wheel
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
python -m pip install build
|
|
32
|
+
python -m build
|
|
33
|
+
|
|
34
|
+
- name: Upload dist artifacts
|
|
35
|
+
uses: actions/upload-artifact@v6
|
|
36
|
+
with:
|
|
37
|
+
name: dist
|
|
38
|
+
path: dist/*
|
|
39
|
+
|
|
40
|
+
publish:
|
|
41
|
+
if: github.ref == 'refs/heads/main'
|
|
42
|
+
needs: build
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
env:
|
|
45
|
+
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
46
|
+
steps:
|
|
47
|
+
- name: Download dist artifacts
|
|
48
|
+
uses: actions/download-artifact@v7
|
|
49
|
+
with:
|
|
50
|
+
name: dist
|
|
51
|
+
path: dist
|
|
52
|
+
|
|
53
|
+
- name: Publish to PyPI (if configured)
|
|
54
|
+
if: ${{ env.PYPI_API_TOKEN != '' }}
|
|
55
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
56
|
+
with:
|
|
57
|
+
password: ${{ env.PYPI_API_TOKEN }}
|
|
58
|
+
packages-dir: dist
|
|
59
|
+
|
|
60
|
+
release:
|
|
61
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
62
|
+
needs: build
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
permissions:
|
|
65
|
+
contents: write
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/checkout@v6
|
|
68
|
+
|
|
69
|
+
- name: Download dist artifacts
|
|
70
|
+
uses: actions/download-artifact@v7
|
|
71
|
+
with:
|
|
72
|
+
name: dist
|
|
73
|
+
path: dist
|
|
74
|
+
|
|
75
|
+
- name: Create GitHub release
|
|
76
|
+
uses: softprops/action-gh-release@v2
|
|
77
|
+
with:
|
|
78
|
+
files: dist/*
|
|
79
|
+
body_path: CHANGELOG.md
|
modssc-0.0.4/.gitignore
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
*.egg-info/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
|
|
9
|
+
# Tooling caches
|
|
10
|
+
.coverage
|
|
11
|
+
htmlcov/
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.mypy_cache/
|
|
14
|
+
.ruff_cache/
|
|
15
|
+
|
|
16
|
+
# Virtualenv
|
|
17
|
+
.venv/
|
|
18
|
+
venv/
|
|
19
|
+
ENV/
|
|
20
|
+
env/
|
|
21
|
+
|
|
22
|
+
# Jupyter
|
|
23
|
+
.ipynb_checkpoints/
|
|
24
|
+
|
|
25
|
+
# OS
|
|
26
|
+
.DS_Store
|
|
27
|
+
Thumbs.db
|
|
28
|
+
|
|
29
|
+
# Editors
|
|
30
|
+
.vscode/
|
|
31
|
+
.idea/
|
|
32
|
+
|
|
33
|
+
# Docs build output
|
|
34
|
+
site/
|
|
35
|
+
docs/article_code/
|
|
36
|
+
|
|
37
|
+
# Local artifacts, caches, runs
|
|
38
|
+
data/
|
|
39
|
+
outputs/
|
|
40
|
+
runs/
|
|
41
|
+
artifacts/
|
|
42
|
+
cache/
|
|
43
|
+
log/
|
|
44
|
+
coverage.xml
|
|
45
|
+
analysis/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: end-of-file-fixer
|
|
6
|
+
- id: trailing-whitespace
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
- id: check-added-large-files
|
|
9
|
+
|
|
10
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
11
|
+
rev: v0.14.9
|
|
12
|
+
hooks:
|
|
13
|
+
- id: ruff
|
|
14
|
+
args: ["."]
|
|
15
|
+
pass_filenames: false
|
|
16
|
+
always_run: true
|
|
17
|
+
- id: ruff-format
|
|
18
|
+
args: ["--check", "."]
|
|
19
|
+
pass_filenames: false
|
|
20
|
+
always_run: true
|
|
21
|
+
|
|
22
|
+
- repo: local
|
|
23
|
+
hooks:
|
|
24
|
+
- id: pytest
|
|
25
|
+
name: pytest
|
|
26
|
+
entry: >-
|
|
27
|
+
bash -c 'if [ ! -x ./.venv/bin/python ]; then echo "Missing ./.venv/bin/python. Run: python3 -m venv .venv && ./.venv/bin/pip install -e \".[dev,full]\""; exit 1; fi; exec ./.venv/bin/python -m pytest'
|
|
28
|
+
language: system
|
|
29
|
+
args: ["-n", "4", "--dist", "loadgroup", "--cov-report=xml:coverage.xml"]
|
|
30
|
+
pass_filenames: false
|
|
31
|
+
always_run: true
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on "Keep a Changelog", and this project adheres to Semantic Versioning.
|
|
6
|
+
|
|
7
|
+
## 0.0.4
|
|
8
|
+
- Added multiple semi-supervised methods.
|
|
9
|
+
|
|
10
|
+
## 0.0.3
|
|
11
|
+
- Fixed bugs and improved logging for inductive methods.
|
|
12
|
+
|
|
13
|
+
## 0.0.2
|
|
14
|
+
- Updated github workflow
|
|
15
|
+
|
|
16
|
+
## 0.0.1
|
|
17
|
+
- Initial public release.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
@misc{barbaux2025modsscmodularframeworksemisupervised,
|
|
2
|
+
title={ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data},
|
|
3
|
+
author={Melvin Barbaux},
|
|
4
|
+
year={2025},
|
|
5
|
+
eprint={2512.13228},
|
|
6
|
+
archivePrefix={arXiv},
|
|
7
|
+
primaryClass={cs.LG},
|
|
8
|
+
url={https://arxiv.org/abs/2512.13228},
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use ModSSC in your research, please cite it."
|
|
3
|
+
title: "ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data"
|
|
4
|
+
authors:
|
|
5
|
+
- family-names: "Barbaux"
|
|
6
|
+
given-names: "Melvin"
|
|
7
|
+
license: "MIT"
|
|
8
|
+
repository-code: "https://github.com/ModSSC/ModSSC"
|
|
9
|
+
url: "https://hal.science/hal-05415109"
|
|
10
|
+
keywords:
|
|
11
|
+
- semi-supervised learning
|
|
12
|
+
- classification
|
|
13
|
+
- reproducibility
|
|
14
|
+
- transductive learning
|
|
15
|
+
- inductive learning
|
|
16
|
+
preferred-citation:
|
|
17
|
+
type: unpublished
|
|
18
|
+
title: "ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data"
|
|
19
|
+
authors:
|
|
20
|
+
- family-names: "Barbaux"
|
|
21
|
+
given-names: "Melvin"
|
|
22
|
+
year: 2025
|
|
23
|
+
month: 12
|
|
24
|
+
url: "https://hal.science/hal-05415109"
|
|
25
|
+
notes: "Preprint describing the open source ModSSC framework for inductive and transductive semi-supervised classification on heterogeneous data."
|
|
26
|
+
identifiers:
|
|
27
|
+
- type: other
|
|
28
|
+
value: "hal-05415109"
|
|
29
|
+
description: "HAL ID"
|