feat(protpardelle): add pixi env and bake into image/CI#331
Conversation
Add the protpardelle feature and protpardelle/protpardelle-dev environments (git dep pinned to ee378400 for reproducibility), install the env in the Docker pixi-envs layer, and add protpardelle-dev to the typecheck and cpu-tests CI matrices. Splits the environment/image plumbing out of #300 so the runtime image and CI carry Protpardelle before the wrapper work lands.
|
Warning Review limit reached
Next review available in: 16 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdds Protpardelle Pixi dependencies and environments, installs the environment in the Docker image, and includes ChangesProtpardelle environment integration
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR prepares the codebase/CI/runtime image to support the upcoming Protpardelle wrapper work by adding a dedicated Pixi feature + environments and wiring them into the Docker build and GitHub Actions matrices, with a regenerated lockfile for reproducible solves. (Confidence: ~85%)
Changes:
- Add a new
[tool.pixi.feature.protpardelle]feature with pinned git dependency (ee378400…) and defineprotpardelle/protpardelle-devenvironments inpyproject.toml. - Bake the
protpardelleenvironment into thepixi-envsDocker build layer alongside existing model envs. - Expand CI matrices to run
ty checkand CPU tests underprotpardelle-devas well (and regeneratepixi.lockaccordingly).
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| pyproject.toml | Adds the Protpardelle Pixi feature + environments (and associated dependency pins). |
| Dockerfile | Installs the new protpardelle Pixi environment in the image’s consolidated env layer. |
| .github/workflows/ci.yml | Adds protpardelle-dev to the typecheck + CPU test matrices. |
| pixi.lock | Regenerated to lock the new feature/environments for --frozen installs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| [tool.pixi.feature.protpardelle.pypi-options.dependency-overrides] | ||
| pandas = "==2.3.1" |
There was a problem hiding this comment.
This can be removed.
| protpardelle = {features = ["protpardelle"]} | ||
| protpardelle-dev = {features = ["protpardelle", "dev"]} |
There was a problem hiding this comment.
Probably should update those tasks as well.
The shared test_at_least_one_available asserts one of boltz/protenix/rf3 is importable, which fails in a protpardelle-only env. main has no protpardelle tests or availability flag yet, so the cpu-tests matrix entry adds no coverage here; it moves to #300 with the wrapper and the PROTPARDELLE_AVAILABLE update. Keep protpardelle-dev in typecheck and in the image.
|
Pushed a fix. First run failed only on Dropped |
marcuscollins
left a comment
There was a problem hiding this comment.
A couple small changes would improve this, but it is fine as-is, so I'll let you fix and merge without re-reviewing.
| typer = "*" | ||
|
|
||
| [tool.pixi.feature.protpardelle.pypi-dependencies] | ||
| protpardelle = {git = "https://github.com/ProteinDesignLab/protpardelle-1c.git", rev = "ee378400f25b801fa481028000f9060183d7fb4c"} |
There was a problem hiding this comment.
the various code review agents have told me that we should put the torch requirement in here as torch = ">=2.6.0,<2.8"
| [tool.pixi.feature.protpardelle.pypi-options.dependency-overrides] | ||
| pandas = "==2.3.1" |
There was a problem hiding this comment.
This can be removed.
| protpardelle = {features = ["protpardelle"]} | ||
| protpardelle-dev = {features = ["protpardelle", "dev"]} |
There was a problem hiding this comment.
Probably should update those tasks as well.
…wire tasks - Move torch to pypi-dependencies as torch>=2.6.0,<2.8 so linux-64 gets the CUDA wheel instead of conda's cpu_generic build. - Remove the per-feature pandas override that duplicated the workspace-level one. - Add protpardelle-dev to the test-all/test-fast cross-env tasks per the 'new model env needs entries' note.
|
Addressed all three review points (pushed in
One heads-up on #3: until #300 lands the |
Summary
Splits the Protpardelle environment + image plumbing out of #300 so the runtime image and CI can carry Protpardelle before the wrapper/correctness work lands. Once this merges to
main, thepixi-with-checkpointsimage rebuilds with the env baked in, and#300can rebase to just the wrapper code + tests.[tool.pixi.feature.protpardelle]feature andprotpardelle/protpardelle-devenvironments (lifted from feat(add protpardelle): Add the Protpardelle-1c cc89 protein generative model. #300, git dep pinned toee378400…— the commit the wrapper targets — for reproducible builds).protpardelleenv in the Dockerpixi-envslayer alongside boltz/protenix/rf3/analysis.protpardelle-devto thetypecheckandcpu-testsCI matrices.pixi.lock.On the chicken/egg
There isn't a hard one. CI installs each pixi env fresh via
setup-pixifrom this branch'spyproject.toml+pixi.lock— it does not consume the pre-built image — so this PR's own CI exercisesprotpardelle-devimmediately. The Docker image is only needed for cluster/ACTL sampling and rebuilds frommainon merge; the env definition and Dockerfile change travel together here, so nothing depends on the image pre-existing. The split is for de-risking (validate the heavy git/CUDA env solves and the image builds independently) and to get the image published ahead of the correctness PR — not because of a build-order dependency.Note on tests / checkpoints
Provisioning weights is not required for the Protpardelle tests:
tests/models/protpardelle/conftest.pypointsPROTPARDELLE_MODEL_PARAMSat a throwaway dir and builds a small randomly-initialized CPU model, andimportorskips if the package is absent. So installing the env is sufficient to un-skip them in CI. Baking real checkpoints +PROTPARDELLE_MODEL_PARAMSinto the image is a follow-up needed only for actual sampling / GPU integration.Follow-ups (not in this PR)
pytorchresolves to a CUDA build in the linux-64 env; if it lands the CPU wheel, move it totorchunderpypi-dependenciesas flagged in feat(add protpardelle): Add the Protpardelle-1c cc89 protein generative model. #300 review.Validation
pixi lockregenerated cleanly.protpardelle-devtypecheck + cpu-tests.Summary by CodeRabbit