nomad-schema-plugin-simulation-workflow 1.0.8__tar.gz → 1.0.10__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.
- {nomad_schema_plugin_simulation_workflow-1.0.8/nomad_schema_plugin_simulation_workflow.egg-info → nomad_schema_plugin_simulation_workflow-1.0.10}/PKG-INFO +4 -3
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10/nomad_schema_plugin_simulation_workflow.egg-info}/PKG-INFO +4 -3
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/nomad_schema_plugin_simulation_workflow.egg-info/requires.txt +1 -1
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/pyproject.toml +4 -4
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/general.py +3 -4
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/molecular_dynamics.py +113 -62
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/thermodynamics.py +7 -5
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/test_simulationworkflowschema.py +8 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/.github/workflows/actions.yaml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/.github/workflows/mkdocs-deploy.yml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/.github/workflows/publish.yml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/.gitignore +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/CITATION.cff +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/LICENSE +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/README.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/assets/.gitignore +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/assets/favicon.png +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/assets/nomad-plugin-logo.png +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/explanation/explanation.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/how_to/contribute_to_the_documentation.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/how_to/contribute_to_this_plugin.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/how_to/install_this_plugin.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/how_to/use_this_plugin.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/index.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/reference/references.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/stylesheets/extra.css +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/theme/partials/header.html +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/docs/tutorial/tutorial.md +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/mkdocs.yml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/nomad_schema_plugin_simulation_workflow.egg-info/SOURCES.txt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/nomad_schema_plugin_simulation_workflow.egg-info/dependency_links.txt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/nomad_schema_plugin_simulation_workflow.egg-info/entry_points.txt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/nomad_schema_plugin_simulation_workflow.egg-info/top_level.txt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/setup.cfg +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/__init__.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/chemical_reaction.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/dmft.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/elastic.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/equation_of_state.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/geometry_optimization.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/gw.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/max_ent.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/nomad_plugin.yaml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/phonon.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/photon_polarization.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/single_point.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/tb.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/simulationworkflowschema/xs.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/conftest.py +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/ase/Cu.traj +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/.NPdAg_vasprun.xml.swp +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/N/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/N/vasprun.xml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/NPdAg/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/NPdAg/vasprun.xml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/PdAg/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/PdAg/vasprun.xml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu/INCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu/OUTCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3/INCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3/OUTCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3_H/INCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3_H/OUTCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH3_H/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH4/INCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH4/OUTCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_CH4/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_xHfcc/INCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_xHfcc/OUTCAR +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/chemical_reaction/RhCu_xHfcc/run.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Distorted_Parameters +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Dst01/Dst01-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Dst02/Dst02-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Dst03/Dst03-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/ElaStic_2nd.in +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/ElaStic_2nd.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst01-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst01_CVe.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst01_d2E.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst02-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst02_CVe.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst02_d2E.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst03-Energy.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst03_CVe.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/Dst03_d2E.dat +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/Energy-vs-Strain/ElaStic_2nd.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/INFO_ElaStic +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic/sgroup.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/elastic.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/geometry_optimization.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/conf.gro +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/confout.gro +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/dhdl.xvg +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/ener.edr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/grompp.err +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/grompp.mdp +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/grompp.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/mdout.mdp +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/mdrun.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_d.edr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_d.tpr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_d.trr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_d.warn +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_s.edr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_s.tpr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_s.trr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/reference_s.warn +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/state.cpt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/state_prev.cpt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/topol.top +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/topol.tpr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/fe_test/traj.trr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/confout.gro +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/ener.edr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/md.log +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/mdout.mdp +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/protein_small_nowater.gro +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/protein_small_nowater.mdp +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/protein_small_nowater.top +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/protein_small_nowater.tpr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/protein_small_nowater.trr +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/state.cpt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/gromacs/protein_small_nowater/state_prev.cpt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/64xmethane/64xmethane-nvt.lammpstrj +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/64xmethane/log.lammps +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/hexane_cyclohexane/data.hexane_cyclohexane +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/hexane_cyclohexane/hexane_cyclohexane_nvt_20ps.lammpstrj +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/hexane_cyclohexane/in.hexane_cyclohexane_nvt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/hexane_cyclohexane/log.hexane_cyclohexane_nvt +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/lammps/hexane_cyclohexane/log.hexane_cyclohexane_nvt-thermo_style_multi +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/molecular_dynamics.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/no_workflow.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonon.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/control.in +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/geometry.in +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/aims.sub +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/aims.sub.o449118 +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/aims.sub.po449118 +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/control.in +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/geometry.in +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/phonopy-FHI-aims-displacement-01.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/phonopy/phonopy-FHI-aims-displacement-01/tmp.out +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/radius_of_gyration.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/rdf_2.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/rdf_and_msd.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/single_point.archive.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/temp.json +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/vasp/vasprun.xml +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/vasp/vasprun.xml.static +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/tests/data/vasp_outcar/OUTCAR_broken +0 -0
- {nomad_schema_plugin_simulation_workflow-1.0.8 → nomad_schema_plugin_simulation_workflow-1.0.10}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nomad-schema-plugin-simulation-workflow
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.10
|
|
4
4
|
Summary: Simulation workflow schema plugin for NOMAD.
|
|
5
5
|
Author: The NOMAD Authors
|
|
6
6
|
License: Apache-2.0
|
|
@@ -8,12 +8,13 @@ Project-URL: homepage, https://github.com/nomad-coe/nomad-schema-plugin-simulati
|
|
|
8
8
|
Requires-Python: >=3.9
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Dist: nomad-lab>=1.3.
|
|
11
|
+
Requires-Dist: nomad-lab>=1.3.13
|
|
12
12
|
Requires-Dist: nomad-schema-plugin-run>=1.0.1
|
|
13
13
|
Requires-Dist: mdanalysis<3.0.0,>=2.8.0; python_full_version >= "3.10"
|
|
14
14
|
Requires-Dist: mdanalysis<2.8; python_full_version < "3.10"
|
|
15
15
|
Requires-Dist: scipy>=1.7.1
|
|
16
16
|
Requires-Dist: networkx>=2.6.3
|
|
17
|
+
Dynamic: license-file
|
|
17
18
|
|
|
18
19
|
[](https://zenodo.org/badge/latestdoi/744481756)
|
|
19
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nomad-schema-plugin-simulation-workflow
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.10
|
|
4
4
|
Summary: Simulation workflow schema plugin for NOMAD.
|
|
5
5
|
Author: The NOMAD Authors
|
|
6
6
|
License: Apache-2.0
|
|
@@ -8,12 +8,13 @@ Project-URL: homepage, https://github.com/nomad-coe/nomad-schema-plugin-simulati
|
|
|
8
8
|
Requires-Python: >=3.9
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Dist: nomad-lab>=1.3.
|
|
11
|
+
Requires-Dist: nomad-lab>=1.3.13
|
|
12
12
|
Requires-Dist: nomad-schema-plugin-run>=1.0.1
|
|
13
13
|
Requires-Dist: mdanalysis<3.0.0,>=2.8.0; python_full_version >= "3.10"
|
|
14
14
|
Requires-Dist: mdanalysis<2.8; python_full_version < "3.10"
|
|
15
15
|
Requires-Dist: scipy>=1.7.1
|
|
16
16
|
Requires-Dist: networkx>=2.6.3
|
|
17
|
+
Dynamic: license-file
|
|
17
18
|
|
|
18
19
|
[](https://zenodo.org/badge/latestdoi/744481756)
|
|
19
20
|
|
|
@@ -10,7 +10,7 @@ readme = "README.md"
|
|
|
10
10
|
authors = [{ name = "The NOMAD Authors" }]
|
|
11
11
|
license = { text = "Apache-2.0" }
|
|
12
12
|
dependencies = [
|
|
13
|
-
"nomad-lab>=1.3.
|
|
13
|
+
"nomad-lab>=1.3.13",
|
|
14
14
|
"nomad-schema-plugin-run>=1.0.1",
|
|
15
15
|
"mdanalysis>=2.8.0,<3.0.0 ; python_full_version >= '3.10'",
|
|
16
16
|
"mdanalysis<2.8 ; python_full_version < '3.10'",
|
|
@@ -24,9 +24,9 @@ homepage = "https://github.com/nomad-coe/nomad-schema-plugin-simulation-workflow
|
|
|
24
24
|
|
|
25
25
|
[tool.uv]
|
|
26
26
|
dev-dependencies = [
|
|
27
|
-
"nomad-normalizer-plugin-bandstructure",
|
|
28
|
-
"nomad-normalizer-plugin-system",
|
|
29
|
-
'mypy
|
|
27
|
+
"nomad-normalizer-plugin-bandstructure>=1.0.3",
|
|
28
|
+
"nomad-normalizer-plugin-system>=1.0.3",
|
|
29
|
+
'mypy>=1.15',
|
|
30
30
|
'pytest>= 5.3.0, <8',
|
|
31
31
|
'pytest-timeout>=1.4.2',
|
|
32
32
|
'pytest-cov>=2.7.1',
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
# See the License for the specific language governing permissions and
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
|
-
from typing import List
|
|
19
18
|
import numpy as np
|
|
20
19
|
|
|
21
20
|
from nomad.datamodel.data import ArchiveSection
|
|
@@ -129,9 +128,9 @@ class SimulationWorkflow(Workflow):
|
|
|
129
128
|
def normalize(self, archive, logger):
|
|
130
129
|
super().normalize(archive, logger)
|
|
131
130
|
|
|
132
|
-
self._calculations:
|
|
133
|
-
self._systems:
|
|
134
|
-
self._methods:
|
|
131
|
+
self._calculations: list[ArchiveSection] = [] # noqa
|
|
132
|
+
self._systems: list[ArchiveSection] = [] # noqa
|
|
133
|
+
self._methods: list[ArchiveSection] = [] # noqa
|
|
135
134
|
try:
|
|
136
135
|
self._calculations = archive.run[-1].calculation
|
|
137
136
|
self._systems = archive.run[-1].system
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
# See the License for the specific language governing permissions and
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
|
-
from typing import
|
|
18
|
+
from typing import Any, Callable, Optional
|
|
19
19
|
from itertools import chain
|
|
20
20
|
from collections import namedtuple
|
|
21
21
|
import numpy as np
|
|
22
22
|
from array import array
|
|
23
|
-
from nptyping import Int, NDArray
|
|
24
23
|
from scipy import sparse
|
|
25
24
|
from scipy.stats import linregress
|
|
26
25
|
import networkx
|
|
26
|
+
import numpy as np
|
|
27
27
|
import MDAnalysis
|
|
28
28
|
from MDAnalysis.core.topology import Topology
|
|
29
29
|
from MDAnalysis.core.universe import Universe
|
|
@@ -105,7 +105,7 @@ class BeadGroup(object):
|
|
|
105
105
|
|
|
106
106
|
def get_bond_list_from_model_contributions(
|
|
107
107
|
sec_run: MSection, method_index: int = -1, model_index: int = -1
|
|
108
|
-
) ->
|
|
108
|
+
) -> list[tuple]:
|
|
109
109
|
"""
|
|
110
110
|
Generates bond list of tuples using the list of bonded force field interactions stored under run[].method[].force_field.model[].
|
|
111
111
|
|
|
@@ -139,12 +139,12 @@ def create_empty_universe(
|
|
|
139
139
|
n_frames: int = 1,
|
|
140
140
|
n_residues: int = 1,
|
|
141
141
|
n_segments: int = 1,
|
|
142
|
-
atom_resindex:
|
|
143
|
-
residue_segindex:
|
|
142
|
+
atom_resindex: Optional[np.ndarray] = None,
|
|
143
|
+
residue_segindex: Optional[np.ndarray] = None,
|
|
144
144
|
flag_trajectory: bool = False,
|
|
145
145
|
flag_velocities: bool = False,
|
|
146
146
|
flag_forces: bool = False,
|
|
147
|
-
timestep: float = None,
|
|
147
|
+
timestep: Optional[float] = None,
|
|
148
148
|
) -> MDAnalysis.Universe:
|
|
149
149
|
"""Create a blank Universe
|
|
150
150
|
|
|
@@ -208,13 +208,13 @@ def create_empty_universe(
|
|
|
208
208
|
n_segments = 0
|
|
209
209
|
|
|
210
210
|
if atom_resindex is None:
|
|
211
|
-
LOGGER.
|
|
211
|
+
LOGGER.warning(
|
|
212
212
|
'Residues specified but no atom_resindex given. '
|
|
213
213
|
'All atoms will be placed in first Residue.',
|
|
214
214
|
)
|
|
215
215
|
|
|
216
216
|
if residue_segindex is None:
|
|
217
|
-
LOGGER.
|
|
217
|
+
LOGGER.warning(
|
|
218
218
|
'Segments specified but no segment_resindex given. '
|
|
219
219
|
'All residues will be placed in first Segment',
|
|
220
220
|
)
|
|
@@ -314,7 +314,7 @@ def archive_to_universe(
|
|
|
314
314
|
sec_atoms_group = sec_system_top.atoms_group
|
|
315
315
|
sec_calculation = sec_run.calculation
|
|
316
316
|
sec_method = (
|
|
317
|
-
sec_run.method[method_index] if sec_run.get('method') is not None else
|
|
317
|
+
sec_run.method[method_index] if sec_run.get('method') is not None else {}
|
|
318
318
|
)
|
|
319
319
|
except IndexError:
|
|
320
320
|
LOGGER.warning(
|
|
@@ -327,7 +327,7 @@ def archive_to_universe(
|
|
|
327
327
|
LOGGER.warning('No atoms found in the archive. Cannot build the MDA universe.')
|
|
328
328
|
return None
|
|
329
329
|
|
|
330
|
-
n_frames = len(sec_system) if sec_system is not None else
|
|
330
|
+
n_frames = len(sec_system) if sec_system is not None else 1
|
|
331
331
|
atom_names = sec_atoms.get('labels')
|
|
332
332
|
model_atom_parameters = sec_method.get('atom_parameters')
|
|
333
333
|
atom_types = (
|
|
@@ -514,8 +514,8 @@ def archive_to_universe(
|
|
|
514
514
|
n_frames=n_frames,
|
|
515
515
|
n_residues=n_residues,
|
|
516
516
|
n_segments=n_segments,
|
|
517
|
-
atom_resindex=atom_resindex,
|
|
518
|
-
residue_segindex=residue_segindex,
|
|
517
|
+
atom_resindex=np.array(atom_resindex),
|
|
518
|
+
residue_segindex=np.array(residue_segindex),
|
|
519
519
|
flag_trajectory=True,
|
|
520
520
|
flag_velocities=True,
|
|
521
521
|
timestep=system_timestep.magnitude,
|
|
@@ -556,12 +556,17 @@ def archive_to_universe(
|
|
|
556
556
|
|
|
557
557
|
|
|
558
558
|
def _get_molecular_bead_groups(
|
|
559
|
-
universe: MDAnalysis.Universe, moltypes:
|
|
560
|
-
) ->
|
|
559
|
+
universe: MDAnalysis.Universe, moltypes: list[str] = []
|
|
560
|
+
) -> dict[str, BeadGroup]:
|
|
561
561
|
"""
|
|
562
562
|
Creates bead groups based on the molecular types as defined by the MDAnalysis universe.
|
|
563
563
|
"""
|
|
564
|
-
|
|
564
|
+
# Input validation
|
|
565
|
+
if universe is None:
|
|
566
|
+
LOGGER.warning('Universe required to create beads.')
|
|
567
|
+
return {}
|
|
568
|
+
|
|
569
|
+
if not moltypes:
|
|
565
570
|
atoms_moltypes = getattr(universe.atoms, 'moltypes', [])
|
|
566
571
|
moltypes = np.unique(atoms_moltypes)
|
|
567
572
|
bead_groups = {}
|
|
@@ -581,24 +586,42 @@ def _get_molecular_bead_groups(
|
|
|
581
586
|
|
|
582
587
|
def calc_molecular_rdf(
|
|
583
588
|
universe: MDAnalysis.Universe,
|
|
589
|
+
bead_groups: dict[str, BeadGroup],
|
|
584
590
|
n_traj_split: int = 10,
|
|
585
591
|
n_prune: int = 1,
|
|
586
592
|
interval_indices=None,
|
|
587
593
|
max_mols: int = 5000,
|
|
588
|
-
) ->
|
|
594
|
+
) -> dict[str, Any]:
|
|
589
595
|
"""
|
|
590
596
|
Calculates the radial distribution functions between for each unique pair of
|
|
591
597
|
molecule types as a function of their center of mass distance.
|
|
592
598
|
|
|
593
|
-
|
|
594
|
-
|
|
599
|
+
Parameters
|
|
600
|
+
----------
|
|
601
|
+
universe : MDAnalysis.Universe
|
|
602
|
+
The MDAnalysis universe object.
|
|
603
|
+
bead_groups : dict[str, BeadGroup]
|
|
604
|
+
Precomputed bead groups for the universe.
|
|
605
|
+
n_traj_split : int
|
|
606
|
+
Number of intervals to split trajectory into for averaging.
|
|
607
|
+
n_prune : int
|
|
608
|
+
Pruning parameter for frames.
|
|
609
|
+
interval_indices : list or None
|
|
610
|
+
2D array specifying the groups of the n_traj_split intervals to be averaged.
|
|
611
|
+
max_mols : int
|
|
612
|
+
Maximum number of molecules per bead group for calculating the rdf, for efficiency purposes.
|
|
595
613
|
"""
|
|
596
614
|
# TODO 5k default for max_mols was set after > 50k was giving problems. Should do further testing to see where the appropriate limit should be set.
|
|
615
|
+
if bead_groups is None or not bead_groups:
|
|
616
|
+
LOGGER.warning('bead_groups required to calculate RDF.')
|
|
617
|
+
return {}
|
|
618
|
+
|
|
597
619
|
if (
|
|
598
620
|
not universe
|
|
599
621
|
or not universe.trajectory
|
|
600
622
|
or universe.trajectory[0].dimensions is None
|
|
601
623
|
):
|
|
624
|
+
LOGGER.warning('universe required to calculate RDF.')
|
|
602
625
|
return {}
|
|
603
626
|
|
|
604
627
|
n_frames = universe.trajectory.n_frames
|
|
@@ -623,10 +646,9 @@ def calc_molecular_rdf(
|
|
|
623
646
|
if not interval_indices:
|
|
624
647
|
interval_indices = [[i] for i in range(n_traj_split)]
|
|
625
648
|
|
|
626
|
-
bead_groups = _get_molecular_bead_groups(universe)
|
|
627
649
|
if not bead_groups:
|
|
628
650
|
return bead_groups
|
|
629
|
-
moltypes =
|
|
651
|
+
moltypes = list(bead_groups.keys())
|
|
630
652
|
del_list = [
|
|
631
653
|
i_moltype
|
|
632
654
|
for i_moltype, moltype in enumerate(moltypes)
|
|
@@ -639,7 +661,7 @@ def calc_molecular_rdf(
|
|
|
639
661
|
n_bins = 200
|
|
640
662
|
n_smooth = 2
|
|
641
663
|
|
|
642
|
-
rdf_results:
|
|
664
|
+
rdf_results: dict[str, Any] = {}
|
|
643
665
|
rdf_results['n_smooth'] = n_smooth
|
|
644
666
|
rdf_results['n_prune'] = n_prune
|
|
645
667
|
rdf_results['type'] = 'molecular'
|
|
@@ -663,7 +685,7 @@ def calc_molecular_rdf(
|
|
|
663
685
|
else:
|
|
664
686
|
exclusion_block = None
|
|
665
687
|
pair_type = f'{moltype_i}-{moltype_j}'
|
|
666
|
-
rdf_results_interval:
|
|
688
|
+
rdf_results_interval: dict[str, Any] = {}
|
|
667
689
|
rdf_results_interval['types'] = []
|
|
668
690
|
rdf_results_interval['variables_name'] = []
|
|
669
691
|
rdf_results_interval['bins'] = []
|
|
@@ -756,14 +778,14 @@ def __log_indices(first: int, last: int, num: int = 100):
|
|
|
756
778
|
return np.unique(np.int_(ls) - 1 + first)
|
|
757
779
|
|
|
758
780
|
|
|
759
|
-
def __correlation(function, positions:
|
|
781
|
+
def __correlation(function, positions: list[float]):
|
|
760
782
|
iterator = iter(positions)
|
|
761
783
|
start_frame = next(iterator)
|
|
762
784
|
return map(lambda f: function(start_frame, f), chain([start_frame], iterator))
|
|
763
785
|
|
|
764
786
|
|
|
765
787
|
def _calc_diffusion_constant(
|
|
766
|
-
times:
|
|
788
|
+
times: np.ndarray, values: np.ndarray, dim: int = 3
|
|
767
789
|
) -> tuple[float, float]:
|
|
768
790
|
"""
|
|
769
791
|
Determines the diffusion constant from a fit of the mean squared displacement
|
|
@@ -777,14 +799,14 @@ def _calc_diffusion_constant(
|
|
|
777
799
|
|
|
778
800
|
def shifted_correlation_average(
|
|
779
801
|
function: Callable,
|
|
780
|
-
times:
|
|
781
|
-
positions:
|
|
802
|
+
times: np.ndarray,
|
|
803
|
+
positions: np.ndarray,
|
|
782
804
|
index_distribution: Callable = __log_indices,
|
|
783
805
|
correlation: Callable = __correlation,
|
|
784
806
|
segments: int = 10,
|
|
785
807
|
window: float = 0.5,
|
|
786
808
|
skip: int = 0,
|
|
787
|
-
) -> tuple[
|
|
809
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
|
788
810
|
"""
|
|
789
811
|
Code adapted from MDevaluate module: https://github.com/mdevaluate/mdevaluate.git
|
|
790
812
|
|
|
@@ -830,8 +852,8 @@ def shifted_correlation_average(
|
|
|
830
852
|
>>> indices, data = shifted_correlation(msd, coords)
|
|
831
853
|
"""
|
|
832
854
|
if window + skip >= 1:
|
|
833
|
-
LOGGER.
|
|
834
|
-
'Invalid parameters for shifted_correlation(),
|
|
855
|
+
LOGGER.warning(
|
|
856
|
+
'Invalid parameters for shifted_correlation(), resetting to defaults.',
|
|
835
857
|
)
|
|
836
858
|
window = 0.5
|
|
837
859
|
skip = 0
|
|
@@ -855,7 +877,7 @@ def shifted_correlation_average(
|
|
|
855
877
|
|
|
856
878
|
correlation_times = np.array([times[i] for i in idx]) - times[0]
|
|
857
879
|
|
|
858
|
-
result:
|
|
880
|
+
result: np.ndarray
|
|
859
881
|
for i_start_frame, start_frame in enumerate(start_frames):
|
|
860
882
|
if i_start_frame == 0:
|
|
861
883
|
result = np.array(list(correlate(start_frame)))
|
|
@@ -868,14 +890,22 @@ def shifted_correlation_average(
|
|
|
868
890
|
|
|
869
891
|
|
|
870
892
|
def calc_molecular_mean_squared_displacements(
|
|
871
|
-
universe: MDAnalysis.Universe,
|
|
872
|
-
|
|
893
|
+
universe: MDAnalysis.Universe,
|
|
894
|
+
bead_groups: dict[str, BeadGroup],
|
|
895
|
+
max_mols: int = 5000,
|
|
896
|
+
) -> dict[str, Any]:
|
|
873
897
|
"""
|
|
874
898
|
Calculates the mean squared displacement for the center of mass of each
|
|
875
899
|
molecule type.
|
|
876
900
|
|
|
877
|
-
|
|
878
|
-
|
|
901
|
+
Parameters
|
|
902
|
+
----------
|
|
903
|
+
universe : MDAnalysis.Universe
|
|
904
|
+
The MDAnalysis universe object.
|
|
905
|
+
bead_groups : dict[str, BeadGroup]
|
|
906
|
+
Precomputed bead groups for the universe.
|
|
907
|
+
max_mols : int
|
|
908
|
+
Maximum number of molecules per bead group for calculating the msd, for efficiency purposes.
|
|
879
909
|
"""
|
|
880
910
|
|
|
881
911
|
def parse_jumps(
|
|
@@ -926,7 +956,7 @@ def calc_molecular_mean_squared_displacements(
|
|
|
926
956
|
|
|
927
957
|
def get_nojump_positions(
|
|
928
958
|
universe: MDAnalysis.Universe, selection: MDAnalysis.AtomGroup
|
|
929
|
-
) ->
|
|
959
|
+
) -> np.ndarray:
|
|
930
960
|
"""
|
|
931
961
|
Unwraps the positions to create a continuous trajectory without jumps across periodic boundaries.
|
|
932
962
|
"""
|
|
@@ -945,23 +975,28 @@ def calc_molecular_mean_squared_displacements(
|
|
|
945
975
|
|
|
946
976
|
return np.array(nojump_positions)
|
|
947
977
|
|
|
948
|
-
def mean_squared_displacement(start:
|
|
978
|
+
def mean_squared_displacement(start: np.ndarray, current: np.ndarray):
|
|
949
979
|
"""
|
|
950
980
|
Calculates mean square displacement between current and initial (start) coordinates.
|
|
951
981
|
"""
|
|
952
982
|
vec = start - current
|
|
953
983
|
return (vec**2).sum(axis=1).mean()
|
|
954
984
|
|
|
985
|
+
if bead_groups is None or not bead_groups:
|
|
986
|
+
LOGGER.warning('bead_groups required to calculate MSD.')
|
|
987
|
+
return {}
|
|
988
|
+
|
|
955
989
|
if (
|
|
956
990
|
not universe
|
|
957
991
|
or not universe.trajectory
|
|
958
992
|
or universe.trajectory[0].dimensions is None
|
|
959
993
|
):
|
|
994
|
+
LOGGER.warning('universe required to calculate MSD.')
|
|
960
995
|
return {}
|
|
961
996
|
|
|
962
997
|
n_frames = universe.trajectory.n_frames
|
|
963
998
|
if n_frames < 50:
|
|
964
|
-
LOGGER.
|
|
999
|
+
LOGGER.warning(
|
|
965
1000
|
'At least 50 frames required to calculate molecular'
|
|
966
1001
|
' mean squared displacements, skipping.',
|
|
967
1002
|
)
|
|
@@ -969,14 +1004,13 @@ def calc_molecular_mean_squared_displacements(
|
|
|
969
1004
|
|
|
970
1005
|
dt = getattr(universe.trajectory, 'dt')
|
|
971
1006
|
if dt is None:
|
|
972
|
-
LOGGER.
|
|
1007
|
+
LOGGER.warning(
|
|
973
1008
|
'Universe is missing time step, cannot calculate molecular'
|
|
974
1009
|
' mean squared displacements, skipping.',
|
|
975
1010
|
)
|
|
976
1011
|
return {}
|
|
977
1012
|
times = np.arange(n_frames) * dt
|
|
978
1013
|
|
|
979
|
-
bead_groups = _get_molecular_bead_groups(universe)
|
|
980
1014
|
if bead_groups is {}:
|
|
981
1015
|
return bead_groups
|
|
982
1016
|
|
|
@@ -985,7 +1019,7 @@ def calc_molecular_mean_squared_displacements(
|
|
|
985
1019
|
for i_moltype, moltype in enumerate(moltypes):
|
|
986
1020
|
if len(bead_groups[moltype].positions) > max_mols:
|
|
987
1021
|
if max_mols > 50000:
|
|
988
|
-
LOGGER.
|
|
1022
|
+
LOGGER.warning(
|
|
989
1023
|
'Calculating mean squared displacements for more than 50k molecules.'
|
|
990
1024
|
' Expect long processing times!',
|
|
991
1025
|
)
|
|
@@ -1000,18 +1034,18 @@ def calc_molecular_mean_squared_displacements(
|
|
|
1000
1034
|
np.random.choice(molnum_types, size=max_mols)
|
|
1001
1035
|
)
|
|
1002
1036
|
atom_indices_rnd = np.concatenate(
|
|
1003
|
-
[
|
|
1037
|
+
[moltype_indices[molnums == molnum] for molnum in molnum_types_rnd]
|
|
1004
1038
|
)
|
|
1005
1039
|
selection = ' '.join([str(i) for i in atom_indices_rnd])
|
|
1006
1040
|
selection = f'index {selection}'
|
|
1007
1041
|
ags_moltype_rnd = universe.select_atoms(selection)
|
|
1008
1042
|
bead_groups[moltype] = BeadGroup(ags_moltype_rnd, compound='fragments')
|
|
1009
|
-
LOGGER.
|
|
1043
|
+
LOGGER.warning(
|
|
1010
1044
|
'Maximum number of molecules for calculating the msd has been reached.'
|
|
1011
1045
|
' Will make a random selection for calculation.'
|
|
1012
1046
|
)
|
|
1013
1047
|
except Exception:
|
|
1014
|
-
LOGGER.
|
|
1048
|
+
LOGGER.warning(
|
|
1015
1049
|
'Error in selecting random molecules for large group when calculating msd. Skipping this molecule type.'
|
|
1016
1050
|
)
|
|
1017
1051
|
del_list.append(i_moltype)
|
|
@@ -1019,7 +1053,7 @@ def calc_molecular_mean_squared_displacements(
|
|
|
1019
1053
|
for index in sorted(del_list, reverse=True):
|
|
1020
1054
|
del moltypes[index]
|
|
1021
1055
|
|
|
1022
|
-
msd_results:
|
|
1056
|
+
msd_results: dict[str, Any] = {}
|
|
1023
1057
|
msd_results['type'] = 'molecular'
|
|
1024
1058
|
msd_results['direction'] = 'xyz'
|
|
1025
1059
|
msd_results['value'] = []
|
|
@@ -1052,21 +1086,31 @@ def calc_molecular_mean_squared_displacements(
|
|
|
1052
1086
|
|
|
1053
1087
|
|
|
1054
1088
|
def calc_radius_of_gyration(
|
|
1055
|
-
universe: MDAnalysis.Universe, molecule_atom_indices:
|
|
1056
|
-
) ->
|
|
1089
|
+
universe: MDAnalysis.Universe, molecule_atom_indices: np.ndarray
|
|
1090
|
+
) -> dict[str, Any]:
|
|
1057
1091
|
"""
|
|
1058
1092
|
Calculates the radius of gyration as a function of time for the atoms 'molecule_atom_indices'.
|
|
1093
|
+
|
|
1094
|
+
molecule_atom_indices : np.ndarray
|
|
1095
|
+
The indices of the atoms corresponding to a single molecule for which the Rg will be calculated.
|
|
1059
1096
|
"""
|
|
1097
|
+
if molecule_atom_indices is None or len(molecule_atom_indices) == 0:
|
|
1098
|
+
LOGGER.warning(
|
|
1099
|
+
'molecule_atom_indices is required to calculate radius of gyration'
|
|
1100
|
+
)
|
|
1101
|
+
return {}
|
|
1102
|
+
|
|
1060
1103
|
if (
|
|
1061
1104
|
not universe
|
|
1062
1105
|
or not universe.trajectory
|
|
1063
1106
|
or universe.trajectory[0].dimensions is None
|
|
1064
1107
|
):
|
|
1108
|
+
LOGGER.warning('universe is None. Cannot calculate radius of gyration.')
|
|
1065
1109
|
return {}
|
|
1066
1110
|
selection = ' '.join([str(i) for i in molecule_atom_indices])
|
|
1067
1111
|
selection = f'index {selection}'
|
|
1068
1112
|
molecule = universe.select_atoms(selection)
|
|
1069
|
-
rg_results:
|
|
1113
|
+
rg_results: dict[str, Any] = {}
|
|
1070
1114
|
rg_results['type'] = 'molecular'
|
|
1071
1115
|
rg_results['times'] = []
|
|
1072
1116
|
rg_results['value'] = []
|
|
@@ -1091,11 +1135,17 @@ def calc_radius_of_gyration(
|
|
|
1091
1135
|
|
|
1092
1136
|
def calc_molecular_radius_of_gyration(
|
|
1093
1137
|
universe: MDAnalysis.Universe, system_topology: MSection
|
|
1094
|
-
) ->
|
|
1138
|
+
) -> list[dict[str, Any]]:
|
|
1095
1139
|
"""
|
|
1096
1140
|
Calculates the radius of gyration as a function of time for each polymer in the system.
|
|
1097
1141
|
"""
|
|
1098
|
-
if
|
|
1142
|
+
if universe is None:
|
|
1143
|
+
LOGGER.warning('universe required to calculate molecular radius of gyration')
|
|
1144
|
+
return []
|
|
1145
|
+
if system_topology is None or not system_topology:
|
|
1146
|
+
LOGGER.warning(
|
|
1147
|
+
'system_topology require to calculate molecular radius of gyration.'
|
|
1148
|
+
)
|
|
1099
1149
|
return []
|
|
1100
1150
|
|
|
1101
1151
|
rg_results = []
|
|
@@ -1115,10 +1165,10 @@ def calc_molecular_radius_of_gyration(
|
|
|
1115
1165
|
|
|
1116
1166
|
def get_molecules_from_bond_list(
|
|
1117
1167
|
n_particles: int,
|
|
1118
|
-
bond_list:
|
|
1119
|
-
particle_types:
|
|
1120
|
-
particles_typeid: array = None,
|
|
1121
|
-
) ->
|
|
1168
|
+
bond_list: list[tuple],
|
|
1169
|
+
particle_types: list[str] = [],
|
|
1170
|
+
particles_typeid: Optional[array] = None,
|
|
1171
|
+
) -> list[dict[str, Any]]:
|
|
1122
1172
|
"""
|
|
1123
1173
|
Returns a list of dictionaries with molecule info from each instance in the list of bonds.
|
|
1124
1174
|
"""
|
|
@@ -1128,8 +1178,8 @@ def get_molecules_from_bond_list(
|
|
|
1128
1178
|
system_graph.subgraph(c).copy()
|
|
1129
1179
|
for c in networkx.connected_components(system_graph)
|
|
1130
1180
|
]
|
|
1131
|
-
molecule_info:
|
|
1132
|
-
molecule_dict:
|
|
1181
|
+
molecule_info: list[dict[str, Any]] = []
|
|
1182
|
+
molecule_dict: dict[str, Any] = {}
|
|
1133
1183
|
for mol in molecules:
|
|
1134
1184
|
molecule_dict = {}
|
|
1135
1185
|
molecule_dict['indices'] = np.array(mol.nodes())
|
|
@@ -1183,7 +1233,7 @@ def is_same_molecule(mol_1: dict, mol_2: dict) -> bool:
|
|
|
1183
1233
|
return False
|
|
1184
1234
|
|
|
1185
1235
|
|
|
1186
|
-
def get_composition(children_names:
|
|
1236
|
+
def get_composition(children_names: list[str]) -> str:
|
|
1187
1237
|
"""
|
|
1188
1238
|
Generates a generalized "chemical formula" based on the provided list `children_names`,
|
|
1189
1239
|
with the format X(m)Y(n) for children_names X and Y of quantities m and n, respectively.
|
|
@@ -2536,10 +2586,6 @@ class MolecularDynamicsResults(ThermodynamicsResults):
|
|
|
2536
2586
|
sub_section=CorrelationFunction.m_def, repeats=True
|
|
2537
2587
|
)
|
|
2538
2588
|
|
|
2539
|
-
radial_distribution_functions = SubSection(
|
|
2540
|
-
sub_section=RadialDistributionFunction.m_def, repeats=True
|
|
2541
|
-
)
|
|
2542
|
-
|
|
2543
2589
|
radius_of_gyration = SubSection(sub_section=RadiusOfGyration, repeats=True)
|
|
2544
2590
|
|
|
2545
2591
|
mean_squared_displacements = SubSection(
|
|
@@ -2564,6 +2610,8 @@ class MolecularDynamicsResults(ThermodynamicsResults):
|
|
|
2564
2610
|
if universe is None:
|
|
2565
2611
|
return
|
|
2566
2612
|
|
|
2613
|
+
bead_groups = _get_molecular_bead_groups(universe)
|
|
2614
|
+
|
|
2567
2615
|
# calculate molecular radial distribution functions
|
|
2568
2616
|
if not self.radial_distribution_functions:
|
|
2569
2617
|
n_traj_split = (
|
|
@@ -2586,6 +2634,7 @@ class MolecularDynamicsResults(ThermodynamicsResults):
|
|
|
2586
2634
|
n_prune = int(universe.trajectory.n_frames / len(archive.run[-1].system))
|
|
2587
2635
|
rdf_results = calc_molecular_rdf(
|
|
2588
2636
|
universe,
|
|
2637
|
+
bead_groups,
|
|
2589
2638
|
n_traj_split=n_traj_split,
|
|
2590
2639
|
n_prune=n_prune,
|
|
2591
2640
|
interval_indices=interval_indices,
|
|
@@ -2598,7 +2647,9 @@ class MolecularDynamicsResults(ThermodynamicsResults):
|
|
|
2598
2647
|
|
|
2599
2648
|
# calculate the molecular mean squared displacements
|
|
2600
2649
|
if not self.mean_squared_displacements:
|
|
2601
|
-
msd_results = calc_molecular_mean_squared_displacements(
|
|
2650
|
+
msd_results = calc_molecular_mean_squared_displacements(
|
|
2651
|
+
universe, bead_groups
|
|
2652
|
+
)
|
|
2602
2653
|
if msd_results:
|
|
2603
2654
|
sec_msds = MeanSquaredDisplacement()
|
|
2604
2655
|
sec_msds._msd_results = msd_results
|
|
@@ -2627,7 +2678,7 @@ class MolecularDynamicsResults(ThermodynamicsResults):
|
|
|
2627
2678
|
for rg in rg_results:
|
|
2628
2679
|
n_frames = rg.get('n_frames')
|
|
2629
2680
|
if len(sec_systems) != n_frames:
|
|
2630
|
-
|
|
2681
|
+
logger.warning(
|
|
2631
2682
|
'Mismatch in length of system references in calculation and calculated Rg values.'
|
|
2632
2683
|
'Will not store Rg values under calculation section'
|
|
2633
2684
|
)
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
import numpy as np
|
|
19
|
-
from
|
|
19
|
+
from typing import Optional
|
|
20
20
|
|
|
21
21
|
from nomad.datamodel.data import ArchiveSection
|
|
22
22
|
from nomad.metainfo import SubSection, Section, Quantity, Reference, derived
|
|
@@ -189,7 +189,7 @@ class ThermodynamicsResults(SimulationWorkflowResults):
|
|
|
189
189
|
""",
|
|
190
190
|
cached=True,
|
|
191
191
|
)
|
|
192
|
-
def heat_capacity_c_v_specific(self) ->
|
|
192
|
+
def heat_capacity_c_v_specific(self) -> Optional[np.ndarray]:
|
|
193
193
|
"""Returns the specific heat capacity by dividing the heat capacity per
|
|
194
194
|
cell with the mass of the atoms in the cell.
|
|
195
195
|
"""
|
|
@@ -197,7 +197,7 @@ class ThermodynamicsResults(SimulationWorkflowResults):
|
|
|
197
197
|
|
|
198
198
|
workflow = self.m_parent
|
|
199
199
|
if not workflow._systems or not workflow._systems[0].atoms:
|
|
200
|
-
return
|
|
200
|
+
return None
|
|
201
201
|
atomic_numbers = workflow._systems[0].atoms.species
|
|
202
202
|
mass_per_unit_cell = nomad.atomutils.get_summed_atomic_mass(atomic_numbers)
|
|
203
203
|
heat_capacity = self.heat_capacity_c_v
|
|
@@ -223,12 +223,14 @@ class ThermodynamicsResults(SimulationWorkflowResults):
|
|
|
223
223
|
""",
|
|
224
224
|
cached=True,
|
|
225
225
|
)
|
|
226
|
-
def vibrational_free_energy_at_constant_volume_specific(
|
|
226
|
+
def vibrational_free_energy_at_constant_volume_specific(
|
|
227
|
+
self,
|
|
228
|
+
) -> Optional[np.ndarray]:
|
|
227
229
|
import nomad.atomutils
|
|
228
230
|
|
|
229
231
|
workflow = self.m_parent
|
|
230
232
|
if not workflow._systems or not workflow._systems[0].atoms:
|
|
231
|
-
return
|
|
233
|
+
return None
|
|
232
234
|
atomic_numbers = workflow._systems[0].atoms.species
|
|
233
235
|
mass_per_unit_cell = nomad.atomutils.get_summed_atomic_mass(atomic_numbers)
|
|
234
236
|
free_energy = self.vibrational_free_energy_at_constant_volume
|
|
@@ -82,6 +82,8 @@ def test_single_point_workflow():
|
|
|
82
82
|
assert sec_workflow.results.is_converged
|
|
83
83
|
|
|
84
84
|
|
|
85
|
+
# TODO do not skip nomad-lab>=3.15
|
|
86
|
+
@pytest.mark.skip
|
|
85
87
|
def test_gw_workflow(gw_workflow):
|
|
86
88
|
"""Testing GW workflow (DFT+GW) entry"""
|
|
87
89
|
workflow = gw_workflow.workflow2
|
|
@@ -106,6 +108,8 @@ def test_gw_workflow(gw_workflow):
|
|
|
106
108
|
assert results.properties.electronic.dos_electronic_new[1].label == 'GW'
|
|
107
109
|
|
|
108
110
|
|
|
111
|
+
# TODO do not skip nomad-lab>=3.15
|
|
112
|
+
@pytest.mark.skip
|
|
109
113
|
def test_dmft_workflow(dmft_workflow):
|
|
110
114
|
"""Testing DMFT workflow entry"""
|
|
111
115
|
workflow = dmft_workflow.workflow2
|
|
@@ -136,6 +140,8 @@ def test_dmft_workflow(dmft_workflow):
|
|
|
136
140
|
# assert results.m_xpath('properties.electronic.greens_function_electronic')
|
|
137
141
|
|
|
138
142
|
|
|
143
|
+
# TODO do not skip nomad-lab>=3.15
|
|
144
|
+
@pytest.mark.skip
|
|
139
145
|
def test_maxent_workflow(maxent_workflow):
|
|
140
146
|
"""Testing MaxEnt workflow entry"""
|
|
141
147
|
workflow = maxent_workflow.workflow2
|
|
@@ -201,6 +207,8 @@ def test_bse_workflow(bse_workflow):
|
|
|
201
207
|
assert spectra[0].provenance != spectra[1].provenance
|
|
202
208
|
|
|
203
209
|
|
|
210
|
+
# TODO do not skip nomad-lab>=3.15
|
|
211
|
+
@pytest.mark.skip
|
|
204
212
|
def test_xs_workflow(xs_workflow):
|
|
205
213
|
"""Testing XS workflow (DFT+BSEworkflow) entry"""
|
|
206
214
|
workflow = xs_workflow.workflow2
|
|
File without changes
|
|
File without changes
|