scirex 1.0.0__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 (313) hide show
  1. scirex-1.0.0/.gitignore +138 -0
  2. scirex-1.0.0/CHANGELOG.md +68 -0
  3. scirex-1.0.0/CITATION.cff +20 -0
  4. scirex-1.0.0/COPYING +674 -0
  5. scirex-1.0.0/LICENSE +165 -0
  6. scirex-1.0.0/NOTICE +33 -0
  7. scirex-1.0.0/PKG-INFO +452 -0
  8. scirex-1.0.0/README.md +322 -0
  9. scirex-1.0.0/SECURITY.md +41 -0
  10. scirex-1.0.0/THIRD_PARTY_NOTICES.md +118 -0
  11. scirex-1.0.0/conftest.py +11 -0
  12. scirex-1.0.0/pyproject.toml +270 -0
  13. scirex-1.0.0/pytest.ini +31 -0
  14. scirex-1.0.0/src/scirex/__init__.py +69 -0
  15. scirex-1.0.0/src/scirex/_internal/__init__.py +8 -0
  16. scirex-1.0.0/src/scirex/_internal/aliases.py +144 -0
  17. scirex-1.0.0/src/scirex/_internal/deprecation.py +92 -0
  18. scirex-1.0.0/src/scirex/_internal/einsum_utils.py +108 -0
  19. scirex-1.0.0/src/scirex/_internal/extras.py +71 -0
  20. scirex-1.0.0/src/scirex/_internal/lazy.py +109 -0
  21. scirex-1.0.0/src/scirex/_internal/neighbor_logging.py +227 -0
  22. scirex-1.0.0/src/scirex/_internal/paths.py +15 -0
  23. scirex-1.0.0/src/scirex/_internal/scaling.py +97 -0
  24. scirex-1.0.0/src/scirex/_internal/segment_csr.py +63 -0
  25. scirex-1.0.0/src/scirex/_internal/serialization.py +44 -0
  26. scirex-1.0.0/src/scirex/_internal/tensorly_backend.py +23 -0
  27. scirex-1.0.0/src/scirex/_internal/torch_setup.py +118 -0
  28. scirex-1.0.0/src/scirex/_internal/version.py +56 -0
  29. scirex-1.0.0/src/scirex/_internal/wandb_utils.py +47 -0
  30. scirex-1.0.0/src/scirex/_internal/web_utils.py +211 -0
  31. scirex-1.0.0/src/scirex/_internal/wno_train_utils.py +172 -0
  32. scirex-1.0.0/src/scirex/config/__init__.py +71 -0
  33. scirex-1.0.0/src/scirex/config/gino_carcfd_config.py +50 -0
  34. scirex-1.0.0/src/scirex/config/models.py +539 -0
  35. scirex-1.0.0/src/scirex/config/opt.py +91 -0
  36. scirex-1.0.0/src/scirex/config/transolver_pipe_config.py +67 -0
  37. scirex-1.0.0/src/scirex/data/__init__.py +65 -0
  38. scirex-1.0.0/src/scirex/data/containers/__init__.py +29 -0
  39. scirex-1.0.0/src/scirex/data/containers/dict_dataset.py +45 -0
  40. scirex-1.0.0/src/scirex/data/containers/pt_dataset.py +397 -0
  41. scirex-1.0.0/src/scirex/data/containers/tensor_dataset.py +118 -0
  42. scirex-1.0.0/src/scirex/data/datasets/__init__.py +49 -0
  43. scirex-1.0.0/src/scirex/data/datasets/airfrans.py +377 -0
  44. scirex-1.0.0/src/scirex/data/datasets/car_cfd.py +133 -0
  45. scirex-1.0.0/src/scirex/data/datasets/cavity_kepsilon.py +379 -0
  46. scirex-1.0.0/src/scirex/data/datasets/chipcooling.py +377 -0
  47. scirex-1.0.0/src/scirex/data/datasets/darcy.py +356 -0
  48. scirex-1.0.0/src/scirex/data/datasets/mesh_datamodule.py +423 -0
  49. scirex-1.0.0/src/scirex/data/datasets/navier_stokes.py +242 -0
  50. scirex-1.0.0/src/scirex/data/datasets/shapenet_car.py +428 -0
  51. scirex-1.0.0/src/scirex/data/datasets/shapenet_car_boundary.py +257 -0
  52. scirex-1.0.0/src/scirex/data/datasets/shapenet_car_drag.py +351 -0
  53. scirex-1.0.0/src/scirex/data/transforms/__init__.py +29 -0
  54. scirex-1.0.0/src/scirex/data/transforms/base_transforms.py +147 -0
  55. scirex-1.0.0/src/scirex/data/transforms/data_processors.py +372 -0
  56. scirex-1.0.0/src/scirex/data/transforms/normalizers.py +382 -0
  57. scirex-1.0.0/src/scirex/experimental/__init__.py +2 -0
  58. scirex-1.0.0/src/scirex/experimental/analysis.py +138 -0
  59. scirex-1.0.0/src/scirex/experimental/distributed/__init__.py +4 -0
  60. scirex-1.0.0/src/scirex/experimental/distributed/comm.py +216 -0
  61. scirex-1.0.0/src/scirex/experimental/distributed/config.py +28 -0
  62. scirex-1.0.0/src/scirex/experimental/distributed/helpers.py +154 -0
  63. scirex-1.0.0/src/scirex/experimental/distributed/mappings.py +123 -0
  64. scirex-1.0.0/src/scirex/experimental/geometry/__init__.py +12 -0
  65. scirex-1.0.0/src/scirex/experimental/geometry/gmsh_mesh.py +249 -0
  66. scirex-1.0.0/src/scirex/experimental/geometry/mesh_io.py +220 -0
  67. scirex-1.0.0/src/scirex/experimental/giwo.py +271 -0
  68. scirex-1.0.0/src/scirex/experimental/losses/__init__.py +103 -0
  69. scirex-1.0.0/src/scirex/experimental/losses/ad_differentiation.py +237 -0
  70. scirex-1.0.0/src/scirex/experimental/losses/ad_pde_terms.py +410 -0
  71. scirex-1.0.0/src/scirex/experimental/losses/darcy_hybrid_loss.py +186 -0
  72. scirex-1.0.0/src/scirex/experimental/losses/domain_membership.py +309 -0
  73. scirex-1.0.0/src/scirex/experimental/losses/exact_ad_differentiation.py +267 -0
  74. scirex-1.0.0/src/scirex/experimental/losses/galerkin_t6.py +395 -0
  75. scirex-1.0.0/src/scirex/experimental/losses/patch_quadrature_ad.py +549 -0
  76. scirex-1.0.0/src/scirex/experimental/losses/quadrature.py +229 -0
  77. scirex-1.0.0/src/scirex/experimental/patching.py +626 -0
  78. scirex-1.0.0/src/scirex/experimental/training/__init__.py +49 -0
  79. scirex-1.0.0/src/scirex/experimental/training/trainer.py +887 -0
  80. scirex-1.0.0/src/scirex/experimental/training/training_state.py +220 -0
  81. scirex-1.0.0/src/scirex/experimental/tuning/__init__.py +50 -0
  82. scirex-1.0.0/src/scirex/experimental/tuning/tuner.py +449 -0
  83. scirex-1.0.0/src/scirex/info.py +66 -0
  84. scirex-1.0.0/src/scirex/layers/__init__.py +74 -0
  85. scirex-1.0.0/src/scirex/layers/blocks/__init__.py +66 -0
  86. scirex-1.0.0/src/scirex/layers/blocks/base_spectral_conv.py +33 -0
  87. scirex-1.0.0/src/scirex/layers/blocks/fno_block.py +542 -0
  88. scirex-1.0.0/src/scirex/layers/blocks/gno_block.py +270 -0
  89. scirex-1.0.0/src/scirex/layers/blocks/gno_weighting_functions.py +112 -0
  90. scirex-1.0.0/src/scirex/layers/blocks/integral_transform.py +227 -0
  91. scirex-1.0.0/src/scirex/layers/blocks/neighbor_search.py +665 -0
  92. scirex-1.0.0/src/scirex/layers/blocks/physics_attention.py +386 -0
  93. scirex-1.0.0/src/scirex/layers/blocks/spectral_convolution.py +573 -0
  94. scirex-1.0.0/src/scirex/layers/blocks/spectral_convolution_classic.py +148 -0
  95. scirex-1.0.0/src/scirex/layers/blocks/transolver_block.py +120 -0
  96. scirex-1.0.0/src/scirex/layers/blocks/wavelet_conv.py +441 -0
  97. scirex-1.0.0/src/scirex/layers/blocks/wno_block.py +57 -0
  98. scirex-1.0.0/src/scirex/layers/common/__init__.py +47 -0
  99. scirex-1.0.0/src/scirex/layers/common/channel_mlp.py +209 -0
  100. scirex-1.0.0/src/scirex/layers/common/complex.py +92 -0
  101. scirex-1.0.0/src/scirex/layers/common/embeddings.py +431 -0
  102. scirex-1.0.0/src/scirex/layers/common/mlp.py +45 -0
  103. scirex-1.0.0/src/scirex/layers/common/normalization.py +202 -0
  104. scirex-1.0.0/src/scirex/layers/common/padding.py +179 -0
  105. scirex-1.0.0/src/scirex/layers/common/resample.py +190 -0
  106. scirex-1.0.0/src/scirex/layers/common/skip_connections.py +184 -0
  107. scirex-1.0.0/src/scirex/losses/__init__.py +73 -0
  108. scirex-1.0.0/src/scirex/losses/darcy_piecewise_coefficient.py +666 -0
  109. scirex-1.0.0/src/scirex/losses/data_losses.py +708 -0
  110. scirex-1.0.0/src/scirex/losses/differentiation.py +342 -0
  111. scirex-1.0.0/src/scirex/losses/equation_losses.py +925 -0
  112. scirex-1.0.0/src/scirex/losses/galerkin.py +417 -0
  113. scirex-1.0.0/src/scirex/losses/galerkin_q4.py +364 -0
  114. scirex-1.0.0/src/scirex/losses/pde_terms.py +564 -0
  115. scirex-1.0.0/src/scirex/models/__init__.py +57 -0
  116. scirex-1.0.0/src/scirex/models/_legacy_refs.py +40 -0
  117. scirex-1.0.0/src/scirex/models/base.py +472 -0
  118. scirex-1.0.0/src/scirex/models/fno.py +470 -0
  119. scirex-1.0.0/src/scirex/models/fno_classic.py +209 -0
  120. scirex-1.0.0/src/scirex/models/gino.py +683 -0
  121. scirex-1.0.0/src/scirex/models/transolver.py +330 -0
  122. scirex-1.0.0/src/scirex/models/wno.py +250 -0
  123. scirex-1.0.0/src/scirex/py.typed +0 -0
  124. scirex-1.0.0/src/scirex/training/__init__.py +88 -0
  125. scirex-1.0.0/src/scirex/training/optim/__init__.py +33 -0
  126. scirex-1.0.0/src/scirex/training/optim/adamw.py +438 -0
  127. scirex-1.0.0/src/scirex/training/optim/tensor_galore_projector.py +188 -0
  128. scirex-1.0.0/src/scirex/utils.py +61 -0
  129. scirex-1.0.0/tests/__init__.py +2 -0
  130. scirex-1.0.0/tests/_internal/__init__.py +2 -0
  131. scirex-1.0.0/tests/_internal/test_deprecation.py +49 -0
  132. scirex-1.0.0/tests/_internal/test_einsum_utils.py +155 -0
  133. scirex-1.0.0/tests/_internal/test_extras.py +54 -0
  134. scirex-1.0.0/tests/_internal/test_neighbor_logging.py +184 -0
  135. scirex-1.0.0/tests/_internal/test_paths.py +15 -0
  136. scirex-1.0.0/tests/_internal/test_scaling.py +65 -0
  137. scirex-1.0.0/tests/_internal/test_segment_csr.py +147 -0
  138. scirex-1.0.0/tests/_internal/test_tensorly_backend.py +39 -0
  139. scirex-1.0.0/tests/_internal/test_torch_setup.py +343 -0
  140. scirex-1.0.0/tests/_internal/test_wandb_utils.py +51 -0
  141. scirex-1.0.0/tests/_internal/test_web_utils.py +491 -0
  142. scirex-1.0.0/tests/_internal/test_wno_train_utils.py +338 -0
  143. scirex-1.0.0/tests/api_snapshot.json +132 -0
  144. scirex-1.0.0/tests/config/__init__.py +2 -0
  145. scirex-1.0.0/tests/config/test_config_keys.py +14 -0
  146. scirex-1.0.0/tests/config/test_public_api.py +114 -0
  147. scirex-1.0.0/tests/conftest.py +86 -0
  148. scirex-1.0.0/tests/data/__init__.py +2 -0
  149. scirex-1.0.0/tests/data/containers/__init__.py +2 -0
  150. scirex-1.0.0/tests/data/containers/test_dict_dataset.py +107 -0
  151. scirex-1.0.0/tests/data/containers/test_pt_dataset.py +229 -0
  152. scirex-1.0.0/tests/data/containers/test_pt_unpickler_security.py +61 -0
  153. scirex-1.0.0/tests/data/containers/test_tensor_dataset.py +156 -0
  154. scirex-1.0.0/tests/data/datasets/MODULE_CHANGES.md +91 -0
  155. scirex-1.0.0/tests/data/datasets/__init__.py +2 -0
  156. scirex-1.0.0/tests/data/datasets/test_car_cfd_dataset.py +188 -0
  157. scirex-1.0.0/tests/data/datasets/test_cavity_kepsilon_dataset.py +416 -0
  158. scirex-1.0.0/tests/data/datasets/test_chipcooling_dataset.py +252 -0
  159. scirex-1.0.0/tests/data/datasets/test_darcy.py +218 -0
  160. scirex-1.0.0/tests/data/datasets/test_mesh_datamodule.py +307 -0
  161. scirex-1.0.0/tests/data/datasets/test_navier_stokes.py +153 -0
  162. scirex-1.0.0/tests/data/datasets/test_shapenet_car_boundary.py +313 -0
  163. scirex-1.0.0/tests/data/datasets/test_shapenet_car_dataset.py +260 -0
  164. scirex-1.0.0/tests/data/datasets/test_shapenet_car_drag.py +105 -0
  165. scirex-1.0.0/tests/data/test_immutable_defaults.py +52 -0
  166. scirex-1.0.0/tests/data/test_public_api.py +154 -0
  167. scirex-1.0.0/tests/data/transforms/MODULE_CHANGES.md +62 -0
  168. scirex-1.0.0/tests/data/transforms/__init__.py +2 -0
  169. scirex-1.0.0/tests/data/transforms/test_base_transforms.py +220 -0
  170. scirex-1.0.0/tests/data/transforms/test_data_processors.py +321 -0
  171. scirex-1.0.0/tests/data/transforms/test_normalizers.py +237 -0
  172. scirex-1.0.0/tests/docs/__init__.py +2 -0
  173. scirex-1.0.0/tests/docs/airfrans_tutorial_helpers.py +158 -0
  174. scirex-1.0.0/tests/docs/carcfd_tutorial_helpers.py +70 -0
  175. scirex-1.0.0/tests/docs/cavity_tutorial_helpers.py +194 -0
  176. scirex-1.0.0/tests/docs/chipcooling_tutorial_helpers.py +85 -0
  177. scirex-1.0.0/tests/docs/darcy_tutorial_helpers.py +59 -0
  178. scirex-1.0.0/tests/docs/darcyphysics_tutorial_helpers.py +111 -0
  179. scirex-1.0.0/tests/docs/test_classification_table.py +83 -0
  180. scirex-1.0.0/tests/docs/test_problem_cards.py +167 -0
  181. scirex-1.0.0/tests/docs/test_quickstart.py +45 -0
  182. scirex-1.0.0/tests/docs/test_tutorial_airfrans_gino.py +221 -0
  183. scirex-1.0.0/tests/docs/test_tutorial_airfrans_transolver.py +215 -0
  184. scirex-1.0.0/tests/docs/test_tutorial_airfrans_wno.py +148 -0
  185. scirex-1.0.0/tests/docs/test_tutorial_carcfd_gino.py +264 -0
  186. scirex-1.0.0/tests/docs/test_tutorial_carcfd_giwo.py +210 -0
  187. scirex-1.0.0/tests/docs/test_tutorial_carcfd_transolver.py +187 -0
  188. scirex-1.0.0/tests/docs/test_tutorial_cavity_fno.py +117 -0
  189. scirex-1.0.0/tests/docs/test_tutorial_cavity_gino.py +119 -0
  190. scirex-1.0.0/tests/docs/test_tutorial_cavity_transolver.py +119 -0
  191. scirex-1.0.0/tests/docs/test_tutorial_cavity_wno.py +117 -0
  192. scirex-1.0.0/tests/docs/test_tutorial_chipcooling_fno.py +210 -0
  193. scirex-1.0.0/tests/docs/test_tutorial_chipcooling_gino.py +190 -0
  194. scirex-1.0.0/tests/docs/test_tutorial_chipcooling_transolver.py +148 -0
  195. scirex-1.0.0/tests/docs/test_tutorial_chipcooling_wno.py +182 -0
  196. scirex-1.0.0/tests/docs/test_tutorial_darcy_fno.py +151 -0
  197. scirex-1.0.0/tests/docs/test_tutorial_darcy_gino.py +155 -0
  198. scirex-1.0.0/tests/docs/test_tutorial_darcy_transolver.py +139 -0
  199. scirex-1.0.0/tests/docs/test_tutorial_darcy_wno.py +149 -0
  200. scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_fno.py +142 -0
  201. scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_gino.py +140 -0
  202. scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_transolver.py +141 -0
  203. scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_wno.py +143 -0
  204. scirex-1.0.0/tests/docs/test_tutorial_navierstokes_fno.py +218 -0
  205. scirex-1.0.0/tests/docs/test_tutorial_navierstokes_gino.py +218 -0
  206. scirex-1.0.0/tests/docs/test_tutorial_navierstokes_transolver.py +222 -0
  207. scirex-1.0.0/tests/docs/test_tutorial_navierstokes_wno.py +199 -0
  208. scirex-1.0.0/tests/docs/test_tutorial_pages.py +195 -0
  209. scirex-1.0.0/tests/docs/test_tutorial_pipe_fno.py +165 -0
  210. scirex-1.0.0/tests/docs/test_tutorial_pipe_gino.py +157 -0
  211. scirex-1.0.0/tests/docs/test_tutorial_pipe_transolver.py +127 -0
  212. scirex-1.0.0/tests/docs/test_tutorial_pipe_wno.py +100 -0
  213. scirex-1.0.0/tests/docs/test_tutorial_poisson1d_fno.py +160 -0
  214. scirex-1.0.0/tests/docs/test_tutorial_shapenetcar_gino.py +231 -0
  215. scirex-1.0.0/tests/docs/test_tutorial_shapenetcar_giwo.py +231 -0
  216. scirex-1.0.0/tests/docs/test_tutorials.py +266 -0
  217. scirex-1.0.0/tests/experimental/__init__.py +2 -0
  218. scirex-1.0.0/tests/experimental/distributed/MODULE_CHANGES.md +40 -0
  219. scirex-1.0.0/tests/experimental/distributed/__init__.py +2 -0
  220. scirex-1.0.0/tests/experimental/distributed/test_comm.py +175 -0
  221. scirex-1.0.0/tests/experimental/distributed/test_helpers.py +186 -0
  222. scirex-1.0.0/tests/experimental/distributed/test_mappings.py +86 -0
  223. scirex-1.0.0/tests/experimental/geometry/__init__.py +2 -0
  224. scirex-1.0.0/tests/experimental/geometry/test_gmsh_mesh.py +30 -0
  225. scirex-1.0.0/tests/experimental/geometry/test_mesh_io.py +197 -0
  226. scirex-1.0.0/tests/experimental/losses/__init__.py +2 -0
  227. scirex-1.0.0/tests/experimental/losses/test_ad_differentiation.py +151 -0
  228. scirex-1.0.0/tests/experimental/losses/test_ad_pde_terms.py +515 -0
  229. scirex-1.0.0/tests/experimental/losses/test_addiff_gino_decode_crosscheck.py +115 -0
  230. scirex-1.0.0/tests/experimental/losses/test_darcy_hybrid_loss.py +198 -0
  231. scirex-1.0.0/tests/experimental/losses/test_domain_membership.py +354 -0
  232. scirex-1.0.0/tests/experimental/losses/test_exact_ad_differentiation.py +189 -0
  233. scirex-1.0.0/tests/experimental/losses/test_galerkin_t3_t6_cross_check.py +145 -0
  234. scirex-1.0.0/tests/experimental/losses/test_galerkin_t6.py +291 -0
  235. scirex-1.0.0/tests/experimental/losses/test_irregular_geometry_smoke_training.py +129 -0
  236. scirex-1.0.0/tests/experimental/losses/test_manufactured_solution_lshape.py +224 -0
  237. scirex-1.0.0/tests/experimental/losses/test_patch_quadrature_ad.py +583 -0
  238. scirex-1.0.0/tests/experimental/losses/test_patchquadratureaddiff_transolver_convergence.py +119 -0
  239. scirex-1.0.0/tests/experimental/losses/test_quadrature.py +303 -0
  240. scirex-1.0.0/tests/experimental/losses/test_transolver_patch_quadrature_smoke_training.py +95 -0
  241. scirex-1.0.0/tests/experimental/test_analysis.py +103 -0
  242. scirex-1.0.0/tests/experimental/test_giwo.py +174 -0
  243. scirex-1.0.0/tests/experimental/test_patching.py +416 -0
  244. scirex-1.0.0/tests/experimental/training/__init__.py +2 -0
  245. scirex-1.0.0/tests/experimental/training/test_init.py +12 -0
  246. scirex-1.0.0/tests/experimental/training/test_trainer.py +1300 -0
  247. scirex-1.0.0/tests/experimental/training/test_training_state.py +243 -0
  248. scirex-1.0.0/tests/experimental/tuning/__init__.py +2 -0
  249. scirex-1.0.0/tests/experimental/tuning/test_public_api.py +125 -0
  250. scirex-1.0.0/tests/experimental/tuning/test_tuner.py +334 -0
  251. scirex-1.0.0/tests/layers/MODULE_CHANGES.md +376 -0
  252. scirex-1.0.0/tests/layers/__init__.py +4 -0
  253. scirex-1.0.0/tests/layers/blocks/__init__.py +2 -0
  254. scirex-1.0.0/tests/layers/blocks/test_base_spectral_conv.py +104 -0
  255. scirex-1.0.0/tests/layers/blocks/test_fno_block.py +433 -0
  256. scirex-1.0.0/tests/layers/blocks/test_gno_block.py +225 -0
  257. scirex-1.0.0/tests/layers/blocks/test_gno_weighting_functions.py +202 -0
  258. scirex-1.0.0/tests/layers/blocks/test_integral_transform.py +318 -0
  259. scirex-1.0.0/tests/layers/blocks/test_neighbor_search.py +541 -0
  260. scirex-1.0.0/tests/layers/blocks/test_physics_attention.py +284 -0
  261. scirex-1.0.0/tests/layers/blocks/test_spectral_convolution.py +511 -0
  262. scirex-1.0.0/tests/layers/blocks/test_spectral_convolution_classic.py +212 -0
  263. scirex-1.0.0/tests/layers/blocks/test_transolver_block.py +346 -0
  264. scirex-1.0.0/tests/layers/blocks/test_wavelet_conv.py +333 -0
  265. scirex-1.0.0/tests/layers/blocks/test_wno_block.py +346 -0
  266. scirex-1.0.0/tests/layers/common/__init__.py +2 -0
  267. scirex-1.0.0/tests/layers/common/test_channel_mlp.py +139 -0
  268. scirex-1.0.0/tests/layers/common/test_complex.py +150 -0
  269. scirex-1.0.0/tests/layers/common/test_embeddings.py +324 -0
  270. scirex-1.0.0/tests/layers/common/test_mlp.py +168 -0
  271. scirex-1.0.0/tests/layers/common/test_normalization.py +136 -0
  272. scirex-1.0.0/tests/layers/common/test_padding.py +165 -0
  273. scirex-1.0.0/tests/layers/common/test_resample.py +135 -0
  274. scirex-1.0.0/tests/layers/common/test_skip_connections.py +145 -0
  275. scirex-1.0.0/tests/layers/conftest.py +30 -0
  276. scirex-1.0.0/tests/layers/test_init.py +122 -0
  277. scirex-1.0.0/tests/losses/MODULE_CHANGES.md +28 -0
  278. scirex-1.0.0/tests/losses/__init__.py +2 -0
  279. scirex-1.0.0/tests/losses/test_darcy_piecewise_coefficient.py +316 -0
  280. scirex-1.0.0/tests/losses/test_data_losses.py +329 -0
  281. scirex-1.0.0/tests/losses/test_differentiation.py +328 -0
  282. scirex-1.0.0/tests/losses/test_equation_losses.py +433 -0
  283. scirex-1.0.0/tests/losses/test_galerkin.py +365 -0
  284. scirex-1.0.0/tests/losses/test_galerkin_q4.py +237 -0
  285. scirex-1.0.0/tests/losses/test_init.py +123 -0
  286. scirex-1.0.0/tests/losses/test_navier_stokes_eqnloss.py +687 -0
  287. scirex-1.0.0/tests/losses/test_pde_terms.py +890 -0
  288. scirex-1.0.0/tests/models/MODULE_CHANGES.md +111 -0
  289. scirex-1.0.0/tests/models/__init__.py +2 -0
  290. scirex-1.0.0/tests/models/test_base_model.py +615 -0
  291. scirex-1.0.0/tests/models/test_fno.py +503 -0
  292. scirex-1.0.0/tests/models/test_fno_classic.py +59 -0
  293. scirex-1.0.0/tests/models/test_gino.py +789 -0
  294. scirex-1.0.0/tests/models/test_init.py +218 -0
  295. scirex-1.0.0/tests/models/test_transolver.py +760 -0
  296. scirex-1.0.0/tests/models/test_wno.py +713 -0
  297. scirex-1.0.0/tests/public_api_helpers.py +143 -0
  298. scirex-1.0.0/tests/test_dependency_pins.py +59 -0
  299. scirex-1.0.0/tests/test_info.py +62 -0
  300. scirex-1.0.0/tests/test_init.py +91 -0
  301. scirex-1.0.0/tests/test_moved_imports.py +65 -0
  302. scirex-1.0.0/tests/test_public_api.py +347 -0
  303. scirex-1.0.0/tests/test_tolerances.py +54 -0
  304. scirex-1.0.0/tests/test_utils.py +68 -0
  305. scirex-1.0.0/tests/test_version.py +121 -0
  306. scirex-1.0.0/tests/tolerances.py +83 -0
  307. scirex-1.0.0/tests/training/MODULE_CHANGES.md +86 -0
  308. scirex-1.0.0/tests/training/__init__.py +2 -0
  309. scirex-1.0.0/tests/training/optim/__init__.py +2 -0
  310. scirex-1.0.0/tests/training/optim/test_adamw.py +461 -0
  311. scirex-1.0.0/tests/training/optim/test_tensor_galore_projector.py +308 -0
  312. scirex-1.0.0/tests/training/test_init.py +33 -0
  313. scirex-1.0.0/tests/training/test_public_api.py +119 -0
@@ -0,0 +1,138 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg
7
+ *.egg-info/
8
+ dist/
9
+ build/
10
+ eggs/
11
+ parts/
12
+ var/
13
+ sdist/
14
+ wheels/
15
+ *.egg-link
16
+ .installed.cfg
17
+ lib/
18
+ lib64/
19
+
20
+ # Virtual environments
21
+ .env
22
+ .venv
23
+ env/
24
+ venv/
25
+ ENV/
26
+
27
+ # Distribution / packaging
28
+ .Python
29
+ develop-eggs/
30
+ downloads/
31
+ .eggs/
32
+ MANIFEST
33
+
34
+ # Testing
35
+ .tox/
36
+ .nox/
37
+ .coverage
38
+ .coverage.*
39
+ .cache
40
+ nosetests.xml
41
+ coverage.xml
42
+ *.cover
43
+ *.py,cover
44
+ .hypothesis/
45
+ .pytest_cache/
46
+ htmlcov/
47
+
48
+ # Jupyter
49
+ .ipynb_checkpoints
50
+ *.ipynb
51
+
52
+ # JAX / XLA
53
+ xla_cache/
54
+ .xla_cache/
55
+ *.ptxas
56
+ jax_cache/
57
+ jax_profiles_epoch/
58
+
59
+ # Runtime logs
60
+ neighbor_logs/
61
+
62
+ # Checkpoints / model artifacts
63
+ checkpoints/
64
+ *.pt
65
+ *.pth
66
+ *.ckpt
67
+ *.orbax/
68
+ wandb/
69
+
70
+ # Data
71
+ *.h5
72
+ *.hdf5
73
+ *.nc
74
+ *.zarr/
75
+ *.tgz
76
+ /data/
77
+ # Downloaded benchmark datasets (default data_root for the WNO Zenodo loaders)
78
+ /scirex/
79
+
80
+ # AirfRANS dataset (raw + cached .npz features) and its Transolver run
81
+ # outputs -- /Output* (not just /Output/) covers the many ad-hoc per-run
82
+ # variants (--output-dir overrides) these scripts produce; Dataset_cache/
83
+ # and scripts/logs/ are already ignored above.
84
+ /Dataset/
85
+ /Output*/
86
+
87
+ # IDEs
88
+ .vscode/
89
+ .idea/
90
+ *.swp
91
+ *.swo
92
+ .DS_Store
93
+
94
+ # Docs build
95
+ site/
96
+ doc/_build/
97
+
98
+ # uv
99
+ .uv/
100
+
101
+ # mypy
102
+ .mypy_cache/
103
+ .dmypy.json
104
+ dmypy.json
105
+
106
+ # ruff
107
+ .ruff_cache/
108
+
109
+
110
+ # Benchmark model checkpoints (regenerated by training runners)
111
+ scripts/benchmarks/checkpoints/
112
+ experiments/
113
+
114
+ # Li et al. Darcy .mat files (large, fetched manually) read by
115
+ # scripts/benchmarks/darcy/
116
+ src/scirex/data/darcy_wno_paper_cache/
117
+
118
+ # VTK output files (large; regenerated by the benchmarks' infer.py)
119
+ scripts/benchmarks/vtk_outputs/
120
+
121
+ # Status / project management documents (local only)
122
+ status/
123
+
124
+ # Local MLflow / Optuna stores (scirex.tuning with a sqlite or file backend)
125
+ mlruns/
126
+ mlartifacts/
127
+ mlflow.db
128
+ optuna.db
129
+
130
+ Dataset_cache/
131
+ scripts/logs/
132
+ .jax_cache/
133
+
134
+ # training logs
135
+ logs/
136
+
137
+ # Output of scripts/reproduce.py runs (contains local paths and logs)
138
+ reproduce_out/
@@ -0,0 +1,68 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 ZenteiQ AiTech Innovations Pvt. Ltd.
3
+ SPDX-License-Identifier: CC-BY-4.0
4
+ -->
5
+
6
+ # Changelog
7
+
8
+ All notable changes to **ScireX** are documented in this file.
9
+
10
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
11
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
12
+
13
+ ## [1.0.0] - 2026-11-12
14
+
15
+ First release of ScireX: a JAX/Flax library of neural operators for scientific machine
16
+ learning, succeeding the original [SciREX](https://github.com/zenteiq-sciml/SciREX) research
17
+ framework (a separate project from the AiREX Lab at IISc). It has a defined public API: the
18
+ stable names, the three stability tiers, the versioning rules and the deprecation policy are
19
+ in [`doc/dev_guide/api_policy.md`](doc/dev_guide/api_policy.md), and the public names are
20
+ listed in the [API reference](doc/api/index.md).
21
+
22
+ ### Highlights
23
+
24
+ - **Models:** FNO, WNO, GINO and Transolver in pure JAX/Flax, plus the experimental GIWO.
25
+ - **Physics-informed training:** the finite-element Ritz-energy loss (`Q4Galerkin`), which
26
+ trains a model without labelled solutions. Equation-residual losses are experimental
27
+ (`scirex.experimental`).
28
+ - **Benchmarks:** Darcy flow (data-driven and physics-only), pipe flow, 2D Navier-Stokes,
29
+ lid-driven cavity, chip cooling, AirfRANS, ShapeNetCar and Car-CFD, at a matched parameter
30
+ budget, with write-ups, dataset guides and the commands to reproduce each result.
31
+ - **Checkpoints:** the trained benchmark checkpoints are on Hugging Face, one repository per
32
+ checkpoint (`zenteiq-ai/scirex-<model>-<problem>`). Lid-driven cavity has none because its
33
+ data is not public.
34
+ - **Your own data:** `scripts/train.py` and `scripts/predict.py` train and run any of the four
35
+ models on your own data in one command (see the *Use It* page).
36
+ - **Install and check:** pip (CPU, CUDA 12, TPU), Docker and source installs, with
37
+ `python -m scirex.info` and `scripts/dev/check_platform.sh` to check a machine.
38
+ - **Documentation and tooling:** an MkDocs site with the API reference, theory guides and
39
+ developer guides; hyperparameter tuning with Optuna and MLflow (`scirex.experimental.tuning`);
40
+ Flax-native checkpointing and Weights & Biases logging; CI on Python 3.10, 3.11 and 3.12.
41
+
42
+ ### Deprecated
43
+
44
+ These names still work and emit a `DeprecationWarning`. They are removed in 1.2.0 at the earliest.
45
+
46
+ | Name | Use instead |
47
+ |---|---|
48
+ | `scirex.training.append_grid_nhwc`, `append_grid_nwc`, `create_train_state`, `make_schedule`, `per_frame_relative_l2`, `plot_loss_curves`, `relative_l2_sum`, `resolve_dtype`, `write_metrics` | Not public API. They live in `scirex._internal.wno_train_utils` |
49
+ | `scirex.losses.ADDiff`, `AdvectionTerm`, `AdvectionTermAD`, `BatchedVariableCoefficientGalerkinResidualLossT3`, `BatchedVariableCoefficientGalerkinResidualLossT6`, `DarcyHybridLossGINO`, `DiffusionTermAD`, `DivergenceTerm`, `FourierDiff`, `GradientTerm`, `NavierStokesEqnLoss`, `PDEResidualLoss`, `ReactionTerm`, `ReactionTermAD`, `SourceTermAD`, `T3Galerkin`, `T6Galerkin`, `TransientTerm` | Experimental. Import them from `scirex.experimental.losses` |
50
+ | `scirex.training.SimpleDataLoader`, `Trainer`, `load_training_state`, `save_training_state` | Experimental. Import them from `scirex.experimental.training` |
51
+ | Module paths `scirex.data.web_utils`, `scirex.layers.common.einsum_utils`, `scirex.layers.common.segment_csr`, `scirex.training.torch_setup`, `scirex.training.trainer`, `scirex.training.training_state`, `scirex.training.wno_train_utils`, `scirex.distributed`, `scirex.geometry`, `scirex.training.patching`, `scirex.tuning`, `scirex.config.distributed`, `scirex.models.giwo` | The modules moved to `scirex._internal.*` (private) and `scirex.experimental.*`. The old path still imports the same module |
52
+
53
+ ### Known limitations
54
+
55
+ - The tensor-GaLore projector (`scirex.training.optim`, not part of the stable API) cannot use
56
+ `jax.checkpoint` or a warm restart with Tucker factors, because they call non-JAX TensorLy
57
+ functions. Three tests mark this as an expected failure (`xfail`, six runs on CPU and GPU).
58
+ - `MeshDataModule` normalisation divides by `max - min`; a feature that is constant over the data
59
+ gives a `RuntimeWarning` and NaN values.
60
+ - VTK 9.6 deprecates `GetData` on cell arrays. The AirfRANS loaders still use it and emit a
61
+ `DeprecationWarning`. The `benchmark` extra allows `vtk>=9.0` with no upper bound, so a later
62
+ VTK release may remove the method.
63
+ - Plain `optax` optimizers (e.g. `optax.adamw`) do not raise on complex-valued parameters; they
64
+ run without error but update the imaginary parts in the wrong direction (see
65
+ `scirex.training.optim.adamw_cx`, which handles this correctly). Nothing currently guards
66
+ against building a plain-Optax optimizer over complex parameters by mistake.
67
+
68
+ [1.0.0]: https://github.com/zenteiq-research/scirex/releases/tag/v1.0.0
@@ -0,0 +1,20 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use ScireX in research, please cite the software and the relevant method papers."
3
+ title: "ScireX"
4
+ abstract: "Production-grade JAX/Flax implementations of Neural Operators for scientific machine learning."
5
+ type: software
6
+ authors:
7
+ - name: "ZenteiQ AiTech Innovations Pvt. Ltd."
8
+ email: research@zenteiq.ai
9
+ version: "1.0.0"
10
+ license: "LGPL-3.0-only"
11
+ repository-code: "https://github.com/zenteiq-research/scirex"
12
+ url: "https://github.com/zenteiq-research/scirex"
13
+ keywords:
14
+ - Neural Operators
15
+ - Scientific Machine Learning
16
+ - Physics Informed Operator Learning
17
+ - JAX
18
+ - Flax
19
+ - PDEs
20
+ date-released: "2026-11-12"