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.
Files changed (538) hide show
  1. modssc-0.0.1/.editorconfig +18 -0
  2. modssc-0.0.1/.github/CODEOWNERS +1 -0
  3. modssc-0.0.1/.github/CODE_OF_CONDUCT.md +8 -0
  4. modssc-0.0.1/.github/CONTRIBUTING.md +13 -0
  5. modssc-0.0.1/.github/GOVERNANCE.md +22 -0
  6. modssc-0.0.1/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
  7. modssc-0.0.1/.github/ISSUE_TEMPLATE/config.yml +5 -0
  8. modssc-0.0.1/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
  9. modssc-0.0.1/.github/ISSUE_TEMPLATE/new_method.yml +71 -0
  10. modssc-0.0.1/.github/SECURITY.md +12 -0
  11. modssc-0.0.1/.github/dependabot.yml +6 -0
  12. modssc-0.0.1/.github/pull_request_template.md +11 -0
  13. modssc-0.0.1/.github/workflows/ci.yml +114 -0
  14. modssc-0.0.1/.gitignore +43 -0
  15. modssc-0.0.1/.pre-commit-config.yaml +15 -0
  16. modssc-0.0.1/CHANGELOG.md +8 -0
  17. modssc-0.0.1/CITATION.bib +9 -0
  18. modssc-0.0.1/CITATION.cff +29 -0
  19. modssc-0.0.1/LICENSE +21 -0
  20. modssc-0.0.1/Makefile +53 -0
  21. modssc-0.0.1/PKG-INFO +252 -0
  22. modssc-0.0.1/README.md +87 -0
  23. modssc-0.0.1/examples/00_inductive_toy_self_training.py +68 -0
  24. modssc-0.0.1/examples/01_evaluation_quickstart.py +30 -0
  25. modssc-0.0.1/examples/01_transductive_toy_label_propagation.py +70 -0
  26. modssc-0.0.1/examples/02_hpo_primitives_quickstart.py +23 -0
  27. modssc-0.0.1/examples/02_sampling_toy_holdout.py +39 -0
  28. modssc-0.0.1/examples/03_cli_smoke.py +36 -0
  29. modssc-0.0.1/examples/04_inductive_cotraining_two_views.py +81 -0
  30. modssc-0.0.1/mkdocs.yml +126 -0
  31. modssc-0.0.1/notebooks/00_cli_tour.ipynb +285 -0
  32. modssc-0.0.1/notebooks/01_data_loader_end_to_end.ipynb +293 -0
  33. modssc-0.0.1/notebooks/02_sampling_quickstart.ipynb +340 -0
  34. modssc-0.0.1/notebooks/03_preprocess_quickstart.ipynb +1026 -0
  35. modssc-0.0.1/notebooks/04_data_augmentation_quickstart.ipynb +178 -0
  36. modssc-0.0.1/notebooks/05_views_quickstart.ipynb +214 -0
  37. modssc-0.0.1/notebooks/06_graph_quickstart.ipynb +355 -0
  38. modssc-0.0.1/notebooks/07_supervised_quickstart.ipynb +194 -0
  39. modssc-0.0.1/notebooks/08_inductive_quickstart.ipynb +152 -0
  40. modssc-0.0.1/notebooks/09_transductive_quickstart.ipynb +272 -0
  41. modssc-0.0.1/notebooks/10_hpo_bench_smoke.ipynb +85 -0
  42. modssc-0.0.1/pyproject.toml +280 -0
  43. modssc-0.0.1/src/modssc/__about__.py +4 -0
  44. modssc-0.0.1/src/modssc/__init__.py +5 -0
  45. modssc-0.0.1/src/modssc/__main__.py +6 -0
  46. modssc-0.0.1/src/modssc/cli/__init__.py +5 -0
  47. modssc-0.0.1/src/modssc/cli/_utils.py +44 -0
  48. modssc-0.0.1/src/modssc/cli/app.py +164 -0
  49. modssc-0.0.1/src/modssc/cli/augmentation.py +45 -0
  50. modssc-0.0.1/src/modssc/cli/datasets.py +160 -0
  51. modssc-0.0.1/src/modssc/cli/evaluation.py +74 -0
  52. modssc-0.0.1/src/modssc/cli/graph.py +325 -0
  53. modssc-0.0.1/src/modssc/cli/inductive.py +60 -0
  54. modssc-0.0.1/src/modssc/cli/logging.py +10 -0
  55. modssc-0.0.1/src/modssc/cli/preprocess.py +137 -0
  56. modssc-0.0.1/src/modssc/cli/sampling.py +106 -0
  57. modssc-0.0.1/src/modssc/cli/supervised.py +45 -0
  58. modssc-0.0.1/src/modssc/cli/transductive.py +60 -0
  59. modssc-0.0.1/src/modssc/data_augmentation/__init__.py +45 -0
  60. modssc-0.0.1/src/modssc/data_augmentation/api.py +91 -0
  61. modssc-0.0.1/src/modssc/data_augmentation/errors.py +17 -0
  62. modssc-0.0.1/src/modssc/data_augmentation/ops/__init__.py +15 -0
  63. modssc-0.0.1/src/modssc/data_augmentation/ops/audio.py +66 -0
  64. modssc-0.0.1/src/modssc/data_augmentation/ops/base.py +5 -0
  65. modssc-0.0.1/src/modssc/data_augmentation/ops/core.py +47 -0
  66. modssc-0.0.1/src/modssc/data_augmentation/ops/graph.py +147 -0
  67. modssc-0.0.1/src/modssc/data_augmentation/ops/tabular.py +67 -0
  68. modssc-0.0.1/src/modssc/data_augmentation/ops/text.py +86 -0
  69. modssc-0.0.1/src/modssc/data_augmentation/ops/vision.py +206 -0
  70. modssc-0.0.1/src/modssc/data_augmentation/optional.py +14 -0
  71. modssc-0.0.1/src/modssc/data_augmentation/plan.py +37 -0
  72. modssc-0.0.1/src/modssc/data_augmentation/registry.py +76 -0
  73. modssc-0.0.1/src/modssc/data_augmentation/types.py +80 -0
  74. modssc-0.0.1/src/modssc/data_augmentation/utils.py +98 -0
  75. modssc-0.0.1/src/modssc/data_loader/__init__.py +66 -0
  76. modssc-0.0.1/src/modssc/data_loader/api.py +414 -0
  77. modssc-0.0.1/src/modssc/data_loader/cache.py +317 -0
  78. modssc-0.0.1/src/modssc/data_loader/catalog/__init__.py +29 -0
  79. modssc-0.0.1/src/modssc/data_loader/catalog/audio.py +26 -0
  80. modssc-0.0.1/src/modssc/data_loader/catalog/graph.py +38 -0
  81. modssc-0.0.1/src/modssc/data_loader/catalog/tabular.py +39 -0
  82. modssc-0.0.1/src/modssc/data_loader/catalog/text.py +88 -0
  83. modssc-0.0.1/src/modssc/data_loader/catalog/toy.py +22 -0
  84. modssc-0.0.1/src/modssc/data_loader/catalog/vision.py +56 -0
  85. modssc-0.0.1/src/modssc/data_loader/errors.py +49 -0
  86. modssc-0.0.1/src/modssc/data_loader/formats.py +41 -0
  87. modssc-0.0.1/src/modssc/data_loader/manifest.py +149 -0
  88. modssc-0.0.1/src/modssc/data_loader/numpy_adapter.py +66 -0
  89. modssc-0.0.1/src/modssc/data_loader/optional.py +23 -0
  90. modssc-0.0.1/src/modssc/data_loader/providers/__init__.py +39 -0
  91. modssc-0.0.1/src/modssc/data_loader/providers/base.py +34 -0
  92. modssc-0.0.1/src/modssc/data_loader/providers/hf.py +181 -0
  93. modssc-0.0.1/src/modssc/data_loader/providers/openml.py +168 -0
  94. modssc-0.0.1/src/modssc/data_loader/providers/pyg.py +248 -0
  95. modssc-0.0.1/src/modssc/data_loader/providers/tfds.py +98 -0
  96. modssc-0.0.1/src/modssc/data_loader/providers/torchaudio.py +223 -0
  97. modssc-0.0.1/src/modssc/data_loader/providers/torchvision.py +147 -0
  98. modssc-0.0.1/src/modssc/data_loader/providers/toy.py +68 -0
  99. modssc-0.0.1/src/modssc/data_loader/storage/__init__.py +3 -0
  100. modssc-0.0.1/src/modssc/data_loader/storage/files.py +173 -0
  101. modssc-0.0.1/src/modssc/data_loader/types.py +177 -0
  102. modssc-0.0.1/src/modssc/data_loader/uri.py +33 -0
  103. modssc-0.0.1/src/modssc/device.py +47 -0
  104. modssc-0.0.1/src/modssc/evaluation/__init__.py +27 -0
  105. modssc-0.0.1/src/modssc/evaluation/metrics.py +139 -0
  106. modssc-0.0.1/src/modssc/graph/__init__.py +30 -0
  107. modssc-0.0.1/src/modssc/graph/adapters/__init__.py +1 -0
  108. modssc-0.0.1/src/modssc/graph/adapters/pyg.py +29 -0
  109. modssc-0.0.1/src/modssc/graph/artifacts.py +135 -0
  110. modssc-0.0.1/src/modssc/graph/cache.py +312 -0
  111. modssc-0.0.1/src/modssc/graph/construction/__init__.py +7 -0
  112. modssc-0.0.1/src/modssc/graph/construction/api.py +222 -0
  113. modssc-0.0.1/src/modssc/graph/construction/backends/__init__.py +4 -0
  114. modssc-0.0.1/src/modssc/graph/construction/backends/faiss_backend.py +140 -0
  115. modssc-0.0.1/src/modssc/graph/construction/backends/numpy_backend.py +270 -0
  116. modssc-0.0.1/src/modssc/graph/construction/backends/sklearn_backend.py +87 -0
  117. modssc-0.0.1/src/modssc/graph/construction/builder.py +144 -0
  118. modssc-0.0.1/src/modssc/graph/construction/ops/__init__.py +1 -0
  119. modssc-0.0.1/src/modssc/graph/construction/ops/normalize.py +48 -0
  120. modssc-0.0.1/src/modssc/graph/construction/ops/self_loops.py +32 -0
  121. modssc-0.0.1/src/modssc/graph/construction/ops/symmetrize.py +146 -0
  122. modssc-0.0.1/src/modssc/graph/construction/ops/weights.py +51 -0
  123. modssc-0.0.1/src/modssc/graph/construction/schemes/__init__.py +9 -0
  124. modssc-0.0.1/src/modssc/graph/construction/schemes/anchor.py +272 -0
  125. modssc-0.0.1/src/modssc/graph/errors.py +35 -0
  126. modssc-0.0.1/src/modssc/graph/featurization/__init__.py +7 -0
  127. modssc-0.0.1/src/modssc/graph/featurization/api.py +141 -0
  128. modssc-0.0.1/src/modssc/graph/featurization/ops/__init__.py +1 -0
  129. modssc-0.0.1/src/modssc/graph/featurization/ops/adjacency.py +59 -0
  130. modssc-0.0.1/src/modssc/graph/featurization/views/__init__.py +1 -0
  131. modssc-0.0.1/src/modssc/graph/featurization/views/attr.py +9 -0
  132. modssc-0.0.1/src/modssc/graph/featurization/views/diffusion.py +86 -0
  133. modssc-0.0.1/src/modssc/graph/featurization/views/struct.py +314 -0
  134. modssc-0.0.1/src/modssc/graph/fingerprint.py +98 -0
  135. modssc-0.0.1/src/modssc/graph/masks.py +69 -0
  136. modssc-0.0.1/src/modssc/graph/optional.py +43 -0
  137. modssc-0.0.1/src/modssc/graph/specs.py +302 -0
  138. modssc-0.0.1/src/modssc/graph/validation.py +49 -0
  139. modssc-0.0.1/src/modssc/hpo/__init__.py +13 -0
  140. modssc-0.0.1/src/modssc/hpo/patching.py +31 -0
  141. modssc-0.0.1/src/modssc/hpo/samplers.py +100 -0
  142. modssc-0.0.1/src/modssc/hpo/space.py +112 -0
  143. modssc-0.0.1/src/modssc/hpo/types.py +23 -0
  144. modssc-0.0.1/src/modssc/inductive/__init__.py +38 -0
  145. modssc-0.0.1/src/modssc/inductive/adapters/__init__.py +11 -0
  146. modssc-0.0.1/src/modssc/inductive/adapters/numpy.py +74 -0
  147. modssc-0.0.1/src/modssc/inductive/adapters/torch.py +151 -0
  148. modssc-0.0.1/src/modssc/inductive/backends/__init__.py +5 -0
  149. modssc-0.0.1/src/modssc/inductive/backends/torch_backend.py +47 -0
  150. modssc-0.0.1/src/modssc/inductive/base.py +50 -0
  151. modssc-0.0.1/src/modssc/inductive/deep/__init__.py +11 -0
  152. modssc-0.0.1/src/modssc/inductive/deep/bundles.py +583 -0
  153. modssc-0.0.1/src/modssc/inductive/deep/types.py +17 -0
  154. modssc-0.0.1/src/modssc/inductive/deep/validation.py +34 -0
  155. modssc-0.0.1/src/modssc/inductive/errors.py +32 -0
  156. modssc-0.0.1/src/modssc/inductive/methods/__init__.py +35 -0
  157. modssc-0.0.1/src/modssc/inductive/methods/adamatch.py +293 -0
  158. modssc-0.0.1/src/modssc/inductive/methods/co_training.py +364 -0
  159. modssc-0.0.1/src/modssc/inductive/methods/deep_utils.py +139 -0
  160. modssc-0.0.1/src/modssc/inductive/methods/fixmatch.py +262 -0
  161. modssc-0.0.1/src/modssc/inductive/methods/flexmatch.py +359 -0
  162. modssc-0.0.1/src/modssc/inductive/methods/free_match.py +349 -0
  163. modssc-0.0.1/src/modssc/inductive/methods/mean_teacher.py +265 -0
  164. modssc-0.0.1/src/modssc/inductive/methods/mixmatch.py +328 -0
  165. modssc-0.0.1/src/modssc/inductive/methods/pi_model.py +225 -0
  166. modssc-0.0.1/src/modssc/inductive/methods/pseudo_label.py +217 -0
  167. modssc-0.0.1/src/modssc/inductive/methods/s4vm.py +201 -0
  168. modssc-0.0.1/src/modssc/inductive/methods/self_training.py +218 -0
  169. modssc-0.0.1/src/modssc/inductive/methods/softmatch.py +355 -0
  170. modssc-0.0.1/src/modssc/inductive/methods/tri_training.py +292 -0
  171. modssc-0.0.1/src/modssc/inductive/methods/tsvm.py +365 -0
  172. modssc-0.0.1/src/modssc/inductive/methods/uda.py +281 -0
  173. modssc-0.0.1/src/modssc/inductive/methods/utils.py +258 -0
  174. modssc-0.0.1/src/modssc/inductive/optional.py +15 -0
  175. modssc-0.0.1/src/modssc/inductive/registry.py +135 -0
  176. modssc-0.0.1/src/modssc/inductive/seed.py +38 -0
  177. modssc-0.0.1/src/modssc/inductive/types.py +42 -0
  178. modssc-0.0.1/src/modssc/inductive/validation.py +90 -0
  179. modssc-0.0.1/src/modssc/logging.py +109 -0
  180. modssc-0.0.1/src/modssc/preprocess/__init__.py +28 -0
  181. modssc-0.0.1/src/modssc/preprocess/api.py +748 -0
  182. modssc-0.0.1/src/modssc/preprocess/cache.py +298 -0
  183. modssc-0.0.1/src/modssc/preprocess/catalog.py +304 -0
  184. modssc-0.0.1/src/modssc/preprocess/errors.py +30 -0
  185. modssc-0.0.1/src/modssc/preprocess/fingerprint.py +36 -0
  186. modssc-0.0.1/src/modssc/preprocess/models.py +111 -0
  187. modssc-0.0.1/src/modssc/preprocess/models_backends/__init__.py +4 -0
  188. modssc-0.0.1/src/modssc/preprocess/models_backends/base.py +13 -0
  189. modssc-0.0.1/src/modssc/preprocess/models_backends/open_clip.py +71 -0
  190. modssc-0.0.1/src/modssc/preprocess/models_backends/sentence_transformers.py +44 -0
  191. modssc-0.0.1/src/modssc/preprocess/models_backends/stub.py +47 -0
  192. modssc-0.0.1/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +65 -0
  193. modssc-0.0.1/src/modssc/preprocess/numpy_adapter.py +32 -0
  194. modssc-0.0.1/src/modssc/preprocess/optional.py +28 -0
  195. modssc-0.0.1/src/modssc/preprocess/plan.py +93 -0
  196. modssc-0.0.1/src/modssc/preprocess/registry.py +69 -0
  197. modssc-0.0.1/src/modssc/preprocess/steps/__init__.py +1 -0
  198. modssc-0.0.1/src/modssc/preprocess/steps/audio/__init__.py +1 -0
  199. modssc-0.0.1/src/modssc/preprocess/steps/audio/load_waveform.py +133 -0
  200. modssc-0.0.1/src/modssc/preprocess/steps/audio/wav2vec2.py +35 -0
  201. modssc-0.0.1/src/modssc/preprocess/steps/base.py +49 -0
  202. modssc-0.0.1/src/modssc/preprocess/steps/core/__init__.py +1 -0
  203. modssc-0.0.1/src/modssc/preprocess/steps/core/cast_dtype.py +18 -0
  204. modssc-0.0.1/src/modssc/preprocess/steps/core/cast_fp16.py +18 -0
  205. modssc-0.0.1/src/modssc/preprocess/steps/core/copy_raw.py +17 -0
  206. modssc-0.0.1/src/modssc/preprocess/steps/core/ensure_2d.py +33 -0
  207. modssc-0.0.1/src/modssc/preprocess/steps/core/pca.py +64 -0
  208. modssc-0.0.1/src/modssc/preprocess/steps/core/random_projection.py +39 -0
  209. modssc-0.0.1/src/modssc/preprocess/steps/core/to_numpy.py +18 -0
  210. modssc-0.0.1/src/modssc/preprocess/steps/core/to_torch.py +52 -0
  211. modssc-0.0.1/src/modssc/preprocess/steps/embeddings/__init__.py +1 -0
  212. modssc-0.0.1/src/modssc/preprocess/steps/embeddings/auto.py +121 -0
  213. modssc-0.0.1/src/modssc/preprocess/steps/graph/__init__.py +1 -0
  214. modssc-0.0.1/src/modssc/preprocess/steps/graph/attach_edge_weight.py +25 -0
  215. modssc-0.0.1/src/modssc/preprocess/steps/graph/edge_sparsify.py +45 -0
  216. modssc-0.0.1/src/modssc/preprocess/steps/graph/node2vec.py +145 -0
  217. modssc-0.0.1/src/modssc/preprocess/steps/labels/__init__.py +1 -0
  218. modssc-0.0.1/src/modssc/preprocess/steps/labels/encode.py +18 -0
  219. modssc-0.0.1/src/modssc/preprocess/steps/labels/ensure_onehot.py +33 -0
  220. modssc-0.0.1/src/modssc/preprocess/steps/labels/to_numpy.py +18 -0
  221. modssc-0.0.1/src/modssc/preprocess/steps/labels/to_torch.py +54 -0
  222. modssc-0.0.1/src/modssc/preprocess/steps/tabular/__init__.py +1 -0
  223. modssc-0.0.1/src/modssc/preprocess/steps/tabular/one_hot.py +158 -0
  224. modssc-0.0.1/src/modssc/preprocess/steps/text/__init__.py +1 -0
  225. modssc-0.0.1/src/modssc/preprocess/steps/text/ensure_strings.py +16 -0
  226. modssc-0.0.1/src/modssc/preprocess/steps/text/hash_tokenizer.py +58 -0
  227. modssc-0.0.1/src/modssc/preprocess/steps/text/sentence_transformer.py +36 -0
  228. modssc-0.0.1/src/modssc/preprocess/steps/text/tfidf.py +63 -0
  229. modssc-0.0.1/src/modssc/preprocess/steps/vision/__init__.py +1 -0
  230. modssc-0.0.1/src/modssc/preprocess/steps/vision/channels_order.py +39 -0
  231. modssc-0.0.1/src/modssc/preprocess/steps/vision/ensure_num_channels.py +48 -0
  232. modssc-0.0.1/src/modssc/preprocess/steps/vision/layout.py +61 -0
  233. modssc-0.0.1/src/modssc/preprocess/steps/vision/normalize.py +40 -0
  234. modssc-0.0.1/src/modssc/preprocess/steps/vision/openclip.py +35 -0
  235. modssc-0.0.1/src/modssc/preprocess/steps/vision/resize.py +43 -0
  236. modssc-0.0.1/src/modssc/preprocess/steps/vision/zca_whitening.py +66 -0
  237. modssc-0.0.1/src/modssc/preprocess/store.py +50 -0
  238. modssc-0.0.1/src/modssc/preprocess/types.py +74 -0
  239. modssc-0.0.1/src/modssc/sampling/__init__.py +48 -0
  240. modssc-0.0.1/src/modssc/sampling/api.py +449 -0
  241. modssc-0.0.1/src/modssc/sampling/errors.py +17 -0
  242. modssc-0.0.1/src/modssc/sampling/fingerprint.py +19 -0
  243. modssc-0.0.1/src/modssc/sampling/imbalance.py +61 -0
  244. modssc-0.0.1/src/modssc/sampling/labeling.py +141 -0
  245. modssc-0.0.1/src/modssc/sampling/plan.py +277 -0
  246. modssc-0.0.1/src/modssc/sampling/result.py +159 -0
  247. modssc-0.0.1/src/modssc/sampling/splitters.py +193 -0
  248. modssc-0.0.1/src/modssc/sampling/stats.py +74 -0
  249. modssc-0.0.1/src/modssc/sampling/storage.py +76 -0
  250. modssc-0.0.1/src/modssc/supervised/__init__.py +19 -0
  251. modssc-0.0.1/src/modssc/supervised/api.py +115 -0
  252. modssc-0.0.1/src/modssc/supervised/backends/__init__.py +3 -0
  253. modssc-0.0.1/src/modssc/supervised/backends/numpy/__init__.py +1 -0
  254. modssc-0.0.1/src/modssc/supervised/backends/numpy/knn.py +158 -0
  255. modssc-0.0.1/src/modssc/supervised/backends/sklearn/__init__.py +1 -0
  256. modssc-0.0.1/src/modssc/supervised/backends/sklearn/extra_trees.py +108 -0
  257. modssc-0.0.1/src/modssc/supervised/backends/sklearn/gradient_boosting.py +99 -0
  258. modssc-0.0.1/src/modssc/supervised/backends/sklearn/knn.py +94 -0
  259. modssc-0.0.1/src/modssc/supervised/backends/sklearn/linear_svm.py +98 -0
  260. modssc-0.0.1/src/modssc/supervised/backends/sklearn/logreg.py +109 -0
  261. modssc-0.0.1/src/modssc/supervised/backends/sklearn/naive_bayes.py +198 -0
  262. modssc-0.0.1/src/modssc/supervised/backends/sklearn/random_forest.py +108 -0
  263. modssc-0.0.1/src/modssc/supervised/backends/sklearn/ridge.py +107 -0
  264. modssc-0.0.1/src/modssc/supervised/backends/sklearn/svm_rbf.py +109 -0
  265. modssc-0.0.1/src/modssc/supervised/backends/torch/__init__.py +1 -0
  266. modssc-0.0.1/src/modssc/supervised/backends/torch/audio_cnn.py +297 -0
  267. modssc-0.0.1/src/modssc/supervised/backends/torch/audio_pretrained.py +231 -0
  268. modssc-0.0.1/src/modssc/supervised/backends/torch/image_cnn.py +288 -0
  269. modssc-0.0.1/src/modssc/supervised/backends/torch/image_pretrained.py +378 -0
  270. modssc-0.0.1/src/modssc/supervised/backends/torch/knn.py +180 -0
  271. modssc-0.0.1/src/modssc/supervised/backends/torch/logreg.py +150 -0
  272. modssc-0.0.1/src/modssc/supervised/backends/torch/mlp.py +200 -0
  273. modssc-0.0.1/src/modssc/supervised/backends/torch/text_cnn.py +258 -0
  274. modssc-0.0.1/src/modssc/supervised/base.py +82 -0
  275. modssc-0.0.1/src/modssc/supervised/errors.py +39 -0
  276. modssc-0.0.1/src/modssc/supervised/optional.py +37 -0
  277. modssc-0.0.1/src/modssc/supervised/registry.py +366 -0
  278. modssc-0.0.1/src/modssc/supervised/types.py +44 -0
  279. modssc-0.0.1/src/modssc/supervised/utils.py +58 -0
  280. modssc-0.0.1/src/modssc/transductive/__init__.py +27 -0
  281. modssc-0.0.1/src/modssc/transductive/adapters/__init__.py +1 -0
  282. modssc-0.0.1/src/modssc/transductive/adapters/pyg.py +75 -0
  283. modssc-0.0.1/src/modssc/transductive/backends/__init__.py +5 -0
  284. modssc-0.0.1/src/modssc/transductive/backends/numpy_backend.py +129 -0
  285. modssc-0.0.1/src/modssc/transductive/backends/torch_backend.py +177 -0
  286. modssc-0.0.1/src/modssc/transductive/base.py +55 -0
  287. modssc-0.0.1/src/modssc/transductive/errors.py +32 -0
  288. modssc-0.0.1/src/modssc/transductive/methods/__init__.py +26 -0
  289. modssc-0.0.1/src/modssc/transductive/methods/advanced/__init__.py +11 -0
  290. modssc-0.0.1/src/modssc/transductive/methods/advanced/graphmae2.py +48 -0
  291. modssc-0.0.1/src/modssc/transductive/methods/advanced/llm_gnn.py +48 -0
  292. modssc-0.0.1/src/modssc/transductive/methods/advanced/nodeformer.py +49 -0
  293. modssc-0.0.1/src/modssc/transductive/methods/advanced/oft.py +48 -0
  294. modssc-0.0.1/src/modssc/transductive/methods/advanced/sgformer.py +48 -0
  295. modssc-0.0.1/src/modssc/transductive/methods/classic/__init__.py +20 -0
  296. modssc-0.0.1/src/modssc/transductive/methods/classic/graph_mincuts.py +278 -0
  297. modssc-0.0.1/src/modssc/transductive/methods/classic/label_propagation.py +323 -0
  298. modssc-0.0.1/src/modssc/transductive/methods/classic/label_spreading.py +299 -0
  299. modssc-0.0.1/src/modssc/transductive/methods/classic/tsvm.py +235 -0
  300. modssc-0.0.1/src/modssc/transductive/methods/gnn/__init__.py +11 -0
  301. modssc-0.0.1/src/modssc/transductive/methods/gnn/appnp.py +159 -0
  302. modssc-0.0.1/src/modssc/transductive/methods/gnn/chebnet.py +168 -0
  303. modssc-0.0.1/src/modssc/transductive/methods/gnn/common.py +378 -0
  304. modssc-0.0.1/src/modssc/transductive/methods/gnn/dgi.py +207 -0
  305. modssc-0.0.1/src/modssc/transductive/methods/gnn/gat.py +263 -0
  306. modssc-0.0.1/src/modssc/transductive/methods/gnn/gcn.py +141 -0
  307. modssc-0.0.1/src/modssc/transductive/methods/gnn/gcnii.py +164 -0
  308. modssc-0.0.1/src/modssc/transductive/methods/gnn/grand.py +224 -0
  309. modssc-0.0.1/src/modssc/transductive/methods/gnn/graphsage.py +140 -0
  310. modssc-0.0.1/src/modssc/transductive/methods/gnn/node2vec.py +297 -0
  311. modssc-0.0.1/src/modssc/transductive/methods/gnn/planetoid.py +211 -0
  312. modssc-0.0.1/src/modssc/transductive/methods/gnn/sgc.py +125 -0
  313. modssc-0.0.1/src/modssc/transductive/methods/pde/__init__.py +3 -0
  314. modssc-0.0.1/src/modssc/transductive/methods/pde/poisson_learning.py +340 -0
  315. modssc-0.0.1/src/modssc/transductive/methods/utils.py +228 -0
  316. modssc-0.0.1/src/modssc/transductive/operators/__init__.py +1 -0
  317. modssc-0.0.1/src/modssc/transductive/operators/clamp.py +24 -0
  318. modssc-0.0.1/src/modssc/transductive/operators/laplacian.py +60 -0
  319. modssc-0.0.1/src/modssc/transductive/operators/normalize.py +44 -0
  320. modssc-0.0.1/src/modssc/transductive/operators/spmm.py +47 -0
  321. modssc-0.0.1/src/modssc/transductive/optional.py +15 -0
  322. modssc-0.0.1/src/modssc/transductive/registry.py +145 -0
  323. modssc-0.0.1/src/modssc/transductive/solvers/__init__.py +1 -0
  324. modssc-0.0.1/src/modssc/transductive/solvers/cg.py +49 -0
  325. modssc-0.0.1/src/modssc/transductive/solvers/fixed_point.py +105 -0
  326. modssc-0.0.1/src/modssc/transductive/types.py +24 -0
  327. modssc-0.0.1/src/modssc/transductive/validation.py +63 -0
  328. modssc-0.0.1/src/modssc/views/__init__.py +23 -0
  329. modssc-0.0.1/src/modssc/views/api.py +251 -0
  330. modssc-0.0.1/src/modssc/views/errors.py +9 -0
  331. modssc-0.0.1/src/modssc/views/plan.py +128 -0
  332. modssc-0.0.1/src/modssc/views/types.py +35 -0
  333. modssc-0.0.1/tests/__init__.py +0 -0
  334. modssc-0.0.1/tests/cli/__init__.py +0 -0
  335. modssc-0.0.1/tests/cli/test_app.py +162 -0
  336. modssc-0.0.1/tests/cli/test_augmentation.py +52 -0
  337. modssc-0.0.1/tests/cli/test_augmentation_module.py +12 -0
  338. modssc-0.0.1/tests/cli/test_cache_commands.py +67 -0
  339. modssc-0.0.1/tests/cli/test_datasets.py +205 -0
  340. modssc-0.0.1/tests/cli/test_datasets_app.py +37 -0
  341. modssc-0.0.1/tests/cli/test_doc_compliance.py +18 -0
  342. modssc-0.0.1/tests/cli/test_evaluation.py +168 -0
  343. modssc-0.0.1/tests/cli/test_graph.py +453 -0
  344. modssc-0.0.1/tests/cli/test_inductive_cli.py +50 -0
  345. modssc-0.0.1/tests/cli/test_log_level_option.py +37 -0
  346. modssc-0.0.1/tests/cli/test_main.py +26 -0
  347. modssc-0.0.1/tests/cli/test_main_datasets.py +19 -0
  348. modssc-0.0.1/tests/cli/test_preprocess.py +251 -0
  349. modssc-0.0.1/tests/cli/test_preprocess_json.py +30 -0
  350. modssc-0.0.1/tests/cli/test_sampling.py +401 -0
  351. modssc-0.0.1/tests/cli/test_supervised.py +55 -0
  352. modssc-0.0.1/tests/cli/test_utils.py +35 -0
  353. modssc-0.0.1/tests/cli/test_version.py +13 -0
  354. modssc-0.0.1/tests/data_augmentation/__init__.py +0 -0
  355. modssc-0.0.1/tests/data_augmentation/ops/__init__.py +0 -0
  356. modssc-0.0.1/tests/data_augmentation/ops/test_audio.py +48 -0
  357. modssc-0.0.1/tests/data_augmentation/ops/test_core_tabular.py +79 -0
  358. modssc-0.0.1/tests/data_augmentation/ops/test_graph.py +34 -0
  359. modssc-0.0.1/tests/data_augmentation/ops/test_graph_extra.py +130 -0
  360. modssc-0.0.1/tests/data_augmentation/ops/test_text.py +26 -0
  361. modssc-0.0.1/tests/data_augmentation/ops/test_text_extra.py +63 -0
  362. modssc-0.0.1/tests/data_augmentation/ops/test_torch_mock.py +362 -0
  363. modssc-0.0.1/tests/data_augmentation/ops/test_vision.py +180 -0
  364. modssc-0.0.1/tests/data_augmentation/ops/test_vision_numpy.py +45 -0
  365. modssc-0.0.1/tests/data_augmentation/test_api_registry.py +176 -0
  366. modssc-0.0.1/tests/data_augmentation/test_optional.py +16 -0
  367. modssc-0.0.1/tests/data_augmentation/test_pipeline.py +46 -0
  368. modssc-0.0.1/tests/data_augmentation/test_registry.py +26 -0
  369. modssc-0.0.1/tests/data_augmentation/test_types.py +22 -0
  370. modssc-0.0.1/tests/data_augmentation/test_utils.py +159 -0
  371. modssc-0.0.1/tests/data_loader/__init__.py +0 -0
  372. modssc-0.0.1/tests/data_loader/catalog/__init__.py +0 -0
  373. modssc-0.0.1/tests/data_loader/catalog/test_catalog.py +40 -0
  374. modssc-0.0.1/tests/data_loader/providers/__init__.py +0 -0
  375. modssc-0.0.1/tests/data_loader/providers/test_hf.py +203 -0
  376. modssc-0.0.1/tests/data_loader/providers/test_openml.py +194 -0
  377. modssc-0.0.1/tests/data_loader/providers/test_pyg.py +401 -0
  378. modssc-0.0.1/tests/data_loader/providers/test_registry.py +41 -0
  379. modssc-0.0.1/tests/data_loader/providers/test_stubs.py +191 -0
  380. modssc-0.0.1/tests/data_loader/providers/test_tfds.py +108 -0
  381. modssc-0.0.1/tests/data_loader/providers/test_torchaudio.py +278 -0
  382. modssc-0.0.1/tests/data_loader/providers/test_torchvision.py +142 -0
  383. modssc-0.0.1/tests/data_loader/storage/__init__.py +0 -0
  384. modssc-0.0.1/tests/data_loader/storage/test_edges_masks.py +51 -0
  385. modssc-0.0.1/tests/data_loader/storage/test_files.py +158 -0
  386. modssc-0.0.1/tests/data_loader/storage/test_roundtrip.py +26 -0
  387. modssc-0.0.1/tests/data_loader/test_api.py +283 -0
  388. modssc-0.0.1/tests/data_loader/test_api_branches.py +95 -0
  389. modssc-0.0.1/tests/data_loader/test_api_end_to_end.py +55 -0
  390. modssc-0.0.1/tests/data_loader/test_api_meta.py +46 -0
  391. modssc-0.0.1/tests/data_loader/test_cache.py +237 -0
  392. modssc-0.0.1/tests/data_loader/test_cache_index_and_gc.py +61 -0
  393. modssc-0.0.1/tests/data_loader/test_errors.py +36 -0
  394. modssc-0.0.1/tests/data_loader/test_fingerprint.py +53 -0
  395. modssc-0.0.1/tests/data_loader/test_formats.py +17 -0
  396. modssc-0.0.1/tests/data_loader/test_import_light.py +28 -0
  397. modssc-0.0.1/tests/data_loader/test_manifest.py +146 -0
  398. modssc-0.0.1/tests/data_loader/test_numpy_adapter.py +152 -0
  399. modssc-0.0.1/tests/data_loader/test_optional.py +36 -0
  400. modssc-0.0.1/tests/data_loader/test_types.py +105 -0
  401. modssc-0.0.1/tests/data_loader/test_uri.py +53 -0
  402. modssc-0.0.1/tests/evaluation/__init__.py +0 -0
  403. modssc-0.0.1/tests/evaluation/test_metrics.py +234 -0
  404. modssc-0.0.1/tests/graph/__init__.py +0 -0
  405. modssc-0.0.1/tests/graph/adapters/__init__.py +0 -0
  406. modssc-0.0.1/tests/graph/adapters/test_pyg.py +99 -0
  407. modssc-0.0.1/tests/graph/construction/__init__.py +0 -0
  408. modssc-0.0.1/tests/graph/construction/backends/__init__.py +0 -0
  409. modssc-0.0.1/tests/graph/construction/backends/test_backends.py +95 -0
  410. modssc-0.0.1/tests/graph/construction/backends/test_faiss_backend.py +134 -0
  411. modssc-0.0.1/tests/graph/construction/backends/test_numpy_backend.py +149 -0
  412. modssc-0.0.1/tests/graph/construction/backends/test_numpy_resume.py +61 -0
  413. modssc-0.0.1/tests/graph/construction/ops/__init__.py +0 -0
  414. modssc-0.0.1/tests/graph/construction/ops/test_ops.py +407 -0
  415. modssc-0.0.1/tests/graph/construction/schemes/__init__.py +0 -0
  416. modssc-0.0.1/tests/graph/construction/schemes/test_anchor.py +195 -0
  417. modssc-0.0.1/tests/graph/construction/test_api_coverage.py +150 -0
  418. modssc-0.0.1/tests/graph/construction/test_build_graph.py +121 -0
  419. modssc-0.0.1/tests/graph/construction/test_builder.py +226 -0
  420. modssc-0.0.1/tests/graph/construction/test_construction.py +368 -0
  421. modssc-0.0.1/tests/graph/featurization/__init__.py +0 -0
  422. modssc-0.0.1/tests/graph/featurization/ops/__init__.py +0 -0
  423. modssc-0.0.1/tests/graph/featurization/ops/test_adjacency.py +94 -0
  424. modssc-0.0.1/tests/graph/featurization/test_featurization.py +549 -0
  425. modssc-0.0.1/tests/graph/featurization/test_views.py +64 -0
  426. modssc-0.0.1/tests/graph/featurization/views/__init__.py +0 -0
  427. modssc-0.0.1/tests/graph/featurization/views/test_struct.py +275 -0
  428. modssc-0.0.1/tests/graph/featurization/views/test_struct_extra.py +126 -0
  429. modssc-0.0.1/tests/graph/test_artifacts.py +74 -0
  430. modssc-0.0.1/tests/graph/test_cache.py +500 -0
  431. modssc-0.0.1/tests/graph/test_cache_sklearn_backend.py +492 -0
  432. modssc-0.0.1/tests/graph/test_masks.py +89 -0
  433. modssc-0.0.1/tests/graph/test_optional.py +25 -0
  434. modssc-0.0.1/tests/graph/test_specs.py +79 -0
  435. modssc-0.0.1/tests/graph/test_specs_validation.py +177 -0
  436. modssc-0.0.1/tests/hpo/test_patching.py +39 -0
  437. modssc-0.0.1/tests/hpo/test_random.py +133 -0
  438. modssc-0.0.1/tests/hpo/test_space.py +57 -0
  439. modssc-0.0.1/tests/inductive/__init__.py +0 -0
  440. modssc-0.0.1/tests/inductive/conftest.py +97 -0
  441. modssc-0.0.1/tests/inductive/dummy_registry_module.py +5 -0
  442. modssc-0.0.1/tests/inductive/test_backends_deep_utils.py +207 -0
  443. modssc-0.0.1/tests/inductive/test_errors_registry_seed.py +160 -0
  444. modssc-0.0.1/tests/inductive/test_methods_classic.py +1271 -0
  445. modssc-0.0.1/tests/inductive/test_methods_deep.py +1286 -0
  446. modssc-0.0.1/tests/inductive/test_methods_utils.py +189 -0
  447. modssc-0.0.1/tests/inductive/test_validation_adapters.py +258 -0
  448. modssc-0.0.1/tests/preprocess/__init__.py +0 -0
  449. modssc-0.0.1/tests/preprocess/models_backends/__init__.py +0 -0
  450. modssc-0.0.1/tests/preprocess/models_backends/test_backends.py +250 -0
  451. modssc-0.0.1/tests/preprocess/models_backends/test_stub.py +57 -0
  452. modssc-0.0.1/tests/preprocess/steps/__init__.py +0 -0
  453. modssc-0.0.1/tests/preprocess/steps/labels/__init__.py +0 -0
  454. modssc-0.0.1/tests/preprocess/steps/labels/test_encode.py +16 -0
  455. modssc-0.0.1/tests/preprocess/steps/labels/test_ensure_onehot.py +46 -0
  456. modssc-0.0.1/tests/preprocess/steps/test_audio_core.py +293 -0
  457. modssc-0.0.1/tests/preprocess/steps/test_base_core.py +178 -0
  458. modssc-0.0.1/tests/preprocess/steps/test_embeddings_graph.py +567 -0
  459. modssc-0.0.1/tests/preprocess/steps/test_layout.py +39 -0
  460. modssc-0.0.1/tests/preprocess/steps/test_tabular_one_hot.py +186 -0
  461. modssc-0.0.1/tests/preprocess/steps/test_text_vision.py +416 -0
  462. modssc-0.0.1/tests/preprocess/steps/test_to_numpy_torch.py +145 -0
  463. modssc-0.0.1/tests/preprocess/test_api.py +540 -0
  464. modssc-0.0.1/tests/preprocess/test_cache.py +493 -0
  465. modssc-0.0.1/tests/preprocess/test_errors.py +17 -0
  466. modssc-0.0.1/tests/preprocess/test_fingerprint.py +44 -0
  467. modssc-0.0.1/tests/preprocess/test_models.py +56 -0
  468. modssc-0.0.1/tests/preprocess/test_plan.py +93 -0
  469. modssc-0.0.1/tests/preprocess/test_plan_and_pipeline.py +211 -0
  470. modssc-0.0.1/tests/preprocess/test_registry.py +44 -0
  471. modssc-0.0.1/tests/preprocess/test_store.py +34 -0
  472. modssc-0.0.1/tests/preprocess/test_utils.py +94 -0
  473. modssc-0.0.1/tests/sampling/__init__.py +0 -0
  474. modssc-0.0.1/tests/sampling/_stubs.py +62 -0
  475. modssc-0.0.1/tests/sampling/test_api.py +210 -0
  476. modssc-0.0.1/tests/sampling/test_api_cache_heuristic.py +38 -0
  477. modssc-0.0.1/tests/sampling/test_api_complex.py +153 -0
  478. modssc-0.0.1/tests/sampling/test_api_graph.py +35 -0
  479. modssc-0.0.1/tests/sampling/test_api_inductive.py +65 -0
  480. modssc-0.0.1/tests/sampling/test_fingerprint.py +14 -0
  481. modssc-0.0.1/tests/sampling/test_imbalance.py +170 -0
  482. modssc-0.0.1/tests/sampling/test_labeling.py +336 -0
  483. modssc-0.0.1/tests/sampling/test_plan_coverage.py +72 -0
  484. modssc-0.0.1/tests/sampling/test_result.py +253 -0
  485. modssc-0.0.1/tests/sampling/test_result_properties.py +67 -0
  486. modssc-0.0.1/tests/sampling/test_splitters.py +278 -0
  487. modssc-0.0.1/tests/sampling/test_splitters_holdout.py +30 -0
  488. modssc-0.0.1/tests/sampling/test_splitters_kfold.py +43 -0
  489. modssc-0.0.1/tests/sampling/test_stats.py +26 -0
  490. modssc-0.0.1/tests/sampling/test_storage.py +73 -0
  491. modssc-0.0.1/tests/sampling/test_storage_roundtrip.py +61 -0
  492. modssc-0.0.1/tests/supervised/__init__.py +0 -0
  493. modssc-0.0.1/tests/supervised/backends/__init__.py +0 -0
  494. modssc-0.0.1/tests/supervised/backends/numpy/__init__.py +0 -0
  495. modssc-0.0.1/tests/supervised/backends/numpy/test_knn.py +122 -0
  496. modssc-0.0.1/tests/supervised/backends/sklearn/__init__.py +0 -0
  497. modssc-0.0.1/tests/supervised/backends/sklearn/test_additional_wrappers.py +197 -0
  498. modssc-0.0.1/tests/supervised/backends/sklearn/test_wrappers.py +330 -0
  499. modssc-0.0.1/tests/supervised/backends/torch/test_knn.py +153 -0
  500. modssc-0.0.1/tests/supervised/test_base.py +132 -0
  501. modssc-0.0.1/tests/supervised/test_optional.py +29 -0
  502. modssc-0.0.1/tests/supervised/test_registry_api.py +268 -0
  503. modssc-0.0.1/tests/supervised/test_utils.py +65 -0
  504. modssc-0.0.1/tests/test_device.py +114 -0
  505. modssc-0.0.1/tests/test_imports.py +31 -0
  506. modssc-0.0.1/tests/test_logging_config.py +116 -0
  507. modssc-0.0.1/tests/transductive/__init__.py +0 -0
  508. modssc-0.0.1/tests/transductive/adapters/__init__.py +0 -0
  509. modssc-0.0.1/tests/transductive/adapters/test_pyg.py +132 -0
  510. modssc-0.0.1/tests/transductive/backends/__init__.py +0 -0
  511. modssc-0.0.1/tests/transductive/backends/test_numpy_backend.py +186 -0
  512. modssc-0.0.1/tests/transductive/backends/test_torch_backend.py +273 -0
  513. modssc-0.0.1/tests/transductive/methods/__init__.py +0 -0
  514. modssc-0.0.1/tests/transductive/methods/advanced/__init__.py +1 -0
  515. modssc-0.0.1/tests/transductive/methods/advanced/test_placeholders.py +27 -0
  516. modssc-0.0.1/tests/transductive/methods/classic/__init__.py +0 -0
  517. modssc-0.0.1/tests/transductive/methods/classic/test_graph_mincuts.py +459 -0
  518. modssc-0.0.1/tests/transductive/methods/classic/test_label_methods.py +1006 -0
  519. modssc-0.0.1/tests/transductive/methods/gnn/__init__.py +0 -0
  520. modssc-0.0.1/tests/transductive/methods/gnn/test_common.py +160 -0
  521. modssc-0.0.1/tests/transductive/methods/gnn/test_methods.py +825 -0
  522. modssc-0.0.1/tests/transductive/methods/pde/__init__.py +0 -0
  523. modssc-0.0.1/tests/transductive/methods/pde/test_poisson_learning.py +389 -0
  524. modssc-0.0.1/tests/transductive/methods/test_tsvm.py +250 -0
  525. modssc-0.0.1/tests/transductive/methods/test_utils.py +191 -0
  526. modssc-0.0.1/tests/transductive/operators/__init__.py +0 -0
  527. modssc-0.0.1/tests/transductive/operators/test_laplacian.py +82 -0
  528. modssc-0.0.1/tests/transductive/operators/test_torch_wrappers.py +63 -0
  529. modssc-0.0.1/tests/transductive/solvers/__init__.py +0 -0
  530. modssc-0.0.1/tests/transductive/solvers/test_cg.py +66 -0
  531. modssc-0.0.1/tests/transductive/solvers/test_fixed_point.py +145 -0
  532. modssc-0.0.1/tests/transductive/test_cli_transductive.py +49 -0
  533. modssc-0.0.1/tests/transductive/test_registry.py +95 -0
  534. modssc-0.0.1/tests/transductive/test_utils_coverage.py +26 -0
  535. modssc-0.0.1/tests/transductive/test_validation.py +163 -0
  536. modssc-0.0.1/tests/views/__init__.py +0 -0
  537. modssc-0.0.1/tests/views/test_api.py +274 -0
  538. 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,8 @@
1
+ # Code of Conduct
2
+
3
+ We follow the Contributor Covenant Code of Conduct (version 2.1).
4
+
5
+ By participating in this project, you agree to uphold this code.
6
+
7
+ Enforcement
8
+ For reporting unacceptable behavior, contact the project maintainers (see CODEOWNERS).
@@ -0,0 +1,13 @@
1
+ # Contributing
2
+
3
+ ## Local setup
4
+
5
+ ```bash
6
+ python -m venv .venv
7
+ source .venv/bin/activate
8
+ pip install -e ".[dev]"
9
+ pre-commit install
10
+ pytest
11
+ ruff check .
12
+ ruff format .
13
+ ```
@@ -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,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions / design discussions
4
+ url: https://github.com/ModSSC/ModSSC/discussions
5
+ about: Use Discussions for questions and early design proposals.
@@ -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,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -0,0 +1,11 @@
1
+ ## Summary
2
+ What does this PR change?
3
+
4
+ ## Checklist
5
+ - [ ] Tests added or updated
6
+ - [ ] CI green
7
+ - [ ] Changelog updated
8
+ - [ ] Documentation updated
9
+
10
+ ## Notes
11
+ Anything reviewers should know?
@@ -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
@@ -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,8 @@
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.1
8
+ - 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"
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