htpolynet 2.10.2__tar.gz → 2.10.3__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.10.2 → htpolynet-2.10.3}/CHANGELOG.md +35 -12
- {htpolynet-2.10.2 → htpolynet-2.10.3}/PKG-INFO +1 -1
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/Dockerfile +16 -2
- {htpolynet-2.10.2 → htpolynet-2.10.3}/pyproject.toml +1 -1
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/paramcache.py +32 -1
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_paramcache.py +36 -2
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.claude/settings.json +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.claude/skills/htpolynet/SKILL.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.envrc +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/conda-forge-sync.yml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/docker.yml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/docs.yml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/release.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/test.yml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.gitignore +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/.readthedocs.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/CITATION.cff +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/CLAUDE.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/LICENSE +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/MANIFEST.in +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/README.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/ROADMAP.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/compose.yml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/docker-entrypoint.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/Makefile +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/README.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/make.bat +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/requirements.txt +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/.gitkeep +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-favicon.ico +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-landing.jpg +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-logo-dark.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-logo-light.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/changelog.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/conf.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/htpolynetpackage.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/install.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references/mol2-reference.pdf +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references.bib +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/CURE.odg +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/bond_filter.odg +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/building-a-system.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-run.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configuration-files.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/container-usage.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/flow1.odg +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/flow1yaml.odg +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/hydrogenated.eps +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/hydrogenated.fig +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/index.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/periodic-networks.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/STY.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/STYCC.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/bond_filter.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/hydrogenated.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/postcure-repair.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/program-flow.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/usage.rst +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/check-conda-sync.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/release.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-detail.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-detail.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-snapshot.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/run_all_examples.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/analyze.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/plot.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/postsim.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/utils.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cli.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/bondtemplate.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/configuration.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/coordinates.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/molecule.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/projectfilesystem.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/runtime.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/topocoord.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/topology.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/chain.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/curecontroller.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/expandreactions.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/reaction.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/ambertools.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/command.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/gromacs.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/slurm.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/smiles_input.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/software.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/bondlist.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/lattice.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/linkcell.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/matrix4.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/ring.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/gro.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/mol2.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/pdb.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/cyanate_cap.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/topology_surgery.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/README.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/claude/SKILL.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/README.md +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/min.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/npt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/render.tcl +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/schema/base.yaml +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/banner.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/checkpoint.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/convergence.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/dataframetools.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/inputcheck.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/logsetup.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/profiling.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/stringthings.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/vmd_viz.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/conftest.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/__init__.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config1.gro +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config1.top +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config2.gro +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config2.top +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items31.edr +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items43.edr +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items45.edr +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/short.mdp +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_bondtemplate.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_cap_placement.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_chain.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_completion_bias.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_conda_sync.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_configuration.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_convergence.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_cure_site_functionality.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_dataframetools.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_density_gate.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gpu_usability.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_inputcheck.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_linkcell_pierce.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_mdrun_gpu_options.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_mol2_bond_fallback.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_molecule_charge_report.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_moleculetype_name.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_paramcache_ambertools.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_parameterize_react.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_plot_smoke.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_projectfilesystem.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_relax_instrumentation.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_repair_charge_neutrality.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_repair_conversion.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_resources.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_ring.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_ring_pierce_figs.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_setup_claude.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_sibling_templates.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_slurm_script.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_smiles_input.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_software_provenance.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_topology/test.top +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_topology.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_transrot_turn_scan.py +0 -0
- {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_user_frcmod.py +0 -0
|
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.10.3] - 2026-09-17
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **The CPU and CUDA container images shipped different AmberTools.** The
|
|
15
|
+
CUDA images, `:cuda-v2.10.0` through `:cuda-v2.10.2`, had AmberTools 24.8,
|
|
16
|
+
while the CPU images had 26.0. Nobody chose that: conda-forge can't install
|
|
17
|
+
AmberTools 26 alongside CUDA GROMACS, and the unpinned Dockerfile line fell
|
|
18
|
+
back silently. So the same configuration was parameterized by different
|
|
19
|
+
AmberTools releases depending on which image ran it. Both images now
|
|
20
|
+
install AmberTools in their own conda environment, pinned to one version
|
|
21
|
+
(26.0, set by the `AMBERTOOLS_VERSION` build argument). A future conflict
|
|
22
|
+
now fails the build instead of quietly downgrading.
|
|
23
|
+
|
|
24
|
+
- **A cached parameterization is no longer reused across AmberTools
|
|
25
|
+
versions.** The cache record now includes the AmberTools version, and a
|
|
26
|
+
run on a different version re-parameterizes instead of reusing the entry.
|
|
27
|
+
Records written before this, and runs that can't tell their version, still
|
|
28
|
+
match. A cache filled with a CUDA image up to v2.10.2 (AmberTools 24.8)
|
|
29
|
+
has no version in its records, so it would still be reused by a newer
|
|
30
|
+
image. Refill it if the charges must come from one AmberTools release.
|
|
31
|
+
|
|
10
32
|
## [2.10.2] - 2026-09-17
|
|
11
33
|
|
|
12
34
|
### Fixed
|
|
@@ -14,23 +36,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
14
36
|
- **Templates for crowded monomers could start with atoms on top of each
|
|
15
37
|
other, and AM1-BCC/ABCG2 charges then failed.** When htpolynet built a
|
|
16
38
|
linked-product template, it attached the incoming molecule along the new
|
|
17
|
-
bond but never turned it about that bond. Its clash check also compared
|
|
18
|
-
moved piece with its own pre-move position. With tetramethylbisphenol
|
|
19
|
-
(TMB), whose methyls flank each reacting oxygen, every triazine template
|
|
39
|
+
bond but never turned it about that bond. Its clash check also compared
|
|
40
|
+
the moved piece with its own pre-move position. With tetramethylbisphenol
|
|
41
|
+
F (TMB), whose methyls flank each reacting oxygen, every triazine template
|
|
20
42
|
started with a methyl hydrogen 0.65-1.26 A from a ring atom. On one triply
|
|
21
|
-
substituted template, AmberTools
|
|
22
|
-
properly run sqm"), which stopped
|
|
43
|
+
substituted template, sqm (AmberTools 24.8, as shipped in the `:cuda`
|
|
44
|
+
image) then failed to converge ("Cannot properly run sqm"), which stopped
|
|
45
|
+
parameterization.
|
|
23
46
|
|
|
24
47
|
The placement now scans turns about the new bond, in 10 degree steps, and
|
|
25
48
|
keeps the one farthest from the residues that stay put. Every TMB template
|
|
26
49
|
now starts at 1.50 A or more. The six triply substituted TMB templates
|
|
27
|
-
were run with ABCG2 on AmberTools
|
|
28
|
-
failed before, completed, and the sixth converged its SCF
|
|
29
|
-
optimizing when this was written. On these crowded molecules
|
|
30
|
-
optimization is slow, 40 minutes to 2.6 hours each, run three at a
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
warning.
|
|
50
|
+
were run with ABCG2 on that same AmberTools 24.8: five, including the
|
|
51
|
+
geometry that failed before, completed, and the sixth converged its SCF
|
|
52
|
+
and was still optimizing when this was written. On these crowded molecules
|
|
53
|
+
the optimization is slow, 40 minutes to 2.6 hours each, run three at a
|
|
54
|
+
time. Charges and atom types of all 123 templates in the shipped examples,
|
|
55
|
+
which use gas charges, are unchanged. A template that still starts with a
|
|
56
|
+
contact under 1 A is now logged as a warning.
|
|
34
57
|
|
|
35
58
|
## [2.10.1] - 2026-09-16
|
|
36
59
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: htpolynet
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.3
|
|
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/
|
|
@@ -42,7 +42,7 @@ FROM condaforge/miniforge3:latest
|
|
|
42
42
|
# Links the published GHCR package to its source repository.
|
|
43
43
|
LABEL org.opencontainers.image.source="https://github.com/cameronabrams/htpolynet"
|
|
44
44
|
|
|
45
|
-
# Install Gromacs
|
|
45
|
+
# Install Gromacs (latest available on conda-forge); AmberTools follows below.
|
|
46
46
|
# Miniforge ships with mamba for fast solves; conda-forge is the only
|
|
47
47
|
# channel. No Anaconda Inc. ToS dependency.
|
|
48
48
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
@@ -68,12 +68,26 @@ ARG CONDA_OVERRIDE_CUDA=
|
|
|
68
68
|
# clean dies, taking the whole RUN with it. conda clean handles the same cache
|
|
69
69
|
# correctly. Reproduced locally in both directions before changing this.
|
|
70
70
|
RUN CONDA_OVERRIDE_CUDA="${CONDA_OVERRIDE_CUDA}" mamba install -y -n base -c conda-forge \
|
|
71
|
-
ambertools \
|
|
72
71
|
"gromacs${GROMACS_BUILD:+=*=${GROMACS_BUILD}*}" \
|
|
73
72
|
parmed \
|
|
74
73
|
rdkit \
|
|
75
74
|
&& conda clean -afy
|
|
76
75
|
|
|
76
|
+
# AmberTools lives in its own environment, pinned, in both images. Solved
|
|
77
|
+
# together with the CUDA Gromacs, conda-forge silently fell back to AmberTools
|
|
78
|
+
# 24.8 (the CUDA toolkit's nsight-compute needs an older krb5 than AmberTools
|
|
79
|
+
# 26 allows), so the CPU and CUDA images parameterized molecules with different
|
|
80
|
+
# AmberTools releases. A separate environment keeps the two solves apart, and
|
|
81
|
+
# the pin keeps the images identical and makes a future conflict a build error
|
|
82
|
+
# instead of a quiet downgrade. The environment is not activated: its
|
|
83
|
+
# wrappers (antechamber, tleap, parmchk2) set AMBERHOME from their own
|
|
84
|
+
# location, so putting its bin last on PATH is enough, and base's python and
|
|
85
|
+
# gmx still come first.
|
|
86
|
+
ARG AMBERTOOLS_VERSION=26.0
|
|
87
|
+
RUN mamba create -y -n amber -c conda-forge "ambertools=${AMBERTOOLS_VERSION}" \
|
|
88
|
+
&& conda clean -afy
|
|
89
|
+
ENV PATH=${PATH}:/opt/conda/envs/amber/bin
|
|
90
|
+
|
|
77
91
|
# Install HTPolyNet
|
|
78
92
|
COPY . /htpolynet
|
|
79
93
|
WORKDIR /htpolynet
|
|
@@ -18,6 +18,7 @@ libraries keep working rather than silently re-parameterizing wholesale.
|
|
|
18
18
|
Author: Cameron F. Abrams <cfa22@drexel.edu>
|
|
19
19
|
"""
|
|
20
20
|
import hashlib
|
|
21
|
+
import re
|
|
21
22
|
import json
|
|
22
23
|
import logging
|
|
23
24
|
import os
|
|
@@ -34,6 +35,15 @@ _KEY_FIELDS = (
|
|
|
34
35
|
)
|
|
35
36
|
"""Fields that determine the parameters, with human-readable labels."""
|
|
36
37
|
|
|
38
|
+
VERSION_FIELD = 'ambertools_version'
|
|
39
|
+
"""Record field holding the AmberTools version that produced the parameters.
|
|
40
|
+
|
|
41
|
+
The same directives give different numbers under different AmberTools
|
|
42
|
+
releases, and htpolynet's CPU and CUDA images have not always shipped the same
|
|
43
|
+
one. Compared only when both the record and the current run know it, so
|
|
44
|
+
records written before it existed, or runs that cannot tell, still match.
|
|
45
|
+
"""
|
|
46
|
+
|
|
37
47
|
FRCMOD_FIELD = 'frcmod'
|
|
38
48
|
"""Record field holding a digest of the user frcmod files loaded after parmchk2's.
|
|
39
49
|
|
|
@@ -59,7 +69,19 @@ def frcmod_digest(frcmods):
|
|
|
59
69
|
return h.hexdigest()[:16]
|
|
60
70
|
|
|
61
71
|
|
|
62
|
-
def
|
|
72
|
+
def ambertools_version():
|
|
73
|
+
"""Returns the AmberTools version of the running installation, or None if unknown.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
str or None: version string, e.g. '26.0'
|
|
77
|
+
"""
|
|
78
|
+
from ..external import software
|
|
79
|
+
v = software.versions.get('ambertools', '')
|
|
80
|
+
m = re.search(r'ver\.\s*([0-9][0-9A-Za-z.\-]*)', v or '')
|
|
81
|
+
return m.group(1) if m else None
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def build_key(ambertools=None, version='detect'):
|
|
63
85
|
"""Returns the provenance record describing a parameterization run under
|
|
64
86
|
the given AmberTools directives.
|
|
65
87
|
|
|
@@ -68,6 +90,8 @@ def build_key(ambertools=None):
|
|
|
68
90
|
|
|
69
91
|
Args:
|
|
70
92
|
ambertools (dict, optional): ambertools configuration directives
|
|
93
|
+
version (str, optional): AmberTools version to record; 'detect' (the default) asks the
|
|
94
|
+
running installation, and None records none
|
|
71
95
|
|
|
72
96
|
Returns:
|
|
73
97
|
dict: provenance record
|
|
@@ -79,6 +103,10 @@ def build_key(ambertools=None):
|
|
|
79
103
|
digest = frcmod_digest(ambertools.get(FRCMOD_FIELD))
|
|
80
104
|
if digest:
|
|
81
105
|
key[FRCMOD_FIELD] = digest
|
|
106
|
+
if version == 'detect':
|
|
107
|
+
version = ambertools_version()
|
|
108
|
+
if version:
|
|
109
|
+
key[VERSION_FIELD] = version
|
|
82
110
|
return key
|
|
83
111
|
|
|
84
112
|
|
|
@@ -158,6 +186,9 @@ def describe_mismatch(stored, requested):
|
|
|
158
186
|
continue
|
|
159
187
|
if stored[field] != requested.get(field):
|
|
160
188
|
diffs.append(f'{label} {stored[field]!r} cached, {requested.get(field)!r} requested')
|
|
189
|
+
stored_v, requested_v = stored.get(VERSION_FIELD), requested.get(VERSION_FIELD)
|
|
190
|
+
if stored_v and requested_v and stored_v != requested_v:
|
|
191
|
+
diffs.append(f'AmberTools {stored_v} cached, {requested_v} running')
|
|
161
192
|
# unlike the fields above, an absent frcmod digest is a statement: none was loaded
|
|
162
193
|
if stored.get(FRCMOD_FIELD) != requested.get(FRCMOD_FIELD):
|
|
163
194
|
diffs.append(f'user frcmod {stored.get(FRCMOD_FIELD) or "none"} cached, '
|
|
@@ -83,7 +83,7 @@ def _mismatch_and_runtime(name='TAZ', **ambertools):
|
|
|
83
83
|
|
|
84
84
|
class TestBuildKey:
|
|
85
85
|
def test_defaults_come_from_ambertools(self):
|
|
86
|
-
assert paramcache.build_key({}) == AMBERTOOLS_DEFAULTS
|
|
86
|
+
assert paramcache.build_key({}, version=None) == AMBERTOOLS_DEFAULTS
|
|
87
87
|
|
|
88
88
|
def test_none_is_the_same_as_empty(self):
|
|
89
89
|
assert paramcache.build_key(None) == paramcache.build_key({})
|
|
@@ -95,7 +95,7 @@ class TestBuildKey:
|
|
|
95
95
|
assert key['atom_type'] == AMBERTOOLS_DEFAULTS['atom_type']
|
|
96
96
|
|
|
97
97
|
def test_ignores_directives_that_do_not_affect_parameters(self):
|
|
98
|
-
assert paramcache.build_key({'nonsense': 1}) == AMBERTOOLS_DEFAULTS
|
|
98
|
+
assert paramcache.build_key({'nonsense': 1}, version=None) == AMBERTOOLS_DEFAULTS
|
|
99
99
|
|
|
100
100
|
def test_net_charge_default_preserves_the_old_hardcoded_nc(self):
|
|
101
101
|
# antechamber was invoked with a literal -nc 0 before net_charge became
|
|
@@ -342,3 +342,37 @@ class TestUnverifiedSummary:
|
|
|
342
342
|
def test_a_molecule_reported_twice_is_listed_once(self, caplog):
|
|
343
343
|
text = self._report(['TAZ', 'TAZ'], caplog, charge_method='bcc')
|
|
344
344
|
assert '1 parameterization reused without provenance' in text
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
class TestAmberToolsVersion:
|
|
348
|
+
"""The same directives give different numbers under different AmberTools
|
|
349
|
+
releases, and the CPU and CUDA images once shipped different ones."""
|
|
350
|
+
|
|
351
|
+
def test_detected_from_the_running_installation(self, monkeypatch):
|
|
352
|
+
from htpolynet.external import software
|
|
353
|
+
monkeypatch.setitem(software.versions, 'ambertools', 'ver. 26.0 (conda)')
|
|
354
|
+
assert paramcache.ambertools_version() == '26.0'
|
|
355
|
+
assert paramcache.build_key({})[paramcache.VERSION_FIELD] == '26.0'
|
|
356
|
+
|
|
357
|
+
def test_unknown_version_is_not_recorded(self, monkeypatch):
|
|
358
|
+
from htpolynet.external import software
|
|
359
|
+
monkeypatch.setitem(software.versions, 'ambertools', 'installed (version unknown)')
|
|
360
|
+
assert paramcache.VERSION_FIELD not in paramcache.build_key({})
|
|
361
|
+
|
|
362
|
+
def test_a_different_version_is_a_miss(self):
|
|
363
|
+
diffs = paramcache.describe_mismatch(paramcache.build_key({}, version='24.8'),
|
|
364
|
+
paramcache.build_key({}, version='26.0'))
|
|
365
|
+
assert diffs == ['AmberTools 24.8 cached, 26.0 running']
|
|
366
|
+
|
|
367
|
+
def test_the_same_version_matches(self):
|
|
368
|
+
key = paramcache.build_key({}, version='26.0')
|
|
369
|
+
assert paramcache.describe_mismatch(key, key) == []
|
|
370
|
+
|
|
371
|
+
def test_a_record_without_a_version_still_matches(self):
|
|
372
|
+
# records written before the field existed, like every cache in use today
|
|
373
|
+
assert paramcache.describe_mismatch(paramcache.build_key({}, version=None),
|
|
374
|
+
paramcache.build_key({}, version='26.0')) == []
|
|
375
|
+
|
|
376
|
+
def test_a_run_that_cannot_tell_still_matches(self):
|
|
377
|
+
assert paramcache.describe_mismatch(paramcache.build_key({}, version='26.0'),
|
|
378
|
+
paramcache.build_key({}, version=None)) == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/results.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/run.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/configuration.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/introduction.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STY.png
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/reactions.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/results.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst
RENAMED
|
File without changes
|