SCREAM++ | Protein Structure & Drug Design

SCREAM++ | Protein Structure & Drug Design

29 devlogs
257h 48m
•  Ship certified
Created by Tony Kan

An enhanced software package for automated protein side-chain placement. It predicts accurate side-chain conformations using rotamer libraries and a flat-bottom potential strategy. By leveraging statistical rotamer libraries and a flat-bottom potential to balance accuracy and computational efficiency, it significantly enhances the reliability of protein-ligand interaction modeling—making it a key component in modern drug discovery workflows.

Timeline

Ship 3

1 payout of shell 607.0 shells

Tony Kan

8 months ago

Tony Kan Covers 5 devlogs and 38h 5m

Improved CONECT record handling for compatibility, updated DATA_URL, enhanced documentation across core, engine, workflows, and CLI modules with detailed user and developer guides, architectural overviews, workflow and forcefield explanations, and improved algorithmic clarity; included new CLI usage docs in release artifacts; fixed bond connectivity representation and updated configuration templates for clarity.

Detailed Commit Log

  • chore(package): Update version to 0.5.0
  • chore(data): Update DATA_URL to point to the latest data release version
  • Merge pull request #47 from caltechmsc/bugfix/46-bgf-writer-conect-records-incompatible-with-strict-parsers-vmd-mpsim
  • test(core): Update CONECT records to improve bond connectivity representation
  • fix(core): Replace bond pair collection with adjacency list for CONECT records
  • Merge pull request #45 from caltechmsc/docs/44-implement-comprehensive-project-documentation
  • docs(cli): Update configuration file template for clarity and completeness
  • docs(cli): Clarify note on s-factor optimization and rotamer library diversity requirements
  • docs(cli): Clarify the importance of downloading data files as a mandatory first step
  • docs(engine): Improve documentation for SystemView struct to clarify temporary modifications and energy evaluation process
  • docs(engine): Enhance documentation for EnergyGrid struct to clarify incremental update model and energy tracking
  • docs(workflows): Improve documentation for side-chain placement workflow with detailed algorithm steps and error handling
  • docs(core): Enhance flat-bottom potential function documentation for clarity and detail
  • docs(project): Revise library documentation for clarity and architectural details
  • docs(project): Enhance README with detailed usage instructions and future interface plans
  • docs(cli): Add comprehensive developer documentation for scream-cli crate
  • docs(project): Revise developer documentation for clarity and structure
  • docs(project): Add comprehensive developer documentation for scream-core library
  • docs(project): Clarify energy update complexity explanation and enhance diagram details
  • docs(project): Add performance and memory optimization strategies documentation
  • docs(project): Add comprehensive documentation for algorithms and workflows in scream-core
  • docs(project): Add detailed documentation for forcefield and energy calculation in SCREAM++
  • docs(project): Add foundational architecture and core data models documentation for the scream-core library
  • docs(core): Enhance documentation for Residue struct to clarify caching mechanism and usage
  • ci(project): Include CLI usage documentation files in release artifacts
  • docs(cli): Add complete configuration file template for SCREAM++ CLI
  • docs(cli): Create comprehensive user manual for SCREAM++ CLI with setup instructions and command usage examples
  • docs(workflows): Clarify documentation for PlacementResult struct by specifying that solutions are sorted by optimization score (best first)
  • docs(project): Update module documentation to include architecture overview and module descriptions
  • docs(workflows): Add documentation for workflows module with detailed overview and key capabilities
  • docs(workflows): Add documentation for side-chain placement workflow and related functions
  • docs(engine): Add module documentation with detailed architecture and key capabilities
  • docs(engine): Add module documentation for tasks related to side-chain placement optimization and energy calculations
  • docs(engine): Add documentation for interaction energy calculation and add thread-safety note for parallel mode
  • docs(engine): Add documentation for fixed energy calculations and fixed atom ID collection
  • docs(engine): Add documentation for EL energy computation functions and work units
  • docs(engine): Add documentation for doublet optimization and add error handling details
  • docs(engine): Add documentation for ClashPair struct and clash detection function
Update attachment

Major refactor: CLI configuration system now supports zero-config execution with new file-based config structs and utility functions; improved progress reporting in engine and workflows; core and engine modules made crate-visible; extensive documentation added for data models, molecular system, forcefields, energy calculations, optimization, rotamers, and engine utilities; dependency updates and version bump to 0.5.0-beta.1.

Detailed Commit Log

  • test(engine): Remove progress reporter from clash detection tests
  • feat(engine): Add progress reporting in doublet optimization task
  • test(engine): Pass reporter to doublet optimization function calls in tests
  • refactor(workflows): Enhance clash resolution reporting with detailed status updates
  • chore(package): Remove unused 'wide' dependency from Cargo.toml
  • Merge pull request #40 from caltechmsc/feature/39-implement-high-performance-incremental-energy-engine-with-zero-clone-optimization
  • feat(cli): Make configuration file optional in PlaceArgs
  • refactor(cli): Simplify configuration handling and improve input path usage
  • refactor(cli): Remove obsolete configuration handling code
  • feat(cli): Add DefaultsConfig struct with default implementation
  • feat(cli): Add FileResidueSpecifier struct for residue specification
  • feat(cli): Add FileResidueSelection enum and conversion implementation
  • feat(cli): Add FileForcefieldConfig struct for forcefield configuration
  • feat(cli): Add FileEnergyWeights and FileEnergyComponentWeights structs with conversion implementations
  • feat(cli): Add FileSamplingConfig struct for sampling configuration
  • feat(cli): Add FileConvergenceConfig struct for convergence configuration
  • feat(cli): Add FileSimulatedAnnealingConfig struct for simulated annealing configuration
  • feat(cli): Add FileOptimizationConfig and FileConfig structs for optimization settings
  • feat(cli): Introduce AppConfig struct for application configuration
  • feat(cli): Implement build_config function for application configuration
  • feat(cli): Add resolvepathorlogicalname function for path resolution and validation
  • feat(cli): Add mergeconvergence and mergesimulated_annealing functions for configuration handling
  • feat(cli): Implement applysetvalues function for dynamic configuration updates
  • test(cli): Add unit tests for build_config function and configuration handling
  • feat(cli): Add mod.rs to organize configuration modules
  • test(cli): Update setupmockdata_tree to return TempDir for improved test isolation
  • Merge pull request #42 from caltechmsc/feature/41-refactor-configuration-system-for-usability-and-zero-config-execution
  • chore(deps): Bump tracing-subscriber from 0.3.19 to 0.3.20
  • Merge pull request #43 from caltechmsc/dependabot/cargo/tracing-subscriber-0.3.20
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.5.0-beta.1
  • refactor(core): Change potentials module visibility to crate-level
  • refactor(core): Change sorting module visibility to crate-level
  • refactor(engine): Change OptimizationState visibility to crate-level
  • refactor(engine): Change ELCache visibility to crate-level
  • refactor(engine): Change context module visibility to crate-level
  • refactor(engine): Change energy_grid module visibility to crate-level
  • refactor(engine): Change transaction module visibility to crate-level
  • refactor(engine): Change placement module visibility to crate-level
  • refactor(engine): Change tasks module visibility to crate-level
  • refactor(engine): Change utils module visibility to crate-level
  • refactor(core): Change energy module visibility to crate-level
  • docs(core): Add documentation and clarify atom role classifications
  • docs(core): Add documentation for ResidueType and Residue structs
  • docs(core): Add documentation for ChainType and Chain structs
  • docs(core): Add documentation for BondOrder and Bond structs
  • docs(core): Add documentation for MolecularSystem struct and its methods
  • docs(core): Add module documentation for core data models
  • docs(core): Add documentation for MolecularFile trait with additional methods for file I/O
  • docs(core): Add documentation for BgfMetadata, BgfError, and BgfFile methods
  • docs(core): Add documentation for CanonicalAtom struct and sorting functions
  • docs(core): Add module documentation for sorting utilities
  • docs(core): Add module documentation for molecular file I/O functionality
  • docs(core): Add documentation for potential energy functions in forcefield module
  • docs(core): Add documentation for EnergyTerm struct and its methods
  • docs(core): Add documentation for force field parameters and loading methods
  • docs(core): Add documentation for energy calculation methods and error handling
  • docs(core): Add documentation for parameterization process and error handling
  • docs(core): Add documentation for scoring errors and energy calculation methods
  • docs(core): Add documentation for the Force Field module, including usage examples and key components
  • docs(core): Update documentation for the Force Field module by removing private component references
  • docs(core): Correct import path for Scorer in usage example of Force Field module
  • docs(core): Add documentation for TopologyRegistry and ResidueTopology structs
  • docs(core): Enhance documentation for Input/Output module with comprehensive details and usage examples
  • docs(core): Revise and expand documentation for Core Models module, enhancing clarity and structure
  • docs(core): Add detailed documentation for Topology module, including overview, key components, and usage examples
  • docs(core): Enhance RotamerAtomData and RotamerData structs with additional fields and detailed documentation
  • docs(core): Expand documentation for RotamerLibrary and LibraryLoadError, detailing methods and error handling
  • docs(core): Add comprehensive documentation for Rotamers module, including overview, key components, scientific background, and usage examples
  • docs(core): Add documentation for Core Module, detailing overview, architecture, key capabilities, and scientific foundation
  • docs(engine): Enhance EngineError enum with additional error variants and detailed documentation
  • docs(engine): Expand configuration structs and enums with detailed documentation and builder patterns for enhanced usability
  • docs(engine): Add detailed documentation for OptimizationContext and AnalysisContext
  • docs(engine): Add documentation for InitialState, SolutionState, and Solution structs
  • docs(engine): Add documentation for Progress enum and ProgressReporter struct
  • docs(engine): Add documentation for ELCache struct methods and functionality
  • docs(engine): Add documentation for EnergyGrid and MoveDelta structs, including detailed descriptions of methods and fields
  • docs(engine): Add documentation for SystemView struct, including new methods for transactions and rotamer application
  • docs(engine): Add documentation for rotamer placement functions and errors
  • docs(engine): Documents Boltzmann sampling and errors
  • docs(engine): Add documentation for sidechain and environment atom functions
  • docs(engine): Add documentation for utility functions in the engine
Update attachment

Introduced EnergyGrid for efficient energy calculations and parallel optimization; added SystemView for transactional molecular system management; streamlined atom querying, selection, and energy evaluation; improved modularity and test coverage; enhanced placement workflow and doublet optimization using EnergyGrid and improved parallel processing.

Detailed Commit Log

  • feat(core): Implement EnergyGrid structure and associated methods for energy calculations
  • test(core): Add comprehensive tests for EnergyGrid functionality
  • feat(engine): Implement SystemView for managing molecular system transactions
  • test(engine): Add unit tests for SystemView transactions and state management
  • feat(engine): Add missing module declarations for energy_grid and transaction
  • refactor(engine): Update import paths to use super for better module organization
  • feat(engine): Enhance energy computation by passing system reference to computeenergiesfor_unit
  • refactor(engine): Simplify doublet optimization by removing unused tracing and restructuring energy calculation
  • feat(engine): Add query module with function to collect active sidechain atoms
  • feat(engine): Add precomputeenvironmentatoms function to filter environment atoms based on active residues
  • feat(engine): Implement resolveselectionto_ids function for residue selection handling
  • test(engine): Add unit tests for active sidechain atom collection and residue selection handling
  • refactor(engine): Move resolveselectionto_ids function to query module
  • test(engine): Enhance unit tests for residue selection handling and active sidechain atom collection
  • refactor(engine): Remove unused parallel feature and clean up selection tests
  • refactor(engine): Simplify active sidechain atom collection in EnergyGrid
  • refactor(engine): Replace precomputeenvironmentatoms function with direct query call
  • refactor(engine): Remove precomputeenvironmentatoms function to streamline atom selection process
  • test(engine): Remove redundant precomputeenvironmentatoms test and update usage in existing tests
  • refactor(engine): Remove unused collectactivesidechain_atoms function and clean up imports
  • test(engine): Remove collectactivesidechain_atoms test to streamline test suite
  • feat(workflows): Integrate EnergyGrid into placement workflow and streamline clash resolution
  • refactor(engine): Optimize interaction calculation in EnergyGrid for parallel processing
  • refactor(engine): Simplify doublet optimization by removing redundant topology retrieval and enhancing parallel evaluation
  • chore(package): Add wide crate for enhanced functionality
  • refactor(engine): Enhance doublet optimization by improving energy evaluation and thread-local state management
  • refactor(workflows): Enhance final refinement by optimizing energy calculations for rotamer selection
  • feat(engine): Add method to retrieve el energy for a given residue
  • test(engine): Add unit test for getelenergy method to verify correct energy retrieval
Update attachment

Improved scoring and physical accuracy: added forcefield weight maps for energy scaling, introduced EnergyWeights and EnergyComponentWeights for configuration, enhanced AtomRole parsing, and fixed/expanded flat-bottom and Buckingham potential boundary logic. Updated tests and data references, and bumped version to 0.4.0-alpha.1.

Detailed Commit Log

  • fix(engine): Remove TODO comment for adding pre-calculated internal energy to energy terms
  • fix(engine): Update log message for clarity in EL energy calculation
  • Merge pull request #32 from caltechmsc/feature/31-integrate-pre-calculated-internal-energies-to-improve-scoring-accuracy
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.3.0-alpha.1
  • fix(core): Add repulsive core boundary check in applyflatbottom_vdw function
  • fix(core): Add repulsive core boundary check in applyflatbottom_hbond function
  • test(core): Update buckingham test for small distance to assert energy threshold
  • test(core): Rename test for applyflatbottom_vdw to clarify behavior beyond ideal distance
  • test(core): Rename test for applyflatbottom_vdw to clarify behavior in well region
  • test(core): Rename test for applyflatbottom_vdw to clarify behavior in soft repulsion zone
  • test(core): Add test for applyflatbottom_vdw to verify behavior in hardcore repulsion zone
  • test(core): Add test for applyflatbottom_hbond to verify bypassing softening in hardcore repulsion zone
  • test(core): Add tests for applyflatbottom_hbond to verify behavior around ideal distance
  • test(core): Rename tests for applyflatbottom_hbond to clarify behavior in attractive tail and soft repulsion zone
  • Merge pull request #35 from caltechmsc/bugfix/33-flat-bottom-potential-delta-incorrectly-softens-severe-atomic-clashes
  • fix(core): Add switching distance logic to buckinghamexp6 for improved potential calculation
  • test(core): Enhance buckinghamexp6 tests to verify behavior at minimum distance and safe zone
  • Merge pull request #36 from caltechmsc/bugfix/34-buckingham-exp-6-potential-leads-to-non-physical-energy-collapse-at-short-distances
  • refactor(engine): Remove unused collectactivesidechain_atoms function
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.3.0-alpha.2
  • feat(core): Enhance AtomRole enum with FromStr implementation for string parsing
  • test(core): Add tests for AtomRole::from_str method to validate role parsing
  • feat(core): Add EnergyWeights and EnergyComponentWeights structs for forcefield calculations
  • test(core): Update Forcefield::load tests to include empty weight rules parameter
  • test(core): Update Forcefield::load to accept an empty weight rules parameter
  • test(engine): Update Forcefield::load call to accept an empty weight rules parameter
  • test(engine): Update Forcefield::load call to accept an empty weight rules parameter
  • test(engine): Update Forcefield::load call to accept an empty weight rules parameter
  • feat(engine): Add EnergyWeights and WeightRule structs to enhance forcefield configuration
  • refactor(core): Revise EnergyWeights and WeightRule structures for improved forcefield handling
  • test(core): Update Forcefield::load tests to use default EnergyWeights
  • test(core): Update test setup to include EnergyWeights in Forcefield initialization
  • refactor(core): Remove EnergyWeights from Forcefield struct and related methods
  • test(core): Update Forcefield test to use default EnergyWeights in initialization
  • test(core): Add tests for Forcefield weight map construction from rules
  • feat(core): Update scoring to incorporate forcefield weight map in energy calculations
  • feat(core): Incorporate forcefield weight map in hydrogen bond energy calculations
  • test(core): Add weight_map to test setup for scoring interactions
  • test(core): Add weight tests for energy component scaling in scoring interactions
  • test(core): Simplify forcefield parameter initialization in test cases
  • refactor(engine): Remove unused energy component weight structures from configuration
  • test(engine): Add weight_map initialization in OptimizationContext test setup
  • test(engine): Initialize weight_map in test forcefield setup
  • feat(engine): Initialize weight_map in doublet optimization task setup
  • test(engine): Update Forcefield loading to use default EnergyWeights
  • test(engine): Update Forcefield loading to include default EnergyWeights
  • test(engine): Update test setup to use default EnergyWeights in Forcefield loading
  • test(core): Update test imports to use EnergyWeights from forcefield params
  • feat(cli): Add EnergyWeights and EnergyComponentWeights structures for forcefield configuration
  • feat(workflows): Include energy weights in forcefield loading
  • test(workflows): Integrate EnergyWeights into Forcefield loading in test environment
  • Merge pull request #38 from caltechmsc/feature/37-implement-configurable-role-based-energy-weighting-system
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.4.0-alpha.1
Update attachment

Hydrogen-bond calculation fixed and parameterization improved; rotamer library gains internal energy fields; EL and interaction energy calculations refined (including internal energy); CLI and workflows updated for ligand selection and topology overrides; data URLs/version bumps to alpha.1/.2/.3; expanded tests and logging.

Detailed Commit Log

  • fix(cli): Add ligand residue and radius angstroms rename to PartialResidueSelection
  • fix(engine): Improve error handling and logging in doublet optimization task
  • test(engine): Enhance test setup with basic and environment configurations
  • fix(workflows): Pass active residues to resolve_clashes function
  • feat(workflows): Enhance simulated annealing progress reporting and step tracking
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.2.0-alpha.1
  • chore(package): Add Soo-Kyung Kim to the authors list in Cargo.toml
  • feat(core): Add hbond donor and acceptor extraction in NonBondedParams
  • test(core): Update tests for hydrogen bond donor and acceptor handling
  • test(core): Initialize hbond donors and acceptors in test setup
  • test(core): Initialize hydrogen bond donors and acceptors in test setup
  • test(engine): Add hydrogen bond donors and acceptors to test setup
  • test(engine): Initialize hydrogen bond donors and acceptors in clash detection tests
  • test(engine): Initialize hydrogen bond donors and acceptors in doublet optimization
  • feat(core): Refactor parameterization to improve hydrogen bond role determination
  • test(core): Update rotamer parameterization tests to validate hydrogen bond roles
  • fix(data): Update hydrogen bond parameters to correct well depths
  • refactor(core): Simplify hydrogen bond by removing atom name parameter
  • test(core): Update hydrogen bond atom role mapping to use correct identifier
  • refactor(core): Rearrange parameters in calculate_hbond function for clarity
  • test(core): Correct order of parameters in hydrogen bond calculation tests
  • fix(core): Correct hydrogen bond calculation by swapping donor and acceptor parameters
  • test(core): Correct hydrogen bond parameter key from O_2-O_H to O_H-O_2
  • test(core): Correct hydrogen bond parameter key from O_2-O_H to O_H-O_2
  • Merge pull request #28 from caltechmsc/bugfix/27-hydrogen-bond-energy-calculation-is-non-functional-or-incorrect
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.2.0-alpha.2
  • fix(core): Enhance rotamer extraction with parameterization support
  • test(core): Integrate parameterization in rotamer library tests
  • fix(workflow): Include original side-chain conformations in rotamer library if specified in config
  • fix(core): Improve atom extraction process in RotamerLibrary by handling missing atoms and restructuring bond reconstruction
  • test(core): Add missing hydrogen atoms to ALA residue in rotamer library
  • Merge pull request #30 from caltechmsc/bugfix/29-crash-on-placement-when-include-input-conformation-is-enabled
  • chore(data): Update DATA_URL to point to the latest data release version
  • chore(package): Update version to 0.2.0-alpha.3
  • feat(data): Add rotamer library bond energies (bond stretching, bond angle bending, dihedral angle torsion, inversion)
  • refactor(data): Modify the energy field of the rotamer library to be inline
  • feat(core): Add energy field to RotamerData and Rotamer structs
  • feat(core): Include energy field in Rotamer creation
  • fix(core): Add Default trait to EnergyData struct for improved serialization
  • test(core): Initialize energy field in rotamer and test cases
  • test(engine): Initialize energy field in empty Rotamer instance
  • test(engine): Initialize energy field in Rotamer test instance
  • feat(core): Expand EnergyTerm struct to include additional fields and update methods
  • test(core): Replace EnergyTerm::new with EnergyTerm::from_nonbonded in tests
  • feat(core): Change energy field type from EnergyData to EnergyTerm
  • feat(core): Update energy field initialization in Rotamer to use EnergyTerm
  • chore(engine): Revert internal energy feature implementation
  • refactor(engine): Simplify fixed energy calculation by consolidating atom collection logic
  • test(engine): Improve fixed atom collection tests for accuracy and clarity
  • fix(engine): Enhance EL pre-computation log to include cached residue-type combinations
  • fix(engine): Refine current EL energy calculation to include active residues and their interactions
  • fix(engine): Update EL energy calculation to include internal energy contributions
  • test(engine): Update energy calculations to include internal energy contributions for accurate results
Update attachment

Ship 2

1 payout of shell 519.0 shells

Tony Kan

10 months ago

Tony Kan Covers 4 devlogs and 27h 9m

!!!NEW VERSION RELEASED: v0.2.0-alpha.1!!!
https://github.com/caltechmsc/screampp/releases/tag/v0.2.0-alpha.1

Refactors the core energy model to calculate absolute total system energy, moving away from a relative optimization score. This is achieved by introducing a new fixed_energy task that computes a constant energy offset from all non-optimizable parts of the system (e.g., static backbone, environment, fixed sidechains). The final energy of any solution is now the sum of this fixed offset, the pre-computed EL energy, and the pairwise interaction energy. This change provides more physically meaningful energy values.

This refactoring also significantly streamlines the parameterization and data loading pipeline. Topology information is now managed by a dedicated TopologyRegistry, loaded from a single file, which decouples rotamer placement logic from the rotamer library itself. Consequently, the forcefield and rotamer libraries are now simpler and more focused.

Update attachment

Engine and workflows refactored for clarity, performance, and parallelism in energy calculations; Solution and OptimizationState structures improved; placement workflow, simulated annealing, and progress reporting enhanced; CLI output formatting and documentation updated; tests expanded for coverage; dependencies updated.

Detailed Commit Log

  • test(engine): Add unit tests for fixed energy calculations and atom set collection
  • fix(engine): Enhance interaction energy calculation with parallel processing support
  • test(engine): Simplify bond addition syntax in test cases
  • fix(engine): Correctly import rayon for parallel processing support
  • feat(engine): Refactor Solution struct to use totalenergy and optimizationscore for clarity
  • test(engine): Refactor tests to use totalenergy and optimizationscore for consistency
  • refactor(engine): Remove total_energy module as part of integration phase cleanup
  • fix(engine): Filter atoms by role in computeenergiesfor_unit for accurate energy calculations
  • test(engine): Remove redundant position calculations for rotamer atoms in energy tests
  • refactor(engine): Rename instrumented function for clarity and add TODO for internal energy integration
  • fix(engine): Handle empty queryatoms in computeenergiesforunit to prevent panics
  • feat(engine): Add function to collect active sidechain atoms for energy calculations
  • feat(engine): Implement current EL energy calculation for active sidechains
  • test(engine): Add test for calculate_current function of EL energy module
  • feat(workflows): Refactor placement workflow for improved clarity and structure
  • feat(workflows): Add context preparation function for EL energy precomputation
  • feat(workflows): Update calculateinitialstate to return initial state and energy term
  • feat(workflows): Refactor optimization state initialization for clarity and efficiency
  • feat(workflows): Refactor clash resolution logic for improved clarity and performance
  • feat(workflows): Implement simulated annealing for optimization refinement
  • feat(workflows): Rename and refactor simulated annealing function to final refinement with improved iteration handling
  • feat(workflows): Refactor final refinement and update results handling for optimization solutions
  • feat(workflows): Remove unused test functions and dummy file creation logic for cleaner code
  • feat(engine): Introduce InitialState struct and refactor OptimizationState for clarity and performance
  • refactor(engine): Improve optimization score comparison and streamline solution handling
  • test(engine): Add comprehensive tests for OptimizationState functionality
  • refactor(workflows): Clean up state imports and reorganize PlacementResult struct definition
  • fix(cli): Increase UI event channel capacity for improved performance
  • refactor(cli): Improve placement workflow handling and enhance output formatting
  • docs(cli): Enhance output file path documentation for clarity and examples
  • refactor(workflows): Enhance progress reporting in final refinement phase
  • test(cli): Update mock_solution to use correct field names for Solution struct
  • chore(deps): Bump slab from 0.4.10 to 0.4.11
  • Merge pull request #25 from caltechmsc/dependabot/cargo/slab-0.4.11
  • test(workflows): Add unit tests for placement workflow functionality
  • Merge pull request #26 from caltechmsc/feature/24-implement-foundational-absolute-energy-model
  • docs(cli): Update AUTHORS list to include Soo-Kyung Kim
Update attachment

Streamlined rotamer parameterization and atom role assignment in core and engine; improved CLI support for topology registry; refactored energy calculation logic (EL and interaction energy) and test setups; removed unused/obsolete fields and errors, and optimized atom/residue handling throughout modules.

Detailed Commit Log

  • feat(core): Add rotamer parameterization and streamline atom role assignment
  • test(core): Refactor tests for parameterization and enhance setup with temporary files
  • fix(core): Optimize rotamer parameterization by consolidating atom and rotamer processing
  • test(engine): Simplify atom creation in rotamer parameterization and remove unused VDW parameters
  • test(engine): Add hydrogen parameters and define atoms for GLY residue in energy calculations
  • test(core): Add tests for internal hydrogen bond handling and symmetry in scoring interactions
  • feat(cli): Add topology registry option to PlaceArgs for residue topology overrides
  • fix(cli): Remove unused placement_registry field from PartialSamplingConfig
  • feat(cli): Add topology registry path to PartialPlacementConfig
  • fix(cli): Update placement registry to topology registry in PartialPlacementConfig
  • test(cli): Add topology registry path to configuration tests
  • fix(cli): Update path resolution for TopologyRegistry in DataManager
  • test(cli): Update placement registry to topology registry in data tests
  • fix(cli): Update error message for invalid placement registry to topology registry
  • fix(cli): Rename PlacementRegistry to TopologyRegistry in ParsedLogicalName and update related error handling
  • test(cli): Update tests for topology registry in parser
  • test(cli): Remove unused PLACEHOLDERS constant in tests module
  • refactor(engine): Simplify side-chain removal logic by eliminating topology dependency
  • feat(engine): Improve backbone atom retrieval in alignment transformation
  • refactor(engine): Remove topology parameter from addnewsidechainatomsand_map and optimize atom lookup
  • refactor(engine): Remove InsufficientAtomsInResidue error from PlacementError enum
  • test(engine): Simplify test setup and improve sidechain handling in placement tests
  • test(engine): Enhance test setup for residue handling and streamline atom addition logic
  • feat(engine): Enhance EL energy computation by precomputing environment atom IDs and refactoring energy calculation logic
  • test(engine): Improve test setup for EL energy calculations by enhancing residue handling and atom addition logic
  • feat(engine): Implement interaction energy calculation with sidechain atom handling
  • test(engine): Add comprehensive tests for interaction energy calculations and sidechain handling
  • feat(engine): Add interaction energy module
  • feat(engine): Implement fixed energy calculation and integrate into task module
Update attachment

Major refactor and feature update for atom roles, residue topology, and placement logic: introduced AtomRole enum and role-based atom queries, enhanced residue and system caching, replaced PlacementInfo with TopologyRegistry throughout engine/core/workflows, streamlined error handling and parameterization, and improved unit tests for topology, parameterization, and placement. Updated configuration structs and test infrastructure for better clarity and maintainability.

Detailed Commit Log

  • feat(core): Add role field to Atom struct and define AtomRole enum
  • test(core): Add tests for default role and trait derivation of AtomRole
  • feat(core): Add backboneatomscache to Residue struct for improved atom management
  • feat(core): Implement atom cache invalidation and building for Residue struct
  • test(core): Add tests for caching and invalidation of backbone and sidechain atoms in Residue
  • refactor(data): Remove exactmatchatoms and connection_points from placement.toml
  • test(core): Update residue tests to use valid residue IDs instead of default ResidueId
  • feat(core): Add methods for filtering atoms by role in MolecularSystem
  • test(core): Enhance tests for MolecularSystem with role-based atom queries and disulfide bond handling
  • refactor(core): Remove unused fields from PlacementInfo struct
  • test(core): Update ALA and GLY test cases to reflect new sidechain atom definitions
  • test(core): Remove unused fields from rotamer placement info
  • test(engine): Remove unused fields from PlacementInfo in test cases
  • test(engine): Remove unused fields from PlacementInfo in doublet optimization tests
  • test(engine): Remove unused fields from PlacementInfo in EL energy tests
  • test(core): Refactor scoring functions to improve energy calculation logic
  • feat(core): Add scoregroupinternal method to calculate combined energy terms
  • test(core): Remove unused test for intra-residue interactions
  • test(core): Enhance scoring tests for group interactions and error handling
  • refactor(core): Rename AtomRole variants for clarity and consistency
  • refactor(core): Update AtomRole handling to replace 'Unknown' with 'Other'
  • feat(core): Add mutable iterator for atoms in MolecularSystem
  • feat(data): Add topology registry for amino acids with anchor and sidechain atoms
  • feat(core): Implement TopologyRegistry for managing residue topologies
  • test(core): Add unit tests for TopologyRegistry loading and error handling
  • feat(engine): Add topologyregistrypath to various configuration structs and builders
  • test(engine): Update placementregistrypath to topologyregistrypath in test configurations
  • feat(engine): Add TopologyNotFound error variant to EngineError enum
  • feat(engine): Add topology_registry field to OptimizationContext and AnalysisContext structs
  • test(engine): Refactor tests to use TestSetup struct and improve residue selection logic
  • fix(engine): Improve error message for insufficient atoms in residue in PlacementError enum
  • refactor(engine): Replace placementinfo parameter with topology in placerotameronsystem function
  • refactor(engine): Replace placementinfo parameter with topology in calculatealignment_transform function
  • refactor(engine): Replace placementinfo parameter with topology in removeold_sidechain function
  • refactor(engine): Replace placementinfo parameter with topology in addnewsidechainatomsandmap function
  • test(engine): Replace PlacementInfo with ResidueTopology in test cases
  • refactor(engine): Replace placement_info retrieval with topology lookup in doublet optimization
  • refactor(engine): Replace placement_info with topology in doublet optimization
  • refactor(engine): Replace placementinfo with topology in computeenergiesforunit function
  • refactor(workflows): Replace placementinfo with topology in initializestate function
  • refactor(engine): Replace placementinfo retrieval with topology lookup in resolveclashes_iteratively function
  • refactor(workflows): Replace placementinfo with topology in finalrefinement function
  • refactor(workflows): Replace placementinfo with topology in runsimulated_annealing function
  • feat(core): Enhance parameterization logic and error handling for atom roles and physicochemical parameters
  • feat(core): Add unit tests for parameterization logic and error handling in Parameterizer
  • fix(core): Add Default trait to GlobalParams for improved initialization
  • refactor(core): Replace placement_info with topology in RotamerLibrary for improved clarity and functionality
  • test(core): Add unit tests for RotamerLibrary loading and parameterization
  • test(core): Enhance rotamer library tests with additional scenarios and validations
  • refactor(workflows): Simplify run function by removing setup and integrating parameterization directly
  • test(workflows): Update TestSystemBuilder and TestEnvironment to remove parameterizer and integrate TopologyRegistry
  • refactor(core): Remove Placement module to streamline rotamer functionality
  • feat(engine): Add new error variants for topology loading and parameterization failures
  • test(engine): Enhance test setup by integrating TopologyRegistry and Parameterizer
  • test(engine): Refactor tests to integrate TopologyRegistry and Parameterizer for improved setup
  • test(core): Update test for missing topology to use specific rotamer file and adjust parameters
  • test(engine): Update PlacementConfigBuilder to include input conformation parameter
  • test(engine): Add final refinement iterations to optimization context test setup
  • test(engine): Refactor residue atom addition for improved clarity and maintainability
  • test(engine): Enhance rotamer library and update residue configurations for improved testing
  • fix(workflows): Improve residue handling in place to enhance error reporting and clarity
  • test(workflows): Update template atom configurations and bonds for improved residue representation
  • refactor(core): Simplify atom role assignment and improve error handling for anchor atoms
  • test(core): Update test to allow parameterization without a sidechain atom
  • fix(core): Improve error message for misclassified anchor atoms in parameterization
  • fix(core): Enhance anchor atom validation and error handling in parameterization
  • test(core): Rename test for clarity on misclassified anchor atom in topology
Update attachment

Ship 1

1 payout of shell 2647.0 shells

Tony Kan

10 months ago

Tony Kan Covers 20 devlogs and 180h 26m

!!!FIRST VERSION RELEASED: v0.1.0-alpha.1!!!
https://github.com/caltechmsc/screampp/releases/tag/v0.1.0-alpha.1

Enhanced atom name mapping, output formatting, and progress/UI management; improved sidechain placement, error handling, and CI/release workflows; unified force field file naming and introduced robust logging, templating, and state management for CLI and workflows.

Detailed Commit Log

  • fix(core): Change atomnamemap to map atom names to multiple IDs
  • fix(core): Update atomnamemap to support multiple atom IDs for a single atom name
  • fix(core): Improve removeatom method to retain atom IDs in atomname_map
  • fix(core): Update getatomidbyname to support retrieving multiple atom IDs
  • test(core): Enhance residue atom management to support multiple atoms with the same name
  • test(core): Simplify test setup by introducing TestRefs struct and enhance atom removal tests for duplicates
  • test(core): Update atom ID retrieval to use getfirstatomidby_name for consistency
  • refactor(core): Simplify rotamer extraction by introducing extractrotamerfrom_system method
  • test(core): Refactor ALA and GLY test cases to improve clarity and coverage
  • refactor(core): Remove unused import of PI from potentials.rs
  • test(engine): Update ligand atom ID retrieval to use getfirstatomidby_name for consistency
  • feat(engine): Update PlacementError enum for improved clarity and consistency
  • refactor(engine): Clarify comments and update atom ID retrieval method for consistency
  • refactor(engine): Enhance removeoldsidechain function to improve atom removal logic and add warnings for malformed input
  • refactor(engine): Optimize sidechain atom assignment by using a rotamer atom pool for improved efficiency
  • test(engine): Simplify residue creation in tests and enhance sidechain removal logic
  • test(workflows): Improve residue atom retrieval and enhance test rotamer library definitions
  • fix(data): Unify force field file name format to <name>-<version>
  • feat(core): Add atom format specification to output for clarity
  • feat(core): Add FORMAT specification for CONECT records in BGF output
  • fix(core): Remove obsolete FORMAT specification from header lines
  • test(core): Include FORMAT lines in BGF output tests for clarity
  • refactor(core): Remove unused order and footer lines from BgfMetadata
  • fix(workflows): Update run and setup functions to accept mutable MolecularSystem and add parameterization step
  • test(workflows): Modify tests to use mutable clones of MolecularSystem for accurate state management
  • fix(cli): Allow mutable access to system in side-chain placement workflow
  • feat(cli): Add default serialization for include and exclude fields in PartialResidueSelection
  • feat(cli): Enhance output path argument to support templating for multiple solutions
  • feat(cli): Update output path generation to use solution data for accurate file naming
  • feat(cli): Enhance output path generation to support solution-based templating
  • test(cli): Enhance output path generation with additional placeholder support and tests
  • feat(workflows): Enhance final refinement logging and skip condition
  • feat(cli): Add chrono dependency for date and time handling
  • refactor(cli): Mark withcustompath as test-only function
  • feat(cli): Implement custom logging layer with timestamp and level filtering
  • refactor(cli): Remove test module from logging.rs
  • feat(cli): Pass progress handler to logging setup for enhanced logging context
  • feat(cli): Enhance progress handling with MultiProgress and improved state management
  • test(cli): Refactor progress handler tests for improved clarity and state management
  • feat(engine): Update Progress enum to include detailed TaskStart and TaskIncrement variants
  • test(engine): Improve test clarity and ensure correct event handling in ProgressReporter
  • fix(engine): Refine progress reporting in clash detection task
  • fix(engine): Update progress reporting in EL energy task for clarity and accuracy
  • feat(workflows): Enhance clash resolution reporting with iteration details
  • feat(workflows): Improve progress reporting in final refinement with status updates
  • feat(workflows): Enhance simulated annealing progress reporting with step details
  • fix(cli): Ensure log file layer is compact for better readability
  • feat(package): Add color-eyre for improved error handling
  • refactor(cli): Remove unused progress module and related code
  • refactor(cli): Replace IndicatifLayer with ChannelLayer for improved event handling
  • refactor(cli): Integrate UiManager for enhanced UI handling and error reporting
  • refactor(cli): Update run function to accept ui_sender for progress handling
  • feat(cli): Implement UiManager for handling progress and logging events
  • test(cli): Add unit tests for UiManager event handling and progress updates
  • refactor(cli): Enhance UiManager to include shutdown handling and event receiver
  • test(cli): Update tests for UiManager to use async functions and improve event handling
  • fix(cli): Add PartialEq derive to Progress enum for comparison support
  • refactor(cli): Rename run function to run_app and improve error handling
  • fix(cli): Improve error handling in side-chain placement workflow execution
  • fix(cli): Add warning for potential UI manager exit before shutdown signal
  • fix(cli): Update command result logging to use eprintln for errors
  • fix(cli): Enhance command result logging with structured error handling
  • refactor(cli): Simplify command result logging by removing redundant print statements
  • fix(cli): Correct order of state updates in progress handling
  • fix(ui): Preserve current message during task start in progress handling
  • fix(workflows): Change initialsystem to workingsystem for better clarity and consistency
  • test(workflows): Change mutable systemtorun to immutable for consistency in test cases
  • fix(cli): Change mutable system to immutable for consistency in workflow execution
  • Merge pull request #23 from caltechmsc/feature/22-implement-cli-place-subcommand-for-core-workflow-execution
  • feat(cli): Update DATA_URL to point to the correct release version
  • ci(project): Add GitHub Actions workflow for releasing CLI and data assets
  • ci(project): Update installation steps for Linux dependencies and cross-compilation tool
  • fix(ci): Refactor release workflow to streamline Linux dependency installation and archive naming
  • fix(ci): Enhance build job naming and streamline Linux target handling in release workflow
  • ci(project): Remove musl targets and installation from Linux build matrix
  • ci(project): Comment out aarch64 target in Linux build matrix
  • ci(project): Add write permissions for contents in release workflow
Update attachment

Total energy dropping from ~~2.4 million kcal/mol to ~~7,174 kcal/mol!!!

Update attachment

Introduced initial CLI structure for SCREAM++ with robust command/argument parsing, error handling, data management, and logging; enhanced logical name resolution, progress handling, configuration loading/merging, and side-chain placement integration. Updated dependencies, improved maintainability and test coverage, and fixed core/engine logic for interaction energy and residue selection.

Detailed Commit Log

  • chore(cli): Add dependent libraries required by CLI
  • chore(cli): Update dependencies in Cargo.toml for scream-cli
  • fix(cli): Correct clap dependency version and add derive feature
  • feat(cli): Implement initial CLI structure with commands and arguments
  • feat(cli): Add CliError enum for error handling in CLI
  • feat(cli): Add ParseError enum for error handling in parser
  • feat(cli): Define RotamerLibraryName and ForcefieldName structs for logical name parsing
  • feat(cli): Enhance logical name parsing with delta-params and placement registry support
  • test(cli): Add comprehensive tests for logical name parsing including rotamer libraries, forcefields, delta params, and placement registries
  • ci(project): Separate core and CLI tests in CI workflow
  • chore(cli): Update reqwest dependency to include stream feature and reorganize dependencies
  • feat(cli): Add DataManager and DataProgress enum for data handling
  • feat(cli): Implement DataManager with download functionality and path management
  • test(cli): Add unit tests for logical name resolution in DataManager
  • chore(cli): Add serial_test as a development dependency
  • feat(cli): Implement logging setup function with configurable verbosity and log file support
  • test(cli): Add unit tests for logging setup and error handling
  • feat(cli): Add CliProgressHandler for managing progress bar updates
  • test(cli): Add unit tests for CliProgressHandler's progress updates and thread safety
  • feat(cli): Implement SCREAM++ CLI with command structure and argument parsing
  • test(cli): Add unit tests for CLI argument parsing and validation
  • feat(cli): Expose progress module in utils for CLI enhancements
  • feat(cli): Add partial configuration structs for residue and optimization settings
  • feat(cli): Add methods for loading configuration from file and merging CLI arguments in PartialPlacementConfig
  • test(cli): Add unit tests for loading configuration from file and merging with CLI arguments
  • chore(cli): Update dependencies and add parallel feature support
  • fix(cli): Remove meaningless mut in progress module
  • test(cli): Refactor DataManager initialization in tests to use new methods for setting custom paths
  • fix(cli): Remove redundant existence check in resolvelogicalname and update test assertions
  • feat(cli): Add data command module with async run function for handling commands
  • feat(cli): Implement handle_download function for data download with progress tracking
  • feat(cli): Add functions for managing data paths in DataManager
  • fix(cli): Ensure tokio dependency is correctly specified in Cargo.toml
  • feat(cli): Add place command module with async run function for side-chain placement
  • feat(cli): Add generateoutputpath function for dynamic output filename generation
  • test(cli): Add unit tests for generateoutputpath function
  • fix(cli): Remove optional flag from rayon dependency and add features to screampp
  • fix(cli): Update logical name resolution to include 'data' directory in paths
  • test(cli): Update logical name resolution to include 'data' directory in paths
  • fix(cli): Change log_file parameter to a reference for improved performance
  • test(cli): Pass log_file parameter as a reference in invalid log file path test
  • fix(engine): Fix interaction energy calculation for improved readability and performance
  • fix(engine): Fix residue selection logic for improved readability and performance
  • test(cli): Pass None as a reference in global logger setup for consistency
  • feat(cli): Add main function and enhance command dispatching logic
  • chore(package): Update description for clarity and completeness
  • refactor(cli): Extract constants for author, about, and copyright information for improved maintainability
  • test(cli): Fix test data directory structure
  • feat(cli): Add constructor for DataManager with custom base path
  • test(cli): Replace setcustompath with new withcustompath constructor for DataManager
Update attachment

Refactored and enhanced rotamer and topology handling, streamlined rotamer deduplication and bond logic, improved sidechain placement, and updated tests for new structure and workflows.

Detailed Commit Log

  • refactor(core): Remove identifiers module and update references to isheavyatom function
  • refactor(core): Update RMSD threshold for duplicate rotamers in placement workflow
  • refactor(core): Remove geometry module and relocate RMSD calculation to rotamers library
  • feat(data): Add topology to all rotator libraries
  • feat(core): Add bonds field to RotamerData and Rotamer structs
  • refactor(engine): Change visibility of isheavyatom function to private
  • refactor(core): Change visibility of calculate_rmsd function to private
  • refactor(core): Change bonds field type in RotamerData from Vec<(usize, usize)> to Vec<[usize; 2]>
  • refactor(core): Consolidate error handling for invalid bond definitions and duplicate atom serials in LibraryLoadError
  • feat(core): Streamline rotamer processing by introducing a dedicated method for raw rotamer handling and enhancing bond extraction logic
  • test(core): Enhance rotamer library tests by adding topology handling and improving bond validation
  • feat(core): Add processrawrotamer method for improved atom and bond processing in RotamerLibrary
  • refactor(core): Improve atom extraction and duplicate detection in RotamerLibrary
  • feat(engine): Implement the topology for sidechain placement modules
  • test(engine): Enhance rotamer placement tests with new residue and bond validations
  • test(engine): Update rotamer library tests to use a consistent empty rotamer structure
  • test(engine): Add bond information to rotamer creation in doublet optimization tests
  • test(engine): Add Lennard-Jones parameters to atom creation in doublet optimization tests
  • test(engine): Add bond information to alanine rotamer in energy computation tests
  • refactor(workflows): Remove RMSD threshold for duplicate rotamers in setup
  • refactor(core): Remove RMSD threshold check for duplicate rotamers in library
  • test(core): Update rotamer test cases to reflect new structure and add additional rotamers
  • refactor(engine): Update simulated annealing config to accept optional parameter
  • test(workflows): Add unit tests for placement workflow and simulated annealing
  • test(core): Remove unnecessary initialization in parameterize_atom test
  • test(engine): Restore Atom import in placement tests for consistency
  • test(workflows): Reformat code for improved readability and consistency
  • refactor(core): Simplify hydrogen bond angle check and remove redundant condition
  • refactor(core): Remove unused dreiding_hbond function to clean up code
  • test(core): Remove redundant dreiding_hbond tests to streamline test suite
  • test(core): Update test forcefield creation and improve hydrogen bond tests
  • test(core): Add disulfide bond tests for intrachain and interchain scenarios
  • refactor(core): Add comment to clarify hydrogen and acceptor group check
Update attachment

Refactored core and engine modules for improved van der Waals parameterization, residue and atom ID consistency, and file parsing; introduced atom sorting and enhanced error handling, removed unused serial parameters, and updated tests for clarity and correctness.

Detailed Commit Log

  • feat(core): Add CachedVdwParam enum for van der Waals parameters
  • feat(core): Refactor Atom struct to use CachedVdwParam for van der Waals parameters
  • feat(core): Update parameterization to use CachedVdwParam for van der Waals properties
  • test(core): Update assertions for CA atom's van der Waals parameters to use CachedVdwParam
  • feat(core): Refactor vdw calculation to use CachedVdwParam and handle unparameterized atoms
  • test(core): Update VDW tests to use CachedVdwParam and handle unparameterized atoms
  • fix(core): Improve error handling in scoring by removing missing force field type check
  • test(core): Remove test for unparameterized force field type
  • feat(core): Add van der Waals parameters for atom types in test setup
  • refactor(core): Simplify CachedVdwParam usage in test setup
  • test(engine): Add CachedVdwParam to atom initialization in tests
  • test(engine): Add CachedVdwParam initialization for atoms in tests
  • test(engine): Update atom initialization to include CachedVdwParam and handle unparameterized atoms
  • refactor(core): Rename 'id' to 'res_seq' in Residue struct for clarity
  • refactor(core): Update residue ID references to use 'res_seq' for consistency
  • refactor(core): Update residue ID references to use 'res_seq' for consistency
  • refactor(engine): Update design spec residue ID reference to use 'res_seq' for consistency
  • refactor(core): Rename 'resseq' to 'residuenumber' in Residue struct for clarity
  • refactor(core): Update residue sequence references to use 'residue_number' for consistency
  • refactor(core): Update residue ID map to use 'residue_number' for consistency
  • refactor(engine): Update design spec residue ID reference to use 'residue_number' for consistency
  • refactor(core): Rename 'restype' to 'residuetype' for consistency
  • refactor(core): Rename 'restype' to 'residuetype' for clarity in error messages and parameterization logic
  • refactor(core): Rename 'restype' to 'residuetype' for consistency in DeltaParam and related tests
  • refactor(core): Rename 'restype' to 'residuetype' for clarity in residue handling
  • refactor(core): Rename 'restype' to 'residuetype' for clarity in parameterization and retrieval functions
  • refactor(engine): Rename 'restype' to 'residuetype' for clarity in residue selection logic
  • refactor(engine): Rename 'restype' to 'residuetype' for clarity in residue handling
  • refactor(engine): Update residue type reference from 'restype' to 'residuetype' for consistency
  • refactor(engine): Rename 'restype' to 'residuetype' for clarity in energy calculation
  • refactor(workflows): Rename 'restype' to 'residuetype' for consistency in residue handling
  • refactor(data): Update column header from 'restype' to 'residuetype' in multiple CSV files for consistency
  • refactor(core): Simplify residue_type assignment in Residue struct constructor
  • test(core): Change mutable atom1 to immutable in calculatevdwcombinesljandbuckinghamcorrectly test
  • test(core): Change mutable binding to immutable for force field in hbond test
  • refactor(core): Simplify residue addition logic in add_residue method
  • test(engine): Update test to ignore unused residue ID in runreturnsemptyvecfornopairs
  • test(engine): Change mutable binding to immutable for residueid in backboneatoms_data closure
  • refactor(workflows): Standardize variable naming for energy differences
  • refactor(core): Simplify VDW parameter extraction in calculate_vdw method
  • refactor(core): Remove serial number from Atom struct and update constructor
  • refactor(core): Remove atom serial map in system and update related methods for cleaner access
  • test(core): Enhance createtestsystem to return key atom IDs for easier access
  • refactor(core): Enhance UnparameterizedAtom error to include atom name and residue ID
  • test(core): Rename test module and update atom creation to use names instead of serials
  • test(core): Update createtestsystem to return AtomId and simplify atom creation
  • refactor(core): Rename parameters in findresiduebyid and addresidue for clarity
  • test(core): Remove serial parameter from create_atom for improved clarity
  • test(core): Add test for ignoring 1-3 peptide bond interactions in scoring
  • refactor(core): Remove unused serial parameter from Atom creation for clarity
  • test(core): Remove serial parameter from atom creation in test cases for clarity
  • test(engine): Remove unused serial parameter from Atom creation for clarity
  • test(engine): Remove unused atom serial parameter for improved clarity
  • test(engine): Remove atom serial parameter from test rotamer creation for clarity
  • refactor(engine): Remove unused atom serial parameter from Atom creation for clarity
  • test(engine): Simplify variable names and improve clarity in total energy calculations
  • test(engine): Remove unused atom serial parameter for improved clarity in atom creation
  • test(engine): Simplify atom creation by removing unused serial parameters for clarity
  • feat(core): Add sorting module and define atom order weights and aliases
  • feat(core): Implement atom sorting functionality with CanonicalAtom struct
  • test(core): Add unit tests for atom sorting and comparison functions
  • fix(core): Add missing serial field to atom definitions in rotamer tests
  • feat(core): Enhance BGF file parsing and writing with atom sorting and improved error handling
  • refactor(core): Replace adjacency list with BTreeSet for bond pairs in BGF file writing
  • test(core): Add unit tests for BGF file parsing and writing with canonical and disordered data
  • feat(core): Add partial charge and force field type to atom creation in BGF file parsing
  • fix(core): Add placeholder for lone pairs logic in atom formatting
Update attachment

Improved accessibility, consistency, and optimization logic in engine and core; enhanced placement, scoring, and simulated annealing workflows with robust neighbor exclusions and convergence controls.

Detailed Commit Log

  • fix(engine): Change resolveselectionto_ids function to public for accessibility
  • fix(engine): Make sampling module public for accessibility
  • fix(core): Rename equilibriumdist to equilibriumdistance for consistency
  • fix(core): Rename equilibriumdist to equilibriumdistance for consistency
  • fix(engine): Refactor energy calculation in doublet optimization to consider the backbone atoms
  • feat(workflow): Implement placement workflow with clash resolution and final refinement
  • feat(engine): Enhance optimization configuration with convergence and simulated annealing parameters
  • test(engine): Update convergence configuration to use ConvergenceConfig struct
  • test(engine): Update convergence configuration to use ConvergenceConfig struct
  • feat(workflow): Implement simulated annealing for optimization and refine clash resolution logic
  • refactor(workflow): Replace magic number with constant for clash threshold
  • feat(core): Add exclusion of bonded neighbors in interaction scoring
  • test(core): Add test to ignore 1-2 peptide bond interactions in scoring
  • feat(core): Add 1-3 neighbor exclusion logic in interaction scoring
Update attachment

Enhanced engine and core modules for ligand selection, optimization, energy calculation, sampling, and configuration; improved error handling, builder patterns, and test coverage.

Detailed Commit Log

  • feat(engine): Update LigandBindingSite to use ResidueSpecifier for ligand residue
  • test(engine): Update test for ligand residue selection to use ResidueSpecifier
  • chore(package): Add kiddo dependency for enhanced data structure support
  • feat(engine): Implement ligand binding site selection in residue resolution
  • test(engine): Enhance ligand binding site selection in tests and implementation
  • feat(engine): Refactor Solution and OptimizationState to use SolutionState for better structure
  • test(engine): Update OptimizationState tests to include rotamers parameter
  • feat(engine): Add total energy calculation task for energy term evaluation
  • feat(engine): Implement Sum trait for EnergyTerm to enable summation of energy terms
  • test(engine): Add comprehensive tests for total energy calculation and interaction energy
  • feat(engine): Add DoubletResult struct for doublet optimization task
  • feat(engine): Enhance doublet optimization task with energy calculation and error handling
  • feat(core): Derive Clone for RotamerLibrary struct
  • feat(engine): Add Default trait to ScoringConfig and OptimizationConfig structs
  • fix(engine): Update potential_function to use 'lennard-jones-12-6' across multiple modules
  • feat(engine): Refactor doublet optimization to improve energy calculation and streamline rotamer placement
  • test(engine): Add unit tests for doublet optimization functionality
  • chore(package): Reorder dependencies in Cargo.toml for consistency
  • chore(package): Add dependencies for rand and rand_chacha
  • fix(package): Downgrade rand version to 0.8.5 for compatibility
  • feat(engine): Add SamplingError enum for error handling in sampling functionality
  • feat(engine): Implement boltzmann_sample function for Boltzmann sampling
  • test(engine): Add unit tests for boltzmann_sample function
  • feat(engine): Add utils module with sampling submodule
  • Merge pull request #16 from caltechmsc/feature/15-implement-core-engine-module-for-algorithm-execution-and-state-management
  • refactor(engine): Simplify configuration structures by removing scoring config and reorganizing placement and design configs
  • feat(engine): Add builders for PlacementConfig, DesignConfig, and AnalyzeConfig with validation
  • test(engine): Add unit tests for PlacementConfigBuilder and DesignConfigBuilder
  • feat(engine): Update RotamerLibrary to load placement registry from file
  • feat(engine): Refactor OptimizationContext and add AnalysisContext with AnalyzeConfig
  • test(engine): Add unit tests for RotamerLibrary functionality
  • test(engine): Add unit tests for residue selection resolution logic
  • refactor(engine): Update context usage in EL energy task and streamline work result type
  • test(engine): Add unit tests for EL energy task functionality
  • refactor(engine): Simplify clash detection function by removing context parameter and using direct reporter
  • test(engine): Add unit tests for clash detection functionality
  • refactor(engine): Remove context parameter from total energy task and streamline energy calculation
  • test(engine): Add comprehensive unit tests for total energy calculation
  • refactor(engine): Update doublet optimization task to use OptimizationContext and improve error handling for empty rotamer lists
  • test(engine): Add unit tests for doublet optimization functionality and handle empty rotamer lists
Update attachment

Implemented robust side-chain placement, energy, and clash detection infrastructure in engine; enhanced error handling and configurability; refactored core energy terms and residue display.

Detailed Commit Log

  • feat(engine): Add PlacementError enum for handling placement-related errors
  • feat(engine): Implement From trait for PlacementError to convert to EngineError
  • feat(engine): Implement placerotameron_system function for side-chain atom placement
  • feat(engine): Add gatheranchorpoints function for anchor point retrieval and validation
  • feat(engine): Implement calculate_transformation function for robust point alignment
  • feat(engine): Add preparenewsidechain_atoms function for creating new side-chain atoms
  • test(engine): Add unit tests for placement functionality and transformation calculations
  • fix(engine): Refactor error handling in placerotameron_system for improved clarity and consistency
  • refactor(engine): Enhance Context struct and residue selection logic for improved clarity and functionality
  • test(engine): Enhance residue selection tests with non-standard residue handling and library integration
  • refactor(engine): Update residue selection traits and methods for improved configurability and clarity
  • test(engine): Add tests for design residue resolution and active residue combination
  • feat(core): Add EnergyTerm struct for energy calculations in forcefield
  • test(core): Add comprehensive tests for EnergyTerm struct operations
  • refactor(core): Replace InteractionEnergy struct with EnergyTerm in Scorer
  • feat(core): Add emptylatticeenergy field to Rotamer struct
  • feat(core): Add emptylatticeenergy field to Rotamer struct
  • test(core): Add emptylatticeenergy field to test data structure
  • feat(engine): Add includeinputconformation field to OptimizationConfig and DesignConfigBuilder
  • fix(engine): Add includeinputconformation field to test configuration
  • feat(core): Implement includesystemconformations method in RotamerLibrary
  • test(core): Add tests for includesystemconformations method in RotamerLibrary
  • fix(core): Remove emptylatticeenergy field from Rotamer initialization
  • fix(core): Remove emptylatticeenergy field from Rotamer struct
  • fix(engine): Remove emptylatticeenergy field from test configuration
  • feat(engine): Add ELCache struct for energy term caching
  • test(engine): Add unit tests for ELCache functionality
  • feat(engine): Implement Progress enum and ProgressReporter for event reporting
  • test(engine): Add unit tests for ProgressReporter functionality
  • feat(engine): Add ProgressReporter to Context struct and update related tests
  • chore(package): Add optional rayon dependency and parallel feature
  • feat(engine): Add DesignSpecExt trait with getbyspecifier method for residue retrieval
  • test(engine): Add unit test for DesignSpecExt's getbyspecifier method
  • feat(core): Implement Display trait for ResidueType enum
  • test(core): Add display test for ResidueType enum to verify three-letter code formatting
  • feat(engine): Add len and is_empty methods to ELCache for better cache management
  • test(engine): Add tests for len and is_empty methods in ELCache
  • feat(engine): Add el_energy module with necessary imports for energy calculations
  • feat(engine): Define WorkUnit struct and update WorkResult type for energy calculations
  • feat(engine): Implement EL energy pre-computation logic in run function
  • feat(engine): Implement buildworklist function for residue processing in EL energy calculations
  • feat(engine): Add computeenergiesfor_unit function for energy calculations of rotamers
  • test(engine): Add unit tests for EL energy calculations and work list generation
  • chore(package): Add itertools in Cargo.toml
  • chore(package): Update toml version to 0.9.2 in Cargo.toml
  • feat(engine): Implement ClashPair struct for residue clash detection
  • feat(engine): Enhance clash detection with scoring and progress reporting
  • test(engine): Add unit tests for clash detection functionality
  • feat(engine): Add module declarations for engine components
  • feat(engine): Add error variants for loading forcefield parameters and rotamer library
  • refactor(engine): Move scorer initialization outside of the loop in clash detection
Update attachment

Removed charge, topology, and incorrect force field parameter files from data; added new DREIDING 0.3/0.4 Lennard-Jones 12-6 and Buckingham Exp-6 parameter files. Refactored core to eliminate charge and topology parameter logic from Forcefield and related tests. Restructured engine with new global and placement configuration using builder patterns, introduced OptimizationConfig and enhanced design configuration, implemented EngineError and context/optimization management structs, and added comprehensive unit tests for configuration, context, solution, and optimization logic.

Detailed Commit Log

  • chore(data): Remove charge data files (not needed for now)
  • chore(data): Remove incorrect lennard-jones-12-6 force field parameter file
  • chore(data): Remove topology files (not needed for now)
  • chore(data): Remove incorrect buckingham-exp-6 force field parameter file
  • feat(data): Add DREIDING 0.3 Lennard-Jones 12-6 forcefield parameters
  • feat(data): Add DREIDING 0.4 Lennard-Jones 12-6 forcefield parameters
  • feat(data): Add DREIDING 0.3 Buckingham Exp-6 forcefield parameters
  • feat(data): Add DREIDING 0.4 Buckingham Exp-6 forcefield parameters
  • refactor(core): Remove ChargeParam and Topology parameters from Forcefield
  • refactor(core): Remove unused topology and charge parameterization methods
  • fix(core): Add force field type assignment for atoms and enhance test coverage
  • refactor(core): Remove unused charges and topology from Forcefield test setup
  • refactor(engine): Remove unused modules
  • feat(engine): Introduce global configuration and placement configuration with builder pattern
  • refactor(engine): Replace GlobalConfig with ScoringConfig in PlacementConfig and related structures
  • feat(engine): Restructure PlacementConfig to include OptimizationConfig and enhance DesignConfig with builder pattern
  • test(engine): Add unit tests for PlacementConfigBuilder and DesignConfigBuilder
  • feat(engine): Implement EngineError enum for error handling in the engine module
  • feat(engine): Add Context struct for managing system and forcefield references
  • feat(engine): Add OptimizationContext struct and enhance residue selection logic
  • test(engine): Add unit tests for residue selection logic and context creation
  • feat(engine): Add Solution struct to represent energy and molecular system
  • feat(engine): Implement comparison traits for Solution struct
  • feat(engine): Add OptimizationState struct for managing top solutions
  • fix(engine): Correct energy comparison logic and optimize solution submission in OptimizationState
  • test(engine): Add unit tests for OptimizationState functionality
Update attachment

Added and refactored engine module with configuration, context, and error handling: introduced and revised file/path management (InputPaths, InputFiles), placement and target selection enums, task and configuration structs, and ScreamContext initialization logic. Developed ScreamError enum for robust error handling, implemented default traits, and added comprehensive unit tests. Initialized the engine module structure with config, context, and error submodules, and added the tracing crate as a development dependency.

Detailed Commit Log

  • feat(engine): Add InputPaths struct for file path management
  • feat(engine): Add PlacementSelection enum for managing placement options
  • feat(engine): Enhance configuration with PlacementMode and EngineConfig structs
  • feat(engine): Implement default trait for PlacementSelection, PlacementMode, and EngineConfig
  • test(engine): Add unit tests for default values in PlacementSelection, PlacementMode, and EngineConfig
  • chore(package): Add tracing as a development dependency in Cargo.toml
  • feat(engine): Implement ScreamContext struct and initialization logic
  • refactor(engine): Remove InputPaths, PlacementSelection, PlacementMode, and EngineConfig structs
  • feat(engine): Add ScreamError enum for error handling in the engine module
  • refactor(engine): Simplify ScreamError enum by removing unused variants and improving error messages
  • feat(engine): Add InputFiles struct for managing input file paths
  • feat(engine): Add TargetResidues enum for residue selection
  • feat(engine): Add DesignTask and InteractionAnalysisTask structs with ScreamTask enum variants
  • feat(engine): Add AlgorithmConfig struct with default implementation for configuration settings
  • test(engine): Add unit tests for InputFiles, TargetResidues, DesignTask, InteractionAnalysisTask, and ScreamTask
  • feat(engine): Implement ScreamContext struct with initialization logic for molecular system, forcefield, and placement registry
  • feat(engine): Add Load variant to ScreamError for data loading errors
  • feat(engine): Initialize engine module with config, context, and error submodules
Update attachment

Added rotamer libraries (amber, amber-n, charmm, charmm-n, qeq, qeq-n) and placement configurations to the data module. Implemented Rotamer data structures and RotamerLibrary for managing and retrieving rotamer data, added PlacementInfo for atom placement, and enhanced parameterization methods for atom properties and hydrogen bonds. Improved error handling with custom error enums, introduced loading functions for rotamer and placement data, and developed comprehensive unit tests for all new features. Integrated a dedicated rotamers module into the core structure.

Detailed Commit Log

  • feat(data): Add amber rotator libraries
  • feat(data): Add amber-n rotator libraries
  • feat(data): Add charmm rotator libraries
  • feat(data): Add charmm-n rotator libraries
  • feat(data): Add qeq rotator libraries
  • feat(data): Add qeq-n rotator libraries
  • feat(data): Add placement configuration for rotamers
  • feat(data): Implement Rotamer data structures for atom representation
  • feat(core): Add atom parameterization method to set force field properties
  • test(core): Add tests for parameterizing atom properties and handling hydrogen bonds
  • feat(core): Implement RotamerLibrary structure for managing rotamer data
  • feat(core): Define LibraryLoadError enum for handling rotamer library loading errors
  • feat(core): Add RotamerLibrary load method to include atom parameterization
  • feat(core): Add method to retrieve rotamers by residue type from RotamerLibrary
  • feat(core): Add PlacementInfo struct for managing atom placement data
  • feat(core): Refactor PlacementInfo and PlacementLoadError for improved error handling
  • feat(core): Implement loadplacementregistry function for loading placement data
  • test(core): Add tests for loadplacementregistry function to cover various scenarios
  • feat(core): Enhance RotamerLibrary to include placement info and improve error handling
  • test(core): Add comprehensive tests for RotamerLibrary parameterization functionality
  • feat(core): Add rotamers module to core structure
Update attachment

Upgraded toml dependency, added bond angle calculation and corresponding tests, enhanced Parameterizer with deltasfactor, implemented EnergyCalculator for van der Waals, Coulomb, and hydrogen bond energy computations, introduced getbondedneighbors in MolecularSystem, and developed a scoring module with Scorer, InteractionEnergy, and error handling. Added comprehensive tests for new energy and scoring features, and structured codebase with a dedicated forcefield module.

Detailed Commit Log

  • chore(package): Update toml dependency version to 0.9.0
  • feat(core): Add bond_angle function to calculate angle between three points
  • test(core): Add unit tests for bond_angle function
  • feat(core): Enhance Parameterizer to accept deltasfactor in constructor and update parameterization logic
  • feat(core): Implement EnergyCalculator with van der Waals potential calculation
  • feat(core): Add calculate_coulomb function to EnergyCalculator for Coulomb potential calculation
  • feat(core): Add calculate_hbond function to EnergyCalculator for hydrogen bond energy calculation
  • test(core): Add unit tests for EnergyCalculator methods
  • feat(core): Add getbondedneighbors method to MolecularSystem for retrieving bonded neighbors
  • test(core): Enhance getbondedneighbors test for accurate neighbor retrieval
  • feat(core): Implement ScoringError enum for error handling in scoring module
  • feat(core): Define Scorer struct for scoring calculations in the scoring module
  • feat(core): Add InteractionEnergy struct for energy calculations in scoring module
  • feat(core): Implement total method for InteractionEnergy struct to calculate total energy
  • feat(core): Add new constructor method for Scorer struct
  • feat(core): Implement score_interaction method for Scorer struct to calculate interaction energies
  • test(core): Add unit tests for Scorer struct interaction scoring
  • test(core): Update bond count assertions in MolecularSystem tests
  • feat(core): Add forcefield module to core structure
Update attachment

Implemented core forcefield functionality, including potential functions (Lennard-Jones, Buckingham Exp-6, Coulomb, DREIDING hydrogen bond, flat-bottom), error handling, and parameter structures for van der Waals, hydrogen bond, delta, charge, topology, and global parameters. Developed a unified Forcefield struct, added TOML/CSV-based parameter loading, and integrated a Parameterizer with methods for system, topology, charge, non-bonded, and delta parameterization, as well as peptide bond construction. Refactored and cleaned up parameter structures and error enums, improved numerical stability and readability, and added comprehensive unit tests for all new features.

Detailed Commit Log

  • feat(core): Add Coulomb constant for forcefield calculations
  • feat(core): Implement Lennard-Jones 12-6 potential function
  • feat(core): Refactor Buckingham Exp-6 potential function for improved numerical stability
  • feat(core): Add Coulomb potential function for electrostatic interactions
  • feat(core): Implement DREIDING hydrogen bond potential function
  • feat(core): Add applyflatbottom function for potential calculations
  • test(core): Add unit tests for Lennard-Jones, Buckingham, Coulomb, and Dreiding potentials
  • chore(package): Add serde in Cargo.toml for scream-core
  • feat(core): Add VdwParam enum for van der Waals parameters
  • feat(core): Add HBondParam struct for hydrogen bond parameters
  • feat(core): Add DeltaParam struct for statistical parameters
  • feat(core): Add Globals struct for forcefield parameters
  • feat(core): Define ForcefieldParams struct to encapsulate forcefield parameters
  • feat(core): Add DeltaParams struct for nested delta parameters
  • chore(package): Add toml in Cargo.toml for scream-core
  • feat(core): Add ParamLoadError enum for error handling in parameter loading
  • feat(core): Implement loadfromtoml method for ForcefieldParams struct
  • feat(core): Implement loadfromtoml method for DeltaParams struct
  • refactor(data): Change header from 'residuetype' to 'restype' in all delta CSV files
  • refactor(core): Remove DeltaParams struct and clean up DeltaParam definition
  • refactor(core): Remove unused Globals and ForcefieldParams structs along with ParamLoadError enum
  • feat(core): Add ChargeParam struct for handling charge parameters
  • feat(core): Add TopologyAtomParam struct for topology atom parameters
  • feat(core): Add TopologyResidueParams struct for managing residue parameters
  • feat(core): Add TopologyParams struct for managing topology residue parameters
  • feat(core): Add GlobalParams struct for managing global parameters
  • feat(core): Add NonBondedParams struct for managing non-bonded parameters
  • feat(core): Define Forcefield struct to manage non-bonded parameters, deltas, charges, and topology
  • chore(package): Add csv in Cargo.toml for scream-core
  • feat(core): Add ParamLoadError enum for handling parameter loading errors
  • feat(core): Implement loading functions for non-bonded parameters, deltas, charges, and topology
  • feat(core): Implement charge directory loading for ChargeParam from CSV files
  • chore(package): Add tempfile as a development dependency in Cargo.toml
  • test(core): Add unit tests for loading non-bonded, delta, charge, and topology parameters
  • test(core): Update loadforcefield test to use CARGOMANIFEST_DIR for data path
  • fix(core): Rename residuetype to restype in DeltaParam and ChargeParam structs
  • feat(core): Add ParameterizationError enum for error handling in forcefield parameterization
  • refactor(core): Simplify Forcefield parameter structures and loading methods
  • test(core): Add comprehensive tests for loading non-bonded, delta, charge, and topology parameters
  • refactor(core): Clean up potential functions and improve readability
  • test(core): Add unit tests for Lennard-Jones, Buckingham, Coulomb, and Dreiding potentials
  • refactor(core): Simplify ParameterizationError enum by removing unused variants and improving error messages
  • feat(core): Add Parameterizer struct for forcefield parameterization
  • feat(core): Implement parameterize_system method in Parameterizer for system parameterization
  • feat(core): Enhance parameterize_topology method to handle missing atoms and bonds
  • feat(core): Implement parameterize_charges method for charge parameterization in MolecularSystem
  • feat(core): Implement parameterizenonbonded_properties method for handling non-bonded interactions
  • feat(core): Add parameterize_deltas method for delta parameterization in MolecularSystem
  • feat(core): Implement buildpeptidebonds method for adding peptide bonds in MolecularSystem
  • feat(core): Implement parameterize_deltas method for delta parameterization in MolecularSystem
  • feat(core): Enhance topology parameterization to check for atom existence in topology
  • feat(tests): Add comprehensive tests for parameterization functionality in MolecularSystem
  • fix(core): Correct import path for Forcefield in parameterization module
Update attachment

Added charge data (amber, amber-n, charmm, charmm-n, qeq, qeq-n) as CSVs, included topology files for 28 amino acids, imported all delta parameters for RMSD range, and integrated DREIDING forcefield parameters (Buckingham Exp-6 and Lennard-Jones 12-6).

Detailed Commit Log

  • feat(data): Add amber charges data CSV
  • feat(data): Add amber-n charges data CSV
  • feat(data): Add charmm charges data CSV
  • feat(data): Add charmm-n charges data CSV
  • feat(data): Add qeq charges data CSV
  • feat(data): Add qeq-n charges data CSV
  • feat(data): Add topology files for 28 amino acids
  • feat(data): Add all delta parameters from RMSD 0.1-5.0Å in 0.1Å steps
  • feat(data): Add DREIDING forcefield parameters for Buckingham Exp-6
  • feat(data): Add DREIDING Lennard-Jones 12-6 forcefield parameters
Update attachment

Renamed AminoAcidType to ResidueType with parsing and conversion utilities, updated Residue and add_residue to support optional ResidueType for flexible residue handling, refactored and simplified identifiers and core structures, improved error handling in hydrogen generation, removed unused AtomFlags and bitflags, and added comprehensive unit tests for new and updated features.

Detailed Commit Log

  • feat(core): Rename AminoAcidType to ResidueType and implement parsing and conversion methods
  • test(core): Add unit tests for ResidueType parsing and Residue atom management
  • feat(core): Update add_residue method to include ResidueType and enhance residue creation tests
  • feat(core): Add fromstroptional method to ResidueType for optional parsing of three-letter codes
  • test(core): Add unit test for fromstroptional to handle unknown residue codes
  • feat(core): Update Residue struct to use optional ResidueType for improved flexibility
  • feat(core): Update add_residue method to accept optional ResidueType for enhanced flexibility
  • feat(core): Enhance add_residue method to accept optional ResidueType for improved residue handling
  • refactor(core): Simplify identifiers module by removing unused constants and functions
  • test(core): Enhance atom identification functions with additional test cases
  • feat(core): Update generatesp3hydrogens function to return Result for error handling
  • fix(core): Update test for generatesp3hydrogens to handle Result unwrap
  • refactor(core): Simplify residue type parsing by utilizing fromstroptional method
  • Merge pull request #10 from caltechmsc/feature/9-implement-foundational-utils-module-for-geometry-and-parsing
  • chore(package): Remove unused bitflags dependency from Cargo.toml
  • refactor(core): Remove AtomFlags and associated tests for simplification
Update attachment

Added geometric and chemical utilities to core, including functions for bond geometry (CbCreationParams, CB/HN position calculations, SP3 hydrogen generation), vector and rotation math (rotationtoalign, rotationfromaxis_angle), and RMSD/deviation calculations. Introduced amino acid type enumeration and identifiers module, improved geometric utils tests, moved dihedral angle logic, and updated dependencies for data structure support.

Detailed Commit Log

  • feat(core): Add CbCreationParams struct for bond angle and length parameters
  • refactor(core): Remove comments from CbCreationParams struct
  • feat(core): Add rotationtoalign function for vector alignment
  • feat(core): Implement rotationfromaxis_angle function for axis-angle rotation
  • feat(core): Add calculatecbposition function for computing CB position based on parameters
  • feat(core): Add calculatehnposition function for computing HN position based on parameters
  • feat(core): Implement generatesp3hydrogens function for generating SP3 hydrogen positions based on neighbor vectors
  • feat(core): Add calculate_rmsd function for computing root mean square deviation between two sets of coordinates
  • feat(core): Add calculatenamedrmsd function for computing RMSD between named coordinate sets
  • feat(core): Implement findmaxatom_deviation function to compute the maximum deviation between two sets of named coordinates
  • test(core): Add unit tests for geometric utils functions including dihedral angle and hydrogen generation
  • fixt(core): Move dihedral_angle function to the main module and ensure proper angle calculation
  • chore(package): Add phf dependency (includes macros feature) for enhanced data structure support
  • feat(core): Add identifiers module for atom and residue utilities
  • feat(core): Add AminoAcidType enum to represent various amino acids
Update attachment

Refactored core data structures to use slotmap-based IDs for Atom, Residue, and Chain entities, updated all related models (Atom, Residue, Chain, Bond, MolecularSystem) for new ID types and improved data management, enhanced file I/O with BufWriter and public module visibility, removed unused fields and modules, streamlined residue and bond management, improved atom removal safety, replaced builder pattern with direct usage, and added comprehensive unit tests for all affected components.

Detailed Commit Log

  • fix(core): Make bgf io module public for external access
  • chore(package): Add slotmap dependency for enhanced data structure support
  • feat(core): Introduce new key types for AtomId, ResidueId, and ChainId using slotmap
  • refactor(core): Simplify Atom struct by removing unused fields and updating residue_id type
  • test(core): Add unit tests for Atom struct and its flags operations
  • refactor(core): Update Residue struct to include chain_id and change atom storage to AtomId
  • test(core): Add unit tests for Residue struct methods
  • refactor(core): Update Chain struct to use ResidueId and simplify residue management
  • test(core): Add unit tests for ChainType parsing and Chain creation
  • refactor(core): Update Bond struct to use AtomId for atom identification
  • test(core): Add comprehensive tests for Bond and BondOrder functionality
  • refactor(core): Revise MolecularSystem structure for improved data management and performance
  • test(core): Add unit tests for MolecularSystem functionality including creation, atom and residue removal
  • refactor(core): Remove unused AtomFlags import and adjust test module imports
  • refactor(core): Remove builder module from core models
  • refactor(core): Use BufWriter for improved file writing in MolecularFile trait
  • refactor(core): Improve bond addition logic and enhance atom removal safety in MolecularSystem
  • refactor(core): Replace MolecularSystemBuilder with direct MolecularSystem usage in BgfFile read_from method
  • test(core): Add unit tests for BgfFile readfrom and writeto methods
  • feat(core): Ensure consistent atom ordering in Bond struct initialization
  • refactor(core): Simplify chain residue access in add_residue method
Update attachment

Implemented and refactored core file I/O structures and error handling (especially for BGF format), enhanced and tested Atom and MolecularSystem models, introduced custom error types, improved chain type handling and parsing logic, added lookup maps for efficient access, and updated CI, dependencies, and project scaffolding.

Detailed Commit Log

  • ci(project): Add CI workflow configuration for building and testing
  • fix(cli): Temporarily add main function to avoid compilation errors
  • feat(core): Add module declarations for atom, chain, residue, system, and topology
  • chore(project): Initialize new library files for scream-core, scream-ffi, and scream-python
  • feat(core): Add core module declaration and models submodule
  • fix(core): Update import paths for residue and chain models in test modules
  • fix(core): Change module visibility to public for core models
  • feat(core): Implement MolecularFile trait for file io
  • chore(package): Add thiserror in Cargo.toml for scream-core
  • feat(core): Enhance error handling for element parsing
  • feat(core): Improve error handling for chain type parsing
  • feat(core): Add custom error type for bond order parsing
  • feat(core): Implement BGF file I/O structures
  • feat(core): Refactor BGF file I/O structures and improve error handling
  • feat(core): Refactor BGF file parsing and error handling for improved robustness
  • refactor(core): Remove Element enum and related parsing logic from Atom struct
  • refactor(core): Remove Element parameter from add_atom method and related tests
  • refactor(core): Update BGF file parsing to improve error handling and data structure
  • chore(package): Add bitflags in Cargo.toml for scream-core
  • feat(core): Enhance Atom struct with more fields
  • test(core): Add comprehensive tests for AtomFlags and Atom struct functionality
  • refactor(core): Simplify access methods in MolecularSystem and remove unused builder code
  • test(core): Add unit tests for MolecularSystem functionality
  • fix(core): Update getatombyserial and getchainbyid methods for direct access to atoms and chains
  • test(core): Add tests for mutable access and invalid cases in getatombyserial and getchainbyid methods
  • refactor(core): Remove internal maps for atom and chain lookups in MolecularSystem
  • test(core): Add comprehensive unit tests for MolecularSystem functionality
  • feat(core): Implement MolecularSystemBuilder for constructing MolecularSystem instances
  • test(core): Add unit tests for MolecularSystemBuilder functionality
  • feat(core): Add FileData and BgfExtraData structures for file handling
  • refactor(core): Remove FileData and BgfExtraData structures from file handling
  • refactor(core): Simplify BgfFile structure and improve parsing logic
  • feat(core): Add Ligand and Water chain types with parsing and display support
  • feat(core): Enhance BgfFile parsing with chain type differentiation and improved error handling
  • feat(core): Ignore FORMAT lines during BgfFile parsing and enhance atom line formatting
  • test(core): Add comprehensive tests for BgfFile parsing and writing functionality
  • fix(core): Adjust formatting in CONECT line for consistent spacing
  • feat(core): Improve chain type handling and enhance error messages in BgfFile parsing
  • feat(core): Refactor BgfMetadata structure and improve parsing logic for atom and connectivity lines
  • feat(core): Add atomserialmap and chainidmap to MolecularSystem for efficient lookups
  • feat(core): Initialize atomserialmap and chainidmap in MolecularSystemBuilder and update build method to include them
Update attachment
  • feat(core): Enhance error handling for element parsing
  • feat(core): Improve error handling for chain type parsing
  • feat(core): Add custom error type for bond order parsing
  • feat(core): Implement BGF file I/O structures
  • feat(core): Refactor BGF file I/O structures and improve error handling
  • feat(core): Refactor BGF file parsing and error handling for improved robustness
  • refactor(core): Remove Element enum and related parsing logic from Atom struct
  • refactor(core): Remove Element parameter from add_atom method and related tests
  • refactor(core): Update BGF file parsing to improve error handling and data structure
  • chore(package): Add bitflags in Cargo.toml for scream-core
  • feat(core): Enhance Atom struct with more fields
  • test(core): Add comprehensive tests for AtomFlags and Atom struct functionality
  • refactor(core): Simplify access methods in MolecularSystem and remove unused builder code
  • test(core): Add unit tests for MolecularSystem functionality
  • fix(core): Update getatombyserial and getchainbyid methods for direct access to atoms and chains
  • test(core): Add tests for mutable access and invalid cases in getatombyserial and getchainbyid methods
  • refactor(core): Remove internal maps for atom and chain lookups in MolecularSystem
  • test(core): Add comprehensive unit tests for MolecularSystem functionality
  • feat(core): Implement MolecularSystemBuilder for constructing MolecularSystem instances
  • test(core): Add unit tests for MolecularSystemBuilder functionality
Update attachment
  • Initial commit
  • chore(gitignore): Refactor .gitignore to streamline entries for Rust, Python, IDE, and OS specific files
  • chore(package): Add initial Cargo.toml for workspace configuration and release profile settings
  • chore(package): Update workspace package metadata in Cargo.toml
  • chore(license): Add MIT License file to the repository
  • chore(package): Add Cargo.toml for scream-core crate configuration
  • chore(package): Add edition field to Cargo.toml for Rust 2024 compatibility
  • chore(package): Create Cargo.toml for scream-cli crate configuration
  • chore(package): Add Cargo.toml for scream-ffi crate configuration
  • chore(package): Add Cargo.toml for scream-python crate configuration
  • chore(package): Update library name to screampp in Cargo.toml for scream-ffi and scream-python
  • chore(package): Update pyo3 dependency version in Cargo.toml for scream-python
  • chore(package): Add Cargo.lock file for screampp crate dependencies
  • docs(readme): Add README.md for SCREAM++ project overview and features
  • docs(readme): Add Tech Stack section to README.md for clarity on language and build system
  • fix(package): Update resolver version to 3 in Cargo.toml
  • chore(package): Add nalgebra in Cargo.toml for scream-core
  • feat(core): Implement Element enum and Atom struct with associated methods
  • feat(core): Add Residue struct with methods for atom management
  • refactor(core): Simplify HashMap usage by removing redundant path
  • feat(core): Implement Chain struct for managing residues and their mapping
  • feat(core): Add method to retrieve a slice of residues
  • feat(core): Add ChainType enum and chain_type field to Chain struct
  • feat(core): Introduce Bond and BondOrder structs for bond representation and management
  • feat(core): Refactor Element parsing to use FromStr trait and improve error handling
  • feat(core): Simplify BondOrder enum and improve parsing logic
  • refactor(core): Remove ChainType and related methods, streamline Residue struct
  • feat(core): Introduce ChainType enum and refactor Chain struct for improved residue management
  • refactor(core): Simplify Residue struct by removing unused atom-related fields and methods
  • refactor(core): Change residue visibility of new() method to crate-level
  • refactor(core): Update visibility of residues field and add accessor method
  • feat(core): Implement MolecularSystem and MolecularSystemBuilder for managing molecular data
  • test(core): Add unit tests for Element parsing and Atom creation
  • test(core): Add unit tests for Residue struct methods
  • test(core): Add unit tests for Chain and ChainType functionality
  • test(core): Enhance unit tests for Bond and BondOrder functionality
  • test(core): Add unit tests for MolecularSystemBuilder functionality
  • ci(project): Add CI workflow configuration for building and testing
  • fix(cli): Temporarily add main function to avoid compilation errors
  • feat(core): Add module declarations for atom, chain, residue, system, and topology
  • chore(project): Initialize new library files for scream-core, scream-ffi, and scream-python
  • Merge pull request #4 from caltechmsc/feature/3-implement-core-domain-models-for-molecular-representation
  • feat(core): Add core module declaration and models submodule
  • fix(core): Update import paths for residue and chain models in test modules
  • fix(core): Change module visibility to public for core models
  • feat(core): Implement MolecularFile trait for file io
  • chore(package): Add thiserror in Cargo.toml for scream-core
Update attachment