modssc 0.0.1__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.1/.editorconfig +18 -0
- modssc-0.0.1/.github/CODEOWNERS +1 -0
- modssc-0.0.1/.github/CODE_OF_CONDUCT.md +8 -0
- modssc-0.0.1/.github/CONTRIBUTING.md +13 -0
- modssc-0.0.1/.github/GOVERNANCE.md +22 -0
- modssc-0.0.1/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
- modssc-0.0.1/.github/ISSUE_TEMPLATE/config.yml +5 -0
- modssc-0.0.1/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
- modssc-0.0.1/.github/ISSUE_TEMPLATE/new_method.yml +71 -0
- modssc-0.0.1/.github/SECURITY.md +12 -0
- modssc-0.0.1/.github/dependabot.yml +6 -0
- modssc-0.0.1/.github/pull_request_template.md +11 -0
- modssc-0.0.1/.github/workflows/ci.yml +114 -0
- modssc-0.0.1/.gitignore +43 -0
- modssc-0.0.1/.pre-commit-config.yaml +15 -0
- modssc-0.0.1/CHANGELOG.md +8 -0
- modssc-0.0.1/CITATION.bib +9 -0
- modssc-0.0.1/CITATION.cff +29 -0
- modssc-0.0.1/LICENSE +21 -0
- modssc-0.0.1/Makefile +53 -0
- modssc-0.0.1/PKG-INFO +252 -0
- modssc-0.0.1/README.md +87 -0
- modssc-0.0.1/examples/00_inductive_toy_self_training.py +68 -0
- modssc-0.0.1/examples/01_evaluation_quickstart.py +30 -0
- modssc-0.0.1/examples/01_transductive_toy_label_propagation.py +70 -0
- modssc-0.0.1/examples/02_hpo_primitives_quickstart.py +23 -0
- modssc-0.0.1/examples/02_sampling_toy_holdout.py +39 -0
- modssc-0.0.1/examples/03_cli_smoke.py +36 -0
- modssc-0.0.1/examples/04_inductive_cotraining_two_views.py +81 -0
- modssc-0.0.1/mkdocs.yml +126 -0
- modssc-0.0.1/notebooks/00_cli_tour.ipynb +285 -0
- modssc-0.0.1/notebooks/01_data_loader_end_to_end.ipynb +293 -0
- modssc-0.0.1/notebooks/02_sampling_quickstart.ipynb +340 -0
- modssc-0.0.1/notebooks/03_preprocess_quickstart.ipynb +1026 -0
- modssc-0.0.1/notebooks/04_data_augmentation_quickstart.ipynb +178 -0
- modssc-0.0.1/notebooks/05_views_quickstart.ipynb +214 -0
- modssc-0.0.1/notebooks/06_graph_quickstart.ipynb +355 -0
- modssc-0.0.1/notebooks/07_supervised_quickstart.ipynb +194 -0
- modssc-0.0.1/notebooks/08_inductive_quickstart.ipynb +152 -0
- modssc-0.0.1/notebooks/09_transductive_quickstart.ipynb +272 -0
- modssc-0.0.1/notebooks/10_hpo_bench_smoke.ipynb +85 -0
- modssc-0.0.1/pyproject.toml +280 -0
- modssc-0.0.1/src/modssc/__about__.py +4 -0
- modssc-0.0.1/src/modssc/__init__.py +5 -0
- modssc-0.0.1/src/modssc/__main__.py +6 -0
- modssc-0.0.1/src/modssc/cli/__init__.py +5 -0
- modssc-0.0.1/src/modssc/cli/_utils.py +44 -0
- modssc-0.0.1/src/modssc/cli/app.py +164 -0
- modssc-0.0.1/src/modssc/cli/augmentation.py +45 -0
- modssc-0.0.1/src/modssc/cli/datasets.py +160 -0
- modssc-0.0.1/src/modssc/cli/evaluation.py +74 -0
- modssc-0.0.1/src/modssc/cli/graph.py +325 -0
- modssc-0.0.1/src/modssc/cli/inductive.py +60 -0
- modssc-0.0.1/src/modssc/cli/logging.py +10 -0
- modssc-0.0.1/src/modssc/cli/preprocess.py +137 -0
- modssc-0.0.1/src/modssc/cli/sampling.py +106 -0
- modssc-0.0.1/src/modssc/cli/supervised.py +45 -0
- modssc-0.0.1/src/modssc/cli/transductive.py +60 -0
- modssc-0.0.1/src/modssc/data_augmentation/__init__.py +45 -0
- modssc-0.0.1/src/modssc/data_augmentation/api.py +91 -0
- modssc-0.0.1/src/modssc/data_augmentation/errors.py +17 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/__init__.py +15 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/audio.py +66 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/base.py +5 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/core.py +47 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/graph.py +147 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/tabular.py +67 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/text.py +86 -0
- modssc-0.0.1/src/modssc/data_augmentation/ops/vision.py +206 -0
- modssc-0.0.1/src/modssc/data_augmentation/optional.py +14 -0
- modssc-0.0.1/src/modssc/data_augmentation/plan.py +37 -0
- modssc-0.0.1/src/modssc/data_augmentation/registry.py +76 -0
- modssc-0.0.1/src/modssc/data_augmentation/types.py +80 -0
- modssc-0.0.1/src/modssc/data_augmentation/utils.py +98 -0
- modssc-0.0.1/src/modssc/data_loader/__init__.py +66 -0
- modssc-0.0.1/src/modssc/data_loader/api.py +414 -0
- modssc-0.0.1/src/modssc/data_loader/cache.py +317 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/__init__.py +29 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/audio.py +26 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/graph.py +38 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/tabular.py +39 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/text.py +88 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/toy.py +22 -0
- modssc-0.0.1/src/modssc/data_loader/catalog/vision.py +56 -0
- modssc-0.0.1/src/modssc/data_loader/errors.py +49 -0
- modssc-0.0.1/src/modssc/data_loader/formats.py +41 -0
- modssc-0.0.1/src/modssc/data_loader/manifest.py +149 -0
- modssc-0.0.1/src/modssc/data_loader/numpy_adapter.py +66 -0
- modssc-0.0.1/src/modssc/data_loader/optional.py +23 -0
- modssc-0.0.1/src/modssc/data_loader/providers/__init__.py +39 -0
- modssc-0.0.1/src/modssc/data_loader/providers/base.py +34 -0
- modssc-0.0.1/src/modssc/data_loader/providers/hf.py +181 -0
- modssc-0.0.1/src/modssc/data_loader/providers/openml.py +168 -0
- modssc-0.0.1/src/modssc/data_loader/providers/pyg.py +248 -0
- modssc-0.0.1/src/modssc/data_loader/providers/tfds.py +98 -0
- modssc-0.0.1/src/modssc/data_loader/providers/torchaudio.py +223 -0
- modssc-0.0.1/src/modssc/data_loader/providers/torchvision.py +147 -0
- modssc-0.0.1/src/modssc/data_loader/providers/toy.py +68 -0
- modssc-0.0.1/src/modssc/data_loader/storage/__init__.py +3 -0
- modssc-0.0.1/src/modssc/data_loader/storage/files.py +173 -0
- modssc-0.0.1/src/modssc/data_loader/types.py +177 -0
- modssc-0.0.1/src/modssc/data_loader/uri.py +33 -0
- modssc-0.0.1/src/modssc/device.py +47 -0
- modssc-0.0.1/src/modssc/evaluation/__init__.py +27 -0
- modssc-0.0.1/src/modssc/evaluation/metrics.py +139 -0
- modssc-0.0.1/src/modssc/graph/__init__.py +30 -0
- modssc-0.0.1/src/modssc/graph/adapters/__init__.py +1 -0
- modssc-0.0.1/src/modssc/graph/adapters/pyg.py +29 -0
- modssc-0.0.1/src/modssc/graph/artifacts.py +135 -0
- modssc-0.0.1/src/modssc/graph/cache.py +312 -0
- modssc-0.0.1/src/modssc/graph/construction/__init__.py +7 -0
- modssc-0.0.1/src/modssc/graph/construction/api.py +222 -0
- modssc-0.0.1/src/modssc/graph/construction/backends/__init__.py +4 -0
- modssc-0.0.1/src/modssc/graph/construction/backends/faiss_backend.py +140 -0
- modssc-0.0.1/src/modssc/graph/construction/backends/numpy_backend.py +270 -0
- modssc-0.0.1/src/modssc/graph/construction/backends/sklearn_backend.py +87 -0
- modssc-0.0.1/src/modssc/graph/construction/builder.py +144 -0
- modssc-0.0.1/src/modssc/graph/construction/ops/__init__.py +1 -0
- modssc-0.0.1/src/modssc/graph/construction/ops/normalize.py +48 -0
- modssc-0.0.1/src/modssc/graph/construction/ops/self_loops.py +32 -0
- modssc-0.0.1/src/modssc/graph/construction/ops/symmetrize.py +146 -0
- modssc-0.0.1/src/modssc/graph/construction/ops/weights.py +51 -0
- modssc-0.0.1/src/modssc/graph/construction/schemes/__init__.py +9 -0
- modssc-0.0.1/src/modssc/graph/construction/schemes/anchor.py +272 -0
- modssc-0.0.1/src/modssc/graph/errors.py +35 -0
- modssc-0.0.1/src/modssc/graph/featurization/__init__.py +7 -0
- modssc-0.0.1/src/modssc/graph/featurization/api.py +141 -0
- modssc-0.0.1/src/modssc/graph/featurization/ops/__init__.py +1 -0
- modssc-0.0.1/src/modssc/graph/featurization/ops/adjacency.py +59 -0
- modssc-0.0.1/src/modssc/graph/featurization/views/__init__.py +1 -0
- modssc-0.0.1/src/modssc/graph/featurization/views/attr.py +9 -0
- modssc-0.0.1/src/modssc/graph/featurization/views/diffusion.py +86 -0
- modssc-0.0.1/src/modssc/graph/featurization/views/struct.py +314 -0
- modssc-0.0.1/src/modssc/graph/fingerprint.py +98 -0
- modssc-0.0.1/src/modssc/graph/masks.py +69 -0
- modssc-0.0.1/src/modssc/graph/optional.py +43 -0
- modssc-0.0.1/src/modssc/graph/specs.py +302 -0
- modssc-0.0.1/src/modssc/graph/validation.py +49 -0
- modssc-0.0.1/src/modssc/hpo/__init__.py +13 -0
- modssc-0.0.1/src/modssc/hpo/patching.py +31 -0
- modssc-0.0.1/src/modssc/hpo/samplers.py +100 -0
- modssc-0.0.1/src/modssc/hpo/space.py +112 -0
- modssc-0.0.1/src/modssc/hpo/types.py +23 -0
- modssc-0.0.1/src/modssc/inductive/__init__.py +38 -0
- modssc-0.0.1/src/modssc/inductive/adapters/__init__.py +11 -0
- modssc-0.0.1/src/modssc/inductive/adapters/numpy.py +74 -0
- modssc-0.0.1/src/modssc/inductive/adapters/torch.py +151 -0
- modssc-0.0.1/src/modssc/inductive/backends/__init__.py +5 -0
- modssc-0.0.1/src/modssc/inductive/backends/torch_backend.py +47 -0
- modssc-0.0.1/src/modssc/inductive/base.py +50 -0
- modssc-0.0.1/src/modssc/inductive/deep/__init__.py +11 -0
- modssc-0.0.1/src/modssc/inductive/deep/bundles.py +583 -0
- modssc-0.0.1/src/modssc/inductive/deep/types.py +17 -0
- modssc-0.0.1/src/modssc/inductive/deep/validation.py +34 -0
- modssc-0.0.1/src/modssc/inductive/errors.py +32 -0
- modssc-0.0.1/src/modssc/inductive/methods/__init__.py +35 -0
- modssc-0.0.1/src/modssc/inductive/methods/adamatch.py +293 -0
- modssc-0.0.1/src/modssc/inductive/methods/co_training.py +364 -0
- modssc-0.0.1/src/modssc/inductive/methods/deep_utils.py +139 -0
- modssc-0.0.1/src/modssc/inductive/methods/fixmatch.py +262 -0
- modssc-0.0.1/src/modssc/inductive/methods/flexmatch.py +359 -0
- modssc-0.0.1/src/modssc/inductive/methods/free_match.py +349 -0
- modssc-0.0.1/src/modssc/inductive/methods/mean_teacher.py +265 -0
- modssc-0.0.1/src/modssc/inductive/methods/mixmatch.py +328 -0
- modssc-0.0.1/src/modssc/inductive/methods/pi_model.py +225 -0
- modssc-0.0.1/src/modssc/inductive/methods/pseudo_label.py +217 -0
- modssc-0.0.1/src/modssc/inductive/methods/s4vm.py +201 -0
- modssc-0.0.1/src/modssc/inductive/methods/self_training.py +218 -0
- modssc-0.0.1/src/modssc/inductive/methods/softmatch.py +355 -0
- modssc-0.0.1/src/modssc/inductive/methods/tri_training.py +292 -0
- modssc-0.0.1/src/modssc/inductive/methods/tsvm.py +365 -0
- modssc-0.0.1/src/modssc/inductive/methods/uda.py +281 -0
- modssc-0.0.1/src/modssc/inductive/methods/utils.py +258 -0
- modssc-0.0.1/src/modssc/inductive/optional.py +15 -0
- modssc-0.0.1/src/modssc/inductive/registry.py +135 -0
- modssc-0.0.1/src/modssc/inductive/seed.py +38 -0
- modssc-0.0.1/src/modssc/inductive/types.py +42 -0
- modssc-0.0.1/src/modssc/inductive/validation.py +90 -0
- modssc-0.0.1/src/modssc/logging.py +109 -0
- modssc-0.0.1/src/modssc/preprocess/__init__.py +28 -0
- modssc-0.0.1/src/modssc/preprocess/api.py +748 -0
- modssc-0.0.1/src/modssc/preprocess/cache.py +298 -0
- modssc-0.0.1/src/modssc/preprocess/catalog.py +304 -0
- modssc-0.0.1/src/modssc/preprocess/errors.py +30 -0
- modssc-0.0.1/src/modssc/preprocess/fingerprint.py +36 -0
- modssc-0.0.1/src/modssc/preprocess/models.py +111 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/__init__.py +4 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/base.py +13 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/open_clip.py +71 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/sentence_transformers.py +44 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/stub.py +47 -0
- modssc-0.0.1/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +65 -0
- modssc-0.0.1/src/modssc/preprocess/numpy_adapter.py +32 -0
- modssc-0.0.1/src/modssc/preprocess/optional.py +28 -0
- modssc-0.0.1/src/modssc/preprocess/plan.py +93 -0
- modssc-0.0.1/src/modssc/preprocess/registry.py +69 -0
- modssc-0.0.1/src/modssc/preprocess/steps/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/audio/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/audio/load_waveform.py +133 -0
- modssc-0.0.1/src/modssc/preprocess/steps/audio/wav2vec2.py +35 -0
- modssc-0.0.1/src/modssc/preprocess/steps/base.py +49 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/cast_dtype.py +18 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/cast_fp16.py +18 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/copy_raw.py +17 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/ensure_2d.py +33 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/pca.py +64 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/random_projection.py +39 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/to_numpy.py +18 -0
- modssc-0.0.1/src/modssc/preprocess/steps/core/to_torch.py +52 -0
- modssc-0.0.1/src/modssc/preprocess/steps/embeddings/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/embeddings/auto.py +121 -0
- modssc-0.0.1/src/modssc/preprocess/steps/graph/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/graph/attach_edge_weight.py +25 -0
- modssc-0.0.1/src/modssc/preprocess/steps/graph/edge_sparsify.py +45 -0
- modssc-0.0.1/src/modssc/preprocess/steps/graph/node2vec.py +145 -0
- modssc-0.0.1/src/modssc/preprocess/steps/labels/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/labels/encode.py +18 -0
- modssc-0.0.1/src/modssc/preprocess/steps/labels/ensure_onehot.py +33 -0
- modssc-0.0.1/src/modssc/preprocess/steps/labels/to_numpy.py +18 -0
- modssc-0.0.1/src/modssc/preprocess/steps/labels/to_torch.py +54 -0
- modssc-0.0.1/src/modssc/preprocess/steps/tabular/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/tabular/one_hot.py +158 -0
- modssc-0.0.1/src/modssc/preprocess/steps/text/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/text/ensure_strings.py +16 -0
- modssc-0.0.1/src/modssc/preprocess/steps/text/hash_tokenizer.py +58 -0
- modssc-0.0.1/src/modssc/preprocess/steps/text/sentence_transformer.py +36 -0
- modssc-0.0.1/src/modssc/preprocess/steps/text/tfidf.py +63 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/__init__.py +1 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/channels_order.py +39 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/ensure_num_channels.py +48 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/layout.py +61 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/normalize.py +40 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/openclip.py +35 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/resize.py +43 -0
- modssc-0.0.1/src/modssc/preprocess/steps/vision/zca_whitening.py +66 -0
- modssc-0.0.1/src/modssc/preprocess/store.py +50 -0
- modssc-0.0.1/src/modssc/preprocess/types.py +74 -0
- modssc-0.0.1/src/modssc/sampling/__init__.py +48 -0
- modssc-0.0.1/src/modssc/sampling/api.py +449 -0
- modssc-0.0.1/src/modssc/sampling/errors.py +17 -0
- modssc-0.0.1/src/modssc/sampling/fingerprint.py +19 -0
- modssc-0.0.1/src/modssc/sampling/imbalance.py +61 -0
- modssc-0.0.1/src/modssc/sampling/labeling.py +141 -0
- modssc-0.0.1/src/modssc/sampling/plan.py +277 -0
- modssc-0.0.1/src/modssc/sampling/result.py +159 -0
- modssc-0.0.1/src/modssc/sampling/splitters.py +193 -0
- modssc-0.0.1/src/modssc/sampling/stats.py +74 -0
- modssc-0.0.1/src/modssc/sampling/storage.py +76 -0
- modssc-0.0.1/src/modssc/supervised/__init__.py +19 -0
- modssc-0.0.1/src/modssc/supervised/api.py +115 -0
- modssc-0.0.1/src/modssc/supervised/backends/__init__.py +3 -0
- modssc-0.0.1/src/modssc/supervised/backends/numpy/__init__.py +1 -0
- modssc-0.0.1/src/modssc/supervised/backends/numpy/knn.py +158 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/__init__.py +1 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/extra_trees.py +108 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/gradient_boosting.py +99 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/knn.py +94 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/linear_svm.py +98 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/logreg.py +109 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/naive_bayes.py +198 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/random_forest.py +108 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/ridge.py +107 -0
- modssc-0.0.1/src/modssc/supervised/backends/sklearn/svm_rbf.py +109 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/__init__.py +1 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/audio_cnn.py +297 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/audio_pretrained.py +231 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/image_cnn.py +288 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/image_pretrained.py +378 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/knn.py +180 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/logreg.py +150 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/mlp.py +200 -0
- modssc-0.0.1/src/modssc/supervised/backends/torch/text_cnn.py +258 -0
- modssc-0.0.1/src/modssc/supervised/base.py +82 -0
- modssc-0.0.1/src/modssc/supervised/errors.py +39 -0
- modssc-0.0.1/src/modssc/supervised/optional.py +37 -0
- modssc-0.0.1/src/modssc/supervised/registry.py +366 -0
- modssc-0.0.1/src/modssc/supervised/types.py +44 -0
- modssc-0.0.1/src/modssc/supervised/utils.py +58 -0
- modssc-0.0.1/src/modssc/transductive/__init__.py +27 -0
- modssc-0.0.1/src/modssc/transductive/adapters/__init__.py +1 -0
- modssc-0.0.1/src/modssc/transductive/adapters/pyg.py +75 -0
- modssc-0.0.1/src/modssc/transductive/backends/__init__.py +5 -0
- modssc-0.0.1/src/modssc/transductive/backends/numpy_backend.py +129 -0
- modssc-0.0.1/src/modssc/transductive/backends/torch_backend.py +177 -0
- modssc-0.0.1/src/modssc/transductive/base.py +55 -0
- modssc-0.0.1/src/modssc/transductive/errors.py +32 -0
- modssc-0.0.1/src/modssc/transductive/methods/__init__.py +26 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/__init__.py +11 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/graphmae2.py +48 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/llm_gnn.py +48 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/nodeformer.py +49 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/oft.py +48 -0
- modssc-0.0.1/src/modssc/transductive/methods/advanced/sgformer.py +48 -0
- modssc-0.0.1/src/modssc/transductive/methods/classic/__init__.py +20 -0
- modssc-0.0.1/src/modssc/transductive/methods/classic/graph_mincuts.py +278 -0
- modssc-0.0.1/src/modssc/transductive/methods/classic/label_propagation.py +323 -0
- modssc-0.0.1/src/modssc/transductive/methods/classic/label_spreading.py +299 -0
- modssc-0.0.1/src/modssc/transductive/methods/classic/tsvm.py +235 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/__init__.py +11 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/appnp.py +159 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/chebnet.py +168 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/common.py +378 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/dgi.py +207 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/gat.py +263 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/gcn.py +141 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/gcnii.py +164 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/grand.py +224 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/graphsage.py +140 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/node2vec.py +297 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/planetoid.py +211 -0
- modssc-0.0.1/src/modssc/transductive/methods/gnn/sgc.py +125 -0
- modssc-0.0.1/src/modssc/transductive/methods/pde/__init__.py +3 -0
- modssc-0.0.1/src/modssc/transductive/methods/pde/poisson_learning.py +340 -0
- modssc-0.0.1/src/modssc/transductive/methods/utils.py +228 -0
- modssc-0.0.1/src/modssc/transductive/operators/__init__.py +1 -0
- modssc-0.0.1/src/modssc/transductive/operators/clamp.py +24 -0
- modssc-0.0.1/src/modssc/transductive/operators/laplacian.py +60 -0
- modssc-0.0.1/src/modssc/transductive/operators/normalize.py +44 -0
- modssc-0.0.1/src/modssc/transductive/operators/spmm.py +47 -0
- modssc-0.0.1/src/modssc/transductive/optional.py +15 -0
- modssc-0.0.1/src/modssc/transductive/registry.py +145 -0
- modssc-0.0.1/src/modssc/transductive/solvers/__init__.py +1 -0
- modssc-0.0.1/src/modssc/transductive/solvers/cg.py +49 -0
- modssc-0.0.1/src/modssc/transductive/solvers/fixed_point.py +105 -0
- modssc-0.0.1/src/modssc/transductive/types.py +24 -0
- modssc-0.0.1/src/modssc/transductive/validation.py +63 -0
- modssc-0.0.1/src/modssc/views/__init__.py +23 -0
- modssc-0.0.1/src/modssc/views/api.py +251 -0
- modssc-0.0.1/src/modssc/views/errors.py +9 -0
- modssc-0.0.1/src/modssc/views/plan.py +128 -0
- modssc-0.0.1/src/modssc/views/types.py +35 -0
- modssc-0.0.1/tests/__init__.py +0 -0
- modssc-0.0.1/tests/cli/__init__.py +0 -0
- modssc-0.0.1/tests/cli/test_app.py +162 -0
- modssc-0.0.1/tests/cli/test_augmentation.py +52 -0
- modssc-0.0.1/tests/cli/test_augmentation_module.py +12 -0
- modssc-0.0.1/tests/cli/test_cache_commands.py +67 -0
- modssc-0.0.1/tests/cli/test_datasets.py +205 -0
- modssc-0.0.1/tests/cli/test_datasets_app.py +37 -0
- modssc-0.0.1/tests/cli/test_doc_compliance.py +18 -0
- modssc-0.0.1/tests/cli/test_evaluation.py +168 -0
- modssc-0.0.1/tests/cli/test_graph.py +453 -0
- modssc-0.0.1/tests/cli/test_inductive_cli.py +50 -0
- modssc-0.0.1/tests/cli/test_log_level_option.py +37 -0
- modssc-0.0.1/tests/cli/test_main.py +26 -0
- modssc-0.0.1/tests/cli/test_main_datasets.py +19 -0
- modssc-0.0.1/tests/cli/test_preprocess.py +251 -0
- modssc-0.0.1/tests/cli/test_preprocess_json.py +30 -0
- modssc-0.0.1/tests/cli/test_sampling.py +401 -0
- modssc-0.0.1/tests/cli/test_supervised.py +55 -0
- modssc-0.0.1/tests/cli/test_utils.py +35 -0
- modssc-0.0.1/tests/cli/test_version.py +13 -0
- modssc-0.0.1/tests/data_augmentation/__init__.py +0 -0
- modssc-0.0.1/tests/data_augmentation/ops/__init__.py +0 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_audio.py +48 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_core_tabular.py +79 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_graph.py +34 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_graph_extra.py +130 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_text.py +26 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_text_extra.py +63 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_torch_mock.py +362 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_vision.py +180 -0
- modssc-0.0.1/tests/data_augmentation/ops/test_vision_numpy.py +45 -0
- modssc-0.0.1/tests/data_augmentation/test_api_registry.py +176 -0
- modssc-0.0.1/tests/data_augmentation/test_optional.py +16 -0
- modssc-0.0.1/tests/data_augmentation/test_pipeline.py +46 -0
- modssc-0.0.1/tests/data_augmentation/test_registry.py +26 -0
- modssc-0.0.1/tests/data_augmentation/test_types.py +22 -0
- modssc-0.0.1/tests/data_augmentation/test_utils.py +159 -0
- modssc-0.0.1/tests/data_loader/__init__.py +0 -0
- modssc-0.0.1/tests/data_loader/catalog/__init__.py +0 -0
- modssc-0.0.1/tests/data_loader/catalog/test_catalog.py +40 -0
- modssc-0.0.1/tests/data_loader/providers/__init__.py +0 -0
- modssc-0.0.1/tests/data_loader/providers/test_hf.py +203 -0
- modssc-0.0.1/tests/data_loader/providers/test_openml.py +194 -0
- modssc-0.0.1/tests/data_loader/providers/test_pyg.py +401 -0
- modssc-0.0.1/tests/data_loader/providers/test_registry.py +41 -0
- modssc-0.0.1/tests/data_loader/providers/test_stubs.py +191 -0
- modssc-0.0.1/tests/data_loader/providers/test_tfds.py +108 -0
- modssc-0.0.1/tests/data_loader/providers/test_torchaudio.py +278 -0
- modssc-0.0.1/tests/data_loader/providers/test_torchvision.py +142 -0
- modssc-0.0.1/tests/data_loader/storage/__init__.py +0 -0
- modssc-0.0.1/tests/data_loader/storage/test_edges_masks.py +51 -0
- modssc-0.0.1/tests/data_loader/storage/test_files.py +158 -0
- modssc-0.0.1/tests/data_loader/storage/test_roundtrip.py +26 -0
- modssc-0.0.1/tests/data_loader/test_api.py +283 -0
- modssc-0.0.1/tests/data_loader/test_api_branches.py +95 -0
- modssc-0.0.1/tests/data_loader/test_api_end_to_end.py +55 -0
- modssc-0.0.1/tests/data_loader/test_api_meta.py +46 -0
- modssc-0.0.1/tests/data_loader/test_cache.py +237 -0
- modssc-0.0.1/tests/data_loader/test_cache_index_and_gc.py +61 -0
- modssc-0.0.1/tests/data_loader/test_errors.py +36 -0
- modssc-0.0.1/tests/data_loader/test_fingerprint.py +53 -0
- modssc-0.0.1/tests/data_loader/test_formats.py +17 -0
- modssc-0.0.1/tests/data_loader/test_import_light.py +28 -0
- modssc-0.0.1/tests/data_loader/test_manifest.py +146 -0
- modssc-0.0.1/tests/data_loader/test_numpy_adapter.py +152 -0
- modssc-0.0.1/tests/data_loader/test_optional.py +36 -0
- modssc-0.0.1/tests/data_loader/test_types.py +105 -0
- modssc-0.0.1/tests/data_loader/test_uri.py +53 -0
- modssc-0.0.1/tests/evaluation/__init__.py +0 -0
- modssc-0.0.1/tests/evaluation/test_metrics.py +234 -0
- modssc-0.0.1/tests/graph/__init__.py +0 -0
- modssc-0.0.1/tests/graph/adapters/__init__.py +0 -0
- modssc-0.0.1/tests/graph/adapters/test_pyg.py +99 -0
- modssc-0.0.1/tests/graph/construction/__init__.py +0 -0
- modssc-0.0.1/tests/graph/construction/backends/__init__.py +0 -0
- modssc-0.0.1/tests/graph/construction/backends/test_backends.py +95 -0
- modssc-0.0.1/tests/graph/construction/backends/test_faiss_backend.py +134 -0
- modssc-0.0.1/tests/graph/construction/backends/test_numpy_backend.py +149 -0
- modssc-0.0.1/tests/graph/construction/backends/test_numpy_resume.py +61 -0
- modssc-0.0.1/tests/graph/construction/ops/__init__.py +0 -0
- modssc-0.0.1/tests/graph/construction/ops/test_ops.py +407 -0
- modssc-0.0.1/tests/graph/construction/schemes/__init__.py +0 -0
- modssc-0.0.1/tests/graph/construction/schemes/test_anchor.py +195 -0
- modssc-0.0.1/tests/graph/construction/test_api_coverage.py +150 -0
- modssc-0.0.1/tests/graph/construction/test_build_graph.py +121 -0
- modssc-0.0.1/tests/graph/construction/test_builder.py +226 -0
- modssc-0.0.1/tests/graph/construction/test_construction.py +368 -0
- modssc-0.0.1/tests/graph/featurization/__init__.py +0 -0
- modssc-0.0.1/tests/graph/featurization/ops/__init__.py +0 -0
- modssc-0.0.1/tests/graph/featurization/ops/test_adjacency.py +94 -0
- modssc-0.0.1/tests/graph/featurization/test_featurization.py +549 -0
- modssc-0.0.1/tests/graph/featurization/test_views.py +64 -0
- modssc-0.0.1/tests/graph/featurization/views/__init__.py +0 -0
- modssc-0.0.1/tests/graph/featurization/views/test_struct.py +275 -0
- modssc-0.0.1/tests/graph/featurization/views/test_struct_extra.py +126 -0
- modssc-0.0.1/tests/graph/test_artifacts.py +74 -0
- modssc-0.0.1/tests/graph/test_cache.py +500 -0
- modssc-0.0.1/tests/graph/test_cache_sklearn_backend.py +492 -0
- modssc-0.0.1/tests/graph/test_masks.py +89 -0
- modssc-0.0.1/tests/graph/test_optional.py +25 -0
- modssc-0.0.1/tests/graph/test_specs.py +79 -0
- modssc-0.0.1/tests/graph/test_specs_validation.py +177 -0
- modssc-0.0.1/tests/hpo/test_patching.py +39 -0
- modssc-0.0.1/tests/hpo/test_random.py +133 -0
- modssc-0.0.1/tests/hpo/test_space.py +57 -0
- modssc-0.0.1/tests/inductive/__init__.py +0 -0
- modssc-0.0.1/tests/inductive/conftest.py +97 -0
- modssc-0.0.1/tests/inductive/dummy_registry_module.py +5 -0
- modssc-0.0.1/tests/inductive/test_backends_deep_utils.py +207 -0
- modssc-0.0.1/tests/inductive/test_errors_registry_seed.py +160 -0
- modssc-0.0.1/tests/inductive/test_methods_classic.py +1271 -0
- modssc-0.0.1/tests/inductive/test_methods_deep.py +1286 -0
- modssc-0.0.1/tests/inductive/test_methods_utils.py +189 -0
- modssc-0.0.1/tests/inductive/test_validation_adapters.py +258 -0
- modssc-0.0.1/tests/preprocess/__init__.py +0 -0
- modssc-0.0.1/tests/preprocess/models_backends/__init__.py +0 -0
- modssc-0.0.1/tests/preprocess/models_backends/test_backends.py +250 -0
- modssc-0.0.1/tests/preprocess/models_backends/test_stub.py +57 -0
- modssc-0.0.1/tests/preprocess/steps/__init__.py +0 -0
- modssc-0.0.1/tests/preprocess/steps/labels/__init__.py +0 -0
- modssc-0.0.1/tests/preprocess/steps/labels/test_encode.py +16 -0
- modssc-0.0.1/tests/preprocess/steps/labels/test_ensure_onehot.py +46 -0
- modssc-0.0.1/tests/preprocess/steps/test_audio_core.py +293 -0
- modssc-0.0.1/tests/preprocess/steps/test_base_core.py +178 -0
- modssc-0.0.1/tests/preprocess/steps/test_embeddings_graph.py +567 -0
- modssc-0.0.1/tests/preprocess/steps/test_layout.py +39 -0
- modssc-0.0.1/tests/preprocess/steps/test_tabular_one_hot.py +186 -0
- modssc-0.0.1/tests/preprocess/steps/test_text_vision.py +416 -0
- modssc-0.0.1/tests/preprocess/steps/test_to_numpy_torch.py +145 -0
- modssc-0.0.1/tests/preprocess/test_api.py +540 -0
- modssc-0.0.1/tests/preprocess/test_cache.py +493 -0
- modssc-0.0.1/tests/preprocess/test_errors.py +17 -0
- modssc-0.0.1/tests/preprocess/test_fingerprint.py +44 -0
- modssc-0.0.1/tests/preprocess/test_models.py +56 -0
- modssc-0.0.1/tests/preprocess/test_plan.py +93 -0
- modssc-0.0.1/tests/preprocess/test_plan_and_pipeline.py +211 -0
- modssc-0.0.1/tests/preprocess/test_registry.py +44 -0
- modssc-0.0.1/tests/preprocess/test_store.py +34 -0
- modssc-0.0.1/tests/preprocess/test_utils.py +94 -0
- modssc-0.0.1/tests/sampling/__init__.py +0 -0
- modssc-0.0.1/tests/sampling/_stubs.py +62 -0
- modssc-0.0.1/tests/sampling/test_api.py +210 -0
- modssc-0.0.1/tests/sampling/test_api_cache_heuristic.py +38 -0
- modssc-0.0.1/tests/sampling/test_api_complex.py +153 -0
- modssc-0.0.1/tests/sampling/test_api_graph.py +35 -0
- modssc-0.0.1/tests/sampling/test_api_inductive.py +65 -0
- modssc-0.0.1/tests/sampling/test_fingerprint.py +14 -0
- modssc-0.0.1/tests/sampling/test_imbalance.py +170 -0
- modssc-0.0.1/tests/sampling/test_labeling.py +336 -0
- modssc-0.0.1/tests/sampling/test_plan_coverage.py +72 -0
- modssc-0.0.1/tests/sampling/test_result.py +253 -0
- modssc-0.0.1/tests/sampling/test_result_properties.py +67 -0
- modssc-0.0.1/tests/sampling/test_splitters.py +278 -0
- modssc-0.0.1/tests/sampling/test_splitters_holdout.py +30 -0
- modssc-0.0.1/tests/sampling/test_splitters_kfold.py +43 -0
- modssc-0.0.1/tests/sampling/test_stats.py +26 -0
- modssc-0.0.1/tests/sampling/test_storage.py +73 -0
- modssc-0.0.1/tests/sampling/test_storage_roundtrip.py +61 -0
- modssc-0.0.1/tests/supervised/__init__.py +0 -0
- modssc-0.0.1/tests/supervised/backends/__init__.py +0 -0
- modssc-0.0.1/tests/supervised/backends/numpy/__init__.py +0 -0
- modssc-0.0.1/tests/supervised/backends/numpy/test_knn.py +122 -0
- modssc-0.0.1/tests/supervised/backends/sklearn/__init__.py +0 -0
- modssc-0.0.1/tests/supervised/backends/sklearn/test_additional_wrappers.py +197 -0
- modssc-0.0.1/tests/supervised/backends/sklearn/test_wrappers.py +330 -0
- modssc-0.0.1/tests/supervised/backends/torch/test_knn.py +153 -0
- modssc-0.0.1/tests/supervised/test_base.py +132 -0
- modssc-0.0.1/tests/supervised/test_optional.py +29 -0
- modssc-0.0.1/tests/supervised/test_registry_api.py +268 -0
- modssc-0.0.1/tests/supervised/test_utils.py +65 -0
- modssc-0.0.1/tests/test_device.py +114 -0
- modssc-0.0.1/tests/test_imports.py +31 -0
- modssc-0.0.1/tests/test_logging_config.py +116 -0
- modssc-0.0.1/tests/transductive/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/adapters/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/adapters/test_pyg.py +132 -0
- modssc-0.0.1/tests/transductive/backends/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/backends/test_numpy_backend.py +186 -0
- modssc-0.0.1/tests/transductive/backends/test_torch_backend.py +273 -0
- modssc-0.0.1/tests/transductive/methods/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/methods/advanced/__init__.py +1 -0
- modssc-0.0.1/tests/transductive/methods/advanced/test_placeholders.py +27 -0
- modssc-0.0.1/tests/transductive/methods/classic/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/methods/classic/test_graph_mincuts.py +459 -0
- modssc-0.0.1/tests/transductive/methods/classic/test_label_methods.py +1006 -0
- modssc-0.0.1/tests/transductive/methods/gnn/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/methods/gnn/test_common.py +160 -0
- modssc-0.0.1/tests/transductive/methods/gnn/test_methods.py +825 -0
- modssc-0.0.1/tests/transductive/methods/pde/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/methods/pde/test_poisson_learning.py +389 -0
- modssc-0.0.1/tests/transductive/methods/test_tsvm.py +250 -0
- modssc-0.0.1/tests/transductive/methods/test_utils.py +191 -0
- modssc-0.0.1/tests/transductive/operators/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/operators/test_laplacian.py +82 -0
- modssc-0.0.1/tests/transductive/operators/test_torch_wrappers.py +63 -0
- modssc-0.0.1/tests/transductive/solvers/__init__.py +0 -0
- modssc-0.0.1/tests/transductive/solvers/test_cg.py +66 -0
- modssc-0.0.1/tests/transductive/solvers/test_fixed_point.py +145 -0
- modssc-0.0.1/tests/transductive/test_cli_transductive.py +49 -0
- modssc-0.0.1/tests/transductive/test_registry.py +95 -0
- modssc-0.0.1/tests/transductive/test_utils_coverage.py +26 -0
- modssc-0.0.1/tests/transductive/test_validation.py +163 -0
- modssc-0.0.1/tests/views/__init__.py +0 -0
- modssc-0.0.1/tests/views/test_api.py +274 -0
- modssc-0.0.1/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.1.dev0 (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,114 @@
|
|
|
1
|
+
name: CI (disabled)
|
|
2
|
+
|
|
3
|
+
# CI is temporarily disabled.
|
|
4
|
+
# The original workflow is preserved below (commented out) so it can be restored easily.
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
disabled:
|
|
11
|
+
if: ${{ false }}
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- run: echo "CI disabled"
|
|
15
|
+
|
|
16
|
+
# ---------------------------------------------------------------------------
|
|
17
|
+
# Original workflow (commented out)
|
|
18
|
+
# ---------------------------------------------------------------------------
|
|
19
|
+
#
|
|
20
|
+
# name: CI
|
|
21
|
+
#
|
|
22
|
+
# on:
|
|
23
|
+
# push:
|
|
24
|
+
# branches: ["main"]
|
|
25
|
+
# pull_request:
|
|
26
|
+
#
|
|
27
|
+
# concurrency:
|
|
28
|
+
# group: ${{ github.workflow }}-${{ github.ref }}
|
|
29
|
+
# cancel-in-progress: true
|
|
30
|
+
#
|
|
31
|
+
# jobs:
|
|
32
|
+
# lint:
|
|
33
|
+
# runs-on: ubuntu-latest
|
|
34
|
+
# steps:
|
|
35
|
+
# - uses: actions/checkout@v6
|
|
36
|
+
#
|
|
37
|
+
# - uses: actions/setup-python@v6
|
|
38
|
+
# with:
|
|
39
|
+
# python-version: "3.12"
|
|
40
|
+
# cache: "pip"
|
|
41
|
+
# cache-dependency-path: "pyproject.toml"
|
|
42
|
+
#
|
|
43
|
+
# - name: Install
|
|
44
|
+
# run: |
|
|
45
|
+
# python -m pip install --upgrade pip wheel
|
|
46
|
+
# pip install --prefer-binary -e ".[dev]"
|
|
47
|
+
#
|
|
48
|
+
# - name: Ruff (lint and format check)
|
|
49
|
+
# run: |
|
|
50
|
+
# ruff check . && ruff format --check .
|
|
51
|
+
#
|
|
52
|
+
# test:
|
|
53
|
+
# runs-on: ubuntu-latest
|
|
54
|
+
# strategy:
|
|
55
|
+
# fail-fast: false
|
|
56
|
+
# matrix:
|
|
57
|
+
# python-version: ["3.11", "3.12"]
|
|
58
|
+
# steps:
|
|
59
|
+
# - uses: actions/checkout@v6
|
|
60
|
+
#
|
|
61
|
+
# - name: Free up disk space
|
|
62
|
+
# run: |
|
|
63
|
+
# sudo rm -rf /usr/local/lib/android
|
|
64
|
+
# sudo rm -rf /usr/share/dotnet
|
|
65
|
+
# sudo rm -rf /opt/ghc
|
|
66
|
+
# sudo rm -rf /opt/hostedtoolcache/CodeQL
|
|
67
|
+
# sudo rm -rf /usr/local/.ghcup
|
|
68
|
+
# sudo rm -rf /usr/share/swift
|
|
69
|
+
# sudo rm -rf /usr/local/share/boost
|
|
70
|
+
# sudo docker image prune --all --force
|
|
71
|
+
# sudo apt-get clean
|
|
72
|
+
# df -h
|
|
73
|
+
#
|
|
74
|
+
# - uses: actions/setup-python@v6
|
|
75
|
+
# with:
|
|
76
|
+
# python-version: ${{ matrix.python-version }}
|
|
77
|
+
# cache: "pip"
|
|
78
|
+
# cache-dependency-path: "pyproject.toml"
|
|
79
|
+
#
|
|
80
|
+
# - name: Install
|
|
81
|
+
# run: |
|
|
82
|
+
# python -m pip install --upgrade pip wheel setuptools
|
|
83
|
+
# # Install PyTorch CPU-only to save disk space
|
|
84
|
+
# pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
|
85
|
+
# # Install other dependencies
|
|
86
|
+
# pip install --no-cache-dir --prefer-binary -e ".[dev,full]"
|
|
87
|
+
#
|
|
88
|
+
# - name: Check memory
|
|
89
|
+
# run: |
|
|
90
|
+
# free -h
|
|
91
|
+
# df -h
|
|
92
|
+
#
|
|
93
|
+
# - name: Tests
|
|
94
|
+
# run: |
|
|
95
|
+
# pytest -n 4 --dist loadgroup
|
|
96
|
+
# env:
|
|
97
|
+
# PYTHONHASHSEED: 0
|
|
98
|
+
#
|
|
99
|
+
# build:
|
|
100
|
+
# runs-on: ubuntu-latest
|
|
101
|
+
# steps:
|
|
102
|
+
# - uses: actions/checkout@v6
|
|
103
|
+
#
|
|
104
|
+
# - uses: actions/setup-python@v6
|
|
105
|
+
# with:
|
|
106
|
+
# python-version: "3.12"
|
|
107
|
+
# cache: "pip"
|
|
108
|
+
# cache-dependency-path: "pyproject.toml"
|
|
109
|
+
#
|
|
110
|
+
# - name: Build wheel and sdist
|
|
111
|
+
# run: |
|
|
112
|
+
# python -m pip install --upgrade pip wheel
|
|
113
|
+
# pip install build
|
|
114
|
+
# python -m build
|
modssc-0.0.1/.gitignore
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
|
|
36
|
+
# Local artifacts, caches, runs
|
|
37
|
+
data/
|
|
38
|
+
outputs/
|
|
39
|
+
runs/
|
|
40
|
+
artifacts/
|
|
41
|
+
cache/
|
|
42
|
+
docs/
|
|
43
|
+
log/
|
|
@@ -0,0 +1,15 @@
|
|
|
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: ["--fix"]
|
|
15
|
+
- id: ruff-format
|
|
@@ -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"
|
modssc-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ModSSC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
modssc-0.0.1/Makefile
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.DEFAULT_GOAL := help
|
|
2
|
+
|
|
3
|
+
VENV_PY := .venv/bin/python
|
|
4
|
+
PYTHON ?= $(if $(wildcard $(VENV_PY)),$(VENV_PY),python)
|
|
5
|
+
|
|
6
|
+
.PHONY: help install-dev install-docs lint format test docs-serve docs-build build check-dist release-prep clean
|
|
7
|
+
|
|
8
|
+
help:
|
|
9
|
+
@echo "Targets:"
|
|
10
|
+
@echo " install-dev Install dev dependencies"
|
|
11
|
+
@echo " install-docs Install docs dependencies"
|
|
12
|
+
@echo " format Format with Ruff"
|
|
13
|
+
@echo " lint Lint with Ruff"
|
|
14
|
+
@echo " test Run pytest"
|
|
15
|
+
@echo " docs-serve Serve docs locally (MkDocs)"
|
|
16
|
+
@echo " docs-build Build docs (MkDocs)"
|
|
17
|
+
@echo " build Build sdist/wheel with build"
|
|
18
|
+
@echo " check-dist Validate dist metadata with twine"
|
|
19
|
+
@echo " release-prep Build + twine check (no publish)"
|
|
20
|
+
|
|
21
|
+
install-dev:
|
|
22
|
+
$(PYTHON) -m pip install --upgrade pip
|
|
23
|
+
$(PYTHON) -m pip install -e ".[dev]"
|
|
24
|
+
|
|
25
|
+
install-docs:
|
|
26
|
+
$(PYTHON) -m pip install --upgrade pip
|
|
27
|
+
$(PYTHON) -m pip install -e ".[docs]"
|
|
28
|
+
|
|
29
|
+
lint:
|
|
30
|
+
$(PYTHON) -m ruff check .
|
|
31
|
+
|
|
32
|
+
format:
|
|
33
|
+
$(PYTHON) -m ruff format .
|
|
34
|
+
|
|
35
|
+
test:
|
|
36
|
+
$(PYTHON) -m pytest
|
|
37
|
+
|
|
38
|
+
docs-serve:
|
|
39
|
+
$(PYTHON) -m mkdocs serve
|
|
40
|
+
|
|
41
|
+
docs-build:
|
|
42
|
+
$(PYTHON) -m mkdocs build
|
|
43
|
+
|
|
44
|
+
build:
|
|
45
|
+
$(PYTHON) -m build
|
|
46
|
+
|
|
47
|
+
check-dist:
|
|
48
|
+
$(PYTHON) -m twine check dist/*
|
|
49
|
+
|
|
50
|
+
release-prep: build check-dist
|
|
51
|
+
|
|
52
|
+
clean:
|
|
53
|
+
rm -rf dist build htmlcov .coverage .pytest_cache .ruff_cache cache artifacts data outputs runs site
|