htpolynet 2.7.0__tar.gz → 2.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- htpolynet-2.9.0/.github/workflows/docs.yml +90 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.github/workflows/release.yaml +30 -6
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.gitignore +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/CHANGELOG.md +277 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/PKG-INFO +2 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/ROADMAP.md +280 -28
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docker/Dockerfile +8 -1
- htpolynet-2.9.0/docs/source/_static/htpolynet-favicon.ico +0 -0
- htpolynet-2.9.0/docs/source/_static/htpolynet-landing.jpg +0 -0
- htpolynet-2.9.0/docs/source/_static/htpolynet-logo-dark.png +0 -0
- htpolynet-2.9.0/docs/source/_static/htpolynet-logo-light.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/conf.py +13 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/run.rst +4 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/run.rst +2 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +1 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +14 -12
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +1 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +7 -6
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +56 -75
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +15 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/run.rst +12 -8
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/index.rst +11 -0
- htpolynet-2.9.0/docs/source/index.rst +76 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/install.rst +33 -6
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/configs/configs-for-analyze.rst +2 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/configs/configs-for-run.rst +25 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/index.rst +1 -0
- htpolynet-2.9.0/docs/source/user-guide/periodic-networks.rst +137 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/pyproject.toml +3 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/check-conda-sync.py +86 -22
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/bondtemplate.py +28 -6
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/configuration.py +55 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/molecule.py +1 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/runtime.py +47 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/topocoord.py +163 -11
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/topology.py +29 -2
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cure/curecontroller.py +70 -8
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cure/expandreactions.py +115 -1
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/repair/cyanate_cap.py +19 -22
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/repair/topology_surgery.py +73 -7
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +3 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +7 -1
- htpolynet-2.9.0/src/htpolynet/schema/base.yaml +936 -0
- htpolynet-2.9.0/src/htpolynet/utils/convergence.py +163 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_completion_bias.py +33 -0
- htpolynet-2.9.0/tests/unit/test_conda_sync.py +141 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_configuration.py +166 -19
- htpolynet-2.9.0/tests/unit/test_convergence.py +155 -0
- htpolynet-2.9.0/tests/unit/test_cure_site_functionality.py +154 -0
- htpolynet-2.9.0/tests/unit/test_density_gate.py +108 -0
- htpolynet-2.9.0/tests/unit/test_mol2_bond_fallback.py +58 -0
- htpolynet-2.9.0/tests/unit/test_molecule_charge_report.py +68 -0
- htpolynet-2.9.0/tests/unit/test_moleculetype_name.py +56 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_relax_instrumentation.py +18 -0
- htpolynet-2.9.0/tests/unit/test_repair_charge_neutrality.py +87 -0
- htpolynet-2.9.0/tests/unit/test_sibling_templates.py +181 -0
- htpolynet-2.7.0/docs/source/index.rst +0 -38
- htpolynet-2.7.0/docs/source/release-history.rst +0 -69
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.claude/settings.json +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.claude/skills/htpolynet/SKILL.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.envrc +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.github/workflows/conda-forge-sync.yml +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.github/workflows/docker.yml +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.github/workflows/test.yml +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/.readthedocs.yaml +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/CITATION.cff +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/CLAUDE.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/LICENSE +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/MANIFEST.in +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/README.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docker/compose.yml +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docker/docker-entrypoint.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/Makefile +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/README.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/make.bat +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/requirements.txt +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/_static/.gitkeep +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/changelog.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/htpolynetpackage.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/references/index.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/references/mol2-reference.pdf +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/references.bib +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/CURE.odg +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/bond_filter.odg +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/building-a-system.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/configuration-files.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/container-usage.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/flow1.odg +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/flow1yaml.odg +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/hydrogenated.eps +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/hydrogenated.fig +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/STY.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/STYCC.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/bond_filter.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/hydrogenated.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/postcure-repair.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/program-flow.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/docs/source/user-guide/usage.rst +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/release.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/render-detail.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/render-detail.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/render-snapshot.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/scripts/run_all_examples.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/analysis/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/analysis/analyze.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/analysis/plot.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/analysis/postsim.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/analysis/utils.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cli.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/coordinates.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/paramcache.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/core/projectfilesystem.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cure/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cure/chain.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/cure/reaction.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/ambertools.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/command.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/gromacs.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/slurm.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/smiles_input.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/external/software.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/bondlist.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/lattice.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/linkcell.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/matrix4.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/geometry/ring.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/io/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/io/gro.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/io/mol2.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/io/pdb.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/repair/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/README.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/claude/SKILL.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/README.md +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/min.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/npt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/resources/tcl/render.tcl +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/banner.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/checkpoint.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/dataframetools.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/inputcheck.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/logsetup.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/profiling.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/stringthings.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/src/htpolynet/utils/vmd_viz.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/conftest.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/__init__.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/config1.gro +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/config1.top +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/config2.gro +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/config2.top +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/items31.edr +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/items43.edr +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/items45.edr +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/fixtures/short.mdp +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_bondtemplate.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_cap_placement.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_chain.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_dataframetools.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_gpu_usability.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_inputcheck.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_linkcell_pierce.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_paramcache.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_paramcache_ambertools.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_parameterize_react.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_plot_smoke.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_projectfilesystem.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_repair_conversion.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_resources.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_ring.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_ring_pierce_figs.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_setup_claude.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_slurm_script.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_smiles_input.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_software_provenance.py +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_topology/test.top +0 -0
- {htpolynet-2.7.0 → htpolynet-2.9.0}/tests/unit/test_topology.py +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
# ReadTheDocs has no webhook on this repository. Its only trigger was the
|
|
4
|
+
# "Trigger ReadTheDocs build" step in release.yaml, which fires on v* tags, so
|
|
5
|
+
# the published docs tracked *releases* rather than main: a docs-only commit
|
|
6
|
+
# did not appear on RTD until the next release. This workflow closes that gap
|
|
7
|
+
# for the `latest` version. `stable` follows tags and stays release.yaml's job.
|
|
8
|
+
#
|
|
9
|
+
# The build job also enforces the repo invariant that the docs build with zero
|
|
10
|
+
# warnings (-W). RTD builds without -W, so a warning introduced on main would
|
|
11
|
+
# otherwise publish green and be caught only by whoever next built locally.
|
|
12
|
+
# Gating the trigger on that build means a broken docs commit is never pushed
|
|
13
|
+
# to RTD.
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
branches: [main]
|
|
18
|
+
paths:
|
|
19
|
+
# autodoc reads docstrings and the tutorials literalinclude the example
|
|
20
|
+
# configs, so src/ is a docs input; changelog.rst includes CHANGELOG.md;
|
|
21
|
+
# RTD pip-installs the package, so pyproject.toml matters too.
|
|
22
|
+
- 'docs/**'
|
|
23
|
+
- 'src/**'
|
|
24
|
+
- 'CHANGELOG.md'
|
|
25
|
+
- '.readthedocs.yaml'
|
|
26
|
+
- 'pyproject.toml'
|
|
27
|
+
- '.github/workflows/docs.yml'
|
|
28
|
+
pull_request:
|
|
29
|
+
paths:
|
|
30
|
+
- 'docs/**'
|
|
31
|
+
- 'src/**'
|
|
32
|
+
- 'CHANGELOG.md'
|
|
33
|
+
- '.readthedocs.yaml'
|
|
34
|
+
- 'pyproject.toml'
|
|
35
|
+
- '.github/workflows/docs.yml'
|
|
36
|
+
workflow_dispatch:
|
|
37
|
+
|
|
38
|
+
concurrency:
|
|
39
|
+
group: docs-${{ github.ref }}
|
|
40
|
+
cancel-in-progress: true
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
build:
|
|
44
|
+
name: build (zero warnings)
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- name: Install uv
|
|
50
|
+
uses: astral-sh/setup-uv@v5
|
|
51
|
+
|
|
52
|
+
# Same invocation as CLAUDE.md documents for local use. -W turns
|
|
53
|
+
# warnings into errors; -a rebuilds everything so a warning cannot be
|
|
54
|
+
# skipped by an up-to-date doctree.
|
|
55
|
+
- name: Build docs
|
|
56
|
+
run: >
|
|
57
|
+
uv run --with-requirements docs/requirements.txt --with sphinx
|
|
58
|
+
python -m sphinx -b html -W -a docs/source _docbuild
|
|
59
|
+
|
|
60
|
+
trigger-rtd:
|
|
61
|
+
name: trigger ReadTheDocs
|
|
62
|
+
needs: build
|
|
63
|
+
if: github.event_name != 'pull_request'
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
steps:
|
|
66
|
+
- name: Trigger ReadTheDocs build of latest
|
|
67
|
+
env:
|
|
68
|
+
RTD_SECRET: ${{ secrets.RTD_SECRET }}
|
|
69
|
+
run: |
|
|
70
|
+
set -euo pipefail
|
|
71
|
+
if [ -z "${RTD_SECRET:-}" ]; then
|
|
72
|
+
echo "::error::RTD_SECRET is not set; cannot trigger a ReadTheDocs build."
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
# curl exits 0 on a 4xx unless told otherwise, so check the status
|
|
76
|
+
# explicitly. A trigger that fails silently is worse than none: the
|
|
77
|
+
# job goes green and the docs quietly stop updating.
|
|
78
|
+
code=$(curl -sS --max-time 60 -o rtd-response.json -w '%{http_code}' \
|
|
79
|
+
-X POST \
|
|
80
|
+
-H "Authorization: Token ${RTD_SECRET}" \
|
|
81
|
+
https://readthedocs.org/api/v3/projects/htpolynet/versions/latest/builds/)
|
|
82
|
+
echo "ReadTheDocs returned HTTP ${code}"
|
|
83
|
+
cat rtd-response.json || true
|
|
84
|
+
echo
|
|
85
|
+
case "${code}" in
|
|
86
|
+
2*) echo "Build of 'latest' queued." ;;
|
|
87
|
+
401|403) echo "::error::RTD rejected the token (HTTP ${code}); RTD_SECRET is missing, wrong or expired."; exit 1 ;;
|
|
88
|
+
404) echo "::error::RTD has no project 'htpolynet' or no version 'latest' (HTTP 404)."; exit 1 ;;
|
|
89
|
+
*) echo "::error::RTD returned HTTP ${code}."; exit 1 ;;
|
|
90
|
+
esac
|
|
@@ -79,13 +79,37 @@ jobs:
|
|
|
79
79
|
path: dist/
|
|
80
80
|
|
|
81
81
|
- name: Trigger ReadTheDocs build
|
|
82
|
+
env:
|
|
83
|
+
RTD_SECRET: ${{ secrets.RTD_SECRET }}
|
|
84
|
+
RTD_VERSION: ${{ github.ref_name }}
|
|
82
85
|
run: |
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
set -euo pipefail
|
|
87
|
+
if [ -z "${RTD_SECRET:-}" ]; then
|
|
88
|
+
echo "::error::RTD_SECRET is not set; cannot trigger a ReadTheDocs build."
|
|
89
|
+
exit 1
|
|
90
|
+
fi
|
|
91
|
+
# curl exits 0 on a 4xx unless told otherwise. These calls used to
|
|
92
|
+
# go unchecked, so an expired token would print a 401 body and the
|
|
93
|
+
# step would still pass -- the docs would just stop updating.
|
|
94
|
+
trigger() {
|
|
95
|
+
local version="$1"
|
|
96
|
+
local code
|
|
97
|
+
code=$(curl -sS --max-time 60 -o rtd-response.json -w '%{http_code}' \
|
|
98
|
+
-X POST \
|
|
99
|
+
-H "Authorization: Token ${RTD_SECRET}" \
|
|
100
|
+
"https://readthedocs.org/api/v3/projects/htpolynet/versions/${version}/builds/")
|
|
101
|
+
echo "ReadTheDocs (${version}) returned HTTP ${code}"
|
|
102
|
+
cat rtd-response.json || true
|
|
103
|
+
echo
|
|
104
|
+
case "${code}" in
|
|
105
|
+
2*) return 0 ;;
|
|
106
|
+
*) echo "::error::RTD returned HTTP ${code} for version '${version}'."; return 1 ;;
|
|
107
|
+
esac
|
|
108
|
+
}
|
|
109
|
+
trigger latest
|
|
110
|
+
# The tag's own version may not exist yet if RTD has not synced it;
|
|
111
|
+
# that is not a release failure, so report it without failing the job.
|
|
112
|
+
trigger "${RTD_VERSION}" || echo "::warning::Could not trigger the '${RTD_VERSION}' version build; trigger it from the RTD dashboard if that version is expected."
|
|
89
113
|
|
|
90
114
|
publish:
|
|
91
115
|
needs: release
|
|
@@ -7,6 +7,245 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.9.0] - 2026-09-15
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **The build log reports molecules that carry net charge.** After cure,
|
|
15
|
+
after postcure repair, and when the final results are written, htpolynet
|
|
16
|
+
checks every covalently bonded molecule. It logs one line when all are
|
|
17
|
+
neutral to within 0.01 e, and a warning naming the count and the largest
|
|
18
|
+
charge when some are not. The system total is zero by construction, so
|
|
19
|
+
until now a template or repair step that moved charge from one molecule to
|
|
20
|
+
another left no trace. The check can't see charge misplaced *inside* a
|
|
21
|
+
percolated network, because the whole network is a single molecule.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **Later bonds on a triazine reset the charges of its earlier ones.**
|
|
26
|
+
Each cure template shows a single BPA on the ring, and splicing it in
|
|
27
|
+
rewrites the charges of atoms up to two bonds from the new bond, which
|
|
28
|
+
includes the other ring carbons. So every ring carbon that reacted before
|
|
29
|
+
the last one got its *unreacted* charge back. Example 6's fully reacted
|
|
30
|
+
rings had carbons anywhere from 0.14 to 0.31 e, where the template value is
|
|
31
|
+
0.28. A cured bisphenol-A dicyanate network showed a clean 2:1 split,
|
|
32
|
+
+0.70 against +0.90 e. htpolynet now builds extra templates at setup for
|
|
33
|
+
rings that already carry one or two BPAs; example 6 gets 18 of them. Each
|
|
34
|
+
cure bond picks the one that matches the ring as it stands: templates
|
|
35
|
+
record which atoms two bonds from the bonding atom have already reacted,
|
|
36
|
+
and matching prefers the one that records the most. This applies to any
|
|
37
|
+
reactive atom whose `symmetry_equivalent_atoms` partners sit two bonds
|
|
38
|
+
away. None of the other shipped examples has one, and example 5's
|
|
39
|
+
build-stage molecules are unchanged, charge for charge.
|
|
40
|
+
|
|
41
|
+
Replaying example 6's recorded cure bonds offline puts every bonded ring
|
|
42
|
+
carbon at its template value: 0.275, 0.277 or 0.279 e for one, two or
|
|
43
|
+
three BPAs. All 13 molecules after cure are now neutral, where before
|
|
44
|
+
they ranged from -0.37 to +0.29 e. Cyanate-ester builds should be
|
|
45
|
+
rebuilt.
|
|
46
|
+
|
|
47
|
+
- **A template that matched a bond only in reverse crashed the cure** with
|
|
48
|
+
`mapping mismatch -- bug`. After reversing the bond to line up with the
|
|
49
|
+
template, the mapping check still compared it the original way round. No
|
|
50
|
+
shipped example had reached this path.
|
|
51
|
+
|
|
52
|
+
- **Cyanate-cap repair left molecules charged.** `triazine_to_cyanate_cap`
|
|
53
|
+
kept the system neutral, but not each molecule. It settled charge twice,
|
|
54
|
+
both times system-wide:
|
|
55
|
+
- once while splicing the cap template, when the sacrificial H's still
|
|
56
|
+
existed;
|
|
57
|
+
- once after deleting them, onto only the atoms those H's had been bonded
|
|
58
|
+
to.
|
|
59
|
+
|
|
60
|
+
Caps formed in place and caps transferred to a free BPA-OH therefore ended
|
|
61
|
+
with charges 0.24 e apart on the phenolic O and the cap C. In a
|
|
62
|
+
zero-conversion bisphenol-A dicyanate melt, every molecule came out at
|
|
63
|
+
either +0.21 or -0.27 e. In example 6, the 27 molecules left after repair
|
|
64
|
+
ranged from -3.59 to +0.62 e. Repair now brings each molecule it touched
|
|
65
|
+
back to neutral, and makes the correction only on the atoms it changed.
|
|
66
|
+
Example 6's molecules are all neutral, and its cap residues sit at
|
|
67
|
+
0.05-0.09 e, near the template's 0.069, instead of splitting between 0.04
|
|
68
|
+
and 0.20. Builds that used `postcure_repair` should be rebuilt.
|
|
69
|
+
|
|
70
|
+
- **A false percolation warning on linear polymers.** The end-of-cure check
|
|
71
|
+
warned that too few residues had reacted at every site to assume the system
|
|
72
|
+
percolates, and it fired on chain-growth systems like example 1's
|
|
73
|
+
polystyrene -- "only 902 of 1000 STY (90.2%) ... below the 100.0% ... at its
|
|
74
|
+
gel point". For a difunctional monomer that threshold, `(1/(f-1))^f`, is
|
|
75
|
+
exactly 100%, and a fully reacted difunctional unit is a chain interior
|
|
76
|
+
rather than a crosslink junction, so neither the warning nor its premise
|
|
77
|
+
applied. The check now runs only when some residue has at least three
|
|
78
|
+
reactive sites.
|
|
79
|
+
|
|
80
|
+
- **The percolation check counted sites the cure never uses.** It summed
|
|
81
|
+
every reactive site a residue was built with, including bonds made while
|
|
82
|
+
assembling molecules and valences no cure reaction can consume. Example 2
|
|
83
|
+
warned that "0 of 150 HIE" had reacted at all four sites, which was
|
|
84
|
+
impossible: two of those sites sit on an atom only the molecule-building
|
|
85
|
+
reactions touch. Example 5's warning about TB was the same mistake, since
|
|
86
|
+
every TB site is a chain bond made before the cure. In examples 3 and 4 the
|
|
87
|
+
diepoxide and the diamine tied at four sites, so the reported fraction
|
|
88
|
+
mixed both residue types ("83 of 300 DGE"). Functionality and completion are
|
|
89
|
+
now counted only on atoms a cure reaction can bond, taken from the
|
|
90
|
+
symmetry-expanded reaction list the bond search itself uses. Example 3 now
|
|
91
|
+
reports "83 of 100 PAC", and example 6's check is unchanged. When no
|
|
92
|
+
residue has three or more cure sites, the check says crosslink percolation
|
|
93
|
+
was not assessed, rather than staying silent: systems that crosslink through
|
|
94
|
+
a multi-residue molecule, such as a dimethacrylate, are outside what a
|
|
95
|
+
residue-level count can see.
|
|
96
|
+
|
|
97
|
+
- **Bondless MOL2 files for symmetry-sibling molecules.** A molecule built by
|
|
98
|
+
copying a parent's topology (for example `GMAS-4`, from `GMA`) has its bonds
|
|
99
|
+
in the topology but no MOL2 bond table, so writing it as MOL2 produced a file
|
|
100
|
+
with no bonds and a "Cannot write any bonds to MOL2 file" warning -- twelve
|
|
101
|
+
times in example 2 on a fresh parameterization. Those writes are now filled
|
|
102
|
+
from the topology's bonds, as single bonds. In every shipped example the
|
|
103
|
+
affected files were diagnostic `*-prebonding.mol2` outputs that nothing reads,
|
|
104
|
+
so no parameterization input was ever affected.
|
|
105
|
+
|
|
106
|
+
- **The CPU container image failed to build for 2.8.0**, so
|
|
107
|
+
`ghcr.io/cameronabrams/htpolynet:v2.8.0` was never published (the CUDA image
|
|
108
|
+
was). The base image `condaforge/miniforge3:latest` moved to mamba 2.9.0,
|
|
109
|
+
whose `mamba clean -afy` fails on a symlink inside the CPU AmberTools
|
|
110
|
+
package. The install was succeeding; only the cleanup step failed. The
|
|
111
|
+
Dockerfile now cleans with `conda clean`.
|
|
112
|
+
|
|
113
|
+
### Documentation
|
|
114
|
+
|
|
115
|
+
- **The installation page now recommends the container as the default way to
|
|
116
|
+
run htpolynet**, in a callout at the top with the two commands you need on a
|
|
117
|
+
desktop (Docker Compose) or on a cluster (Singularity/Apptainer), plus the
|
|
118
|
+
note that the default image is CPU-only and GPU users want the `:cuda` tag.
|
|
119
|
+
Installing htpolynet and its tools natively is still documented below it,
|
|
120
|
+
for development and for systems without containers.
|
|
121
|
+
|
|
122
|
+
- **The documentation has a logo and a landing-page illustration.** The
|
|
123
|
+
logo appears in every page's sidebar, in black-on-transparent for the light
|
|
124
|
+
theme and white-on-transparent for the dark one, so it never shows as a white
|
|
125
|
+
box in dark mode. The browser tab shows it too, as a favicon on a white disc
|
|
126
|
+
so it stays visible whether the tab bar is light or dark.
|
|
127
|
+
|
|
128
|
+
## [2.8.0] - 2026-09-12
|
|
129
|
+
|
|
130
|
+
### Added
|
|
131
|
+
|
|
132
|
+
- **Configuration files are now validated.** `htpolynet run` checks every
|
|
133
|
+
configuration against a schema before doing anything else, and fills in
|
|
134
|
+
every documented default from that same schema. Previously a configuration
|
|
135
|
+
was read by picking out the keys htpolynet recognized and silently discarding
|
|
136
|
+
the rest, so a misspelled key did nothing and said nothing: a
|
|
137
|
+
`desired_converson: 0.9` typo produced a default-value build -- a half-cure --
|
|
138
|
+
with no message. Errors now name the offending location, for example
|
|
139
|
+
`Attribute 'smilse' invalid ... under 'constituents[STY]'` or
|
|
140
|
+
`Attribute 'stage' of 'reactions[1]' must be one of build, param, cure, cap,
|
|
141
|
+
repair`. Validation covers every section, including molecule records,
|
|
142
|
+
reactions and postcure repair specs; only `gromacs.mdrun_options` is left
|
|
143
|
+
open on purpose. This adds a runtime dependency on
|
|
144
|
+
[ycleptic](https://pypi.org/project/ycleptic/) 2.4.1 or later.
|
|
145
|
+
|
|
146
|
+
- **Densification can gate on measured density convergence instead of a fixed
|
|
147
|
+
step count.** An NPT record in `densification.equilibration` may carry a
|
|
148
|
+
`converge` block; the stage then repeats until the density settles or a
|
|
149
|
+
ceiling is hit. It is off unless configured, so existing configurations
|
|
150
|
+
reproduce exactly. The criterion is an autocorrelation-corrected standard
|
|
151
|
+
error, `sigma/sqrt(N/tau_int)` -- an NPT cell density is correlated over
|
|
152
|
+
hundreds of steps, so successive frames are not independent samples and a
|
|
153
|
+
naive standard error is optimistic by roughly 1.5x, which would stop the
|
|
154
|
+
gate early. It also makes the tolerance size-aware for free. A small
|
|
155
|
+
standard error alone is not accepted as convergence, because a trace that is
|
|
156
|
+
still climbing looks tight in every short window; the window's two halves
|
|
157
|
+
are compared as well. **Reaching the ceiling is reported as a failure**,
|
|
158
|
+
with a warning saying the number is an unsettled box rather than the
|
|
159
|
+
system's density.
|
|
160
|
+
|
|
161
|
+
Densification is the one place this belongs: the 200 to ~1100 kg/m^3
|
|
162
|
+
compaction happens once and involves a large volume change. Gating the CURE
|
|
163
|
+
relaxation loop was measured and rejected -- past the gel point the
|
|
164
|
+
unreacted species are bonded into the network and topologically constrained,
|
|
165
|
+
the effective diffusion exponent falls to about 0.14, and restoring the
|
|
166
|
+
mobility a gate would wait for takes of order 10^4 times the relaxation
|
|
167
|
+
time. Note also that the gate certifies convergence of the Berendsen
|
|
168
|
+
barostat `npt.mdp` currently uses, which does not sample a correct NPT
|
|
169
|
+
ensemble; treat it as a reproducibility criterion, not a physical one.
|
|
170
|
+
|
|
171
|
+
### Changed
|
|
172
|
+
|
|
173
|
+
- **A configuration that 2.7.0 accepted may now be rejected.** This is the
|
|
174
|
+
point of the validation above, but it is a change in behavior: a key
|
|
175
|
+
htpolynet does not know, a value of the wrong type, a value outside its
|
|
176
|
+
allowed choices, or a missing required field now stops the run with a
|
|
177
|
+
message instead of being ignored. Every shipped example validates. If an
|
|
178
|
+
existing configuration of yours is rejected, the message says where; the fix
|
|
179
|
+
is almost always a misspelled or obsolete key that was already having no
|
|
180
|
+
effect.
|
|
181
|
+
|
|
182
|
+
- **Every shipped example now gates its densification on density
|
|
183
|
+
convergence**, using the `converge` block described under Added, so their
|
|
184
|
+
densification stages run until the box settles rather than for a fixed
|
|
185
|
+
duration.
|
|
186
|
+
|
|
187
|
+
- **The conda-forge package for this release will follow later.** ycleptic,
|
|
188
|
+
the new dependency, is not yet available on conda-forge, so the conda-forge
|
|
189
|
+
build of this version cannot be published until it is. In the meantime the
|
|
190
|
+
release is available from PyPI (`pip install htpolynet`) and in the container
|
|
191
|
+
image (`ghcr.io/cameronabrams/htpolynet`); conda-forge users will stay on
|
|
192
|
+
2.7.0 until then.
|
|
193
|
+
|
|
194
|
+
- **The single moleculetype htpolynet writes is now named `whole_system`, not
|
|
195
|
+
`None`.** An entire build is written as one moleculetype on purpose -- a
|
|
196
|
+
cured network is one covalently connected molecule -- but the default name
|
|
197
|
+
was the literal string `None`, which reads like an unset field or a bug. It
|
|
198
|
+
sits on exactly the line users inspect after GROMACS warns about
|
|
199
|
+
"inconsistent shifts", so it was sending them looking for a topology error
|
|
200
|
+
that is not there. Purely cosmetic: GROMACS accepts either, and existing
|
|
201
|
+
topologies that say `None` still read back unchanged.
|
|
202
|
+
|
|
203
|
+
### Fixed
|
|
204
|
+
|
|
205
|
+
- **A config that omitted `CURE.relax.increment` crashed at the first
|
|
206
|
+
relax.** The default was `0.0`, and `_distance_attenuation` derives its
|
|
207
|
+
stage count as `int(maxL/increment)` with no guard, so the build died with
|
|
208
|
+
`ZeroDivisionError` rather than any message about the config. The
|
|
209
|
+
documented default -- 0.08 -- is now the actual one. Dragging's `increment`
|
|
210
|
+
stays 0.0, which is a sentinel rather than the same bug: its own 0.0 `limit`
|
|
211
|
+
disables dragging before anything divides. Every shipped example sets
|
|
212
|
+
`relax.increment` explicitly, which is why this went unnoticed.
|
|
213
|
+
|
|
214
|
+
### Documentation
|
|
215
|
+
|
|
216
|
+
- **New page: analyzing trajectories of periodic networks.** Explains why
|
|
217
|
+
`gmx trjconv -pbc whole` reports "There were N inconsistent shifts" on a
|
|
218
|
+
cured network (the bond graph wraps through the periodic boundaries, so no
|
|
219
|
+
consistent unwrapped image exists), and that this is expected rather than a
|
|
220
|
+
topology error -- on example 3 the count is zero until the network
|
|
221
|
+
percolates, then 2 at 69% conversion and 140 at 95%. It gives tested recipes
|
|
222
|
+
for visualization, MSD and free volume. The MSD one carries a real
|
|
223
|
+
warning: `gmx msd`'s default `-rmpbc` tries to make the network whole every
|
|
224
|
+
frame and silently inflates the MSD, by about 2.4x at 100 ps on example 3,
|
|
225
|
+
while still exiting normally; use `-pbc nojump` and then `-normpbc`. Prompted
|
|
226
|
+
by a user report.
|
|
227
|
+
|
|
228
|
+
- The `htpolynet analyze` free-volume docs now say that the per-molecule lines
|
|
229
|
+
in `gmx freevolume`'s output describe the whole box as one molecule, and two
|
|
230
|
+
instances of `poststim` now read `postsim`.
|
|
231
|
+
|
|
232
|
+
- **The docs landing page carries the standard badge row, and the release
|
|
233
|
+
history is gone from the table of contents.** `release-history.rst`
|
|
234
|
+
duplicated what this file already records from 1.0.8 forward, so it is
|
|
235
|
+
deleted and `changelog` moves to the *end* of the contents tree rather than
|
|
236
|
+
sitting second. The seven pre-1.0.8 entries it held -- 1.0.7.2 back to
|
|
237
|
+
0.0.1, which this file did not cover -- were migrated here first, so nothing
|
|
238
|
+
is lost by the deletion. The landing page now shows the same eight badges
|
|
239
|
+
as the README: tests, PyPI, conda-forge, Python versions, license, docs,
|
|
240
|
+
downloads and DOI.
|
|
241
|
+
|
|
242
|
+
- **Two more `CURE`/`densification` defaults in the config tables were
|
|
243
|
+
wrong.** `densification.initial_density` is 200.0 kg/m^3, not the 300.0 the
|
|
244
|
+
table gave; and the prose under `min_allowable_bondcycle_length` still said
|
|
245
|
+
"setting it to zero (the default)" after the table had been corrected to -1.
|
|
246
|
+
Found while transcribing the defaults into a machine-readable schema, which
|
|
247
|
+
is the point of doing so.
|
|
248
|
+
|
|
10
249
|
## [2.7.0] - 2026-09-08
|
|
11
250
|
|
|
12
251
|
### Changed
|
|
@@ -1018,3 +1257,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1018
1257
|
### Changed
|
|
1019
1258
|
|
|
1020
1259
|
- Uses `chordless_cycles` to find rings; `ringidx` is no longer a unique atom attribute; improved ring-pierce detection.
|
|
1260
|
+
|
|
1261
|
+
## [1.0.7.2] - untagged
|
|
1262
|
+
|
|
1263
|
+
### Changed
|
|
1264
|
+
|
|
1265
|
+
- Moved the Library package to the `resources` subpackage of `htpolynet`.
|
|
1266
|
+
|
|
1267
|
+
## [1.0.6] - 2023-06-21
|
|
1268
|
+
|
|
1269
|
+
### Added
|
|
1270
|
+
|
|
1271
|
+
- `gmx`-style `analyze` subcommand.
|
|
1272
|
+
|
|
1273
|
+
## [1.0.5] - 2022-09-29
|
|
1274
|
+
|
|
1275
|
+
### Added
|
|
1276
|
+
|
|
1277
|
+
- Post-build MD simulations and plotting functionality.
|
|
1278
|
+
|
|
1279
|
+
## [1.0.2] - 2022-09-16
|
|
1280
|
+
|
|
1281
|
+
### Changed
|
|
1282
|
+
|
|
1283
|
+
- Enhanced molecule-network graph drawing in the `plot` subcommand.
|
|
1284
|
+
|
|
1285
|
+
## [1.0.1] - 2022-09-07
|
|
1286
|
+
|
|
1287
|
+
### Fixed
|
|
1288
|
+
|
|
1289
|
+
- Atom index assignment for systems with more than 100,000 atoms.
|
|
1290
|
+
|
|
1291
|
+
## [1.0.0] - 2022-09-03
|
|
1292
|
+
|
|
1293
|
+
- First release.
|
|
1294
|
+
|
|
1295
|
+
## [0.0.1] - 2022-08-29
|
|
1296
|
+
|
|
1297
|
+
- Initial beta version.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: htpolynet
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.9.0
|
|
4
4
|
Summary: Automated MD System Builder for Amorphous Network Polymers
|
|
5
5
|
Project-URL: Source, https://github.com/cameronabrams/htpolynet
|
|
6
6
|
Project-URL: Documentation, https://htpolynet.readthedocs.io/
|
|
@@ -26,6 +26,7 @@ Requires-Dist: rdkit>=2024.3
|
|
|
26
26
|
Requires-Dist: requests>=2.28
|
|
27
27
|
Requires-Dist: scipy>=1.10
|
|
28
28
|
Requires-Dist: setuptools
|
|
29
|
+
Requires-Dist: ycleptic>=2.4.1
|
|
29
30
|
Provides-Extra: dev
|
|
30
31
|
Requires-Dist: pytest; extra == 'dev'
|
|
31
32
|
Provides-Extra: test
|