Skip to content

Conversation

@coreyjadams
Copy link
Collaborator

@coreyjadams coreyjadams commented Nov 19, 2025

PhysicsNeMo Pull Request

Rearchitecture of core physicsnemo components. Highlights:

  • Break circular deps in internal imports, and ensure they can't come back via a linting step.
  • Organize external dependencies via dependency groups. Note that models and metrics have a few "-extra" dependencies that are unprotected still, to be fixed before merge.
  • Add linting to ensure we can not add external dependencies unless they are accounted for in pyproject.toml
  • Update tests to handle new structure.
    • Tests organization mirrors physicsnemo.
  • Update examples with changed imports. Biggest breaking change is the deprecation of launch. Logging utilities moved into physicsnemo.utils.logging.
  • Main build and install method is now uv.

Overall, this should lower the installation challenges and lay the groundwork for the rest of v2.0.

Description

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.
  • The CHANGELOG.md is up to date with these changes.
  • An issue is linked to this pull request.

Dependencies

Review Process

All PRs are reviewed by the PhysicsNeMo team before merging.

Depending on which files are changed, GitHub may automatically assign a maintainer for review.

We are also testing AI-based code review tools (e.g., Greptile), which may add automated comments with a confidence score.
This score reflects the AI’s assessment of merge readiness and is not a qualitative judgment of your work, nor is
it an indication that the PR will be accepted / rejected.

AI-generated feedback should be reviewed critically for usefulness.
You are not required to respond to every AI comment, but they are intended to help both authors and reviewers.
Please react to Greptile comments with 👍 or 👎 to provide feedback on their accuracy.

@coreyjadams
Copy link
Collaborator Author

/blossom-ci

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 2, 2025

Skipped: This PR changes more files than the configured file change limit: (705 files found, 100 file limit)

coreyjadams and others added 13 commits December 2, 2025 17:19
* Move filesystems and version_check to core

* Fix version check tests

* Reorganize distributed, domain_parallel, and begin nn / utils cleanup.

* Move modules and meta to core.  Move registry to core.

No tests fixed yet.

* Add missing init files

* Update build system and specify some deps.

* Reorganize tests.

* Update init files

* Clean up neighbor tools.

* Update testing

* Fix compat tests

* Move core model tests to tests/core/

* Add import lint config

* Relocate layers

* Move graphcast utils into model directory

* Relocating util functionalities.

* Further clean up and organize tests.

* utils tests are passing now

* Cleaning up distributed tests

* Patching tests working again in nn

* Fix sdf test

* Fix zenith angle tests

* Some organization of tests.  Checkpoints is moved into utils.

* Remove launch.utils and launch.config.  Checkpointing is moved to
phsyicsnemo.utils, launch.config is just gone.  It was empty.

* Most nn tests are passing

* Further cleanup.  Getting there!

* Remove constants file

* Add import linting to pre-commit.

* Move gnn layers and start to fix several model tests.

* AFNO is now passing.

* Rnn models passing.

* Fix improt

* Healpix tests are working

* Domino and unet working

* Updating to address some test issues

* MGN tests passing again

* Most graphcast tests passing again

* Move nd conv layers.

* update fengwu and pangu

* Update sfno and pix2pix test

* update tests for figconvnet, swinrnn, superresnet

* updating more models to pass

* Update distributed tests, now passing.

* Domain parallel tests now passing.

* Fix active learning imports so tests pass in refactor

* Fix some metric imports

* Remove deploy package

* Remove unused test file

* unmigrate these files ... again?

* Update import linter.

* Cleaning up diffusion models. Not quite done yet.

* Restore deleted files

* Updating more tests.

* Further updates to tests.  Datapipes almost working.

* update import paths

* Starting to clean up dependency tree.

* Fixing and adjusting a broad suite of tests.

* Update test/domain_parallel/conftest.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Minor fix

* Not seeing any errors in testing ...

* Enable import linting on internal imports.

* Remove ensure_available function, it's confusing

* Add logging imports to utils, and fix imports in examples.

* Update imports in minimal examples

* Update structural mechanics examples

* Update import paths: reservoir_sim

* Update import paths: additive manufacturing

* Update import paths: topodiff

* Update import paths: weather part 1

* Update import paths: weather part 2

* Update import paths: molecular dynamics

* Update import paths: geophysics

* Update import paths: cfd + external_aero 1

* Update import paths: cfd + external_aero 2

* Remove more DGL examples

* Remove more DGL examples

* cfd examples 3

* Last batch of example import fixes!

* Enforce and protect external deps in utils.

* Remove DGL.  :party:

* Don't force models yet

* Remove IPDB

* Few more dep fixes.

* Enhance checkpoint configuration for DLWP Healpix and GraphCast (#1253)

* feat(weather): Improve configuration for DLWP Healpix and GraphCast examples

- Added configurable checkpoint directory to DLWP Healpix config and training script.
- Implemented Trainer logic to use specific checkpoint directory.
- Updated utils.py to respect exact checkpoint path.
- Made Weights & Biases entity and project configurable in GraphCast example.

* fix(dlwp_healpix): remove deprecated configs

- Removed the deprecated `verbose` parameter from the `CosineAnnealingLR` configuration in DLWP HEALPix, which was causing a TypeError.
- Removed unused configs from examples/weather/dlwp_healpix/

* Transolver volume (#1242)

* Implement transolver ++ physics attention

* Enable ++ in Transolver.

* Fix temperature correction terms.

* Starting work adapting the domino datapipe techniques to transolver.

* Working towards transolver volume training by mergeing with domino dataset.

Surface dataloading is prototyped, not finished yet.

* Updating

* Remove printout

* Enable transolver for volumetric data

* Update transolver training script to support either surface or volume data.

Applied some cleanup to make the datapipe similar to domino, which
is a step towards unification.

* Updating datapipe

* Tweak transolver volume configs

* Add transolverX model

* Enable nearly-uniform sampling of very very large arrays

* limit benchmarking to train epoch, enable profiler in config

* Update volume config slightly

* Update training scripts to properly enable data preloading

* Working towards adding a muon optimzier in transolver

* Add peter's implementation of muon with a combined optimizer.  switch to a flat LR.

* Add updated inference script that can also calculate drag and lift

* Add better docstrings for typhon

* Move typhon to experimental

* Move forwards docstring

* Adding typhon model and configs.

* Update readme.

* Update

* Remove extra model.  Update recipes.

* Update cae_dataset.py

Implement abstract methods in base classes.

* Update Physics_Attention.py

Ensure plus parameter is passed to base class.

* Update test_mesh_datapipe.py

Update import path for mesh datapipe.

* Fix ruff issues

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Dileep Ranganathan <[email protected]>
@coreyjadams
Copy link
Collaborator Author

/blossom-ci

Copy link
Collaborator

@CharlelieLrt CharlelieLrt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems some imports haven't been fixed. For instance I still see in the examples some imports like:

from physicsnemo.models import Module

Those are not expected to work anymore I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants