THzTools
THzTools: data analysis software for terahertz time-domain spectroscopy - 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 13 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
✓Committers with academic emails
1 of 10 committers (10.0%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Repository
Tools for terahertz time-domain spectroscopy (THz-TDS)
Basic Info
- Host: GitHub
- Owner: dodge-research-group
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://dodge-research-group.github.io/thztools/
- Size: 91.4 MB
Statistics
- Stars: 19
- Watchers: 2
- Forks: 11
- Open Issues: 3
- Releases: 19
Topics
Metadata Files
README.md
THzTools is an open-source Python package for data analysis in terahertz time-domain spectroscopy (THz-TDS). As the name suggests, THz-TDS involves measurements of terahertz-frequency electromagnetic waveforms that are acquired as a function of time, which users typically represent as a function of frequency for analysis. THzTools makes it easier for researchers to use statistically optimal methods for doing this analysis, as described in L. Mohtashemi et al., Opt. Express 29, 4912 (2021).
This is beta software that is currently under development.
| Information | Links |
|:------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Project |
|
| Build |
|
| Documentation | https://dodge-research-group.github.io/thztools/ |
| Cite | L. Mohtashemi et al., Opt. Express 29, 4912 (2021). (DOI) |
The original MATLAB code is available at Zenodo.
Installation
You can install THzTools with pip:
shell
pip install thztools
THzTools is also available through conda-forge:
shell
conda install -c conda-forge thztools
See the Getting started tutorial for additional information.
Usage
In the conventional approach to THz-TDS analysis, one transforms
the time-domain measurements into the frequency domain for further analysis.
This approach has well-known problems, however, which can be resolved by
using a maximum-likelihood estimation procedure in the time
domain. To support this mode of analysis, the THzTools
package provides functionality and documentation that are unavailable in
existing THz-TDS analysis software. It provides functions to simulate THz-TDS
measurements (eg, timebase
and wave),
apply a frequency response function to a THz-TDS waveform (apply_frf),
characterize the noise of a THz-TDS system (noisefit),
and fit a parameterized frequency response function to a pair of input and
output waveforms (fit).
With THzTools, you can: - Simulate a terahertz waveform - Simulate realistic time-domain noise for a waveform - Apply a frequency response function (FRF) to a time-domain waveform - Rescale and shift a waveform - Estimate time-domain system noise parameters from a set of measured waveforms - Fit a parameterized FRF to a pair of time-domain waveforms
For example, the following code creates an ideal waveform and applies a frequency response function to it.
```python import numpy as np import thztools as thz
Set the waveform parameters
n = 256 # Number of samples dt = 0.05 # Sampling time [ps] a = 0.5 # Scale factor eta = 1.0 # Delay [ps]
Simulate the waveform
t = thz.timebase(n, dt=dt) mu = thz.wave(n, dt=dt)
Define a frequency response function
def frfun(omega, _a, _eta): return _a * np.exp(-1j * omega * _eta)
Apply the frequency response function to the waveform
psi = thz.apply_frf(frfun, mu, dt=dt, args=(a, eta)) ```
Related software
Below is a list of other software projects that address related tasks in THz-TDS analysis, with summaries taken from the project documentation. - https://github.com/THzbiophotonics/Fit-TDS - "Python code aiming at the retrieving of material parameter from a TeraHertz time domain spectroscopy (TDS) measurements from a fit in the time domain." - https://github.com/puls-lab/phoeniks - "A free and open-source (FOSS) Python class to extract the refractive index and absorption coefficient from time traces of a THz Time Domain Spectrometer (THz-TDS)." - https://github.com/dotTHzTAG/CaTSper - "The CaTSper tool extracts the frequency-dependent optical constants from terahertz time-domain waveforms." (uses MATLAB) - https://github.com/YaleTHz/nelly - "Nelly is a package for extracing refractice indices and conductivities from time-domain terahertz spectroscopy data." (uses MATLAB)
Citation
If you use THzTools, please consider citing the Optics Express paper that describes the maximum-likelihood methodology and/or the Journal of Open Source Software (JOSS) paper that describes the software.
Optics Express
@article{Mohtashemi2021,
author = {Laleh Mohtashemi and Paul Westlund and Derek G. Sahota and
Graham B. Lea and Ian Bushfield and Payam Mousavi and J. Steven Dodge},
journal = {Opt. Express},
number = {4},
pages = {4912--4926},
publisher = {Optica Publishing Group},
title = {Maximum-likelihood parameter estimation in terahertz time-domain
spectroscopy},
volume = {29},
month = {Feb},
year = {2021},
url = {https://doi.org/10.1364/OE.417724},
doi = {10.1364/OE.417724},
}
JOSS
@article{loaiza2024,
title = {{{THzTools}}: Data Analysis Software for Terahertz Time-Domain Spectroscopy},
shorttitle = {{{THzTools}}},
author = {Loaiza, Jonathan Posada and {Higuera-Quintero}, Santiago and Noori, Alireza and Mohtashemi, Laleh and Hall, R. P. and Yimam, Naod Ayalew and Dodge, J. Steven},
year = {2024},
journal = {Journal of Open Source Software},
volume = {9},
number = {104},
pages = {7542},
doi = {10.21105/joss.07542}
}
Owner
- Name: Dodge Research Group
- Login: dodge-research-group
- Kind: organization
- Location: Canada
- Website: https://www.sfu.ca/lux/
- Repositories: 1
- Profile: https://github.com/dodge-research-group
The Dodge Lab @ SFU, Time-Resolved Optical Spectroscopy of Quantum Materials
JOSS Publication
THzTools: data analysis software for terahertz time-domain spectroscopy
Authors
Tags
terahertz spectroscopy time-domain spectroscopy data analysis parameter estimation maximum-likelihood analysisCitation (CITATION.cff)
cff-version: "1.2.0"
authors:
- family-names: Loaiza
given-names: Jonathan Posada
orcid: "https://orcid.org/0009-0004-4443-6161"
- family-names: Higuera-Quintero
given-names: Santiago
orcid: "https://orcid.org/0000-0001-6905-4662"
- family-names: Noori
given-names: Alireza
orcid: "https://orcid.org/0009-0009-1091-0802"
- family-names: Mohtashemi
given-names: Laleh
orcid: "https://orcid.org/0000-0002-2706-857X"
- family-names: Hall
given-names: R. P.
orcid: "https://orcid.org/0009-0004-1137-3651"
- family-names: Yimam
given-names: Naod Ayalew
orcid: "https://orcid.org/0009-0007-7522-5027"
- family-names: Dodge
given-names: J. Steven
orcid: "https://orcid.org/0000-0003-3219-7314"
contact:
- family-names: Dodge
given-names: J. Steven
orcid: "https://orcid.org/0000-0003-3219-7314"
doi: 10.5281/zenodo.14188761
message: If you use this software, please cite our article in the
Journal of Open Source Software.
preferred-citation:
authors:
- family-names: Loaiza
given-names: Jonathan Posada
orcid: "https://orcid.org/0009-0004-4443-6161"
- family-names: Higuera-Quintero
given-names: Santiago
orcid: "https://orcid.org/0000-0001-6905-4662"
- family-names: Noori
given-names: Alireza
orcid: "https://orcid.org/0009-0009-1091-0802"
- family-names: Mohtashemi
given-names: Laleh
orcid: "https://orcid.org/0000-0002-2706-857X"
- family-names: Hall
given-names: R. P.
orcid: "https://orcid.org/0009-0004-1137-3651"
- family-names: Yimam
given-names: Naod Ayalew
orcid: "https://orcid.org/0009-0007-7522-5027"
- family-names: Dodge
given-names: J. Steven
orcid: "https://orcid.org/0000-0003-3219-7314"
date-published: 2024-12-02
doi: 10.21105/joss.07542
issn: 2475-9066
issue: 104
journal: Journal of Open Source Software
publisher:
name: Open Journals
start: 7542
title: "THzTools: data analysis software for terahertz time-domain
spectroscopy"
type: article
url: "https://joss.theoj.org/papers/10.21105/joss.07542"
volume: 9
title: "THzTools: data analysis software for terahertz time-domain
spectroscopy"
GitHub Events
Total
- Create event: 3
- Release event: 3
- Issues event: 6
- Watch event: 10
- Issue comment event: 7
- Push event: 44
- Pull request review comment event: 2
- Pull request review event: 17
- Pull request event: 27
- Fork event: 11
Last Year
- Create event: 3
- Release event: 3
- Issues event: 6
- Watch event: 10
- Issue comment event: 7
- Push event: 44
- Pull request review comment event: 2
- Pull request review event: 17
- Pull request event: 27
- Fork event: 11
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| jsdodge | 4****e | 613 |
| jonathan Posada Loaiza | j****6@s****a | 59 |
| jonathan.posada1 | j****1@u****o | 36 |
| Santiago Higuera Quintero | s****4@s****a | 28 |
| jonathanpl20 | 1****0 | 21 |
| Naod Yimam | 5****2@u****a | 21 |
| Randon Hall | r****4@s****a | 19 |
| Alireza | a****3@s****a | 9 |
| “Roboboy2000” | “****0@g****” | 5 |
| Leya | l****y@s****a | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 18
- Total pull requests: 60
- Average time to close issues: 12 days
- Average time to close pull requests: 3 days
- Total issue authors: 3
- Total pull request authors: 8
- Average comments per issue: 0.44
- Average comments per pull request: 0.28
- Merged pull requests: 54
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 6
- Pull requests: 22
- Average time to close issues: 5 days
- Average time to close pull requests: 9 days
- Issue authors: 2
- Pull request authors: 8
- Average comments per issue: 0.5
- Average comments per pull request: 0.18
- Merged pull requests: 20
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- jsdodge (13)
- frank1010111 (4)
- Roboboy2000 (2)
- Rab912 (1)
Pull Request Authors
- jsdodge (62)
- AugustenFairbairn (5)
- cmhchan (4)
- KaiBlomquist (2)
- Rab912 (2)
- Alejandro-Gutierrez-Physics (2)
- japneet-sandhu (2)
- Roboboy2000 (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 59 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 32
- Total maintainers: 1
pypi.org: thztools
Data analysis software tools for terahertz time-domain spectroscopy (THz-TDS)
- Documentation: https://dodge-research-group.github.io/thztools/
- License: MIT
-
Latest release: 1.0.5
published over 2 years ago
