Conversation
- Add Dockerfile using condaforge/miniforge3 for conda dependencies - Add docker-build.yml workflow triggered by releases, tags, or manual dispatch - Add .dockerignore to exclude build artifacts - Update README with Docker usage instructions Image published to ghcr.io/delalamo/graphrelax Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ature/docker-workflow
…mization Detects missing residues in protein chains by checking residue numbering discontinuities and C-N bond distances. Chains are split at gaps before OpenMM minimization to prevent the creation of unrealistic peptide bonds across gaps. Original chain IDs are restored after minimization. - Add chain_gaps.py module with detect_chain_gaps, split_chains_at_gaps, and restore_chain_ids functions - Integrate gap detection into relaxer.py relax() method - Add split_chains_at_gaps config option (enabled by default) - Add --no-split-gaps CLI flag to disable the feature - Add comprehensive tests for chain gap detection
…atom The bug was assigning a new chain ID for every atom at a gap start residue instead of just once when entering a new segment. Added tracking of processed gap starts to prevent duplicate chain assignments.
- Free up disk space by removing unused .NET, GHC, and Boost packages - Install CPU-only PyTorch to avoid large CUDA dependencies - Use --no-cache-dir to minimize pip cache usage The GitHub Actions runner was running out of disk space when installing PyTorch with CUDA dependencies (~5-7GB) alongside conda packages. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements a pre-idealization step inspired by Rosetta's idealize.cc: - Add --pre-idealize CLI flag to enable backbone geometry idealization - Run constrained minimization to fix local geometry while preserving dihedrals - Detect and preserve chain gaps during idealization - Add --ignore-missing-residues flag to skip SEQRES-based residue addition Also fixes ligand handling throughout the pipeline: - Extract ligands before relaxation (AMBER can't parameterize arbitrary ligands) - Restore ligands after relaxation completes - Ligands are preserved through both idealization and main relaxation steps New files: - src/graphrelax/idealize.py: Core idealization module - tests/test_idealize.py: Unit and integration tests Modified files: - src/graphrelax/cli.py: Add --pre-idealize and --ignore-missing-residues flags - src/graphrelax/config.py: Add IdealizeConfig dataclass - src/graphrelax/pipeline.py: Integrate idealization step - src/graphrelax/relaxer.py: Add ligand extraction/restoration - .pre-commit-config.yaml: Add E501 ignore for test_idealize.py Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changes the default behavior of pre-idealization to close chain breaks (treating all segments as a single continuous chain). This allows gaps to be filled during the constrained minimization step. Add --retain-chainbreaks CLI flag to preserve the old behavior where chain gaps are detected and split into separate chains to prevent closure during minimization. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Resolve merge conflicts in cli.py and relaxer.py to preserve idealization config and ligand extraction/restoration features. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make pdbfixer a required dependency (not optional) - Clarify that PyPI install gets latest release - Clarify that source install gets latest development version - Fix GitHub URL from your-username to delalamo Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PDBFixer handles missing residues through findMissingResidues() + findMissingAtoms() + addMissingAtoms(). The addMissingResidues() method does not exist. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These tests would have caught the AttributeError from calling non-existent fixer.addMissingResidues() method: - test_minimize_with_constraints_basic: Basic test without missing residues - test_minimize_with_constraints_add_missing: Test with add_missing_residues=True - test_minimize_with_seqres_missing_residues: Test with PDB containing SEQRES indicating missing residues (exercises the full code path) - test_minimize_with_seqres_skip_missing: Test skipping missing residue addition Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The features are already evident from the Usage and How It Works sections. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
pdbfixer is a conda-only dependency not available in the unit tests CI job. Use pytest.importorskip to skip the entire test module when pdbfixer is not installed. The tests still run in the integration tests job which has pdbfixer installed via conda. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Instead of skipping idealize tests when pdbfixer isn't available, install pdbfixer via conda in the unit tests job. This ensures all tests run in both CI jobs. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add disk space cleanup step before conda setup (removes dotnet, ghc, boost, android SDK) - Use miniforge for smaller conda installation - Use --no-update-deps to avoid pulling unnecessary dependencies - Use --no-cache-dir for pip to save disk space Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.