modssc 0.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. modssc-0.0.4/.editorconfig +18 -0
  2. modssc-0.0.4/.github/CODEOWNERS +1 -0
  3. modssc-0.0.4/.github/CODE_OF_CONDUCT.md +8 -0
  4. modssc-0.0.4/.github/CONTRIBUTING.md +13 -0
  5. modssc-0.0.4/.github/GOVERNANCE.md +22 -0
  6. modssc-0.0.4/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
  7. modssc-0.0.4/.github/ISSUE_TEMPLATE/config.yml +5 -0
  8. modssc-0.0.4/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
  9. modssc-0.0.4/.github/ISSUE_TEMPLATE/new_method.yml +71 -0
  10. modssc-0.0.4/.github/SECURITY.md +12 -0
  11. modssc-0.0.4/.github/dependabot.yml +6 -0
  12. modssc-0.0.4/.github/pull_request_template.md +11 -0
  13. modssc-0.0.4/.github/workflows/ci.yml +106 -0
  14. modssc-0.0.4/.github/workflows/docs.yml +72 -0
  15. modssc-0.0.4/.github/workflows/release.yml +79 -0
  16. modssc-0.0.4/.gitignore +45 -0
  17. modssc-0.0.4/.pre-commit-config.yaml +31 -0
  18. modssc-0.0.4/CHANGELOG.md +17 -0
  19. modssc-0.0.4/CITATION.bib +9 -0
  20. modssc-0.0.4/CITATION.cff +29 -0
  21. modssc-0.0.4/LICENSE +21 -0
  22. modssc-0.0.4/Makefile +53 -0
  23. modssc-0.0.4/PKG-INFO +230 -0
  24. modssc-0.0.4/README.md +64 -0
  25. modssc-0.0.4/codecov.yml +34 -0
  26. modssc-0.0.4/docs/assets/logo.jpeg +0 -0
  27. modssc-0.0.4/docs/development/contributing.md +109 -0
  28. modssc-0.0.4/docs/development/release-process.md +57 -0
  29. modssc-0.0.4/docs/getting-started/concepts.md +95 -0
  30. modssc-0.0.4/docs/getting-started/installation.md +79 -0
  31. modssc-0.0.4/docs/getting-started/quickstart.md +76 -0
  32. modssc-0.0.4/docs/how-to/augmentation.md +84 -0
  33. modssc-0.0.4/docs/how-to/datasets.md +79 -0
  34. modssc-0.0.4/docs/how-to/evaluation.md +73 -0
  35. modssc-0.0.4/docs/how-to/graph.md +84 -0
  36. modssc-0.0.4/docs/how-to/hpo.md +68 -0
  37. modssc-0.0.4/docs/how-to/preprocess.md +85 -0
  38. modssc-0.0.4/docs/how-to/sampling.md +99 -0
  39. modssc-0.0.4/docs/how-to/views.md +84 -0
  40. modssc-0.0.4/docs/index.md +100 -0
  41. modssc-0.0.4/docs/javascripts/sidebar-toggle.js +102 -0
  42. modssc-0.0.4/docs/reference/api/data-augmentation.md +49 -0
  43. modssc-0.0.4/docs/reference/api/data-loader.md +45 -0
  44. modssc-0.0.4/docs/reference/api/device.md +41 -0
  45. modssc-0.0.4/docs/reference/api/evaluation.md +43 -0
  46. modssc-0.0.4/docs/reference/api/graph.md +51 -0
  47. modssc-0.0.4/docs/reference/api/hpo.md +45 -0
  48. modssc-0.0.4/docs/reference/api/index.md +55 -0
  49. modssc-0.0.4/docs/reference/api/inductive.md +49 -0
  50. modssc-0.0.4/docs/reference/api/logging.md +41 -0
  51. modssc-0.0.4/docs/reference/api/preprocess.md +47 -0
  52. modssc-0.0.4/docs/reference/api/sampling.md +48 -0
  53. modssc-0.0.4/docs/reference/api/supervised.md +41 -0
  54. modssc-0.0.4/docs/reference/api/transductive.md +54 -0
  55. modssc-0.0.4/docs/reference/api/views.md +50 -0
  56. modssc-0.0.4/docs/reference/benchmarks.md +68 -0
  57. modssc-0.0.4/docs/reference/catalogs.md +167 -0
  58. modssc-0.0.4/docs/reference/cli.md +264 -0
  59. modssc-0.0.4/docs/reference/configuration.md +403 -0
  60. modssc-0.0.4/docs/stylesheets/extra.css +348 -0
  61. modssc-0.0.4/docs/tutorials/inductive-toy.md +164 -0
  62. modssc-0.0.4/docs/tutorials/transductive-toy.md +168 -0
  63. modssc-0.0.4/examples/00_inductive_toy_pseudo_label.py +68 -0
  64. modssc-0.0.4/examples/01_evaluation_quickstart.py +30 -0
  65. modssc-0.0.4/examples/01_transductive_toy_label_propagation.py +70 -0
  66. modssc-0.0.4/examples/02_hpo_primitives_quickstart.py +23 -0
  67. modssc-0.0.4/examples/02_sampling_toy_holdout.py +39 -0
  68. modssc-0.0.4/examples/03_cli_smoke.py +36 -0
  69. modssc-0.0.4/examples/04_inductive_cotraining_two_views.py +81 -0
  70. modssc-0.0.4/mkdocs.yml +111 -0
  71. modssc-0.0.4/notebooks/00_cli_tour.ipynb +289 -0
  72. modssc-0.0.4/notebooks/01_data_loader_end_to_end.ipynb +293 -0
  73. modssc-0.0.4/notebooks/02_sampling_quickstart.ipynb +340 -0
  74. modssc-0.0.4/notebooks/03_preprocess_quickstart.ipynb +1026 -0
  75. modssc-0.0.4/notebooks/04_data_augmentation_quickstart.ipynb +178 -0
  76. modssc-0.0.4/notebooks/05_views_quickstart.ipynb +214 -0
  77. modssc-0.0.4/notebooks/06_graph_quickstart.ipynb +355 -0
  78. modssc-0.0.4/notebooks/07_supervised_quickstart.ipynb +194 -0
  79. modssc-0.0.4/notebooks/08_inductive_quickstart.ipynb +105 -0
  80. modssc-0.0.4/notebooks/09_transductive_quickstart.ipynb +272 -0
  81. modssc-0.0.4/notebooks/10_hpo_bench_smoke.ipynb +85 -0
  82. modssc-0.0.4/pyproject.toml +271 -0
  83. modssc-0.0.4/src/modssc/__about__.py +4 -0
  84. modssc-0.0.4/src/modssc/__init__.py +5 -0
  85. modssc-0.0.4/src/modssc/__main__.py +6 -0
  86. modssc-0.0.4/src/modssc/cli/__init__.py +5 -0
  87. modssc-0.0.4/src/modssc/cli/_utils.py +44 -0
  88. modssc-0.0.4/src/modssc/cli/app.py +164 -0
  89. modssc-0.0.4/src/modssc/cli/augmentation.py +45 -0
  90. modssc-0.0.4/src/modssc/cli/datasets.py +160 -0
  91. modssc-0.0.4/src/modssc/cli/evaluation.py +74 -0
  92. modssc-0.0.4/src/modssc/cli/graph.py +325 -0
  93. modssc-0.0.4/src/modssc/cli/inductive.py +60 -0
  94. modssc-0.0.4/src/modssc/cli/logging.py +10 -0
  95. modssc-0.0.4/src/modssc/cli/preprocess.py +137 -0
  96. modssc-0.0.4/src/modssc/cli/sampling.py +106 -0
  97. modssc-0.0.4/src/modssc/cli/supervised.py +45 -0
  98. modssc-0.0.4/src/modssc/cli/transductive.py +60 -0
  99. modssc-0.0.4/src/modssc/data_augmentation/__init__.py +45 -0
  100. modssc-0.0.4/src/modssc/data_augmentation/api.py +91 -0
  101. modssc-0.0.4/src/modssc/data_augmentation/errors.py +17 -0
  102. modssc-0.0.4/src/modssc/data_augmentation/ops/__init__.py +15 -0
  103. modssc-0.0.4/src/modssc/data_augmentation/ops/audio.py +66 -0
  104. modssc-0.0.4/src/modssc/data_augmentation/ops/base.py +5 -0
  105. modssc-0.0.4/src/modssc/data_augmentation/ops/core.py +47 -0
  106. modssc-0.0.4/src/modssc/data_augmentation/ops/graph.py +147 -0
  107. modssc-0.0.4/src/modssc/data_augmentation/ops/tabular.py +67 -0
  108. modssc-0.0.4/src/modssc/data_augmentation/ops/text.py +86 -0
  109. modssc-0.0.4/src/modssc/data_augmentation/ops/vision.py +206 -0
  110. modssc-0.0.4/src/modssc/data_augmentation/optional.py +14 -0
  111. modssc-0.0.4/src/modssc/data_augmentation/plan.py +37 -0
  112. modssc-0.0.4/src/modssc/data_augmentation/registry.py +76 -0
  113. modssc-0.0.4/src/modssc/data_augmentation/types.py +80 -0
  114. modssc-0.0.4/src/modssc/data_augmentation/utils.py +98 -0
  115. modssc-0.0.4/src/modssc/data_loader/__init__.py +66 -0
  116. modssc-0.0.4/src/modssc/data_loader/api.py +414 -0
  117. modssc-0.0.4/src/modssc/data_loader/cache.py +317 -0
  118. modssc-0.0.4/src/modssc/data_loader/catalog/__init__.py +29 -0
  119. modssc-0.0.4/src/modssc/data_loader/catalog/audio.py +26 -0
  120. modssc-0.0.4/src/modssc/data_loader/catalog/graph.py +38 -0
  121. modssc-0.0.4/src/modssc/data_loader/catalog/tabular.py +39 -0
  122. modssc-0.0.4/src/modssc/data_loader/catalog/text.py +88 -0
  123. modssc-0.0.4/src/modssc/data_loader/catalog/toy.py +22 -0
  124. modssc-0.0.4/src/modssc/data_loader/catalog/vision.py +56 -0
  125. modssc-0.0.4/src/modssc/data_loader/errors.py +49 -0
  126. modssc-0.0.4/src/modssc/data_loader/formats.py +41 -0
  127. modssc-0.0.4/src/modssc/data_loader/manifest.py +149 -0
  128. modssc-0.0.4/src/modssc/data_loader/numpy_adapter.py +66 -0
  129. modssc-0.0.4/src/modssc/data_loader/optional.py +23 -0
  130. modssc-0.0.4/src/modssc/data_loader/providers/__init__.py +39 -0
  131. modssc-0.0.4/src/modssc/data_loader/providers/base.py +34 -0
  132. modssc-0.0.4/src/modssc/data_loader/providers/hf.py +181 -0
  133. modssc-0.0.4/src/modssc/data_loader/providers/openml.py +168 -0
  134. modssc-0.0.4/src/modssc/data_loader/providers/pyg.py +248 -0
  135. modssc-0.0.4/src/modssc/data_loader/providers/tfds.py +98 -0
  136. modssc-0.0.4/src/modssc/data_loader/providers/torchaudio.py +223 -0
  137. modssc-0.0.4/src/modssc/data_loader/providers/torchvision.py +147 -0
  138. modssc-0.0.4/src/modssc/data_loader/providers/toy.py +68 -0
  139. modssc-0.0.4/src/modssc/data_loader/storage/__init__.py +3 -0
  140. modssc-0.0.4/src/modssc/data_loader/storage/files.py +173 -0
  141. modssc-0.0.4/src/modssc/data_loader/types.py +177 -0
  142. modssc-0.0.4/src/modssc/data_loader/uri.py +33 -0
  143. modssc-0.0.4/src/modssc/device.py +74 -0
  144. modssc-0.0.4/src/modssc/evaluation/__init__.py +27 -0
  145. modssc-0.0.4/src/modssc/evaluation/metrics.py +139 -0
  146. modssc-0.0.4/src/modssc/graph/__init__.py +30 -0
  147. modssc-0.0.4/src/modssc/graph/adapters/__init__.py +1 -0
  148. modssc-0.0.4/src/modssc/graph/adapters/pyg.py +29 -0
  149. modssc-0.0.4/src/modssc/graph/artifacts.py +135 -0
  150. modssc-0.0.4/src/modssc/graph/cache.py +312 -0
  151. modssc-0.0.4/src/modssc/graph/construction/__init__.py +7 -0
  152. modssc-0.0.4/src/modssc/graph/construction/api.py +222 -0
  153. modssc-0.0.4/src/modssc/graph/construction/backends/__init__.py +4 -0
  154. modssc-0.0.4/src/modssc/graph/construction/backends/faiss_backend.py +140 -0
  155. modssc-0.0.4/src/modssc/graph/construction/backends/numpy_backend.py +270 -0
  156. modssc-0.0.4/src/modssc/graph/construction/backends/sklearn_backend.py +87 -0
  157. modssc-0.0.4/src/modssc/graph/construction/builder.py +144 -0
  158. modssc-0.0.4/src/modssc/graph/construction/ops/__init__.py +1 -0
  159. modssc-0.0.4/src/modssc/graph/construction/ops/normalize.py +48 -0
  160. modssc-0.0.4/src/modssc/graph/construction/ops/self_loops.py +32 -0
  161. modssc-0.0.4/src/modssc/graph/construction/ops/symmetrize.py +146 -0
  162. modssc-0.0.4/src/modssc/graph/construction/ops/weights.py +51 -0
  163. modssc-0.0.4/src/modssc/graph/construction/schemes/__init__.py +9 -0
  164. modssc-0.0.4/src/modssc/graph/construction/schemes/anchor.py +272 -0
  165. modssc-0.0.4/src/modssc/graph/errors.py +35 -0
  166. modssc-0.0.4/src/modssc/graph/featurization/__init__.py +7 -0
  167. modssc-0.0.4/src/modssc/graph/featurization/api.py +141 -0
  168. modssc-0.0.4/src/modssc/graph/featurization/ops/__init__.py +1 -0
  169. modssc-0.0.4/src/modssc/graph/featurization/ops/adjacency.py +59 -0
  170. modssc-0.0.4/src/modssc/graph/featurization/views/__init__.py +1 -0
  171. modssc-0.0.4/src/modssc/graph/featurization/views/attr.py +9 -0
  172. modssc-0.0.4/src/modssc/graph/featurization/views/diffusion.py +86 -0
  173. modssc-0.0.4/src/modssc/graph/featurization/views/struct.py +314 -0
  174. modssc-0.0.4/src/modssc/graph/fingerprint.py +98 -0
  175. modssc-0.0.4/src/modssc/graph/masks.py +69 -0
  176. modssc-0.0.4/src/modssc/graph/optional.py +43 -0
  177. modssc-0.0.4/src/modssc/graph/specs.py +302 -0
  178. modssc-0.0.4/src/modssc/graph/validation.py +49 -0
  179. modssc-0.0.4/src/modssc/hpo/__init__.py +13 -0
  180. modssc-0.0.4/src/modssc/hpo/patching.py +31 -0
  181. modssc-0.0.4/src/modssc/hpo/samplers.py +100 -0
  182. modssc-0.0.4/src/modssc/hpo/space.py +112 -0
  183. modssc-0.0.4/src/modssc/hpo/types.py +23 -0
  184. modssc-0.0.4/src/modssc/inductive/__init__.py +38 -0
  185. modssc-0.0.4/src/modssc/inductive/adapters/__init__.py +11 -0
  186. modssc-0.0.4/src/modssc/inductive/adapters/numpy.py +74 -0
  187. modssc-0.0.4/src/modssc/inductive/adapters/torch.py +153 -0
  188. modssc-0.0.4/src/modssc/inductive/backends/__init__.py +5 -0
  189. modssc-0.0.4/src/modssc/inductive/backends/torch_backend.py +47 -0
  190. modssc-0.0.4/src/modssc/inductive/base.py +50 -0
  191. modssc-0.0.4/src/modssc/inductive/deep/__init__.py +11 -0
  192. modssc-0.0.4/src/modssc/inductive/deep/bundles.py +684 -0
  193. modssc-0.0.4/src/modssc/inductive/deep/types.py +17 -0
  194. modssc-0.0.4/src/modssc/inductive/deep/validation.py +34 -0
  195. modssc-0.0.4/src/modssc/inductive/errors.py +32 -0
  196. modssc-0.0.4/src/modssc/inductive/methods/__init__.py +61 -0
  197. modssc-0.0.4/src/modssc/inductive/methods/adamatch.py +307 -0
  198. modssc-0.0.4/src/modssc/inductive/methods/adsh.py +370 -0
  199. modssc-0.0.4/src/modssc/inductive/methods/co_training.py +375 -0
  200. modssc-0.0.4/src/modssc/inductive/methods/comatch.py +573 -0
  201. modssc-0.0.4/src/modssc/inductive/methods/daso.py +556 -0
  202. modssc-0.0.4/src/modssc/inductive/methods/deep_co_training.py +413 -0
  203. modssc-0.0.4/src/modssc/inductive/methods/deep_utils.py +139 -0
  204. modssc-0.0.4/src/modssc/inductive/methods/defixmatch.py +338 -0
  205. modssc-0.0.4/src/modssc/inductive/methods/democratic_co_learning.py +516 -0
  206. modssc-0.0.4/src/modssc/inductive/methods/fixmatch.py +273 -0
  207. modssc-0.0.4/src/modssc/inductive/methods/flexmatch.py +372 -0
  208. modssc-0.0.4/src/modssc/inductive/methods/free_match.py +363 -0
  209. modssc-0.0.4/src/modssc/inductive/methods/mean_teacher.py +275 -0
  210. modssc-0.0.4/src/modssc/inductive/methods/meta_pseudo_labels.py +406 -0
  211. modssc-0.0.4/src/modssc/inductive/methods/mixmatch.py +339 -0
  212. modssc-0.0.4/src/modssc/inductive/methods/noisy_student.py +383 -0
  213. modssc-0.0.4/src/modssc/inductive/methods/pi_model.py +234 -0
  214. modssc-0.0.4/src/modssc/inductive/methods/pseudo_label.py +217 -0
  215. modssc-0.0.4/src/modssc/inductive/methods/s4vm.py +201 -0
  216. modssc-0.0.4/src/modssc/inductive/methods/self_training.py +481 -0
  217. modssc-0.0.4/src/modssc/inductive/methods/setred.py +506 -0
  218. modssc-0.0.4/src/modssc/inductive/methods/simclr_v2.py +565 -0
  219. modssc-0.0.4/src/modssc/inductive/methods/softmatch.py +382 -0
  220. modssc-0.0.4/src/modssc/inductive/methods/temporal_ensembling.py +283 -0
  221. modssc-0.0.4/src/modssc/inductive/methods/tri_training.py +299 -0
  222. modssc-0.0.4/src/modssc/inductive/methods/trinet.py +631 -0
  223. modssc-0.0.4/src/modssc/inductive/methods/tsvm.py +365 -0
  224. modssc-0.0.4/src/modssc/inductive/methods/uda.py +302 -0
  225. modssc-0.0.4/src/modssc/inductive/methods/utils.py +258 -0
  226. modssc-0.0.4/src/modssc/inductive/methods/vat.py +311 -0
  227. modssc-0.0.4/src/modssc/inductive/optional.py +15 -0
  228. modssc-0.0.4/src/modssc/inductive/registry.py +184 -0
  229. modssc-0.0.4/src/modssc/inductive/seed.py +38 -0
  230. modssc-0.0.4/src/modssc/inductive/types.py +42 -0
  231. modssc-0.0.4/src/modssc/inductive/validation.py +90 -0
  232. modssc-0.0.4/src/modssc/logging.py +109 -0
  233. modssc-0.0.4/src/modssc/preprocess/__init__.py +28 -0
  234. modssc-0.0.4/src/modssc/preprocess/api.py +748 -0
  235. modssc-0.0.4/src/modssc/preprocess/cache.py +309 -0
  236. modssc-0.0.4/src/modssc/preprocess/catalog.py +304 -0
  237. modssc-0.0.4/src/modssc/preprocess/errors.py +30 -0
  238. modssc-0.0.4/src/modssc/preprocess/fingerprint.py +36 -0
  239. modssc-0.0.4/src/modssc/preprocess/models.py +111 -0
  240. modssc-0.0.4/src/modssc/preprocess/models_backends/__init__.py +4 -0
  241. modssc-0.0.4/src/modssc/preprocess/models_backends/base.py +13 -0
  242. modssc-0.0.4/src/modssc/preprocess/models_backends/open_clip.py +71 -0
  243. modssc-0.0.4/src/modssc/preprocess/models_backends/sentence_transformers.py +44 -0
  244. modssc-0.0.4/src/modssc/preprocess/models_backends/stub.py +47 -0
  245. modssc-0.0.4/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +65 -0
  246. modssc-0.0.4/src/modssc/preprocess/numpy_adapter.py +32 -0
  247. modssc-0.0.4/src/modssc/preprocess/optional.py +28 -0
  248. modssc-0.0.4/src/modssc/preprocess/plan.py +93 -0
  249. modssc-0.0.4/src/modssc/preprocess/registry.py +69 -0
  250. modssc-0.0.4/src/modssc/preprocess/steps/__init__.py +1 -0
  251. modssc-0.0.4/src/modssc/preprocess/steps/audio/__init__.py +1 -0
  252. modssc-0.0.4/src/modssc/preprocess/steps/audio/load_waveform.py +133 -0
  253. modssc-0.0.4/src/modssc/preprocess/steps/audio/wav2vec2.py +35 -0
  254. modssc-0.0.4/src/modssc/preprocess/steps/base.py +49 -0
  255. modssc-0.0.4/src/modssc/preprocess/steps/core/__init__.py +1 -0
  256. modssc-0.0.4/src/modssc/preprocess/steps/core/cast_dtype.py +18 -0
  257. modssc-0.0.4/src/modssc/preprocess/steps/core/cast_fp16.py +18 -0
  258. modssc-0.0.4/src/modssc/preprocess/steps/core/copy_raw.py +17 -0
  259. modssc-0.0.4/src/modssc/preprocess/steps/core/ensure_2d.py +33 -0
  260. modssc-0.0.4/src/modssc/preprocess/steps/core/pca.py +64 -0
  261. modssc-0.0.4/src/modssc/preprocess/steps/core/random_projection.py +39 -0
  262. modssc-0.0.4/src/modssc/preprocess/steps/core/to_numpy.py +18 -0
  263. modssc-0.0.4/src/modssc/preprocess/steps/core/to_torch.py +52 -0
  264. modssc-0.0.4/src/modssc/preprocess/steps/embeddings/__init__.py +1 -0
  265. modssc-0.0.4/src/modssc/preprocess/steps/embeddings/auto.py +121 -0
  266. modssc-0.0.4/src/modssc/preprocess/steps/graph/__init__.py +1 -0
  267. modssc-0.0.4/src/modssc/preprocess/steps/graph/attach_edge_weight.py +25 -0
  268. modssc-0.0.4/src/modssc/preprocess/steps/graph/edge_sparsify.py +45 -0
  269. modssc-0.0.4/src/modssc/preprocess/steps/graph/node2vec.py +145 -0
  270. modssc-0.0.4/src/modssc/preprocess/steps/labels/__init__.py +1 -0
  271. modssc-0.0.4/src/modssc/preprocess/steps/labels/encode.py +18 -0
  272. modssc-0.0.4/src/modssc/preprocess/steps/labels/ensure_onehot.py +33 -0
  273. modssc-0.0.4/src/modssc/preprocess/steps/labels/to_numpy.py +18 -0
  274. modssc-0.0.4/src/modssc/preprocess/steps/labels/to_torch.py +54 -0
  275. modssc-0.0.4/src/modssc/preprocess/steps/tabular/__init__.py +1 -0
  276. modssc-0.0.4/src/modssc/preprocess/steps/tabular/one_hot.py +158 -0
  277. modssc-0.0.4/src/modssc/preprocess/steps/text/__init__.py +1 -0
  278. modssc-0.0.4/src/modssc/preprocess/steps/text/ensure_strings.py +16 -0
  279. modssc-0.0.4/src/modssc/preprocess/steps/text/hash_tokenizer.py +58 -0
  280. modssc-0.0.4/src/modssc/preprocess/steps/text/sentence_transformer.py +36 -0
  281. modssc-0.0.4/src/modssc/preprocess/steps/text/tfidf.py +63 -0
  282. modssc-0.0.4/src/modssc/preprocess/steps/vision/__init__.py +1 -0
  283. modssc-0.0.4/src/modssc/preprocess/steps/vision/channels_order.py +39 -0
  284. modssc-0.0.4/src/modssc/preprocess/steps/vision/ensure_num_channels.py +48 -0
  285. modssc-0.0.4/src/modssc/preprocess/steps/vision/layout.py +61 -0
  286. modssc-0.0.4/src/modssc/preprocess/steps/vision/normalize.py +40 -0
  287. modssc-0.0.4/src/modssc/preprocess/steps/vision/openclip.py +35 -0
  288. modssc-0.0.4/src/modssc/preprocess/steps/vision/resize.py +43 -0
  289. modssc-0.0.4/src/modssc/preprocess/steps/vision/zca_whitening.py +66 -0
  290. modssc-0.0.4/src/modssc/preprocess/store.py +50 -0
  291. modssc-0.0.4/src/modssc/preprocess/types.py +74 -0
  292. modssc-0.0.4/src/modssc/sampling/__init__.py +48 -0
  293. modssc-0.0.4/src/modssc/sampling/api.py +449 -0
  294. modssc-0.0.4/src/modssc/sampling/errors.py +17 -0
  295. modssc-0.0.4/src/modssc/sampling/fingerprint.py +19 -0
  296. modssc-0.0.4/src/modssc/sampling/imbalance.py +61 -0
  297. modssc-0.0.4/src/modssc/sampling/labeling.py +141 -0
  298. modssc-0.0.4/src/modssc/sampling/plan.py +277 -0
  299. modssc-0.0.4/src/modssc/sampling/result.py +159 -0
  300. modssc-0.0.4/src/modssc/sampling/splitters.py +193 -0
  301. modssc-0.0.4/src/modssc/sampling/stats.py +74 -0
  302. modssc-0.0.4/src/modssc/sampling/storage.py +76 -0
  303. modssc-0.0.4/src/modssc/supervised/__init__.py +19 -0
  304. modssc-0.0.4/src/modssc/supervised/api.py +115 -0
  305. modssc-0.0.4/src/modssc/supervised/backends/__init__.py +3 -0
  306. modssc-0.0.4/src/modssc/supervised/backends/numpy/__init__.py +1 -0
  307. modssc-0.0.4/src/modssc/supervised/backends/numpy/knn.py +158 -0
  308. modssc-0.0.4/src/modssc/supervised/backends/sklearn/__init__.py +1 -0
  309. modssc-0.0.4/src/modssc/supervised/backends/sklearn/extra_trees.py +108 -0
  310. modssc-0.0.4/src/modssc/supervised/backends/sklearn/gradient_boosting.py +99 -0
  311. modssc-0.0.4/src/modssc/supervised/backends/sklearn/knn.py +94 -0
  312. modssc-0.0.4/src/modssc/supervised/backends/sklearn/linear_svm.py +98 -0
  313. modssc-0.0.4/src/modssc/supervised/backends/sklearn/logreg.py +109 -0
  314. modssc-0.0.4/src/modssc/supervised/backends/sklearn/naive_bayes.py +198 -0
  315. modssc-0.0.4/src/modssc/supervised/backends/sklearn/random_forest.py +108 -0
  316. modssc-0.0.4/src/modssc/supervised/backends/sklearn/ridge.py +107 -0
  317. modssc-0.0.4/src/modssc/supervised/backends/sklearn/svm_rbf.py +109 -0
  318. modssc-0.0.4/src/modssc/supervised/backends/torch/__init__.py +1 -0
  319. modssc-0.0.4/src/modssc/supervised/backends/torch/audio_cnn.py +297 -0
  320. modssc-0.0.4/src/modssc/supervised/backends/torch/audio_pretrained.py +231 -0
  321. modssc-0.0.4/src/modssc/supervised/backends/torch/image_cnn.py +288 -0
  322. modssc-0.0.4/src/modssc/supervised/backends/torch/image_pretrained.py +378 -0
  323. modssc-0.0.4/src/modssc/supervised/backends/torch/knn.py +180 -0
  324. modssc-0.0.4/src/modssc/supervised/backends/torch/logreg.py +150 -0
  325. modssc-0.0.4/src/modssc/supervised/backends/torch/mlp.py +200 -0
  326. modssc-0.0.4/src/modssc/supervised/backends/torch/text_cnn.py +258 -0
  327. modssc-0.0.4/src/modssc/supervised/base.py +82 -0
  328. modssc-0.0.4/src/modssc/supervised/errors.py +39 -0
  329. modssc-0.0.4/src/modssc/supervised/optional.py +37 -0
  330. modssc-0.0.4/src/modssc/supervised/registry.py +366 -0
  331. modssc-0.0.4/src/modssc/supervised/types.py +44 -0
  332. modssc-0.0.4/src/modssc/supervised/utils.py +58 -0
  333. modssc-0.0.4/src/modssc/transductive/__init__.py +27 -0
  334. modssc-0.0.4/src/modssc/transductive/adapters/__init__.py +1 -0
  335. modssc-0.0.4/src/modssc/transductive/adapters/pyg.py +73 -0
  336. modssc-0.0.4/src/modssc/transductive/backends/__init__.py +5 -0
  337. modssc-0.0.4/src/modssc/transductive/backends/numpy_backend.py +129 -0
  338. modssc-0.0.4/src/modssc/transductive/backends/torch_backend.py +177 -0
  339. modssc-0.0.4/src/modssc/transductive/base.py +55 -0
  340. modssc-0.0.4/src/modssc/transductive/errors.py +32 -0
  341. modssc-0.0.4/src/modssc/transductive/methods/__init__.py +26 -0
  342. modssc-0.0.4/src/modssc/transductive/methods/advanced/__init__.py +11 -0
  343. modssc-0.0.4/src/modssc/transductive/methods/advanced/graphmae2.py +48 -0
  344. modssc-0.0.4/src/modssc/transductive/methods/advanced/llm_gnn.py +48 -0
  345. modssc-0.0.4/src/modssc/transductive/methods/advanced/nodeformer.py +49 -0
  346. modssc-0.0.4/src/modssc/transductive/methods/advanced/oft.py +48 -0
  347. modssc-0.0.4/src/modssc/transductive/methods/advanced/sgformer.py +48 -0
  348. modssc-0.0.4/src/modssc/transductive/methods/classic/__init__.py +20 -0
  349. modssc-0.0.4/src/modssc/transductive/methods/classic/graph_mincuts.py +278 -0
  350. modssc-0.0.4/src/modssc/transductive/methods/classic/label_propagation.py +323 -0
  351. modssc-0.0.4/src/modssc/transductive/methods/classic/label_spreading.py +299 -0
  352. modssc-0.0.4/src/modssc/transductive/methods/classic/tsvm.py +235 -0
  353. modssc-0.0.4/src/modssc/transductive/methods/gnn/__init__.py +11 -0
  354. modssc-0.0.4/src/modssc/transductive/methods/gnn/appnp.py +160 -0
  355. modssc-0.0.4/src/modssc/transductive/methods/gnn/chebnet.py +169 -0
  356. modssc-0.0.4/src/modssc/transductive/methods/gnn/common.py +405 -0
  357. modssc-0.0.4/src/modssc/transductive/methods/gnn/dgi.py +208 -0
  358. modssc-0.0.4/src/modssc/transductive/methods/gnn/gat.py +264 -0
  359. modssc-0.0.4/src/modssc/transductive/methods/gnn/gcn.py +142 -0
  360. modssc-0.0.4/src/modssc/transductive/methods/gnn/gcnii.py +165 -0
  361. modssc-0.0.4/src/modssc/transductive/methods/gnn/grand.py +238 -0
  362. modssc-0.0.4/src/modssc/transductive/methods/gnn/graphsage.py +141 -0
  363. modssc-0.0.4/src/modssc/transductive/methods/gnn/node2vec.py +297 -0
  364. modssc-0.0.4/src/modssc/transductive/methods/gnn/planetoid.py +212 -0
  365. modssc-0.0.4/src/modssc/transductive/methods/gnn/sgc.py +126 -0
  366. modssc-0.0.4/src/modssc/transductive/methods/pde/__init__.py +3 -0
  367. modssc-0.0.4/src/modssc/transductive/methods/pde/poisson_learning.py +340 -0
  368. modssc-0.0.4/src/modssc/transductive/methods/utils.py +228 -0
  369. modssc-0.0.4/src/modssc/transductive/operators/__init__.py +1 -0
  370. modssc-0.0.4/src/modssc/transductive/operators/clamp.py +36 -0
  371. modssc-0.0.4/src/modssc/transductive/operators/laplacian.py +60 -0
  372. modssc-0.0.4/src/modssc/transductive/operators/normalize.py +44 -0
  373. modssc-0.0.4/src/modssc/transductive/operators/spmm.py +47 -0
  374. modssc-0.0.4/src/modssc/transductive/optional.py +15 -0
  375. modssc-0.0.4/src/modssc/transductive/registry.py +145 -0
  376. modssc-0.0.4/src/modssc/transductive/solvers/__init__.py +1 -0
  377. modssc-0.0.4/src/modssc/transductive/solvers/cg.py +49 -0
  378. modssc-0.0.4/src/modssc/transductive/solvers/fixed_point.py +105 -0
  379. modssc-0.0.4/src/modssc/transductive/types.py +24 -0
  380. modssc-0.0.4/src/modssc/transductive/validation.py +89 -0
  381. modssc-0.0.4/src/modssc/views/__init__.py +23 -0
  382. modssc-0.0.4/src/modssc/views/api.py +251 -0
  383. modssc-0.0.4/src/modssc/views/errors.py +9 -0
  384. modssc-0.0.4/src/modssc/views/plan.py +128 -0
  385. modssc-0.0.4/src/modssc/views/types.py +35 -0
  386. modssc-0.0.4/tests/__init__.py +0 -0
  387. modssc-0.0.4/tests/cli/__init__.py +0 -0
  388. modssc-0.0.4/tests/cli/test_app.py +162 -0
  389. modssc-0.0.4/tests/cli/test_augmentation.py +52 -0
  390. modssc-0.0.4/tests/cli/test_augmentation_module.py +12 -0
  391. modssc-0.0.4/tests/cli/test_cache_commands.py +67 -0
  392. modssc-0.0.4/tests/cli/test_datasets.py +205 -0
  393. modssc-0.0.4/tests/cli/test_datasets_app.py +37 -0
  394. modssc-0.0.4/tests/cli/test_evaluation.py +168 -0
  395. modssc-0.0.4/tests/cli/test_graph.py +453 -0
  396. modssc-0.0.4/tests/cli/test_inductive_cli.py +50 -0
  397. modssc-0.0.4/tests/cli/test_log_level_option.py +37 -0
  398. modssc-0.0.4/tests/cli/test_main.py +26 -0
  399. modssc-0.0.4/tests/cli/test_main_datasets.py +19 -0
  400. modssc-0.0.4/tests/cli/test_preprocess.py +251 -0
  401. modssc-0.0.4/tests/cli/test_preprocess_json.py +30 -0
  402. modssc-0.0.4/tests/cli/test_sampling.py +401 -0
  403. modssc-0.0.4/tests/cli/test_supervised.py +55 -0
  404. modssc-0.0.4/tests/cli/test_utils.py +35 -0
  405. modssc-0.0.4/tests/cli/test_version.py +13 -0
  406. modssc-0.0.4/tests/data_augmentation/__init__.py +0 -0
  407. modssc-0.0.4/tests/data_augmentation/ops/__init__.py +0 -0
  408. modssc-0.0.4/tests/data_augmentation/ops/test_audio.py +48 -0
  409. modssc-0.0.4/tests/data_augmentation/ops/test_core_tabular.py +79 -0
  410. modssc-0.0.4/tests/data_augmentation/ops/test_graph.py +34 -0
  411. modssc-0.0.4/tests/data_augmentation/ops/test_graph_extra.py +130 -0
  412. modssc-0.0.4/tests/data_augmentation/ops/test_text.py +26 -0
  413. modssc-0.0.4/tests/data_augmentation/ops/test_text_extra.py +63 -0
  414. modssc-0.0.4/tests/data_augmentation/ops/test_torch_mock.py +362 -0
  415. modssc-0.0.4/tests/data_augmentation/ops/test_vision.py +180 -0
  416. modssc-0.0.4/tests/data_augmentation/ops/test_vision_numpy.py +45 -0
  417. modssc-0.0.4/tests/data_augmentation/test_api_registry.py +176 -0
  418. modssc-0.0.4/tests/data_augmentation/test_optional.py +16 -0
  419. modssc-0.0.4/tests/data_augmentation/test_pipeline.py +46 -0
  420. modssc-0.0.4/tests/data_augmentation/test_registry.py +26 -0
  421. modssc-0.0.4/tests/data_augmentation/test_types.py +22 -0
  422. modssc-0.0.4/tests/data_augmentation/test_utils.py +159 -0
  423. modssc-0.0.4/tests/data_loader/__init__.py +0 -0
  424. modssc-0.0.4/tests/data_loader/catalog/__init__.py +0 -0
  425. modssc-0.0.4/tests/data_loader/catalog/test_catalog.py +40 -0
  426. modssc-0.0.4/tests/data_loader/providers/__init__.py +0 -0
  427. modssc-0.0.4/tests/data_loader/providers/test_hf.py +203 -0
  428. modssc-0.0.4/tests/data_loader/providers/test_openml.py +194 -0
  429. modssc-0.0.4/tests/data_loader/providers/test_pyg.py +401 -0
  430. modssc-0.0.4/tests/data_loader/providers/test_registry.py +41 -0
  431. modssc-0.0.4/tests/data_loader/providers/test_stubs.py +191 -0
  432. modssc-0.0.4/tests/data_loader/providers/test_tfds.py +108 -0
  433. modssc-0.0.4/tests/data_loader/providers/test_torchaudio.py +278 -0
  434. modssc-0.0.4/tests/data_loader/providers/test_torchvision.py +142 -0
  435. modssc-0.0.4/tests/data_loader/storage/__init__.py +0 -0
  436. modssc-0.0.4/tests/data_loader/storage/test_edges_masks.py +51 -0
  437. modssc-0.0.4/tests/data_loader/storage/test_files.py +158 -0
  438. modssc-0.0.4/tests/data_loader/storage/test_roundtrip.py +26 -0
  439. modssc-0.0.4/tests/data_loader/test_api.py +283 -0
  440. modssc-0.0.4/tests/data_loader/test_api_branches.py +95 -0
  441. modssc-0.0.4/tests/data_loader/test_api_end_to_end.py +55 -0
  442. modssc-0.0.4/tests/data_loader/test_api_meta.py +46 -0
  443. modssc-0.0.4/tests/data_loader/test_cache.py +237 -0
  444. modssc-0.0.4/tests/data_loader/test_cache_index_and_gc.py +61 -0
  445. modssc-0.0.4/tests/data_loader/test_errors.py +36 -0
  446. modssc-0.0.4/tests/data_loader/test_fingerprint.py +53 -0
  447. modssc-0.0.4/tests/data_loader/test_formats.py +17 -0
  448. modssc-0.0.4/tests/data_loader/test_import_light.py +28 -0
  449. modssc-0.0.4/tests/data_loader/test_manifest.py +146 -0
  450. modssc-0.0.4/tests/data_loader/test_numpy_adapter.py +152 -0
  451. modssc-0.0.4/tests/data_loader/test_optional.py +36 -0
  452. modssc-0.0.4/tests/data_loader/test_types.py +105 -0
  453. modssc-0.0.4/tests/data_loader/test_uri.py +53 -0
  454. modssc-0.0.4/tests/evaluation/__init__.py +0 -0
  455. modssc-0.0.4/tests/evaluation/test_metrics.py +234 -0
  456. modssc-0.0.4/tests/graph/__init__.py +0 -0
  457. modssc-0.0.4/tests/graph/adapters/__init__.py +0 -0
  458. modssc-0.0.4/tests/graph/adapters/test_pyg.py +99 -0
  459. modssc-0.0.4/tests/graph/construction/__init__.py +0 -0
  460. modssc-0.0.4/tests/graph/construction/backends/__init__.py +0 -0
  461. modssc-0.0.4/tests/graph/construction/backends/test_backends.py +95 -0
  462. modssc-0.0.4/tests/graph/construction/backends/test_faiss_backend.py +134 -0
  463. modssc-0.0.4/tests/graph/construction/backends/test_numpy_backend.py +149 -0
  464. modssc-0.0.4/tests/graph/construction/backends/test_numpy_resume.py +61 -0
  465. modssc-0.0.4/tests/graph/construction/ops/__init__.py +0 -0
  466. modssc-0.0.4/tests/graph/construction/ops/test_ops.py +407 -0
  467. modssc-0.0.4/tests/graph/construction/schemes/__init__.py +0 -0
  468. modssc-0.0.4/tests/graph/construction/schemes/test_anchor.py +195 -0
  469. modssc-0.0.4/tests/graph/construction/test_api_coverage.py +150 -0
  470. modssc-0.0.4/tests/graph/construction/test_build_graph.py +121 -0
  471. modssc-0.0.4/tests/graph/construction/test_builder.py +226 -0
  472. modssc-0.0.4/tests/graph/construction/test_construction.py +368 -0
  473. modssc-0.0.4/tests/graph/featurization/__init__.py +0 -0
  474. modssc-0.0.4/tests/graph/featurization/ops/__init__.py +0 -0
  475. modssc-0.0.4/tests/graph/featurization/ops/test_adjacency.py +94 -0
  476. modssc-0.0.4/tests/graph/featurization/test_featurization.py +271 -0
  477. modssc-0.0.4/tests/graph/featurization/test_views.py +64 -0
  478. modssc-0.0.4/tests/graph/featurization/views/__init__.py +0 -0
  479. modssc-0.0.4/tests/graph/featurization/views/test_struct.py +322 -0
  480. modssc-0.0.4/tests/graph/featurization/views/test_struct_extra.py +195 -0
  481. modssc-0.0.4/tests/graph/test_artifacts.py +74 -0
  482. modssc-0.0.4/tests/graph/test_cache.py +537 -0
  483. modssc-0.0.4/tests/graph/test_cache_sklearn_backend.py +429 -0
  484. modssc-0.0.4/tests/graph/test_masks.py +89 -0
  485. modssc-0.0.4/tests/graph/test_optional.py +25 -0
  486. modssc-0.0.4/tests/graph/test_specs.py +79 -0
  487. modssc-0.0.4/tests/graph/test_specs_validation.py +177 -0
  488. modssc-0.0.4/tests/hpo/test_patching.py +39 -0
  489. modssc-0.0.4/tests/hpo/test_random.py +133 -0
  490. modssc-0.0.4/tests/hpo/test_space.py +57 -0
  491. modssc-0.0.4/tests/inductive/__init__.py +0 -0
  492. modssc-0.0.4/tests/inductive/conftest.py +97 -0
  493. modssc-0.0.4/tests/inductive/deep/test_bundles.py +645 -0
  494. modssc-0.0.4/tests/inductive/dummy_registry_module.py +5 -0
  495. modssc-0.0.4/tests/inductive/test_backends_deep_utils.py +226 -0
  496. modssc-0.0.4/tests/inductive/test_comatch.py +625 -0
  497. modssc-0.0.4/tests/inductive/test_daso.py +656 -0
  498. modssc-0.0.4/tests/inductive/test_deep_co_training.py +538 -0
  499. modssc-0.0.4/tests/inductive/test_democratic_co_learning_additional.py +406 -0
  500. modssc-0.0.4/tests/inductive/test_errors_registry_seed.py +162 -0
  501. modssc-0.0.4/tests/inductive/test_meta_pseudo_labels.py +548 -0
  502. modssc-0.0.4/tests/inductive/test_methods_classic.py +1217 -0
  503. modssc-0.0.4/tests/inductive/test_methods_deep.py +2548 -0
  504. modssc-0.0.4/tests/inductive/test_methods_utils.py +189 -0
  505. modssc-0.0.4/tests/inductive/test_self_training.py +448 -0
  506. modssc-0.0.4/tests/inductive/test_setred.py +302 -0
  507. modssc-0.0.4/tests/inductive/test_simclr_v2.py +571 -0
  508. modssc-0.0.4/tests/inductive/test_trinet.py +705 -0
  509. modssc-0.0.4/tests/inductive/test_validation_adapters.py +263 -0
  510. modssc-0.0.4/tests/preprocess/__init__.py +0 -0
  511. modssc-0.0.4/tests/preprocess/models_backends/__init__.py +0 -0
  512. modssc-0.0.4/tests/preprocess/models_backends/test_backends.py +250 -0
  513. modssc-0.0.4/tests/preprocess/models_backends/test_stub.py +57 -0
  514. modssc-0.0.4/tests/preprocess/steps/__init__.py +0 -0
  515. modssc-0.0.4/tests/preprocess/steps/labels/__init__.py +0 -0
  516. modssc-0.0.4/tests/preprocess/steps/labels/test_encode.py +16 -0
  517. modssc-0.0.4/tests/preprocess/steps/labels/test_ensure_onehot.py +46 -0
  518. modssc-0.0.4/tests/preprocess/steps/labels/test_to_numpy_torch.py +99 -0
  519. modssc-0.0.4/tests/preprocess/steps/test_audio_core.py +220 -0
  520. modssc-0.0.4/tests/preprocess/steps/test_base_core.py +246 -0
  521. modssc-0.0.4/tests/preprocess/steps/test_embeddings_graph.py +567 -0
  522. modssc-0.0.4/tests/preprocess/steps/test_layout.py +39 -0
  523. modssc-0.0.4/tests/preprocess/steps/test_tabular_one_hot.py +186 -0
  524. modssc-0.0.4/tests/preprocess/steps/test_text_steps.py +139 -0
  525. modssc-0.0.4/tests/preprocess/steps/test_to_numpy_torch.py +99 -0
  526. modssc-0.0.4/tests/preprocess/steps/test_vision_steps.py +275 -0
  527. modssc-0.0.4/tests/preprocess/test_api.py +862 -0
  528. modssc-0.0.4/tests/preprocess/test_cache.py +547 -0
  529. modssc-0.0.4/tests/preprocess/test_errors.py +17 -0
  530. modssc-0.0.4/tests/preprocess/test_fingerprint.py +44 -0
  531. modssc-0.0.4/tests/preprocess/test_models.py +56 -0
  532. modssc-0.0.4/tests/preprocess/test_plan.py +93 -0
  533. modssc-0.0.4/tests/preprocess/test_plan_and_pipeline.py +211 -0
  534. modssc-0.0.4/tests/preprocess/test_registry.py +44 -0
  535. modssc-0.0.4/tests/preprocess/test_store.py +34 -0
  536. modssc-0.0.4/tests/preprocess/test_utils.py +94 -0
  537. modssc-0.0.4/tests/sampling/__init__.py +0 -0
  538. modssc-0.0.4/tests/sampling/_stubs.py +62 -0
  539. modssc-0.0.4/tests/sampling/test_api.py +210 -0
  540. modssc-0.0.4/tests/sampling/test_api_cache_heuristic.py +38 -0
  541. modssc-0.0.4/tests/sampling/test_api_complex.py +153 -0
  542. modssc-0.0.4/tests/sampling/test_api_graph.py +35 -0
  543. modssc-0.0.4/tests/sampling/test_api_inductive.py +65 -0
  544. modssc-0.0.4/tests/sampling/test_fingerprint.py +14 -0
  545. modssc-0.0.4/tests/sampling/test_imbalance.py +170 -0
  546. modssc-0.0.4/tests/sampling/test_labeling.py +336 -0
  547. modssc-0.0.4/tests/sampling/test_plan_coverage.py +72 -0
  548. modssc-0.0.4/tests/sampling/test_result.py +253 -0
  549. modssc-0.0.4/tests/sampling/test_result_properties.py +67 -0
  550. modssc-0.0.4/tests/sampling/test_splitters.py +278 -0
  551. modssc-0.0.4/tests/sampling/test_splitters_holdout.py +30 -0
  552. modssc-0.0.4/tests/sampling/test_splitters_kfold.py +43 -0
  553. modssc-0.0.4/tests/sampling/test_stats.py +26 -0
  554. modssc-0.0.4/tests/sampling/test_storage.py +73 -0
  555. modssc-0.0.4/tests/sampling/test_storage_roundtrip.py +61 -0
  556. modssc-0.0.4/tests/supervised/__init__.py +0 -0
  557. modssc-0.0.4/tests/supervised/backends/__init__.py +0 -0
  558. modssc-0.0.4/tests/supervised/backends/numpy/__init__.py +0 -0
  559. modssc-0.0.4/tests/supervised/backends/numpy/test_knn.py +122 -0
  560. modssc-0.0.4/tests/supervised/backends/sklearn/__init__.py +0 -0
  561. modssc-0.0.4/tests/supervised/backends/sklearn/test_additional_wrappers.py +197 -0
  562. modssc-0.0.4/tests/supervised/backends/sklearn/test_wrappers.py +330 -0
  563. modssc-0.0.4/tests/supervised/backends/torch/test_audio_cnn.py +207 -0
  564. modssc-0.0.4/tests/supervised/backends/torch/test_audio_pretrained.py +210 -0
  565. modssc-0.0.4/tests/supervised/backends/torch/test_image_cnn.py +197 -0
  566. modssc-0.0.4/tests/supervised/backends/torch/test_image_pretrained.py +613 -0
  567. modssc-0.0.4/tests/supervised/backends/torch/test_knn.py +153 -0
  568. modssc-0.0.4/tests/supervised/backends/torch/test_logreg.py +134 -0
  569. modssc-0.0.4/tests/supervised/backends/torch/test_mlp.py +173 -0
  570. modssc-0.0.4/tests/supervised/backends/torch/test_text_cnn.py +169 -0
  571. modssc-0.0.4/tests/supervised/test_base.py +132 -0
  572. modssc-0.0.4/tests/supervised/test_optional.py +29 -0
  573. modssc-0.0.4/tests/supervised/test_registry_api.py +268 -0
  574. modssc-0.0.4/tests/supervised/test_utils.py +65 -0
  575. modssc-0.0.4/tests/test_device.py +235 -0
  576. modssc-0.0.4/tests/test_imports.py +31 -0
  577. modssc-0.0.4/tests/test_logging_config.py +116 -0
  578. modssc-0.0.4/tests/transductive/__init__.py +0 -0
  579. modssc-0.0.4/tests/transductive/adapters/__init__.py +0 -0
  580. modssc-0.0.4/tests/transductive/adapters/test_pyg.py +132 -0
  581. modssc-0.0.4/tests/transductive/backends/__init__.py +0 -0
  582. modssc-0.0.4/tests/transductive/backends/test_numpy_backend.py +186 -0
  583. modssc-0.0.4/tests/transductive/backends/test_torch_backend.py +273 -0
  584. modssc-0.0.4/tests/transductive/methods/__init__.py +0 -0
  585. modssc-0.0.4/tests/transductive/methods/advanced/__init__.py +1 -0
  586. modssc-0.0.4/tests/transductive/methods/advanced/test_placeholders.py +27 -0
  587. modssc-0.0.4/tests/transductive/methods/classic/__init__.py +0 -0
  588. modssc-0.0.4/tests/transductive/methods/classic/test_graph_mincuts.py +459 -0
  589. modssc-0.0.4/tests/transductive/methods/classic/test_label_methods.py +1043 -0
  590. modssc-0.0.4/tests/transductive/methods/gnn/__init__.py +0 -0
  591. modssc-0.0.4/tests/transductive/methods/gnn/test_common.py +166 -0
  592. modssc-0.0.4/tests/transductive/methods/gnn/test_methods.py +825 -0
  593. modssc-0.0.4/tests/transductive/methods/pde/__init__.py +0 -0
  594. modssc-0.0.4/tests/transductive/methods/pde/test_poisson_learning.py +389 -0
  595. modssc-0.0.4/tests/transductive/methods/test_tsvm.py +250 -0
  596. modssc-0.0.4/tests/transductive/methods/test_utils.py +191 -0
  597. modssc-0.0.4/tests/transductive/operators/__init__.py +0 -0
  598. modssc-0.0.4/tests/transductive/operators/test_clamp.py +33 -0
  599. modssc-0.0.4/tests/transductive/operators/test_laplacian.py +82 -0
  600. modssc-0.0.4/tests/transductive/operators/test_torch_wrappers.py +63 -0
  601. modssc-0.0.4/tests/transductive/solvers/__init__.py +0 -0
  602. modssc-0.0.4/tests/transductive/solvers/test_cg.py +66 -0
  603. modssc-0.0.4/tests/transductive/solvers/test_fixed_point.py +145 -0
  604. modssc-0.0.4/tests/transductive/test_cli_transductive.py +49 -0
  605. modssc-0.0.4/tests/transductive/test_registry.py +95 -0
  606. modssc-0.0.4/tests/transductive/test_utils_coverage.py +26 -0
  607. modssc-0.0.4/tests/transductive/test_validation.py +227 -0
  608. modssc-0.0.4/tests/views/__init__.py +0 -0
  609. modssc-0.0.4/tests/views/test_api.py +274 -0
  610. modssc-0.0.4/tests/views/test_plan.py +55 -0
@@ -0,0 +1,18 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ indent_style = space
8
+ indent_size = 4
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
13
+
14
+ [*.yml]
15
+ indent_size = 2
16
+
17
+ [*.yaml]
18
+ indent_size = 2
@@ -0,0 +1 @@
1
+ * @melvinbarbaux
@@ -0,0 +1,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.2 (or commit hash)
55
+ validations:
56
+ required: false
57
+
58
+ - type: dropdown
59
+ attributes:
60
+ label: Backend
61
+ options:
62
+ - "sklearn"
63
+ - "torch"
64
+ - "tensorflow"
65
+ - "graph (pyg)"
66
+ - "other / not sure"
67
+ validations:
68
+ required: false
69
+
70
+ - type: textarea
71
+ attributes:
72
+ label: Environment
73
+ description: Python version, OS, CPU/GPU, install extras, etc.
74
+ placeholder: |
75
+ python: 3.12
76
+ os: macOS 14
77
+ extras: [torch, vision]
78
+ validations:
79
+ required: false
@@ -0,0 +1,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,106 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ lint:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v6
20
+
21
+ - uses: actions/setup-python@v6
22
+ with:
23
+ python-version: "3.12"
24
+ cache: "pip"
25
+ cache-dependency-path: "pyproject.toml"
26
+
27
+ - name: Install
28
+ run: |
29
+ python -m pip install --upgrade pip wheel
30
+ pip install --prefer-binary -e ".[dev]"
31
+
32
+ - name: Ruff (lint and format check)
33
+ run: |
34
+ ruff check . && ruff format --check .
35
+
36
+ test:
37
+ runs-on: ubuntu-latest
38
+ strategy:
39
+ fail-fast: false
40
+ matrix:
41
+ python-version: ["3.11", "3.12"]
42
+ steps:
43
+ - uses: actions/checkout@v6
44
+
45
+ - name: Free up disk space
46
+ run: |
47
+ sudo rm -rf /usr/local/lib/android
48
+ sudo rm -rf /usr/share/dotnet
49
+ sudo rm -rf /opt/ghc
50
+ sudo rm -rf /opt/hostedtoolcache/CodeQL
51
+ sudo rm -rf /usr/local/.ghcup
52
+ sudo rm -rf /usr/share/swift
53
+ sudo rm -rf /usr/local/share/boost
54
+ sudo docker image prune --all --force
55
+ sudo apt-get clean
56
+ df -h
57
+
58
+ - uses: actions/setup-python@v6
59
+ with:
60
+ python-version: ${{ matrix.python-version }}
61
+ cache: "pip"
62
+ cache-dependency-path: "pyproject.toml"
63
+
64
+ - name: Install
65
+ run: |
66
+ python -m pip install --upgrade pip wheel setuptools
67
+ # Install PyTorch CPU-only to save disk space
68
+ pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
69
+ # Install other dependencies
70
+ pip install --no-cache-dir --prefer-binary -e ".[dev,full]"
71
+
72
+ - name: Check memory
73
+ run: |
74
+ free -h
75
+ df -h
76
+
77
+ - name: Tests
78
+ run: |
79
+ pytest -n 4 --dist loadgroup --cov-report=xml:coverage.xml
80
+ env:
81
+ PYTHONHASHSEED: 0
82
+
83
+ - name: Upload coverage to Codecov
84
+ if: matrix.python-version == '3.12'
85
+ uses: codecov/codecov-action@v5
86
+ with:
87
+ token: ${{ secrets.CODECOV_TOKEN }}
88
+ files: coverage.xml
89
+ fail_ci_if_error: true
90
+
91
+ build:
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - uses: actions/checkout@v6
95
+
96
+ - uses: actions/setup-python@v6
97
+ with:
98
+ python-version: "3.12"
99
+ cache: "pip"
100
+ cache-dependency-path: "pyproject.toml"
101
+
102
+ - name: Build wheel and sdist
103
+ run: |
104
+ python -m pip install --upgrade pip wheel
105
+ pip install build
106
+ python -m build
@@ -0,0 +1,72 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ tags: ["v*"]
7
+ paths:
8
+ - "docs/**"
9
+ - "mkdocs.yml"
10
+ - ".github/workflows/docs.yml"
11
+ pull_request:
12
+ paths:
13
+ - "docs/**"
14
+ - "mkdocs.yml"
15
+ - ".github/workflows/docs.yml"
16
+ workflow_dispatch:
17
+
18
+ permissions:
19
+ contents: read
20
+ pages: write
21
+ id-token: write
22
+
23
+ concurrency:
24
+ group: "pages"
25
+ cancel-in-progress: false
26
+
27
+ jobs:
28
+ build:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v6
32
+
33
+ - name: Setup Pages
34
+ uses: actions/configure-pages@v5
35
+
36
+ - uses: actions/setup-python@v6
37
+ with:
38
+ python-version: "3.12"
39
+ cache: "pip"
40
+ cache-dependency-path: "pyproject.toml"
41
+
42
+ - name: Install docs dependencies
43
+ run: |
44
+ python -m pip install --upgrade pip
45
+ python -m pip install -e ".[docs]"
46
+
47
+ - name: Build site (strict)
48
+ if: github.event_name == 'pull_request'
49
+ run: |
50
+ mkdocs build --strict --site-dir site
51
+
52
+ - name: Build site
53
+ if: github.event_name != 'pull_request'
54
+ run: |
55
+ mkdocs build --site-dir site
56
+
57
+ - name: Upload Pages artifact
58
+ if: github.event_name == 'push'
59
+ uses: actions/upload-pages-artifact@v4
60
+ with:
61
+ path: site
62
+
63
+ deploy:
64
+ if: github.event_name == 'push'
65
+ needs: build
66
+ runs-on: ubuntu-latest
67
+ environment:
68
+ name: github-pages
69
+ url: ${{ steps.deployment.outputs.page_url }}
70
+ steps:
71
+ - id: deployment
72
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,79 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ tags: ["v*"]
7
+ paths:
8
+ - "src/**"
9
+ - "pyproject.toml"
10
+ - ".github/workflows/release.yml"
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ build:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v6
21
+
22
+ - uses: actions/setup-python@v6
23
+ with:
24
+ python-version: "3.12"
25
+ cache: "pip"
26
+ cache-dependency-path: "pyproject.toml"
27
+
28
+ - name: Build sdist and wheel
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ python -m pip install build
32
+ python -m build
33
+
34
+ - name: Upload dist artifacts
35
+ uses: actions/upload-artifact@v6
36
+ with:
37
+ name: dist
38
+ path: dist/*
39
+
40
+ publish:
41
+ if: github.ref == 'refs/heads/main'
42
+ needs: build
43
+ runs-on: ubuntu-latest
44
+ env:
45
+ PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
46
+ steps:
47
+ - name: Download dist artifacts
48
+ uses: actions/download-artifact@v7
49
+ with:
50
+ name: dist
51
+ path: dist
52
+
53
+ - name: Publish to PyPI (if configured)
54
+ if: ${{ env.PYPI_API_TOKEN != '' }}
55
+ uses: pypa/gh-action-pypi-publish@release/v1
56
+ with:
57
+ password: ${{ env.PYPI_API_TOKEN }}
58
+ packages-dir: dist
59
+
60
+ release:
61
+ if: startsWith(github.ref, 'refs/tags/')
62
+ needs: build
63
+ runs-on: ubuntu-latest
64
+ permissions:
65
+ contents: write
66
+ steps:
67
+ - uses: actions/checkout@v6
68
+
69
+ - name: Download dist artifacts
70
+ uses: actions/download-artifact@v7
71
+ with:
72
+ name: dist
73
+ path: dist
74
+
75
+ - name: Create GitHub release
76
+ uses: softprops/action-gh-release@v2
77
+ with:
78
+ files: dist/*
79
+ body_path: CHANGELOG.md
@@ -0,0 +1,45 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.so
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+
9
+ # Tooling caches
10
+ .coverage
11
+ htmlcov/
12
+ .pytest_cache/
13
+ .mypy_cache/
14
+ .ruff_cache/
15
+
16
+ # Virtualenv
17
+ .venv/
18
+ venv/
19
+ ENV/
20
+ env/
21
+
22
+ # Jupyter
23
+ .ipynb_checkpoints/
24
+
25
+ # OS
26
+ .DS_Store
27
+ Thumbs.db
28
+
29
+ # Editors
30
+ .vscode/
31
+ .idea/
32
+
33
+ # Docs build output
34
+ site/
35
+ docs/article_code/
36
+
37
+ # Local artifacts, caches, runs
38
+ data/
39
+ outputs/
40
+ runs/
41
+ artifacts/
42
+ cache/
43
+ log/
44
+ coverage.xml
45
+ analysis/
@@ -0,0 +1,31 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: end-of-file-fixer
6
+ - id: trailing-whitespace
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+
10
+ - repo: https://github.com/astral-sh/ruff-pre-commit
11
+ rev: v0.14.9
12
+ hooks:
13
+ - id: ruff
14
+ args: ["."]
15
+ pass_filenames: false
16
+ always_run: true
17
+ - id: ruff-format
18
+ args: ["--check", "."]
19
+ pass_filenames: false
20
+ always_run: true
21
+
22
+ - repo: local
23
+ hooks:
24
+ - id: pytest
25
+ name: pytest
26
+ entry: >-
27
+ bash -c 'if [ ! -x ./.venv/bin/python ]; then echo "Missing ./.venv/bin/python. Run: python3 -m venv .venv && ./.venv/bin/pip install -e \".[dev,full]\""; exit 1; fi; exec ./.venv/bin/python -m pytest'
28
+ language: system
29
+ args: ["-n", "4", "--dist", "loadgroup", "--cov-report=xml:coverage.xml"]
30
+ pass_filenames: false
31
+ always_run: true
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on "Keep a Changelog", and this project adheres to Semantic Versioning.
6
+
7
+ ## 0.0.4
8
+ - Added multiple semi-supervised methods.
9
+
10
+ ## 0.0.3
11
+ - Fixed bugs and improved logging for inductive methods.
12
+
13
+ ## 0.0.2
14
+ - Updated github workflow
15
+
16
+ ## 0.0.1
17
+ - Initial public release.
@@ -0,0 +1,9 @@
1
+ @misc{barbaux2025modsscmodularframeworksemisupervised,
2
+ title={ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data},
3
+ author={Melvin Barbaux},
4
+ year={2025},
5
+ eprint={2512.13228},
6
+ archivePrefix={arXiv},
7
+ primaryClass={cs.LG},
8
+ url={https://arxiv.org/abs/2512.13228},
9
+ }
@@ -0,0 +1,29 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use ModSSC in your research, please cite it."
3
+ title: "ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data"
4
+ authors:
5
+ - family-names: "Barbaux"
6
+ given-names: "Melvin"
7
+ license: "MIT"
8
+ repository-code: "https://github.com/ModSSC/ModSSC"
9
+ url: "https://hal.science/hal-05415109"
10
+ keywords:
11
+ - semi-supervised learning
12
+ - classification
13
+ - reproducibility
14
+ - transductive learning
15
+ - inductive learning
16
+ preferred-citation:
17
+ type: unpublished
18
+ title: "ModSSC: A Modular Framework for Semi-Supervised Classification on Heterogeneous Data"
19
+ authors:
20
+ - family-names: "Barbaux"
21
+ given-names: "Melvin"
22
+ year: 2025
23
+ month: 12
24
+ url: "https://hal.science/hal-05415109"
25
+ notes: "Preprint describing the open source ModSSC framework for inductive and transductive semi-supervised classification on heterogeneous data."
26
+ identifiers:
27
+ - type: other
28
+ value: "hal-05415109"
29
+ description: "HAL ID"