api-docs/scattering-math: Doxygen docs for scattering, math, and geometry headers#421
Merged
Merged
Conversation
Wires up Doxygen XML generation + Breathe Sphinx extension so that C++ API documentation from header comments renders in the existing Sphinx/readthedocs site at docs/api.rst. - docs/Doxyfile: Doxygen config (XML-only output, internal headers excluded) - docs/conf.py: runs Doxygen as subprocess, adds breathe extension - docs/api.rst: stub C++ API reference page (expanded by subsequent PRs) - docs/index.rst: replace external cxx-api link with internal api.rst - docs/requirements.txt: add breathe >= 4.35 - .readthedocs.yaml: add apt_packages: [doxygen] - .gitignore: exclude docs/_doxygen/ (generated) Builds on prior work in project-gemmi#402 (Paul Emsley / pemsley). Co-authored-by: C. Vonrhein / CV-GPhL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Co-Authored-By: C. Vonrhein / CV-GPhL
Each @param must be on its own line for valid Doxygen output. Co-authored-by: C. Vonrhein / CV-GPhL
Distinguish value return (const) from reference return (non-const). Co-authored-by: C. Vonrhein / CV-GPhL
Co-authored-by: C. Vonrhein / CV-GPhL
'M' covers both matches and mismatches; note that push_cigar merges consecutive operations of the same type. Co-authored-by: C. Vonrhein / CV-GPhL
Co-authored-by: C. Vonrhein / CV-GPhL
Adds three sections: Scattering/Math/Geometry, Sequence Alignment and Twinning, and Density Analysis and Numerical Methods. Co-authored-by: C. Vonrhein / CV-GPhL
conf.py runs Doxygen when available (which it is on VS2022 workers) and conditionally loads breathe when the XML output dir exists. Without breathe installed, the Sphinx build fails with an ImportError. Co-authored-by: C. Vonrhein / CV-GPhL
cellred.hpp: Gruber/Krivy-Gruber/Grosse-Kunstleve for GruberVector; Patterson/Love, Andrews, ITA for SellingVector. twin.hpp: Le Page (1982) for obliquity; Lebedev/Zwart (2006) for twin laws. fprime.hpp: Cromer/Liberman, Kissel/Pratt, Brennan/Cowan for anomalous scattering. qcp.hpp: Theobald (2005) and Liu et al. (2010) for QCP superposition. levmar.hpp: Levenberg (1944) and Marquardt (1963) for LM algorithm. seqalign.hpp: Needleman/Wunsch (1970) for global sequence alignment. neutron92.hpp: Sears (1992) for neutron scattering lengths. Co-authored-by: C. Vonrhein / CV-GPhL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Doxygen
///API documentation to 18 headers covering scattering physics, core mathematics, unit-cell reduction, sequence tools, twinning, and numerical methods:Form factors and anomalous scattering:
fprime.hpp— Cromer-Liberman anomalous scattering (GEMMI_DLL entry point)formfact.hpp— Gaussian form-factor approximations (ExpSum, GaussianCoef, fast float exp)it92.hpp,c4322.hpp,neutron92.hpp— IT92, C4322, and neutron scattering tablesCore math:
bessel.hpp— modified Bessel function approximations (I₀, I₁, log I₀)math.hpp— Vec3, Mat33, SMat33, Transform, Box, rotate_about_axiscellred.hpp— Gruber and Selling vector unit-cell reduction algorithmsSequence and structure tools:
seqtools.hpp,seqalign.hpp— sequence utilities and Needleman-Wunsch alignment (ksw2-based)twin.hpp— twinning-law discovery (Le Page / Lebedev approach)serialize.hpp— CIF-block serialization macrosinterop.hpp,flat.hpp,smarts.hpp— MX/SX interop, flat atom arrays, SMARTS matchingDensity analysis and numerical methods:
blob.hpp— electron density blob finding via flood fillisosurface.hpp— marching cubes isosurface extractionlevmar.hpp— Levenberg-Marquardt non-linear least-squaresqcp.hpp— quaternion-based RMSD and optimal superposition (Theobald 2005)docs/api.rstupdated with three new sections.Literature references added
@par ReferencesDoxygen blocks added to cite primary sources in the rendered API docs:GruberVectorincellred.hppSellingVectorincellred.hppcalculate_cos_obliquity()intwin.hppfind_twin_laws()intwin.hppcromer_liberman_for_array()infprime.hppsuperpose_positions()inqcp.hppLevMarstruct inlevmar.hppalign_sequences()inseqalign.hppNeutron92struct inneutron92.hppTest plan
@paramnames verified against actual C++ signaturesGEMMI_DLLmacros removed🤖 Generated with Claude Code