PyTASER
PyTASER: Simulating transient absorption spectroscopy (TAS) for crystals from first principles - Published in JOSS (2024)
Science Score: 100.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
3 of 7 committers (42.9%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Keywords from Contributors
Scientific Fields
Repository
Python package to simulate differential absorption spectra of crystals from first principles
Basic Info
- Host: GitHub
- Owner: WMD-group
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://pytaser.readthedocs.io/en/latest/
- Size: 146 MB
Statistics
- Stars: 31
- Watchers: 22
- Forks: 6
- Open Issues: 1
- Releases: 15
Topics
Metadata Files
README.md
PyTASER
PyTASER is a Python library for simulating differential absorption spectra in compounds using
quantum chemical calculations, including transient (TAS) and differential (DAS) absorption spectroscopies.
The goal of this library is to simulate spectra for comparison with and interpretation of experiments. The main features include:
- Transient (TAS) and differential (DAS) absorption spectra for insulating and semiconducting crystals (using pre-calculated DFT, or database calculations)
- Spectra for different temperature and carrier density conditions
- Separation of spectral contributions from individual band-to-band transitions
- Integration with the Materials Project database, allowing support for non-locally calculated materials
- Ability to produce publication-ready figures, with flexibility in plotting.
PyTASER is designed for users with moderate experience in computational methods and optical techniques, enabled by the following features:
- Use of Python as the programming language (due to its low entry barrier, flexibility and popularity in the materials modelling field)
- Documentation and easy-to-follow workflows with complete unit-test coverage.
- Interfaced with the popular materials analysis package
pymatgen. - Currently compatible with VASP, while support for other electronic structure codes is planned – if you have a specific request, please open an issue!
Background
TAS is a powerful pump-probe tool to characterise the excited states of materials, while DAS can be used to represent how changes in a system affects its ground-state optical absorption spectra. These techniques can be used to understand microscopic processes in photochemical and electrochemical transformations, including phenomena such as electron trapping and carrier recombination.
The drawback is that TAS spectra are difficult to interpret, especially for crystals where the specific valence and conduction band structure can give rise to complex features. Our goal here is to predict TAS features from first-principles starting from the most simple models of static excitations through to the kinetics of relaxation of the excited state back to the ground state.
To achieve this, PyTASER identifies the allowed vertical optical transitions between electronic bands of the material to determine possible excitations that can occur from the ground 'dark' and excited 'light' electronic states. This is done by calculating the effective absorption in each state - this is a product of the joint density of states (JDOS) and the transition probability for each band transition, both of which are based on post-processing ground state DFT calculations. Once calculated, PyTASER compares changes in electronic transitions between the dark and light states, as demonstrated in the figure below.
Schematics of the ground and excited state electronic structures and optical profiles. The ground 'dark' state is at the top, showing full occupancy and unoccupancy (blue, orange) for the conduction and valence bands respectively. The excited 'light' state shows partial occupancy in a similar plot at the bottom. The overall DA plot is displayed to the right, the difference between the dark and light effective absorption plots.
More details on the theory behind TAS can be found in the JOSS paper.
Installation
To install the module with pip (recommended):
pip install pytaser
To install directly from the git repository:
pip install git+https://github.com/WMD-group/PyTASER
Alternatively python setup.py install can also be used.
PyTASER is compatible with Python 3.9+ and relies on a number of open-source packages, specifically:
- pymatgen
- numpy, scipy for data structures and unit conversion
- matplotlib for plotting the spectra
Developer’s installation (optional)
For development work, PyTASER can also be installed from a copy of the source directory:
Download PyTASER source code using the command:
git clone https://github.com/WMD-group/PyTASER
Navigate to root directory:
cd PyTASER
Install the code with the command:
pip install -e .
This command tries to obtain the required packages and their dependencies and install them automatically.
Visualisation
The recommended approach is to use PyTASER within an interactive python environment (such as a Jupyter Notebook), as shown in the tutorials on the docs and the examples folder.
Alternatively, you can use PyTASER through python scripts (e.g. with python <filename.py>).
If using your own, locally calculated data, please follow this workflow. Otherwise, use the MP-integrated workflow here.
Contributing
We appreciate any contributions in the form of a pull request. Please see the Contributing documentation for more details.
Additional analysis/example spectra performed with PyTASER would be welcomed.
Please feel free to reach out to us via the Issue Tracker if there are any questions or suggestions.
Testing
Unit tests are in the tests directory and can be run from the top directory using pytest. Automatic testing is run on the master and develop branches using Github Actions.
Please run tests and add new tests for any new features whenever submitting pull requests.
Future Work
Future topics we plan to build on:
- Incorporating finite-temperature effects (particularly for indirect band-to-band transitions)
- Direct treatment of pump-probe time delay and relaxation kinetics
- Incorporating spin-flip processes for spin-polarised systems
- Description of defective crystals
Acknowledgements
The project has been developed by @savya10, @kavanase, @LucasGVerga and @youngwonwoo, under the supervision of @utf and @aronwalsh.
Owner
- Name: Materials Design Group
- Login: WMD-group
- Kind: organization
- Location: London
- Website: https://wmd-group.github.io
- Repositories: 57
- Profile: https://github.com/WMD-group
Research group in computational chemistry & physics led by @aronwalsh at @ImperialCollegeLondon
JOSS Publication
PyTASER: Simulating transient absorption spectroscopy (TAS) for crystals from first principles
Authors
Thomas Young Centre and Department of Materials, Imperial College London, London, United Kingdom, Thomas Young Centre and Department of Chemistry, University College London, London, United Kingdom
Thomas Young Centre and Department of Materials, Imperial College London, London, United Kingdom, Thomas Young Centre and Department of Chemistry, University College London, London, United Kingdom
Thomas Young Centre and Department of Materials, Imperial College London, London, United Kingdom, Department of Materials Science and Engineering, Yonsei University, Seoul, Korea
Tags
materials science first-principles optics differential-absorption spectroscopy density functional theoryCitation (CITATION.cff)
cff-version: "1.2.0"
authors:
- family-names: Aggarwal
given-names: Savyasanchi
orcid: "https://orcid.org/0009-0007-7128-3465"
- family-names: Kavanagh
given-names: Seán R.
orcid: "https://orcid.org/0000-0003-4577-9647"
- family-names: Woo
given-names: Young Won
- family-names: Verga
given-names: Lucas G.
orcid: "https://orcid.org/0000-0002-7453-238X"
- family-names: Ganose
given-names: Alex M.
orcid: "https://orcid.org/0000-0002-4486-3321"
- family-names: Walsh
given-names: Aron
orcid: "https://orcid.org/0000-0001-5460-7033"
contact:
- family-names: Walsh
given-names: Aron
orcid: "https://orcid.org/0000-0001-5460-7033"
doi: 10.5281/zenodo.10634762
message: If you use this software, please cite our article in the
Journal of Open Source Software.
preferred-citation:
authors:
- family-names: Aggarwal
given-names: Savyasanchi
orcid: "https://orcid.org/0009-0007-7128-3465"
- family-names: Kavanagh
given-names: Seán R.
orcid: "https://orcid.org/0000-0003-4577-9647"
- family-names: Woo
given-names: Young Won
- family-names: Verga
given-names: Lucas G.
orcid: "https://orcid.org/0000-0002-7453-238X"
- family-names: Ganose
given-names: Alex M.
orcid: "https://orcid.org/0000-0002-4486-3321"
- family-names: Walsh
given-names: Aron
orcid: "https://orcid.org/0000-0001-5460-7033"
date-published: 2024-02-14
doi: 10.21105/joss.05999
issn: 2475-9066
issue: 94
journal: Journal of Open Source Software
publisher:
name: Open Journals
start: 5999
title: "PyTASER: Simulating transient absorption spectroscopy (TAS)
for crystals from first principles"
type: article
url: "https://joss.theoj.org/papers/10.21105/joss.05999"
volume: 9
title: "PyTASER: Simulating transient absorption spectroscopy (TAS) for
crystals from first principles"
GitHub Events
Total
- Create event: 2
- Release event: 1
- Issues event: 2
- Watch event: 5
- Delete event: 1
- Issue comment event: 3
- Push event: 13
- Pull request event: 2
- Fork event: 2
Last Year
- Create event: 2
- Release event: 1
- Issues event: 2
- Watch event: 5
- Delete event: 1
- Issue comment event: 3
- Push event: 13
- Pull request event: 2
- Fork event: 2
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Sean Kavanagh | s****9@i****k | 235 |
| savya10 | s****8@i****k | 164 |
| Lucas Garcia Verga | l****a@g****m | 31 |
| Aron Walsh | a****h@g****m | 24 |
| Alex Ganose | a****e@g****m | 11 |
| Young Won Woo | 4****o | 10 |
| Lucas Verga | l****a@d****k | 3 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 28
- Total pull requests: 37
- Average time to close issues: 2 months
- Average time to close pull requests: 9 days
- Total issue authors: 4
- Total pull request authors: 6
- Average comments per issue: 1.57
- Average comments per pull request: 0.97
- Merged pull requests: 33
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 1
- Average time to close issues: 13 days
- Average time to close pull requests: 2 days
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 3.0
- Average comments per pull request: 2.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- utf (21)
- savya10 (4)
- kavanase (2)
- Makonede (1)
Pull Request Authors
- LucasGVerga (12)
- youngwonwoo (7)
- kavanase (7)
- savya10 (6)
- utf (5)
- aronwalsh (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- readthedocs-sphinx-search ==0.1.1
- sphinx ==4.2.0
- sphinx-autobuild *
- sphinx_copybutton *
- sphinx_minipres *
- sphinx_rtd_theme ==1.0.0
- sphinx_tabs *
- sphinx_togglebutton *
- sphinx_toggleprompt *
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v1 composite
- actions/create-release v1 composite
- actions/setup-python v1 composite
- pypa/gh-action-pypi-publish release/v1 composite
- matplotlib >=3.7.1
- monty *
- numpy *
- pathlib *
- pymatgen >=2023.05.31
- pytest >=7.1.3
- pytest-mpl *
- scipy *
- matplotlib >=3.7.1
- mp-api >=0.35
- numpy *
- pymatgen >=2023.05.31
- scipy *
