{"id":19578591,"url":"https://github.com/materialsproject/mpmorph","last_synced_at":"2025-08-26T07:13:00.505Z","repository":{"id":44673604,"uuid":"54743415","full_name":"materialsproject/mpmorph","owner":"materialsproject","description":"MPmorph is a collection of tools to run and analyze ab-initio molecular dynamics (AIMD) calculations run with VASP, and is currently under development. It relies heavily on tools developed by the Materials Project (pymatgen, custodian, fireworks) and atomate.","archived":false,"fork":false,"pushed_at":"2024-02-28T23:09:53.000Z","size":9777,"stargazers_count":70,"open_issues_count":1,"forks_count":34,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-27T06:35:26.007Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/materialsproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-25T19:39:09.000Z","updated_at":"2025-04-23T06:51:44.000Z","dependencies_parsed_at":"2024-11-11T07:12:13.396Z","dependency_job_id":"f7b26d9b-0c49-41a8-b3b1-007e62f84997","html_url":"https://github.com/materialsproject/mpmorph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/materialsproject/mpmorph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fmpmorph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fmpmorph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fmpmorph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fmpmorph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/materialsproject","download_url":"https://codeload.github.com/materialsproject/mpmorph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fmpmorph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272187739,"owners_count":24888662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T07:12:05.683Z","updated_at":"2025-08-26T07:13:00.484Z","avatar_url":"https://github.com/materialsproject.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MPmorph\n\nMPmorph is a collection of tools to run and analyze ab-initio molecular dynamics (AIMD) calculations run with VASP, \nand is currently under development.\nIt relies heavily on tools developed by the Materials Project ([pymatgen](http://www.pymatgen.org), \n[custodian](https://github.com/materialsproject/custodian), \n[fireworks](https://github.com/materialsproject/fireworks)) and [atomate](https://github.com/hackingmaterials/atomate).\n\nMPmorph provides:\n* Infrastructure for dynamic VASP MD workflows:\n  * Tools to create dynamic MD workflows using atomate\n  * E.g. generation of new MD runs based on the given criterion (currently pressure, for liquid/amorphous phase density estimation)\n* Tools for statistical analysis of:\n  * Static observables:\n    * Radial distribution functions\n    * Coordination numbers\n    * Voronoi analysis\n    * Polyhedra connectivities\n    * Thermodynamic quantities\n  * Diffusion coefficients:  \n    * Robust calculation of diffusion coefficients (D) and activation energies (Q).\n    * Rigorous error analysis for D and Q.\n\n# Installation\n\nBefore installing mpmorph, install the latest version of [pymatgen](http://www.pymatgen.org), \n[custodian](https://github.com/materialsproject/custodian), \n[fireworks](https://github.com/materialsproject/fireworks)) and [atomate](https://github.com/hackingmaterials/atomate)\n\nclone the repository to your computer and install using \n```bash\npython setup.py develop\n```\n\nIf you wish to make amorphous structures, please install [packmol](http://m3g.iqm.unicamp.br/packmol/home.shtml) on your machine and add the following line to your bash profile. \n```bash\nexport PACKMOL_PATH=\"path_to_packmol_executable_here\"\n```\n\n# Using MPmorph\nBefore diving headfirst into mpmorph, one should get familiar with how to run fireworks before jumping into mpmorph. Relevant features of fireworks include setting up a fireworks database, adding workflows to the database, configuring a conda environment for running fireworks on a supercomputer, launching jobs to a workload manager (using qlaunch), and monitoring fireworks jobs. For a quick tutorial, check out [beginner](https://www.youtube.com/watch?v=-MalOMJt34U) and [intermediate](https://www.youtube.com/watch?v=zYA_BbKwVO4) atomate/fireworks tutorials from our 2019 Materials project workshop. \n\nA sample of using mpmorph to run an AIMD simulation at 1500K for 200ps (100k steps at 2fs/step) is shown below:\n\n```python\n\nfrom mpmorph.workflows.converge import get_converge_wf\nfrom pymatgen.ext.matproj import MPRester\n\nfrom fireworks import LaunchPad\n\nmpr = MPRester()\nstructure = mpr.get_structure_by_material_id('mp-1143')\nstructure.make_supercell([3, 3, 3])\n\nwf = get_converge_wf(structure, temperature = 750, target_steps = 100000)\n\nlp = LaunchPad.auto_load()\nlp.add_wf(wf)\n```\n\nTo generate an amorphous structure, run the following code:\n\n```python\nfrom mpmorph.runners.amorphous_maker import get_random_packed\nfrom mpmorph.workflows.converge import get_converge_wf\nfrom fireworks import LaunchPad\n\nstructure = get_random_packed('Li', target_atoms=100)\n\nwf = get_converge_wf(structure, temperature = 5000, target_steps = 10000)\n\nlp = LaunchPad.auto_load()\nlp.add_wf(wf)\n```\n\n## Customizing runs\nAt the simplest level of customizing the workflow, one can change the temperature, total number of steps by changing the args passed to get_converge_wf().\n\nFor more advanced changes, pass a dictionary for \"converge_args\", \"spawner_args\", or \"prod_args\". This allows customization of vasp inputs, starting and ending temperatures, number of steps, and convergence crieteria.\n\n### Examples:\n\nChanging the rescale parameter, to make for larger volume changes at each stage:\n```python\nfrom mpmorph.runners.amorphous_maker import get_random_packed\nfrom mpmorph.workflows.converge import get_converge_wf\nfrom fireworks import LaunchPad\n\nstructure = get_random_packed('Li', target_atoms=100)\n\nspawner_args = {'rescale_params': {'beta': 5e-6}}\nwf = get_converge_wf(structure, temperature = 5000, target_steps = 10000, spawner_args=spawner_args)\n\nlp = LaunchPad.auto_load()\nlp.add_wf(wf)\n```\n\nChanging precision of production runs to PREC=Low:\n```python\nfrom mpmorph.runners.amorphous_maker import get_random_packed\nfrom mpmorph.workflows.converge import get_converge_wf\nfrom fireworks import LaunchPad\n\nstructure = get_random_packed('Li', target_atoms=100)\n\nprod_args = {'optional_fw_params': {'override_default_vasp_params': {'user_incar_settings': {'PREC': 'Normal'}}}}\nwf = get_converge_wf(structure, temperature = 5000, target_steps = 10000, prod_args = prod_args)\n\nlp = LaunchPad.auto_load()\nlp.add_wf(wf)\n```\n\n\n# Citation\n\nIf you use mpmorph, please cite the following papers:\n * Aykol, M., Dwaraknath, S.S., Sun, W. and Persson, K.A., 2018. Thermodynamic limit for synthesis of metastable inorganic materials. Science advances, 4(4), p.eaaq0148.\n * Aykol, M. and Persson, K.A., 2018. Oxidation Protection with Amorphous Surface Oxides: Thermodynamic Insights from Ab Initio Simulations on Aluminum. ACS applied materials \u0026 interfaces, 10(3), pp.3039-3045.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialsproject%2Fmpmorph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterialsproject%2Fmpmorph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialsproject%2Fmpmorph/lists"}