htpolynet 2.6.2__tar.gz → 2.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- htpolynet-2.8.0/.github/workflows/docs.yml +90 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.github/workflows/release.yaml +30 -6
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.gitignore +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/CHANGELOG.md +267 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/PKG-INFO +2 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/ROADMAP.md +475 -10
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/run.rst +4 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/run.rst +2 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +1 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +14 -12
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +1 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +7 -6
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +56 -75
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/run.rst +12 -8
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/index.rst +11 -0
- htpolynet-2.8.0/docs/source/index.rst +71 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/configs/configs-for-analyze.rst +2 -2
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/configs/configs-for-run.rst +29 -6
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/index.rst +1 -0
- htpolynet-2.8.0/docs/source/user-guide/periodic-networks.rst +137 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/program-flow.rst +54 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/pyproject.toml +3 -2
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/check-conda-sync.py +86 -22
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/configuration.py +55 -2
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/topocoord.py +92 -6
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/topology.py +11 -2
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cure/curecontroller.py +159 -4
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/repair/cyanate_cap.py +43 -5
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +3 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/npt.mdp +2 -1
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/nvt.mdp +2 -1
- htpolynet-2.8.0/src/htpolynet/schema/base.yaml +936 -0
- htpolynet-2.8.0/src/htpolynet/utils/convergence.py +163 -0
- htpolynet-2.8.0/tests/unit/test_conda_sync.py +131 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_configuration.py +166 -19
- htpolynet-2.8.0/tests/unit/test_convergence.py +155 -0
- htpolynet-2.8.0/tests/unit/test_density_gate.py +108 -0
- htpolynet-2.8.0/tests/unit/test_moleculetype_name.py +56 -0
- htpolynet-2.8.0/tests/unit/test_relax_instrumentation.py +169 -0
- htpolynet-2.8.0/tests/unit/test_repair_conversion.py +118 -0
- htpolynet-2.6.2/docs/source/index.rst +0 -38
- htpolynet-2.6.2/docs/source/release-history.rst +0 -69
- htpolynet-2.6.2/tests/unit/test_repair_conversion.py +0 -63
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.claude/settings.json +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.claude/skills/htpolynet/SKILL.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.envrc +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.github/workflows/conda-forge-sync.yml +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.github/workflows/docker.yml +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.github/workflows/test.yml +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/.readthedocs.yaml +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/CITATION.cff +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/CLAUDE.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/LICENSE +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/MANIFEST.in +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/README.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docker/Dockerfile +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docker/compose.yml +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docker/docker-entrypoint.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/Makefile +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/README.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/make.bat +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/requirements.txt +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/_static/.gitkeep +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/changelog.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/conf.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/htpolynetpackage.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/install.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/references/index.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/references/mol2-reference.pdf +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/references.bib +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/CURE.odg +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/bond_filter.odg +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/building-a-system.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/configuration-files.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/container-usage.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/flow1.odg +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/flow1yaml.odg +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/hydrogenated.eps +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/hydrogenated.fig +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/STY.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/STYCC.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/bond_filter.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/hydrogenated.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/postcure-repair.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/docs/source/user-guide/usage.rst +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/release.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/render-detail.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/render-detail.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/render-snapshot.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/scripts/run_all_examples.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/analysis/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/analysis/analyze.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/analysis/plot.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/analysis/postsim.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/analysis/utils.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cli.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/bondtemplate.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/coordinates.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/molecule.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/paramcache.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/projectfilesystem.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/core/runtime.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cure/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cure/chain.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cure/expandreactions.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/cure/reaction.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/ambertools.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/command.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/gromacs.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/slurm.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/smiles_input.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/external/software.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/bondlist.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/lattice.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/linkcell.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/matrix4.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/geometry/ring.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/io/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/io/gro.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/io/mol2.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/io/pdb.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/repair/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/repair/topology_surgery.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/README.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/claude/SKILL.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/README.md +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/min.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/resources/tcl/render.tcl +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/banner.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/checkpoint.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/dataframetools.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/inputcheck.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/logsetup.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/profiling.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/stringthings.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/src/htpolynet/utils/vmd_viz.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/conftest.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/__init__.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/config1.gro +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/config1.top +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/config2.gro +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/config2.top +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/items31.edr +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/items43.edr +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/items45.edr +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/fixtures/short.mdp +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_bondtemplate.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_cap_placement.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_chain.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_completion_bias.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_dataframetools.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_gpu_usability.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_inputcheck.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_linkcell_pierce.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_paramcache.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_paramcache_ambertools.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_parameterize_react.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_plot_smoke.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_projectfilesystem.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_resources.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_ring.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_ring_pierce_figs.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_setup_claude.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_slurm_script.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_smiles_input.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_software_provenance.py +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_topology/test.top +0 -0
- {htpolynet-2.6.2 → htpolynet-2.8.0}/tests/unit/test_topology.py +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
# ReadTheDocs has no webhook on this repository. Its only trigger was the
|
|
4
|
+
# "Trigger ReadTheDocs build" step in release.yaml, which fires on v* tags, so
|
|
5
|
+
# the published docs tracked *releases* rather than main: a docs-only commit
|
|
6
|
+
# did not appear on RTD until the next release. This workflow closes that gap
|
|
7
|
+
# for the `latest` version. `stable` follows tags and stays release.yaml's job.
|
|
8
|
+
#
|
|
9
|
+
# The build job also enforces the repo invariant that the docs build with zero
|
|
10
|
+
# warnings (-W). RTD builds without -W, so a warning introduced on main would
|
|
11
|
+
# otherwise publish green and be caught only by whoever next built locally.
|
|
12
|
+
# Gating the trigger on that build means a broken docs commit is never pushed
|
|
13
|
+
# to RTD.
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
branches: [main]
|
|
18
|
+
paths:
|
|
19
|
+
# autodoc reads docstrings and the tutorials literalinclude the example
|
|
20
|
+
# configs, so src/ is a docs input; changelog.rst includes CHANGELOG.md;
|
|
21
|
+
# RTD pip-installs the package, so pyproject.toml matters too.
|
|
22
|
+
- 'docs/**'
|
|
23
|
+
- 'src/**'
|
|
24
|
+
- 'CHANGELOG.md'
|
|
25
|
+
- '.readthedocs.yaml'
|
|
26
|
+
- 'pyproject.toml'
|
|
27
|
+
- '.github/workflows/docs.yml'
|
|
28
|
+
pull_request:
|
|
29
|
+
paths:
|
|
30
|
+
- 'docs/**'
|
|
31
|
+
- 'src/**'
|
|
32
|
+
- 'CHANGELOG.md'
|
|
33
|
+
- '.readthedocs.yaml'
|
|
34
|
+
- 'pyproject.toml'
|
|
35
|
+
- '.github/workflows/docs.yml'
|
|
36
|
+
workflow_dispatch:
|
|
37
|
+
|
|
38
|
+
concurrency:
|
|
39
|
+
group: docs-${{ github.ref }}
|
|
40
|
+
cancel-in-progress: true
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
build:
|
|
44
|
+
name: build (zero warnings)
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- name: Install uv
|
|
50
|
+
uses: astral-sh/setup-uv@v5
|
|
51
|
+
|
|
52
|
+
# Same invocation as CLAUDE.md documents for local use. -W turns
|
|
53
|
+
# warnings into errors; -a rebuilds everything so a warning cannot be
|
|
54
|
+
# skipped by an up-to-date doctree.
|
|
55
|
+
- name: Build docs
|
|
56
|
+
run: >
|
|
57
|
+
uv run --with-requirements docs/requirements.txt --with sphinx
|
|
58
|
+
python -m sphinx -b html -W -a docs/source _docbuild
|
|
59
|
+
|
|
60
|
+
trigger-rtd:
|
|
61
|
+
name: trigger ReadTheDocs
|
|
62
|
+
needs: build
|
|
63
|
+
if: github.event_name != 'pull_request'
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
steps:
|
|
66
|
+
- name: Trigger ReadTheDocs build of latest
|
|
67
|
+
env:
|
|
68
|
+
RTD_SECRET: ${{ secrets.RTD_SECRET }}
|
|
69
|
+
run: |
|
|
70
|
+
set -euo pipefail
|
|
71
|
+
if [ -z "${RTD_SECRET:-}" ]; then
|
|
72
|
+
echo "::error::RTD_SECRET is not set; cannot trigger a ReadTheDocs build."
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
# curl exits 0 on a 4xx unless told otherwise, so check the status
|
|
76
|
+
# explicitly. A trigger that fails silently is worse than none: the
|
|
77
|
+
# job goes green and the docs quietly stop updating.
|
|
78
|
+
code=$(curl -sS --max-time 60 -o rtd-response.json -w '%{http_code}' \
|
|
79
|
+
-X POST \
|
|
80
|
+
-H "Authorization: Token ${RTD_SECRET}" \
|
|
81
|
+
https://readthedocs.org/api/v3/projects/htpolynet/versions/latest/builds/)
|
|
82
|
+
echo "ReadTheDocs returned HTTP ${code}"
|
|
83
|
+
cat rtd-response.json || true
|
|
84
|
+
echo
|
|
85
|
+
case "${code}" in
|
|
86
|
+
2*) echo "Build of 'latest' queued." ;;
|
|
87
|
+
401|403) echo "::error::RTD rejected the token (HTTP ${code}); RTD_SECRET is missing, wrong or expired."; exit 1 ;;
|
|
88
|
+
404) echo "::error::RTD has no project 'htpolynet' or no version 'latest' (HTTP 404)."; exit 1 ;;
|
|
89
|
+
*) echo "::error::RTD returned HTTP ${code}."; exit 1 ;;
|
|
90
|
+
esac
|
|
@@ -79,13 +79,37 @@ jobs:
|
|
|
79
79
|
path: dist/
|
|
80
80
|
|
|
81
81
|
- name: Trigger ReadTheDocs build
|
|
82
|
+
env:
|
|
83
|
+
RTD_SECRET: ${{ secrets.RTD_SECRET }}
|
|
84
|
+
RTD_VERSION: ${{ github.ref_name }}
|
|
82
85
|
run: |
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
set -euo pipefail
|
|
87
|
+
if [ -z "${RTD_SECRET:-}" ]; then
|
|
88
|
+
echo "::error::RTD_SECRET is not set; cannot trigger a ReadTheDocs build."
|
|
89
|
+
exit 1
|
|
90
|
+
fi
|
|
91
|
+
# curl exits 0 on a 4xx unless told otherwise. These calls used to
|
|
92
|
+
# go unchecked, so an expired token would print a 401 body and the
|
|
93
|
+
# step would still pass -- the docs would just stop updating.
|
|
94
|
+
trigger() {
|
|
95
|
+
local version="$1"
|
|
96
|
+
local code
|
|
97
|
+
code=$(curl -sS --max-time 60 -o rtd-response.json -w '%{http_code}' \
|
|
98
|
+
-X POST \
|
|
99
|
+
-H "Authorization: Token ${RTD_SECRET}" \
|
|
100
|
+
"https://readthedocs.org/api/v3/projects/htpolynet/versions/${version}/builds/")
|
|
101
|
+
echo "ReadTheDocs (${version}) returned HTTP ${code}"
|
|
102
|
+
cat rtd-response.json || true
|
|
103
|
+
echo
|
|
104
|
+
case "${code}" in
|
|
105
|
+
2*) return 0 ;;
|
|
106
|
+
*) echo "::error::RTD returned HTTP ${code} for version '${version}'."; return 1 ;;
|
|
107
|
+
esac
|
|
108
|
+
}
|
|
109
|
+
trigger latest
|
|
110
|
+
# The tag's own version may not exist yet if RTD has not synced it;
|
|
111
|
+
# that is not a release failure, so report it without failing the job.
|
|
112
|
+
trigger "${RTD_VERSION}" || echo "::warning::Could not trigger the '${RTD_VERSION}' version build; trigger it from the RTD dashboard if that version is expected."
|
|
89
113
|
|
|
90
114
|
publish:
|
|
91
115
|
needs: release
|
|
@@ -7,6 +7,235 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.8.0] - 2026-09-12
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Configuration files are now validated.** `htpolynet run` checks every
|
|
15
|
+
configuration against a schema before doing anything else, and fills in
|
|
16
|
+
every documented default from that same schema. Previously a configuration
|
|
17
|
+
was read by picking out the keys htpolynet recognized and silently discarding
|
|
18
|
+
the rest, so a misspelled key did nothing and said nothing: a
|
|
19
|
+
`desired_converson: 0.9` typo produced a default-value build -- a half-cure --
|
|
20
|
+
with no message. Errors now name the offending location, for example
|
|
21
|
+
`Attribute 'smilse' invalid ... under 'constituents[STY]'` or
|
|
22
|
+
`Attribute 'stage' of 'reactions[1]' must be one of build, param, cure, cap,
|
|
23
|
+
repair`. Validation covers every section, including molecule records,
|
|
24
|
+
reactions and postcure repair specs; only `gromacs.mdrun_options` is left
|
|
25
|
+
open on purpose. This adds a runtime dependency on
|
|
26
|
+
[ycleptic](https://pypi.org/project/ycleptic/) 2.4.1 or later.
|
|
27
|
+
|
|
28
|
+
- **Densification can gate on measured density convergence instead of a fixed
|
|
29
|
+
step count.** An NPT record in `densification.equilibration` may carry a
|
|
30
|
+
`converge` block; the stage then repeats until the density settles or a
|
|
31
|
+
ceiling is hit. It is off unless configured, so existing configurations
|
|
32
|
+
reproduce exactly. The criterion is an autocorrelation-corrected standard
|
|
33
|
+
error, `sigma/sqrt(N/tau_int)` -- an NPT cell density is correlated over
|
|
34
|
+
hundreds of steps, so successive frames are not independent samples and a
|
|
35
|
+
naive standard error is optimistic by roughly 1.5x, which would stop the
|
|
36
|
+
gate early. It also makes the tolerance size-aware for free. A small
|
|
37
|
+
standard error alone is not accepted as convergence, because a trace that is
|
|
38
|
+
still climbing looks tight in every short window; the window's two halves
|
|
39
|
+
are compared as well. **Reaching the ceiling is reported as a failure**,
|
|
40
|
+
with a warning saying the number is an unsettled box rather than the
|
|
41
|
+
system's density.
|
|
42
|
+
|
|
43
|
+
Densification is the one place this belongs: the 200 to ~1100 kg/m^3
|
|
44
|
+
compaction happens once and involves a large volume change. Gating the CURE
|
|
45
|
+
relaxation loop was measured and rejected -- past the gel point the
|
|
46
|
+
unreacted species are bonded into the network and topologically constrained,
|
|
47
|
+
the effective diffusion exponent falls to about 0.14, and restoring the
|
|
48
|
+
mobility a gate would wait for takes of order 10^4 times the relaxation
|
|
49
|
+
time. Note also that the gate certifies convergence of the Berendsen
|
|
50
|
+
barostat `npt.mdp` currently uses, which does not sample a correct NPT
|
|
51
|
+
ensemble; treat it as a reproducibility criterion, not a physical one.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **A configuration that 2.7.0 accepted may now be rejected.** This is the
|
|
56
|
+
point of the validation above, but it is a change in behavior: a key
|
|
57
|
+
htpolynet does not know, a value of the wrong type, a value outside its
|
|
58
|
+
allowed choices, or a missing required field now stops the run with a
|
|
59
|
+
message instead of being ignored. Every shipped example validates. If an
|
|
60
|
+
existing configuration of yours is rejected, the message says where; the fix
|
|
61
|
+
is almost always a misspelled or obsolete key that was already having no
|
|
62
|
+
effect.
|
|
63
|
+
|
|
64
|
+
- **Every shipped example now gates its densification on density
|
|
65
|
+
convergence**, using the `converge` block described under Added, so their
|
|
66
|
+
densification stages run until the box settles rather than for a fixed
|
|
67
|
+
duration.
|
|
68
|
+
|
|
69
|
+
- **The conda-forge package for this release will follow later.** ycleptic,
|
|
70
|
+
the new dependency, is not yet available on conda-forge, so the conda-forge
|
|
71
|
+
build of this version cannot be published until it is. In the meantime the
|
|
72
|
+
release is available from PyPI (`pip install htpolynet`) and in the container
|
|
73
|
+
image (`ghcr.io/cameronabrams/htpolynet`); conda-forge users will stay on
|
|
74
|
+
2.7.0 until then.
|
|
75
|
+
|
|
76
|
+
- **The single moleculetype htpolynet writes is now named `whole_system`, not
|
|
77
|
+
`None`.** An entire build is written as one moleculetype on purpose -- a
|
|
78
|
+
cured network is one covalently connected molecule -- but the default name
|
|
79
|
+
was the literal string `None`, which reads like an unset field or a bug. It
|
|
80
|
+
sits on exactly the line users inspect after GROMACS warns about
|
|
81
|
+
"inconsistent shifts", so it was sending them looking for a topology error
|
|
82
|
+
that is not there. Purely cosmetic: GROMACS accepts either, and existing
|
|
83
|
+
topologies that say `None` still read back unchanged.
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- **A config that omitted `CURE.relax.increment` crashed at the first
|
|
88
|
+
relax.** The default was `0.0`, and `_distance_attenuation` derives its
|
|
89
|
+
stage count as `int(maxL/increment)` with no guard, so the build died with
|
|
90
|
+
`ZeroDivisionError` rather than any message about the config. The
|
|
91
|
+
documented default -- 0.08 -- is now the actual one. Dragging's `increment`
|
|
92
|
+
stays 0.0, which is a sentinel rather than the same bug: its own 0.0 `limit`
|
|
93
|
+
disables dragging before anything divides. Every shipped example sets
|
|
94
|
+
`relax.increment` explicitly, which is why this went unnoticed.
|
|
95
|
+
|
|
96
|
+
### Documentation
|
|
97
|
+
|
|
98
|
+
- **New page: analyzing trajectories of periodic networks.** Explains why
|
|
99
|
+
`gmx trjconv -pbc whole` reports "There were N inconsistent shifts" on a
|
|
100
|
+
cured network (the bond graph wraps through the periodic boundaries, so no
|
|
101
|
+
consistent unwrapped image exists), and that this is expected rather than a
|
|
102
|
+
topology error -- on example 3 the count is zero until the network
|
|
103
|
+
percolates, then 2 at 69% conversion and 140 at 95%. It gives tested recipes
|
|
104
|
+
for visualization, MSD and free volume. The MSD one carries a real
|
|
105
|
+
warning: `gmx msd`'s default `-rmpbc` tries to make the network whole every
|
|
106
|
+
frame and silently inflates the MSD, by about 2.4x at 100 ps on example 3,
|
|
107
|
+
while still exiting normally; use `-pbc nojump` and then `-normpbc`. Prompted
|
|
108
|
+
by a user report.
|
|
109
|
+
|
|
110
|
+
- The `htpolynet analyze` free-volume docs now say that the per-molecule lines
|
|
111
|
+
in `gmx freevolume`'s output describe the whole box as one molecule, and two
|
|
112
|
+
instances of `poststim` now read `postsim`.
|
|
113
|
+
|
|
114
|
+
- **The docs landing page carries the standard badge row, and the release
|
|
115
|
+
history is gone from the table of contents.** `release-history.rst`
|
|
116
|
+
duplicated what this file already records from 1.0.8 forward, so it is
|
|
117
|
+
deleted and `changelog` moves to the *end* of the contents tree rather than
|
|
118
|
+
sitting second. The seven pre-1.0.8 entries it held -- 1.0.7.2 back to
|
|
119
|
+
0.0.1, which this file did not cover -- were migrated here first, so nothing
|
|
120
|
+
is lost by the deletion. The landing page now shows the same eight badges
|
|
121
|
+
as the README: tests, PyPI, conda-forge, Python versions, license, docs,
|
|
122
|
+
downloads and DOI.
|
|
123
|
+
|
|
124
|
+
- **Two more `CURE`/`densification` defaults in the config tables were
|
|
125
|
+
wrong.** `densification.initial_density` is 200.0 kg/m^3, not the 300.0 the
|
|
126
|
+
table gave; and the prose under `min_allowable_bondcycle_length` still said
|
|
127
|
+
"setting it to zero (the default)" after the table had been corrected to -1.
|
|
128
|
+
Found while transcribing the defaults into a machine-readable schema, which
|
|
129
|
+
is the point of doing so.
|
|
130
|
+
|
|
131
|
+
## [2.7.0] - 2026-09-08
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
|
|
135
|
+
- **The per-iteration equilibration now constrains hydrogen bonds only, not
|
|
136
|
+
all bonds.** The packaged `npt.mdp` and `nvt.mdp` paired `dt = 0.002` with
|
|
137
|
+
`constraints = all-bonds` and set no `lincs_order`, so GROMACS used its
|
|
138
|
+
default LINCS accuracy (order 4). That is marginal whenever heavy-atom
|
|
139
|
+
bonds are constrained, and for a halogenated monomer it was fatal: a
|
|
140
|
+
fluorinated bisphenol died at `4-cure_equilibrate-npt` in **7 of 7** build
|
|
141
|
+
attempts, at cure iteration 5-7 of ~10, with exit codes 1 and 139. `LINCS`
|
|
142
|
+
appeared 14 times in that bridge's `diagnostics.log` and **zero** times in
|
|
143
|
+
each of seven other bridges built identically -- a perfect discriminator
|
|
144
|
+
across eight chemistries. In a melt of pristine, uncrosslinked monomers at
|
|
145
|
+
production density, with no cure at all, step-0 pressure was -1.34e5 bar;
|
|
146
|
+
`h-bonds` took it to -495 bar and the LINCS constraint rmsd from 4.5e-4 to
|
|
147
|
+
7.3e-7. With the new settings the whole eight-bridge series rebuilt **32 of
|
|
148
|
+
32**, the fluorinated one reaching a bond conversion of 0.900 in all four
|
|
149
|
+
replicates. `h-bonds` is also the conventional pairing with a 2 fs
|
|
150
|
+
timestep.
|
|
151
|
+
|
|
152
|
+
**This changes the sampled ensemble**, so structures and densities from
|
|
153
|
+
earlier versions are not strictly comparable with new ones, and because
|
|
154
|
+
`postsim` inherits `npt.mdp` it changes the production measurement too, not
|
|
155
|
+
just the cure. The drag and relax ladders are unaffected -- they always ran
|
|
156
|
+
unconstrained at 1 fs.
|
|
157
|
+
|
|
158
|
+
- **`lincs_order = 8` in the packaged `npt.mdp` and `nvt.mdp`.** Independent
|
|
159
|
+
of the constraint change: it improves the accuracy of the constraint solve
|
|
160
|
+
without changing which bonds are constrained, so it does not itself alter
|
|
161
|
+
the ensemble. On the diagnostic melt above, order 8 alone reduced the
|
|
162
|
+
pressure artifact 4.8-fold.
|
|
163
|
+
|
|
164
|
+
### Added
|
|
165
|
+
|
|
166
|
+
- **The CURE relax stages now report the density they produce.** The relax
|
|
167
|
+
ladder is the only above-`Tg` constant-pressure time in a cure -- roughly
|
|
168
|
+
120 ps of it, at the defaults -- and nothing looked at the density it
|
|
169
|
+
produced: `_do_relax` delegates to `_distance_attenuation`, which never
|
|
170
|
+
calls `TopoCoord.equilibrate()`, the only method that traced Density. The
|
|
171
|
+
per-stage relax table gains a `Density (kg/m3)` column, read from the NPT
|
|
172
|
+
`.edr` each stage already wrote. Drag is deliberately excluded, since it
|
|
173
|
+
runs under restraints and its density is not comparable.
|
|
174
|
+
|
|
175
|
+
- **The CURE relax stages now report reactive-species mobility (Varshney's
|
|
176
|
+
criterion).** After each relax ladder, htpolynet reports the rmsd
|
|
177
|
+
displacement of atoms that still carry an unused reactive site, and what
|
|
178
|
+
fraction of them moved at least one `CURE.controls.search_radius` during
|
|
179
|
+
the window. Varshney sized the original 40 ps relaxation window on exactly
|
|
180
|
+
this requirement -- that unreacted species diffuse far enough between
|
|
181
|
+
reactions to find new partners -- but the requirement decays over a cure as
|
|
182
|
+
those species are bonded into the growing network, and until now nothing
|
|
183
|
+
reported when a window had stopped satisfying it. A build where fewer than
|
|
184
|
+
25 % of still-reactive atoms cross a search radius now says so, because its
|
|
185
|
+
later bonds are being chosen from a nearly frozen neighborhood.
|
|
186
|
+
|
|
187
|
+
Both reports are pure observation: they change no simulation input and
|
|
188
|
+
gate nothing. Every failure path is swallowed and logged at debug level,
|
|
189
|
+
so instrumentation cannot fail a build. A run resuming mid-ladder skips
|
|
190
|
+
the mobility report rather than measuring only the tail of its window.
|
|
191
|
+
|
|
192
|
+
- **`repair-summary.yaml` now reports the pre-repair bond histogram.** A new
|
|
193
|
+
`prerepair_bond_counts` key gives how many crosslinkers carried 0, 1, ... up
|
|
194
|
+
to `full_bond_count` bonds *before* repair dismantled any of them. Repair
|
|
195
|
+
rewrites the topology and the final structure does not record which cap came
|
|
196
|
+
from which ring, so this distribution was previously unrecoverable after the
|
|
197
|
+
fact -- only `n_complete`, its top bin, survived. It is the statistic that
|
|
198
|
+
makes the independence assumption behind "crosslinker conversion = bond
|
|
199
|
+
conversion cubed" directly testable, and that relationship is now known to
|
|
200
|
+
be wrong in a way that matters: audited against 54 builds, the effective
|
|
201
|
+
exponent runs about 3.5 near a bond conversion of 0.55, 3.0 near 0.73 and
|
|
202
|
+
2.6-2.7 near 0.90, so the deviation from the cube changes sign and no single
|
|
203
|
+
power law fits. The histogram is zero-filled, so the shape of the summary
|
|
204
|
+
does not depend on the box, and it is cross-checked against the completion
|
|
205
|
+
count on every build -- the two are computed independently, and a
|
|
206
|
+
disagreement now warns.
|
|
207
|
+
|
|
208
|
+
### Documentation
|
|
209
|
+
|
|
210
|
+
- **The constraint trap is documented where someone hitting it will look.**
|
|
211
|
+
The failure above surfaces at the equilibration step immediately after the
|
|
212
|
+
relax ladder, so the natural diagnosis is that the relax schedule is too
|
|
213
|
+
coarse. It is not: the drag and relax ladders run unconstrained at a 1 fs
|
|
214
|
+
timestep and cannot be responsible, and refining them makes matters worse --
|
|
215
|
+
a three-variant array (increment 0.08 to 0.04 to 0.02, plus a double-MD arm)
|
|
216
|
+
confirmed that, with quadrupling the stage count degrading the result. The
|
|
217
|
+
CURE section of the program-flow page now says which stages are constrained
|
|
218
|
+
and which are not, and says to look at the constraints rather than the
|
|
219
|
+
ladder when LINCS warnings appear at `cure_equilibrate`.
|
|
220
|
+
|
|
221
|
+
- **Four defaults in the `CURE.controls` table were wrong.** The table and
|
|
222
|
+
`curedict_defaults` had drifted apart: `radial_increment` is 0.05 and was
|
|
223
|
+
documented as 0.25, `max_iterations` is 100 and was documented as 150,
|
|
224
|
+
`desired_conversion` is 0.5 and was documented as 0.95, and
|
|
225
|
+
`min_allowable_bondcycle_length` is -1 rather than 0 (any value <= 0
|
|
226
|
+
disallows all cycles, so the documented *behavior* was right and only the
|
|
227
|
+
literal was wrong). `desired_conversion` is the costly one: a user who
|
|
228
|
+
read "default 0.95" and omitted the key got a half-cure. Every shipped
|
|
229
|
+
example that cures sets it explicitly, which is why nothing caught this.
|
|
230
|
+
|
|
231
|
+
- **`desired_conversion` now says which conversion it means.** The
|
|
232
|
+
`CURE.controls` table described it as "target conversion", which every
|
|
233
|
+
reader takes to be the crosslinker conversion an experiment measures. It
|
|
234
|
+
is the *bond* conversion -- bonds formed over bonds possible -- and the
|
|
235
|
+
crosslinker conversion is lower: at a nominal 90 % cure, an audit of 30
|
|
236
|
+
builds found 75.2 triazines complete per 100, not 90. The row now says
|
|
237
|
+
so and links to the fuller explanation under postcure repair.
|
|
238
|
+
|
|
10
239
|
## [2.6.2] - 2026-08-31
|
|
11
240
|
|
|
12
241
|
### Fixed
|
|
@@ -910,3 +1139,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
910
1139
|
### Changed
|
|
911
1140
|
|
|
912
1141
|
- Uses `chordless_cycles` to find rings; `ringidx` is no longer a unique atom attribute; improved ring-pierce detection.
|
|
1142
|
+
|
|
1143
|
+
## [1.0.7.2] - untagged
|
|
1144
|
+
|
|
1145
|
+
### Changed
|
|
1146
|
+
|
|
1147
|
+
- Moved the Library package to the `resources` subpackage of `htpolynet`.
|
|
1148
|
+
|
|
1149
|
+
## [1.0.6] - 2023-06-21
|
|
1150
|
+
|
|
1151
|
+
### Added
|
|
1152
|
+
|
|
1153
|
+
- `gmx`-style `analyze` subcommand.
|
|
1154
|
+
|
|
1155
|
+
## [1.0.5] - 2022-09-29
|
|
1156
|
+
|
|
1157
|
+
### Added
|
|
1158
|
+
|
|
1159
|
+
- Post-build MD simulations and plotting functionality.
|
|
1160
|
+
|
|
1161
|
+
## [1.0.2] - 2022-09-16
|
|
1162
|
+
|
|
1163
|
+
### Changed
|
|
1164
|
+
|
|
1165
|
+
- Enhanced molecule-network graph drawing in the `plot` subcommand.
|
|
1166
|
+
|
|
1167
|
+
## [1.0.1] - 2022-09-07
|
|
1168
|
+
|
|
1169
|
+
### Fixed
|
|
1170
|
+
|
|
1171
|
+
- Atom index assignment for systems with more than 100,000 atoms.
|
|
1172
|
+
|
|
1173
|
+
## [1.0.0] - 2022-09-03
|
|
1174
|
+
|
|
1175
|
+
- First release.
|
|
1176
|
+
|
|
1177
|
+
## [0.0.1] - 2022-08-29
|
|
1178
|
+
|
|
1179
|
+
- Initial beta version.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: htpolynet
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.8.0
|
|
4
4
|
Summary: Automated MD System Builder for Amorphous Network Polymers
|
|
5
5
|
Project-URL: Source, https://github.com/cameronabrams/htpolynet
|
|
6
6
|
Project-URL: Documentation, https://htpolynet.readthedocs.io/
|
|
@@ -26,6 +26,7 @@ Requires-Dist: rdkit>=2024.3
|
|
|
26
26
|
Requires-Dist: requests>=2.28
|
|
27
27
|
Requires-Dist: scipy>=1.10
|
|
28
28
|
Requires-Dist: setuptools
|
|
29
|
+
Requires-Dist: ycleptic>=2.4.1
|
|
29
30
|
Provides-Extra: dev
|
|
30
31
|
Requires-Dist: pytest; extra == 'dev'
|
|
31
32
|
Provides-Extra: test
|