{"id":21973397,"url":"https://github.com/mineralscloud/qha","last_synced_at":"2025-04-08T03:09:59.406Z","repository":{"id":54198687,"uuid":"130927371","full_name":"MineralsCloud/qha","owner":"MineralsCloud","description":"A Python package for calculating thermodynamic properties under quasi-harmonic approximation, using data from ab-initio calculations","archived":false,"fork":false,"pushed_at":"2025-02-07T22:52:28.000Z","size":3197,"stargazers_count":30,"open_issues_count":7,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T16:14:12.610Z","etag":null,"topics":["ab-initio","phonon","python3","quasi-harmonic-approximation","scientific-computing","thermodynamic-properties"],"latest_commit_sha":null,"homepage":"https://mineralscloud.github.io/qha/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MineralsCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATIONS.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-25T00:07:27.000Z","updated_at":"2025-03-11T17:57:53.000Z","dependencies_parsed_at":"2023-01-20T16:28:36.213Z","dependency_job_id":"662257d8-ff2e-4c3d-b006-dd5df0391abd","html_url":"https://github.com/MineralsCloud/qha","commit_stats":{"total_commits":357,"total_committers":9,"mean_commits":"39.666666666666664","dds":"0.22969187675070024","last_synced_commit":"3e7edde0e237c8a282bcbb2b6c224f88bff3a1e6"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MineralsCloud%2Fqha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MineralsCloud%2Fqha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MineralsCloud%2Fqha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MineralsCloud%2Fqha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MineralsCloud","download_url":"https://codeload.github.com/MineralsCloud/qha/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767236,"owners_count":20992548,"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","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":["ab-initio","phonon","python3","quasi-harmonic-approximation","scientific-computing","thermodynamic-properties"],"created_at":"2024-11-29T15:26:58.190Z","updated_at":"2025-04-08T03:09:59.374Z","avatar_url":"https://github.com/MineralsCloud.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qha: A Powerful Python toolkit for quasi-harmonic approximation\n\n[TOC]\n\n[![Stable docs](https://img.shields.io/badge/docs-stable-blue.svg)](https://mineralscloud.github.io/qha/)\n[![Build Status](https://travis-ci.com/MineralsCloud/qha.svg?branch=master)](https://travis-ci.com/MineralsCloud/qha)\n[![PyPI Downloads](https://static.pepy.tech/badge/qha)](https://pepy.tech/projects/qha)\n\n## Contributors\n\nThis repository is now maintained by [Qi Zhang](mailto:qz2280@columbia.edu). Thanks to the contribution from [Chenxing Luo](https://github.com/chazeon).\n\n## How to cite\n\nThe associated paper is published on [Computer Physics Communications](https://www.sciencedirect.com/science/article/pii/S0010465518303953?via%3Dihub).\n\nPlease cite this article as: T. Qin, Q. Zhang, R.M. Wentzcovitch et al., qha: A Python package for quasiharmonic free energy calculation for multi-configuration systems, Computer Physics Communications (2018), https://doi.org/10.1016/j.cpc.2018.11.003.\n\n## Quick start: installation\n\n### Python environment\n\n`qha` is written in Python, and can be installed from [Python package index (PyPI)](https://pypi.org/search/?q=qha) or local source files.\n\nPython 3 can be downloaded from its official [website](https://www.python.org/) for systems including Windows, macOS, and Linux,\nplease check more details on [Python 3 documentation](https://docs.python.org/3/using/index.html).\n\nTo install `qha`, currently, Python 3.6.x distributions are recommended.\n\n### Where to get it\n\nBinary installers for the latest released version are available at the PyPI.\n\n```shell\n# use PyPI\n$ pip install qha\n```\n\n### Dependencies\n\n- [mpmath](https://mpmath.org/)\n- [lazy-property](https://github.com/jackmaney/lazy-property)\n- [matplotlib](https://matplotlib.org)\n- [Numba](http://numba.pydata.org)\n- [NumPy](http://www.numpy.org)\n- [pandas](https://pandas.pydata.org)\n- [PyYAML](http://pyyaml.org)\n- [scientific-string](https://github.com/singularitti/scientific-string)\n- [SciPy](https://www.scipy.org)\n- [text-stream](https://github.com/singularitti/text-stream)\n\n### Installation from sources\n\nThe source code is currently hosted on [GitHub](https://github.com/MineralsCloud/qha). Please go to [the “releases” page](https://github.com/MineralsCloud/qha/releases) to download the tagged releases. Unzip the downloaded sources, go to the top-level directory (e.g., `/path/to/repo/qha`), run\n\n```shell\n$ pip install .\n```\n\nNotice that you have to use Python version \u003e 3.6.x to install. If you want to install `qha` in development mode, instead run\n\n```shell\n$ pip install -e .\n```\n\n## Checking the examples\n\nTo run the examples, go to `examples/ice VII/` or `examples/silicon/` directories and type in terminal:\n\n```shell\n$ qha run /path/to/settings.yaml\n```\n\nIf you want to plot your results, in the same folder, run\n\n```shell\n$ qha plot /path/to/settings.yaml\n```\n\n## Structure of the `qha` package\n\nThe `qha` source code consists of three major parts.\n\n1. `./qha` directory contains all the source code.\n\n2. `./examples` directory contains two examples, `./examples/silicon` is the example for single-configuration calculation, `./examples/ice VII` is the example for multi-configuration calculation.\n\nThe brief of the organization of these directories follows as below:\n\n### The main folder `./`\n\nThis main folder contains three folders, license file, readme file, and setup file.\n\n`LICENSE.txt`: The license file attached with the `qha` code;\n\n`README.md`: Readme file of the code, it would be better to view it in a [Markdown](https://en.wikipedia.org/wiki/Markdown) editor, e.g., [Typora](https://typora.io);\n\n`setup.py`: setup file needed for installation of the `qha` Python package.\n\n#### The `./qha/` folder\n\n`qha/__init__.py`: Tells Python interpreter that this is a Python package;\n\n`qha/calculator.py`: Perform single-, multi-configuration calculations, one of the most crucial modules in this code;\n\n`qha/fitting.py`: Perform the Birch—Murnaghan (BM) equation-of-state (EOS) fitting;\n\n`qha/grid_interpolation.py`: Find the most suitable volume grid to perform the BM EOS fitting;\n\n`qha/plotting.py`: A simple module to plot the calculated physical properties;\n\n`qha/settings.py`: Define some computational settings for the calculation;\n\n`qha/single_configuration.py`: Calculate the Helmholtz free energy for a single-configuration system;\n\n`qha/statmech.py`: Define some useful statistical mechanics functions;\n\n`qha/thermodynamics.py`: Derive the internal energy($U$), enthalpy($H$), and Gibbs free energy ($G$) from the calculated Helmholtz free energy ($F$) via basic thermodynamics relationship;\n\n`qha/tools.py`: Define some miscellaneous functions used in the code, e.g., function used to perform Lagrange interpolation;\n\n`qha/type_aliases.py`: Define some types for annotation in the code;\n\n`qha/unit_conversion.py`: A module to convert units used in the calculation;\n\n`qha/v2p.py`: Contain the function `v2p` used to convert calculated properties on $(T, V)$ grid to $(T, P)$ grid;\n\n`qha/input_maker.py`: Generate the input file for `qha` from results obtained from _ab initio_ calculation;\n\n`qha/out.py`: Functions used to write calculated properties into files.\n\n##### The `./qha/readers` folder\n\n`qha/readers/__init__.py`\n\n`qha/readers/read_input.py`: This module is used to read the input file.\n\n##### The `./qha/cli` folder\n\nThis folder contains files used for the command-line interface.\n\n`qha/cli/__init__.py`\n\n`qha/cli/converter.py`\n\n`qha/cli/handler.py`\n\n`qha/cli/parser.py`\n\n`qha/cli/plotter.py`\n\n`qha/cli/runner.py`\n\n##### The `./qha/multi_configurations` folder\n\nThis folder contains files to calculate Helmholtz free energy for the multi-configuration system.\n\n`qha/multi_configurations/__init__.py`\n\n`qha/multi_configurations/different_phonon_dos.py`: Work with `qha/calculator.py` to calculate Helmholtz free energy for the multi-configuration system with different phonon density of states (VDOS) for each configuration;\n\n`qha/multi_configurations/same_phonon_dos.py`: Work with `qha/calculator.py` to calculate Helmholtz free energy for multi-configuration system with the same VDOS for all configurations.\n\n##### The `./qha/tests` folder\n\nthis folder contains unit test files\n\n`qha/tests/__init__.py`\n\n`qha/tests/test_overall_run.py`\n\n`qha/tests/test_read_input.py`\n\n`qha/tests/test_samevdos_overall.py`\n\n`qha/tests/test_single_configuration.py`\n\n`qha/tests/test_unit_conversion.py`\n\n#### The `./examples/` folder\n\nThis folder contains two examples for demonstration purpose.\n\n##### The `./examples/silicon` folder\n\nThis folder conations an example to perform the single-configuration calculation. Also, an example to generate the input file for the `qha` code is included, check `examples/silicon/make_input/README` for details;\n\n`examples/silicon/input`: The input file for `qha`;\n\n`examples/silicon/settings.yaml`: This file is the computational settings file.\n\n##### The `./examples/ice VII` folder\n\n`examples/ice VII/input_01` : `input_01` through `input_52` are the input files of 52 distinguish configurations;\n`examples/ice VII/input_02`\n`examples/ice VII/input_03`\n`…`\n`examples/ice VII/input_52`\n\n`examples/ice VII/settings.yaml`: This file is the computational settings file, see our online [tutorial](https://mineralscloud.github.io/qha/tutorials/index.html) for more details.\n\n## License\n\n[GNU General Public License v3](./LICENSE.txt)\n\n## Documentation\n\nThe official documentation is hosted on our [GitHub page](https://mineralscloud.github.io/qha/).\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/MineralsCloud/qha.svg?variant=adaptive)](https://starchart.cc/MineralsCloud/qha)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmineralscloud%2Fqha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmineralscloud%2Fqha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmineralscloud%2Fqha/lists"}