You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The library's core functionality—DREIDING force field parameterization including structure I/O, atom typing, charge calculation, and parameter generation—is now complete and passing all 121 tests. The objective of this issue is to transition the project from a functional codebase into a polished, well-documented library ready for public consumption. This involves three critical phases: auditing and formalizing the public API surface, implementing comprehensive RustDoc documentation with usage examples, and creating a professional README along with an architecture document to guide users and contributors. Completing this issue will signify that dreid-forge is ready for its first release on crates.io.
Tasks:
Phase 1: Audit and Finalize Public API Surface
In src/lib.rs:
Review all module visibility (pub, pub(crate), private) across forge, io, and model modules.
Use pub use statements to re-export all essential public-facing types from the top level of the crate for a clean API surface, including:
Description:
The library's core functionality—DREIDING force field parameterization including structure I/O, atom typing, charge calculation, and parameter generation—is now complete and passing all 121 tests. The objective of this issue is to transition the project from a functional codebase into a polished, well-documented library ready for public consumption. This involves three critical phases: auditing and formalizing the public API surface, implementing comprehensive RustDoc documentation with usage examples, and creating a professional README along with an architecture document to guide users and contributors. Completing this issue will signify that
dreid-forgeis ready for its first release on crates.io.Tasks:
Phase 1: Audit and Finalize Public API Surface
src/lib.rs:pub,pub(crate), private) acrossforge,io, andmodelmodules.pub usestatements to re-export all essential public-facing types from the top level of the crate for a clean API surface, including:forge,ForgeConfig,ChargeMethod,QeqConfig,SolverOptionsBondPotentialType,AnglePotentialType,VdwPotentialTypeChemReader,ChemWriter,BioReader,BioWriter,FormatCleanConfig,ProtonationConfig,HisStrategy,SolvateConfig,TopologyConfig,Cation,Anionwrite_lammps_package,write_lammps_data,write_lammps_settings,LammpsConfig,SystemTypewrite_bgfTemplate,read_mol2_templateSystem,Bond,Atom,Element,BondOrderForgedSystem,AtomParam,Potentials, and all potential structs/enumsBioMetadata,AtomResidueInfo,StandardResidue,ResidueCategory,ResiduePositionforge::Error,io::ErrorPhase 2: Implement Comprehensive API Documentation (RustDoc)
src/lib.rs, add//!comments at the top of the file. This documentation should include:dreid-forgedoes and its role in the DREIDING ecosystem.forge()with aForgeConfigBioReader//!comments to each public module:forge: Core parameterization engine and configurationio: Input/output for molecular file formatsmodel: Data structures representing molecular systems and topologies///comments to all public functions, structs, enums, and fields:forge()function with detailed parameter explanations and error conditionsForgeConfigfields with their effects and default valuescargo doc --openand ensure documentation is clear, complete, and renders correctly.Phase 3: Create README.md
dreid-forgeand what problem does it solvedreid-typer)cheq)bio-forge)Cargo.tomldependency)ForgeConfigoptions with descriptionsdreid-typer,cheq,bio-forge)Phase 4: Create Architecture Documentation
docs/ARCHITECTURE.mdwith:forge,io, andmodelmodules and their responsibilitiesforge()pipeline:IntermediateSystemconstructiondreid-typer)cheq)SystemvsForgedSystemand when each is usedBioReader/ChemReaderdiffer and when to use eachdreid-forgeintegrates withdreid-typer,cheq, andbio-forge