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.
- scirex-1.0.0/.gitignore +138 -0
- scirex-1.0.0/CHANGELOG.md +68 -0
- scirex-1.0.0/CITATION.cff +20 -0
- scirex-1.0.0/COPYING +674 -0
- scirex-1.0.0/LICENSE +165 -0
- scirex-1.0.0/NOTICE +33 -0
- scirex-1.0.0/PKG-INFO +452 -0
- scirex-1.0.0/README.md +322 -0
- scirex-1.0.0/SECURITY.md +41 -0
- scirex-1.0.0/THIRD_PARTY_NOTICES.md +118 -0
- scirex-1.0.0/conftest.py +11 -0
- scirex-1.0.0/pyproject.toml +270 -0
- scirex-1.0.0/pytest.ini +31 -0
- scirex-1.0.0/src/scirex/__init__.py +69 -0
- scirex-1.0.0/src/scirex/_internal/__init__.py +8 -0
- scirex-1.0.0/src/scirex/_internal/aliases.py +144 -0
- scirex-1.0.0/src/scirex/_internal/deprecation.py +92 -0
- scirex-1.0.0/src/scirex/_internal/einsum_utils.py +108 -0
- scirex-1.0.0/src/scirex/_internal/extras.py +71 -0
- scirex-1.0.0/src/scirex/_internal/lazy.py +109 -0
- scirex-1.0.0/src/scirex/_internal/neighbor_logging.py +227 -0
- scirex-1.0.0/src/scirex/_internal/paths.py +15 -0
- scirex-1.0.0/src/scirex/_internal/scaling.py +97 -0
- scirex-1.0.0/src/scirex/_internal/segment_csr.py +63 -0
- scirex-1.0.0/src/scirex/_internal/serialization.py +44 -0
- scirex-1.0.0/src/scirex/_internal/tensorly_backend.py +23 -0
- scirex-1.0.0/src/scirex/_internal/torch_setup.py +118 -0
- scirex-1.0.0/src/scirex/_internal/version.py +56 -0
- scirex-1.0.0/src/scirex/_internal/wandb_utils.py +47 -0
- scirex-1.0.0/src/scirex/_internal/web_utils.py +211 -0
- scirex-1.0.0/src/scirex/_internal/wno_train_utils.py +172 -0
- scirex-1.0.0/src/scirex/config/__init__.py +71 -0
- scirex-1.0.0/src/scirex/config/gino_carcfd_config.py +50 -0
- scirex-1.0.0/src/scirex/config/models.py +539 -0
- scirex-1.0.0/src/scirex/config/opt.py +91 -0
- scirex-1.0.0/src/scirex/config/transolver_pipe_config.py +67 -0
- scirex-1.0.0/src/scirex/data/__init__.py +65 -0
- scirex-1.0.0/src/scirex/data/containers/__init__.py +29 -0
- scirex-1.0.0/src/scirex/data/containers/dict_dataset.py +45 -0
- scirex-1.0.0/src/scirex/data/containers/pt_dataset.py +397 -0
- scirex-1.0.0/src/scirex/data/containers/tensor_dataset.py +118 -0
- scirex-1.0.0/src/scirex/data/datasets/__init__.py +49 -0
- scirex-1.0.0/src/scirex/data/datasets/airfrans.py +377 -0
- scirex-1.0.0/src/scirex/data/datasets/car_cfd.py +133 -0
- scirex-1.0.0/src/scirex/data/datasets/cavity_kepsilon.py +379 -0
- scirex-1.0.0/src/scirex/data/datasets/chipcooling.py +377 -0
- scirex-1.0.0/src/scirex/data/datasets/darcy.py +356 -0
- scirex-1.0.0/src/scirex/data/datasets/mesh_datamodule.py +423 -0
- scirex-1.0.0/src/scirex/data/datasets/navier_stokes.py +242 -0
- scirex-1.0.0/src/scirex/data/datasets/shapenet_car.py +428 -0
- scirex-1.0.0/src/scirex/data/datasets/shapenet_car_boundary.py +257 -0
- scirex-1.0.0/src/scirex/data/datasets/shapenet_car_drag.py +351 -0
- scirex-1.0.0/src/scirex/data/transforms/__init__.py +29 -0
- scirex-1.0.0/src/scirex/data/transforms/base_transforms.py +147 -0
- scirex-1.0.0/src/scirex/data/transforms/data_processors.py +372 -0
- scirex-1.0.0/src/scirex/data/transforms/normalizers.py +382 -0
- scirex-1.0.0/src/scirex/experimental/__init__.py +2 -0
- scirex-1.0.0/src/scirex/experimental/analysis.py +138 -0
- scirex-1.0.0/src/scirex/experimental/distributed/__init__.py +4 -0
- scirex-1.0.0/src/scirex/experimental/distributed/comm.py +216 -0
- scirex-1.0.0/src/scirex/experimental/distributed/config.py +28 -0
- scirex-1.0.0/src/scirex/experimental/distributed/helpers.py +154 -0
- scirex-1.0.0/src/scirex/experimental/distributed/mappings.py +123 -0
- scirex-1.0.0/src/scirex/experimental/geometry/__init__.py +12 -0
- scirex-1.0.0/src/scirex/experimental/geometry/gmsh_mesh.py +249 -0
- scirex-1.0.0/src/scirex/experimental/geometry/mesh_io.py +220 -0
- scirex-1.0.0/src/scirex/experimental/giwo.py +271 -0
- scirex-1.0.0/src/scirex/experimental/losses/__init__.py +103 -0
- scirex-1.0.0/src/scirex/experimental/losses/ad_differentiation.py +237 -0
- scirex-1.0.0/src/scirex/experimental/losses/ad_pde_terms.py +410 -0
- scirex-1.0.0/src/scirex/experimental/losses/darcy_hybrid_loss.py +186 -0
- scirex-1.0.0/src/scirex/experimental/losses/domain_membership.py +309 -0
- scirex-1.0.0/src/scirex/experimental/losses/exact_ad_differentiation.py +267 -0
- scirex-1.0.0/src/scirex/experimental/losses/galerkin_t6.py +395 -0
- scirex-1.0.0/src/scirex/experimental/losses/patch_quadrature_ad.py +549 -0
- scirex-1.0.0/src/scirex/experimental/losses/quadrature.py +229 -0
- scirex-1.0.0/src/scirex/experimental/patching.py +626 -0
- scirex-1.0.0/src/scirex/experimental/training/__init__.py +49 -0
- scirex-1.0.0/src/scirex/experimental/training/trainer.py +887 -0
- scirex-1.0.0/src/scirex/experimental/training/training_state.py +220 -0
- scirex-1.0.0/src/scirex/experimental/tuning/__init__.py +50 -0
- scirex-1.0.0/src/scirex/experimental/tuning/tuner.py +449 -0
- scirex-1.0.0/src/scirex/info.py +66 -0
- scirex-1.0.0/src/scirex/layers/__init__.py +74 -0
- scirex-1.0.0/src/scirex/layers/blocks/__init__.py +66 -0
- scirex-1.0.0/src/scirex/layers/blocks/base_spectral_conv.py +33 -0
- scirex-1.0.0/src/scirex/layers/blocks/fno_block.py +542 -0
- scirex-1.0.0/src/scirex/layers/blocks/gno_block.py +270 -0
- scirex-1.0.0/src/scirex/layers/blocks/gno_weighting_functions.py +112 -0
- scirex-1.0.0/src/scirex/layers/blocks/integral_transform.py +227 -0
- scirex-1.0.0/src/scirex/layers/blocks/neighbor_search.py +665 -0
- scirex-1.0.0/src/scirex/layers/blocks/physics_attention.py +386 -0
- scirex-1.0.0/src/scirex/layers/blocks/spectral_convolution.py +573 -0
- scirex-1.0.0/src/scirex/layers/blocks/spectral_convolution_classic.py +148 -0
- scirex-1.0.0/src/scirex/layers/blocks/transolver_block.py +120 -0
- scirex-1.0.0/src/scirex/layers/blocks/wavelet_conv.py +441 -0
- scirex-1.0.0/src/scirex/layers/blocks/wno_block.py +57 -0
- scirex-1.0.0/src/scirex/layers/common/__init__.py +47 -0
- scirex-1.0.0/src/scirex/layers/common/channel_mlp.py +209 -0
- scirex-1.0.0/src/scirex/layers/common/complex.py +92 -0
- scirex-1.0.0/src/scirex/layers/common/embeddings.py +431 -0
- scirex-1.0.0/src/scirex/layers/common/mlp.py +45 -0
- scirex-1.0.0/src/scirex/layers/common/normalization.py +202 -0
- scirex-1.0.0/src/scirex/layers/common/padding.py +179 -0
- scirex-1.0.0/src/scirex/layers/common/resample.py +190 -0
- scirex-1.0.0/src/scirex/layers/common/skip_connections.py +184 -0
- scirex-1.0.0/src/scirex/losses/__init__.py +73 -0
- scirex-1.0.0/src/scirex/losses/darcy_piecewise_coefficient.py +666 -0
- scirex-1.0.0/src/scirex/losses/data_losses.py +708 -0
- scirex-1.0.0/src/scirex/losses/differentiation.py +342 -0
- scirex-1.0.0/src/scirex/losses/equation_losses.py +925 -0
- scirex-1.0.0/src/scirex/losses/galerkin.py +417 -0
- scirex-1.0.0/src/scirex/losses/galerkin_q4.py +364 -0
- scirex-1.0.0/src/scirex/losses/pde_terms.py +564 -0
- scirex-1.0.0/src/scirex/models/__init__.py +57 -0
- scirex-1.0.0/src/scirex/models/_legacy_refs.py +40 -0
- scirex-1.0.0/src/scirex/models/base.py +472 -0
- scirex-1.0.0/src/scirex/models/fno.py +470 -0
- scirex-1.0.0/src/scirex/models/fno_classic.py +209 -0
- scirex-1.0.0/src/scirex/models/gino.py +683 -0
- scirex-1.0.0/src/scirex/models/transolver.py +330 -0
- scirex-1.0.0/src/scirex/models/wno.py +250 -0
- scirex-1.0.0/src/scirex/py.typed +0 -0
- scirex-1.0.0/src/scirex/training/__init__.py +88 -0
- scirex-1.0.0/src/scirex/training/optim/__init__.py +33 -0
- scirex-1.0.0/src/scirex/training/optim/adamw.py +438 -0
- scirex-1.0.0/src/scirex/training/optim/tensor_galore_projector.py +188 -0
- scirex-1.0.0/src/scirex/utils.py +61 -0
- scirex-1.0.0/tests/__init__.py +2 -0
- scirex-1.0.0/tests/_internal/__init__.py +2 -0
- scirex-1.0.0/tests/_internal/test_deprecation.py +49 -0
- scirex-1.0.0/tests/_internal/test_einsum_utils.py +155 -0
- scirex-1.0.0/tests/_internal/test_extras.py +54 -0
- scirex-1.0.0/tests/_internal/test_neighbor_logging.py +184 -0
- scirex-1.0.0/tests/_internal/test_paths.py +15 -0
- scirex-1.0.0/tests/_internal/test_scaling.py +65 -0
- scirex-1.0.0/tests/_internal/test_segment_csr.py +147 -0
- scirex-1.0.0/tests/_internal/test_tensorly_backend.py +39 -0
- scirex-1.0.0/tests/_internal/test_torch_setup.py +343 -0
- scirex-1.0.0/tests/_internal/test_wandb_utils.py +51 -0
- scirex-1.0.0/tests/_internal/test_web_utils.py +491 -0
- scirex-1.0.0/tests/_internal/test_wno_train_utils.py +338 -0
- scirex-1.0.0/tests/api_snapshot.json +132 -0
- scirex-1.0.0/tests/config/__init__.py +2 -0
- scirex-1.0.0/tests/config/test_config_keys.py +14 -0
- scirex-1.0.0/tests/config/test_public_api.py +114 -0
- scirex-1.0.0/tests/conftest.py +86 -0
- scirex-1.0.0/tests/data/__init__.py +2 -0
- scirex-1.0.0/tests/data/containers/__init__.py +2 -0
- scirex-1.0.0/tests/data/containers/test_dict_dataset.py +107 -0
- scirex-1.0.0/tests/data/containers/test_pt_dataset.py +229 -0
- scirex-1.0.0/tests/data/containers/test_pt_unpickler_security.py +61 -0
- scirex-1.0.0/tests/data/containers/test_tensor_dataset.py +156 -0
- scirex-1.0.0/tests/data/datasets/MODULE_CHANGES.md +91 -0
- scirex-1.0.0/tests/data/datasets/__init__.py +2 -0
- scirex-1.0.0/tests/data/datasets/test_car_cfd_dataset.py +188 -0
- scirex-1.0.0/tests/data/datasets/test_cavity_kepsilon_dataset.py +416 -0
- scirex-1.0.0/tests/data/datasets/test_chipcooling_dataset.py +252 -0
- scirex-1.0.0/tests/data/datasets/test_darcy.py +218 -0
- scirex-1.0.0/tests/data/datasets/test_mesh_datamodule.py +307 -0
- scirex-1.0.0/tests/data/datasets/test_navier_stokes.py +153 -0
- scirex-1.0.0/tests/data/datasets/test_shapenet_car_boundary.py +313 -0
- scirex-1.0.0/tests/data/datasets/test_shapenet_car_dataset.py +260 -0
- scirex-1.0.0/tests/data/datasets/test_shapenet_car_drag.py +105 -0
- scirex-1.0.0/tests/data/test_immutable_defaults.py +52 -0
- scirex-1.0.0/tests/data/test_public_api.py +154 -0
- scirex-1.0.0/tests/data/transforms/MODULE_CHANGES.md +62 -0
- scirex-1.0.0/tests/data/transforms/__init__.py +2 -0
- scirex-1.0.0/tests/data/transforms/test_base_transforms.py +220 -0
- scirex-1.0.0/tests/data/transforms/test_data_processors.py +321 -0
- scirex-1.0.0/tests/data/transforms/test_normalizers.py +237 -0
- scirex-1.0.0/tests/docs/__init__.py +2 -0
- scirex-1.0.0/tests/docs/airfrans_tutorial_helpers.py +158 -0
- scirex-1.0.0/tests/docs/carcfd_tutorial_helpers.py +70 -0
- scirex-1.0.0/tests/docs/cavity_tutorial_helpers.py +194 -0
- scirex-1.0.0/tests/docs/chipcooling_tutorial_helpers.py +85 -0
- scirex-1.0.0/tests/docs/darcy_tutorial_helpers.py +59 -0
- scirex-1.0.0/tests/docs/darcyphysics_tutorial_helpers.py +111 -0
- scirex-1.0.0/tests/docs/test_classification_table.py +83 -0
- scirex-1.0.0/tests/docs/test_problem_cards.py +167 -0
- scirex-1.0.0/tests/docs/test_quickstart.py +45 -0
- scirex-1.0.0/tests/docs/test_tutorial_airfrans_gino.py +221 -0
- scirex-1.0.0/tests/docs/test_tutorial_airfrans_transolver.py +215 -0
- scirex-1.0.0/tests/docs/test_tutorial_airfrans_wno.py +148 -0
- scirex-1.0.0/tests/docs/test_tutorial_carcfd_gino.py +264 -0
- scirex-1.0.0/tests/docs/test_tutorial_carcfd_giwo.py +210 -0
- scirex-1.0.0/tests/docs/test_tutorial_carcfd_transolver.py +187 -0
- scirex-1.0.0/tests/docs/test_tutorial_cavity_fno.py +117 -0
- scirex-1.0.0/tests/docs/test_tutorial_cavity_gino.py +119 -0
- scirex-1.0.0/tests/docs/test_tutorial_cavity_transolver.py +119 -0
- scirex-1.0.0/tests/docs/test_tutorial_cavity_wno.py +117 -0
- scirex-1.0.0/tests/docs/test_tutorial_chipcooling_fno.py +210 -0
- scirex-1.0.0/tests/docs/test_tutorial_chipcooling_gino.py +190 -0
- scirex-1.0.0/tests/docs/test_tutorial_chipcooling_transolver.py +148 -0
- scirex-1.0.0/tests/docs/test_tutorial_chipcooling_wno.py +182 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcy_fno.py +151 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcy_gino.py +155 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcy_transolver.py +139 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcy_wno.py +149 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_fno.py +142 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_gino.py +140 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_transolver.py +141 -0
- scirex-1.0.0/tests/docs/test_tutorial_darcyphysics_wno.py +143 -0
- scirex-1.0.0/tests/docs/test_tutorial_navierstokes_fno.py +218 -0
- scirex-1.0.0/tests/docs/test_tutorial_navierstokes_gino.py +218 -0
- scirex-1.0.0/tests/docs/test_tutorial_navierstokes_transolver.py +222 -0
- scirex-1.0.0/tests/docs/test_tutorial_navierstokes_wno.py +199 -0
- scirex-1.0.0/tests/docs/test_tutorial_pages.py +195 -0
- scirex-1.0.0/tests/docs/test_tutorial_pipe_fno.py +165 -0
- scirex-1.0.0/tests/docs/test_tutorial_pipe_gino.py +157 -0
- scirex-1.0.0/tests/docs/test_tutorial_pipe_transolver.py +127 -0
- scirex-1.0.0/tests/docs/test_tutorial_pipe_wno.py +100 -0
- scirex-1.0.0/tests/docs/test_tutorial_poisson1d_fno.py +160 -0
- scirex-1.0.0/tests/docs/test_tutorial_shapenetcar_gino.py +231 -0
- scirex-1.0.0/tests/docs/test_tutorial_shapenetcar_giwo.py +231 -0
- scirex-1.0.0/tests/docs/test_tutorials.py +266 -0
- scirex-1.0.0/tests/experimental/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/distributed/MODULE_CHANGES.md +40 -0
- scirex-1.0.0/tests/experimental/distributed/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/distributed/test_comm.py +175 -0
- scirex-1.0.0/tests/experimental/distributed/test_helpers.py +186 -0
- scirex-1.0.0/tests/experimental/distributed/test_mappings.py +86 -0
- scirex-1.0.0/tests/experimental/geometry/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/geometry/test_gmsh_mesh.py +30 -0
- scirex-1.0.0/tests/experimental/geometry/test_mesh_io.py +197 -0
- scirex-1.0.0/tests/experimental/losses/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/losses/test_ad_differentiation.py +151 -0
- scirex-1.0.0/tests/experimental/losses/test_ad_pde_terms.py +515 -0
- scirex-1.0.0/tests/experimental/losses/test_addiff_gino_decode_crosscheck.py +115 -0
- scirex-1.0.0/tests/experimental/losses/test_darcy_hybrid_loss.py +198 -0
- scirex-1.0.0/tests/experimental/losses/test_domain_membership.py +354 -0
- scirex-1.0.0/tests/experimental/losses/test_exact_ad_differentiation.py +189 -0
- scirex-1.0.0/tests/experimental/losses/test_galerkin_t3_t6_cross_check.py +145 -0
- scirex-1.0.0/tests/experimental/losses/test_galerkin_t6.py +291 -0
- scirex-1.0.0/tests/experimental/losses/test_irregular_geometry_smoke_training.py +129 -0
- scirex-1.0.0/tests/experimental/losses/test_manufactured_solution_lshape.py +224 -0
- scirex-1.0.0/tests/experimental/losses/test_patch_quadrature_ad.py +583 -0
- scirex-1.0.0/tests/experimental/losses/test_patchquadratureaddiff_transolver_convergence.py +119 -0
- scirex-1.0.0/tests/experimental/losses/test_quadrature.py +303 -0
- scirex-1.0.0/tests/experimental/losses/test_transolver_patch_quadrature_smoke_training.py +95 -0
- scirex-1.0.0/tests/experimental/test_analysis.py +103 -0
- scirex-1.0.0/tests/experimental/test_giwo.py +174 -0
- scirex-1.0.0/tests/experimental/test_patching.py +416 -0
- scirex-1.0.0/tests/experimental/training/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/training/test_init.py +12 -0
- scirex-1.0.0/tests/experimental/training/test_trainer.py +1300 -0
- scirex-1.0.0/tests/experimental/training/test_training_state.py +243 -0
- scirex-1.0.0/tests/experimental/tuning/__init__.py +2 -0
- scirex-1.0.0/tests/experimental/tuning/test_public_api.py +125 -0
- scirex-1.0.0/tests/experimental/tuning/test_tuner.py +334 -0
- scirex-1.0.0/tests/layers/MODULE_CHANGES.md +376 -0
- scirex-1.0.0/tests/layers/__init__.py +4 -0
- scirex-1.0.0/tests/layers/blocks/__init__.py +2 -0
- scirex-1.0.0/tests/layers/blocks/test_base_spectral_conv.py +104 -0
- scirex-1.0.0/tests/layers/blocks/test_fno_block.py +433 -0
- scirex-1.0.0/tests/layers/blocks/test_gno_block.py +225 -0
- scirex-1.0.0/tests/layers/blocks/test_gno_weighting_functions.py +202 -0
- scirex-1.0.0/tests/layers/blocks/test_integral_transform.py +318 -0
- scirex-1.0.0/tests/layers/blocks/test_neighbor_search.py +541 -0
- scirex-1.0.0/tests/layers/blocks/test_physics_attention.py +284 -0
- scirex-1.0.0/tests/layers/blocks/test_spectral_convolution.py +511 -0
- scirex-1.0.0/tests/layers/blocks/test_spectral_convolution_classic.py +212 -0
- scirex-1.0.0/tests/layers/blocks/test_transolver_block.py +346 -0
- scirex-1.0.0/tests/layers/blocks/test_wavelet_conv.py +333 -0
- scirex-1.0.0/tests/layers/blocks/test_wno_block.py +346 -0
- scirex-1.0.0/tests/layers/common/__init__.py +2 -0
- scirex-1.0.0/tests/layers/common/test_channel_mlp.py +139 -0
- scirex-1.0.0/tests/layers/common/test_complex.py +150 -0
- scirex-1.0.0/tests/layers/common/test_embeddings.py +324 -0
- scirex-1.0.0/tests/layers/common/test_mlp.py +168 -0
- scirex-1.0.0/tests/layers/common/test_normalization.py +136 -0
- scirex-1.0.0/tests/layers/common/test_padding.py +165 -0
- scirex-1.0.0/tests/layers/common/test_resample.py +135 -0
- scirex-1.0.0/tests/layers/common/test_skip_connections.py +145 -0
- scirex-1.0.0/tests/layers/conftest.py +30 -0
- scirex-1.0.0/tests/layers/test_init.py +122 -0
- scirex-1.0.0/tests/losses/MODULE_CHANGES.md +28 -0
- scirex-1.0.0/tests/losses/__init__.py +2 -0
- scirex-1.0.0/tests/losses/test_darcy_piecewise_coefficient.py +316 -0
- scirex-1.0.0/tests/losses/test_data_losses.py +329 -0
- scirex-1.0.0/tests/losses/test_differentiation.py +328 -0
- scirex-1.0.0/tests/losses/test_equation_losses.py +433 -0
- scirex-1.0.0/tests/losses/test_galerkin.py +365 -0
- scirex-1.0.0/tests/losses/test_galerkin_q4.py +237 -0
- scirex-1.0.0/tests/losses/test_init.py +123 -0
- scirex-1.0.0/tests/losses/test_navier_stokes_eqnloss.py +687 -0
- scirex-1.0.0/tests/losses/test_pde_terms.py +890 -0
- scirex-1.0.0/tests/models/MODULE_CHANGES.md +111 -0
- scirex-1.0.0/tests/models/__init__.py +2 -0
- scirex-1.0.0/tests/models/test_base_model.py +615 -0
- scirex-1.0.0/tests/models/test_fno.py +503 -0
- scirex-1.0.0/tests/models/test_fno_classic.py +59 -0
- scirex-1.0.0/tests/models/test_gino.py +789 -0
- scirex-1.0.0/tests/models/test_init.py +218 -0
- scirex-1.0.0/tests/models/test_transolver.py +760 -0
- scirex-1.0.0/tests/models/test_wno.py +713 -0
- scirex-1.0.0/tests/public_api_helpers.py +143 -0
- scirex-1.0.0/tests/test_dependency_pins.py +59 -0
- scirex-1.0.0/tests/test_info.py +62 -0
- scirex-1.0.0/tests/test_init.py +91 -0
- scirex-1.0.0/tests/test_moved_imports.py +65 -0
- scirex-1.0.0/tests/test_public_api.py +347 -0
- scirex-1.0.0/tests/test_tolerances.py +54 -0
- scirex-1.0.0/tests/test_utils.py +68 -0
- scirex-1.0.0/tests/test_version.py +121 -0
- scirex-1.0.0/tests/tolerances.py +83 -0
- scirex-1.0.0/tests/training/MODULE_CHANGES.md +86 -0
- scirex-1.0.0/tests/training/__init__.py +2 -0
- scirex-1.0.0/tests/training/optim/__init__.py +2 -0
- scirex-1.0.0/tests/training/optim/test_adamw.py +461 -0
- scirex-1.0.0/tests/training/optim/test_tensor_galore_projector.py +308 -0
- scirex-1.0.0/tests/training/test_init.py +33 -0
- scirex-1.0.0/tests/training/test_public_api.py +119 -0
scirex-1.0.0/.gitignore
ADDED
|
@@ -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"
|