htpolynet 2.10.1__tar.gz → 2.10.2__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.1 → htpolynet-2.10.2}/CHANGELOG.md +25 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/PKG-INFO +1 -1
- {htpolynet-2.10.1 → htpolynet-2.10.2}/ROADMAP.md +10 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/pyproject.toml +1 -1
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/molecule.py +75 -18
- htpolynet-2.10.2/tests/unit/test_transrot_turn_scan.py +66 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.claude/settings.json +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.claude/skills/htpolynet/SKILL.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.envrc +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.github/workflows/conda-forge-sync.yml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.github/workflows/docker.yml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.github/workflows/docs.yml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.github/workflows/release.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.github/workflows/test.yml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.gitignore +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/.readthedocs.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/CITATION.cff +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/CLAUDE.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/LICENSE +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/MANIFEST.in +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/README.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docker/Dockerfile +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docker/compose.yml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docker/docker-entrypoint.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/Makefile +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/README.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/make.bat +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/requirements.txt +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/_static/.gitkeep +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/_static/htpolynet-favicon.ico +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/_static/htpolynet-landing.jpg +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/_static/htpolynet-logo-dark.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/_static/htpolynet-logo-light.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/changelog.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/conf.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/htpolynetpackage.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/install.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/references/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/references/mol2-reference.pdf +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/references.bib +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/CURE.odg +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/bond_filter.odg +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/building-a-system.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/configs/configs-for-run.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/configuration-files.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/container-usage.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/flow1.odg +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/flow1yaml.odg +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/hydrogenated.eps +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/hydrogenated.fig +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/index.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/periodic-networks.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/STY.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/STYCC.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/bond_filter.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/hydrogenated.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/postcure-repair.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/program-flow.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/user-guide/usage.rst +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/check-conda-sync.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/release.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/render-detail.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/render-detail.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/render-snapshot.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/scripts/run_all_examples.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/analysis/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/analysis/analyze.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/analysis/plot.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/analysis/postsim.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/analysis/utils.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cli.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/bondtemplate.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/configuration.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/coordinates.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/paramcache.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/projectfilesystem.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/runtime.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/topocoord.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/core/topology.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cure/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cure/chain.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cure/curecontroller.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cure/expandreactions.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/cure/reaction.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/ambertools.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/command.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/gromacs.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/slurm.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/smiles_input.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/external/software.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/bondlist.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/lattice.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/linkcell.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/matrix4.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/geometry/ring.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/io/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/io/gro.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/io/mol2.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/io/pdb.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/repair/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/repair/cyanate_cap.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/repair/topology_surgery.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/README.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/claude/SKILL.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/README.md +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/min.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/npt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/resources/tcl/render.tcl +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/schema/base.yaml +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/banner.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/checkpoint.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/convergence.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/dataframetools.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/inputcheck.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/logsetup.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/profiling.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/stringthings.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/src/htpolynet/utils/vmd_viz.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/conftest.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/__init__.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/config1.gro +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/config1.top +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/config2.gro +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/config2.top +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/items31.edr +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/items43.edr +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/items45.edr +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/fixtures/short.mdp +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_bondtemplate.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_cap_placement.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_chain.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_completion_bias.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_conda_sync.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_configuration.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_convergence.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_cure_site_functionality.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_dataframetools.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_density_gate.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_gpu_usability.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_inputcheck.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_linkcell_pierce.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_mdrun_gpu_options.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_mol2_bond_fallback.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_molecule_charge_report.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_moleculetype_name.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_paramcache.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_paramcache_ambertools.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_parameterize_react.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_plot_smoke.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_projectfilesystem.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_relax_instrumentation.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_repair_charge_neutrality.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_repair_conversion.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_resources.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_ring.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_ring_pierce_figs.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_setup_claude.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_sibling_templates.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_slurm_script.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_smiles_input.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_software_provenance.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_topology/test.top +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_topology.py +0 -0
- {htpolynet-2.10.1 → htpolynet-2.10.2}/tests/unit/test_user_frcmod.py +0 -0
|
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.10.2] - 2026-09-17
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Templates for crowded monomers could start with atoms on top of each
|
|
15
|
+
other, and AM1-BCC/ABCG2 charges then failed.** When htpolynet built a
|
|
16
|
+
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 the
|
|
18
|
+
moved piece with its own pre-move position. With tetramethylbisphenol F
|
|
19
|
+
(TMB), whose methyls flank each reacting oxygen, every triazine template
|
|
20
|
+
started with a methyl hydrogen 0.65-1.26 A from a ring atom. On one triply
|
|
21
|
+
substituted template, AmberTools 26's sqm then failed to converge ("Cannot
|
|
22
|
+
properly run sqm"), which stopped parameterization.
|
|
23
|
+
|
|
24
|
+
The placement now scans turns about the new bond, in 10 degree steps, and
|
|
25
|
+
keeps the one farthest from the residues that stay put. Every TMB template
|
|
26
|
+
now starts at 1.50 A or more. The six triply substituted TMB templates
|
|
27
|
+
were run with ABCG2 on AmberTools 26: five, including the geometry that
|
|
28
|
+
failed before, completed, and the sixth converged its SCF and was still
|
|
29
|
+
optimizing when this was written. On these crowded molecules the
|
|
30
|
+
optimization is slow, 40 minutes to 2.6 hours each, run three at a time. Charges and atom types of all 123
|
|
31
|
+
templates in the shipped examples, which use gas charges, are unchanged. A
|
|
32
|
+
template that still starts with a contact under 1 A is now logged as a
|
|
33
|
+
warning.
|
|
34
|
+
|
|
10
35
|
## [2.10.1] - 2026-09-16
|
|
11
36
|
|
|
12
37
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: htpolynet
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.2
|
|
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/
|
|
@@ -950,6 +950,16 @@ Coverage as of the last measurement: **38.8%** overall.
|
|
|
950
950
|
for any operand that lacks the table, rather than concatenating a partial
|
|
951
951
|
table. Bond orders would then need the same single-bond assumption.
|
|
952
952
|
|
|
953
|
+
**It has appeared (2026-09-17).** Example 2's stereoisomer copies `GMAS-*`
|
|
954
|
+
have 78 bonds in their topology but only 24 in their `.mol2`, in the
|
|
955
|
+
2026-09-14 sweep's files too. It shows up only when a cache is *reused*:
|
|
956
|
+
`bond_source_check` then logs "Gromacs/Mol2 bond inconsistency detected"
|
|
957
|
+
once per copy. Sweeps always start from an empty cache, so they never see
|
|
958
|
+
it. `generate_stereoisomers` deep-copies the parent's TopoCoord and writes
|
|
959
|
+
only a `.gro`; where the 24-bond `.mol2` comes from is not yet traced. What
|
|
960
|
+
a reused cache does with the wrong table (ring detection, system `.mol2`
|
|
961
|
+
output) is also unknown. No cyanate-ester molecule has stereoisomer copies.
|
|
962
|
+
|
|
953
963
|
- **Two gaps left after the percolation check moved to cure sites
|
|
954
964
|
(2026-09-15).** First, a system that crosslinks through a *multi-residue*
|
|
955
965
|
molecule -- example 2's GMA (two methacrylate HIE units), example 5's
|
|
@@ -51,6 +51,46 @@ def _yield_bonds_as_df(R: Reaction, TC: TopoCoord, resid_mapper) -> pd.DataFrame
|
|
|
51
51
|
'order': bondrec['order'], 'reactantName': R.product})
|
|
52
52
|
return pd.DataFrame(rows)
|
|
53
53
|
|
|
54
|
+
_TRANSROT_STEP_DEG_ = 10.0
|
|
55
|
+
"""Angular step of the turn scan in Molecule.transrot."""
|
|
56
|
+
|
|
57
|
+
_TRANSROT_WARN_NM_ = 0.10
|
|
58
|
+
"""Closest approach, in nm, below which a template's starting geometry is reported as crowded.
|
|
59
|
+
|
|
60
|
+
Contacts of 1.2-1.5 A between the new piece and the rest are routine before
|
|
61
|
+
minimization; below 1 A they have been seen to stop sqm converging (a TMB ring
|
|
62
|
+
methyl H 0.82 A from a triazine N).
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _rotate_about_axis(xyz, point, axis, theta):
|
|
67
|
+
"""Rotates points by theta about the line through point along unit vector axis (Rodrigues).
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
xyz (numpy.ndarray): (n, 3) positions
|
|
71
|
+
point (numpy.ndarray): a point on the axis
|
|
72
|
+
axis (numpy.ndarray): unit vector along the axis
|
|
73
|
+
theta (float): angle in radians
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
numpy.ndarray: rotated (n, 3) positions
|
|
77
|
+
"""
|
|
78
|
+
if theta == 0.0:
|
|
79
|
+
return xyz.copy()
|
|
80
|
+
k = axis / np.linalg.norm(axis)
|
|
81
|
+
K = np.array([[0, -k[2], k[1]], [k[2], 0, -k[0]], [-k[1], k[0], 0]])
|
|
82
|
+
R = np.eye(3) + np.sin(theta) * K + (1.0 - np.cos(theta)) * (K @ K)
|
|
83
|
+
return (xyz - point) @ R.T + point
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _min_distance(a, b):
|
|
87
|
+
"""Smallest distance between any point of a and any point of b; inf if either is empty."""
|
|
88
|
+
if len(a) == 0 or len(b) == 0:
|
|
89
|
+
return np.inf
|
|
90
|
+
diff = a[:, np.newaxis, :] - b[np.newaxis, :, :]
|
|
91
|
+
return float(np.sqrt((diff * diff).sum(axis=2)).min())
|
|
92
|
+
|
|
93
|
+
|
|
54
94
|
class Molecule:
|
|
55
95
|
def __init__(self, name='', generator:Reaction=None, origin:str=None):
|
|
56
96
|
self.name = name
|
|
@@ -830,7 +870,16 @@ class Molecule:
|
|
|
830
870
|
Rj = TC.get_R(from_idx)
|
|
831
871
|
logger.debug(f'Ri {at_idx} {Ri} {type(Ri)} {Ri.dtype}')
|
|
832
872
|
logger.debug(f'Rj {from_idx} {Rj} {type(Rj)} {Rj.dtype}')
|
|
833
|
-
|
|
873
|
+
# The two sacrificial H's are made to coincide, which puts at_idx, the H's
|
|
874
|
+
# and from_idx on one line. The moving piece can still turn freely about
|
|
875
|
+
# that line, and that freedom is what clears a crowded site: a third
|
|
876
|
+
# tetramethyl bisphenol on a triazine lands its ortho methyl inside the
|
|
877
|
+
# ring at the unrotated placement. So each H pairing is tried at a
|
|
878
|
+
# range of turns, and the one farthest from the residues that stay put
|
|
879
|
+
# wins. (Measuring against all of TC would include the moving piece's
|
|
880
|
+
# own pre-move positions.)
|
|
881
|
+
fixed = C[~C['resNum'].isin(bresids)]
|
|
882
|
+
overall_maximum = (-1.e9, -1, -1, 0.0)
|
|
834
883
|
coord_trials = {}
|
|
835
884
|
for myH, myHnm in myHpartners.items(): # keys are globalIdx's, values are names
|
|
836
885
|
coord_trials[myH] = {}
|
|
@@ -838,17 +887,13 @@ class Molecule:
|
|
|
838
887
|
logger.debug(f' Rh {myH} {Rh} {Rh.dtype}')
|
|
839
888
|
Rih = Ri - Rh
|
|
840
889
|
Rih *= 1.0 / np.linalg.norm(Rih)
|
|
890
|
+
fixed_xyz = fixed.loc[fixed['globalIdx'] != myH, ['posX', 'posY', 'posZ']].to_numpy(dtype=float)
|
|
841
891
|
for otH, otHnm in otHpartners.items():
|
|
842
892
|
logger.debug(f'{self.name}: Considering {myH} {otH}')
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
Rk = coord_trials[myH][otH].get_R(otH)
|
|
846
|
-
logger.debug(f'{self.name}: otH {otH} Rk {Rk} {Rk.dtype}')
|
|
893
|
+
aligned = deepcopy(BTC)
|
|
894
|
+
Rk = aligned.get_R(otH)
|
|
847
895
|
Rkj = Rk - Rj
|
|
848
896
|
Rkj *= 1.0 / np.linalg.norm(Rkj)
|
|
849
|
-
logger.debug(f'Rkj {Rkj} {Rkj.dtype} Rih {Rih} {Rih.dtype}')
|
|
850
|
-
#Rhk=Rh-Rk
|
|
851
|
-
#rhk=np.linalg.norm(Rhk)
|
|
852
897
|
cp = np.cross(Rkj,Rih)
|
|
853
898
|
c = np.dot(Rkj,Rih)
|
|
854
899
|
v = np.array([[0,-cp[2],cp[1]],[cp[2],0,-cp[0]],[-cp[1],cp[0],0]])
|
|
@@ -856,19 +901,31 @@ class Molecule:
|
|
|
856
901
|
I = np.array([[1.,0.,0.],[0.,1.,0.],[0.,0.,1.]])
|
|
857
902
|
# R is the rotation matrix that will rotate donb to align with accb
|
|
858
903
|
R = I + v + v2 / (1. + c)
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
coord_trials[myH][otH].rotate(R)
|
|
862
|
-
Rk = coord_trials[myH][otH].get_R(otH)
|
|
904
|
+
aligned.rotate(R)
|
|
905
|
+
Rk = aligned.get_R(otH)
|
|
863
906
|
# overlap the two H atoms by translation
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
907
|
+
aligned.translate(Rh - Rk)
|
|
908
|
+
A = aligned.Coordinates.A
|
|
909
|
+
moving_mask = (A['globalIdx'] != otH).to_numpy()
|
|
910
|
+
xyz = A[['posX', 'posY', 'posZ']].to_numpy(dtype=float)
|
|
911
|
+
best = None
|
|
912
|
+
for theta in np.deg2rad(np.arange(0.0, 360.0, _TRANSROT_STEP_DEG_)):
|
|
913
|
+
trial = _rotate_about_axis(xyz, Rh, Rih, theta)
|
|
914
|
+
minD = _min_distance(trial[moving_mask], fixed_xyz)
|
|
915
|
+
if best is None or minD > best[0]:
|
|
916
|
+
best = (minD, theta, trial)
|
|
917
|
+
minD, theta, trial = best
|
|
918
|
+
A[['posX', 'posY', 'posZ']] = trial
|
|
919
|
+
coord_trials[myH][otH] = aligned
|
|
920
|
+
logger.debug(f'{self.name}: {myH}/{otH} best turn {np.rad2deg(theta):.0f} deg, minD {minD}')
|
|
868
921
|
if minD > overall_maximum[0]:
|
|
869
|
-
overall_maximum = (minD, myH, otH)
|
|
922
|
+
overall_maximum = (minD, myH, otH, theta)
|
|
870
923
|
logger.debug(f'{self.name}: overall_maximum {overall_maximum}')
|
|
871
|
-
minD, myH, otH = overall_maximum
|
|
924
|
+
minD, myH, otH, _ = overall_maximum
|
|
925
|
+
if minD < _TRANSROT_WARN_NM_:
|
|
926
|
+
logger.warning(f'{self.name}: the best placement found for the new bond still leaves two atoms '
|
|
927
|
+
f'{minD*10:.2f} A apart; a semi-empirical charge method (bcc, abcg2) may fail to converge '
|
|
928
|
+
f'on this starting geometry')
|
|
872
929
|
BTC = coord_trials[myH][otH]
|
|
873
930
|
TC.overwrite_coords(BTC)
|
|
874
931
|
TC.swap_atom_names(myH, list(myHighestH.keys())[0])
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""
|
|
2
|
+
|
|
3
|
+
.. module:: test_transrot_turn_scan
|
|
4
|
+
:synopsis: template placement turns the incoming piece to clear crowded sites
|
|
5
|
+
|
|
6
|
+
.. moduleauthor: Cameron F. Abrams, <cfa22@drexel.edu>
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
import numpy as np
|
|
10
|
+
import pytest
|
|
11
|
+
|
|
12
|
+
from htpolynet.core.molecule import _min_distance, _rotate_about_axis
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TestRotateAboutAxis:
|
|
16
|
+
def test_quarter_turn_about_z(self):
|
|
17
|
+
got = _rotate_about_axis(np.array([[1.0, 0.0, 0.0]]), np.zeros(3), np.array([0.0, 0.0, 1.0]), np.pi / 2)
|
|
18
|
+
assert np.allclose(got, [[0.0, 1.0, 0.0]])
|
|
19
|
+
|
|
20
|
+
def test_points_on_the_axis_stay_put(self):
|
|
21
|
+
pts = np.array([[1.0, 2.0, 3.0], [1.0, 2.0, 5.0]])
|
|
22
|
+
got = _rotate_about_axis(pts, np.array([1.0, 2.0, 0.0]), np.array([0.0, 0.0, 2.0]), 1.234)
|
|
23
|
+
assert np.allclose(got, pts)
|
|
24
|
+
|
|
25
|
+
def test_axis_through_an_offset_point(self):
|
|
26
|
+
got = _rotate_about_axis(np.array([[2.0, 0.0, 0.0]]), np.array([1.0, 0.0, 0.0]), np.array([0.0, 0.0, 1.0]), np.pi)
|
|
27
|
+
assert np.allclose(got, [[0.0, 0.0, 0.0]])
|
|
28
|
+
|
|
29
|
+
def test_distances_are_preserved(self):
|
|
30
|
+
rng = np.random.default_rng(1)
|
|
31
|
+
pts = rng.normal(size=(6, 3))
|
|
32
|
+
got = _rotate_about_axis(pts, rng.normal(size=3), rng.normal(size=3), 0.7)
|
|
33
|
+
d0 = np.linalg.norm(pts[:, None] - pts[None], axis=2)
|
|
34
|
+
d1 = np.linalg.norm(got[:, None] - got[None], axis=2)
|
|
35
|
+
assert np.allclose(d0, d1)
|
|
36
|
+
|
|
37
|
+
def test_zero_turn_is_a_copy(self):
|
|
38
|
+
pts = np.ones((2, 3))
|
|
39
|
+
got = _rotate_about_axis(pts, np.zeros(3), np.array([1.0, 0.0, 0.0]), 0.0)
|
|
40
|
+
got[0, 0] = 9.0
|
|
41
|
+
assert pts[0, 0] == 1.0
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class TestMinDistance:
|
|
45
|
+
def test_closest_pair(self):
|
|
46
|
+
a = np.array([[0.0, 0.0, 0.0], [5.0, 0.0, 0.0]])
|
|
47
|
+
b = np.array([[0.0, 3.0, 0.0], [5.0, 0.5, 0.0]])
|
|
48
|
+
assert _min_distance(a, b) == pytest.approx(0.5)
|
|
49
|
+
|
|
50
|
+
def test_empty_is_infinite(self):
|
|
51
|
+
assert _min_distance(np.empty((0, 3)), np.zeros((1, 3))) == np.inf
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class TestTurnScanClearsAClash:
|
|
55
|
+
def test_the_best_turn_moves_a_substituent_off_an_occupied_site(self):
|
|
56
|
+
# one arm of a piece bonded along the z axis; a fixed atom sits where the arm points at 0 deg
|
|
57
|
+
piece = np.array([[0.15, 0.0, 0.35]])
|
|
58
|
+
fixed = np.array([[0.15, 0.0, 0.36]])
|
|
59
|
+
scores = []
|
|
60
|
+
for theta in np.deg2rad(np.arange(0, 360, 10)):
|
|
61
|
+
scores.append((_min_distance(_rotate_about_axis(piece, np.zeros(3), np.array([0, 0, 1.0]), theta), fixed),
|
|
62
|
+
theta))
|
|
63
|
+
best = max(scores)
|
|
64
|
+
assert scores[0][0] < 0.02
|
|
65
|
+
assert best[0] > 0.25
|
|
66
|
+
assert np.isclose(best[1], np.pi)
|
|
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.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/results.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/0-liquid-styrene/run.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/configuration.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/introduction.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/STY.png
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/docs/source/example-tutorials/1-polystyrene/reactions.rst
RENAMED
|
File without changes
|
{htpolynet-2.10.1 → htpolynet-2.10.2}/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
|