This repository was archived by the owner on Mar 10, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Mar 10, 2026. It is now read-only.
Implement Rotamer Library Module for Conformation Management #13
Copy link
Copy link
Description
Description:
Implement the rotamers module within the scream-core crate. This module serves as the conformational data hub for the application, responsible for loading, parsing, managing, and providing access to sidechain rotamer conformations. It will replace the legacy .lib and .cnn file formats with a modern, structured TOML-based system. The final module will be capable of loading a complete, parameterized, and ready-to-use rotamer library for the main placement algorithm.
Tasks:
-
Data Structures (
rotamers/rotamer.rs,rotamers/library.rs)- Define
RotamerandRotamerAtomStructs: Create Rust structs that can be directly deserialized from the new TOML format usingserde. These will represent a single rotamer conformation and its constituent atoms. - Define
RotamerLibraryStruct: Create the mainRotamerLibrarystruct to hold the entire library in memory, likely using aHashMap<ResidueType, Vec<Rotamer>>to allow for efficient lookup. - Define
RotamerConnectivityStruct: Create a struct to hold the parsed information from the.cnnfiles, including anchor points, sidechain atom lists, and internal bond connectivity.
- Define
-
Library Loading & Parsing (
rotamers/library.rs)- Implement
.cnnParser: Create a function to parse thecnnfiles and populate aHashMap<ResidueType, RotamerConnectivity>. This map will serve as a "blueprint" for understanding the rotamers. - Implement
RotamerLibrary::loadMethod: This core method will:- Take a path to a specific TOML library file (e.g.,
.../charmm/rmsd-1.0.toml). - Use
serdeandtomlto deserialize the file into aHashMap<String, Vec<Rotamer>>. - Convert the string-based keys (e.g., "ALA") into strongly-typed
ResidueTypekeys. - Return a populated
RotamerLibraryinstance.
- Take a path to a specific TOML library file (e.g.,
- Write Unit Tests for Loading: Test the ability to load a sample TOML file and correctly deserialize it into the expected Rust structs.
- Implement
-
Integration with Forcefield Module
- Parameterize Rotamers: After loading, each
Rotamer'sAtoms must be parameterized. This involves using theParameterizermodule to:- Assign
vdw_radius,vdw_well_depth, andhbond_type_idbased on the atom'sforce_field_type. - Assign the
deltavalue based on the atom's residue type and name. - Note: The partial charge is already present from the TOML file and does not need to be reassigned by the main charge scheme.
- Assign
- Apply Connectivity: Use the information from the loaded
RotamerConnectivityto establish the internal bonds between atoms within eachRotamerinstance.
- Parameterize Rotamers: After loading, each
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancement ✨New feature or requestNew feature or request