THzTools

THzTools: data analysis software for terahertz time-domain spectroscopy - Published in JOSS (2024)

https://github.com/dodge-research-group/thztools

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

condensed-matter-physics data-analysis optics spectroscopy terahertz time-domain
Last synced: 4 months ago · JSON representation ·

Repository

Tools for terahertz time-domain spectroscopy (THz-TDS)

Basic Info
Statistics
  • Stars: 19
  • Watchers: 2
  • Forks: 11
  • Open Issues: 3
  • Releases: 19
Topics
condensed-matter-physics data-analysis optics spectroscopy terahertz time-domain
Created about 3 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

THzTools logo.

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 | Project Status: Active – The project has reached a stable, usable state and is being actively developed. GitHub PyPI - Status PyPI - Version Anaconda-Server Badge PyPI - Python Version Ruff Common Changelog Contributor Covenant DOI pyOpenSci Peer-Reviewed DOI | | Build | GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status codecov | | 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

The Dodge Lab @ SFU, Time-Resolved Optical Spectroscopy of Quantum Materials

JOSS Publication

THzTools: data analysis software for terahertz time-domain spectroscopy
Published
December 02, 2024
Volume 9, Issue 104, Page 7542
Authors
Jonathan Posada Loaiza ORCID
Department of Physics, Simon Fraser University, Canada
Santiago Higuera-Quintero ORCID
Department of Physics, Simon Fraser University, Canada
Alireza Noori ORCID
Department of Physics, Simon Fraser University, Canada
Laleh Mohtashemi ORCID
Department of Physics, Simon Fraser University, Canada
R. P. Hall ORCID
Department of Physics, Simon Fraser University, Canada
Naod Ayalew Yimam ORCID
Department of Physics, Simon Fraser University, Canada
J. Steven Dodge ORCID
Department of Physics, Simon Fraser University, Canada
Editor
Chris Vernon ORCID
Tags
terahertz spectroscopy time-domain spectroscopy data analysis parameter estimation maximum-likelihood analysis

Citation (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

All Time
  • Total Commits: 812
  • Total Committers: 10
  • Avg Commits per committer: 81.2
  • Development Distribution Score (DDS): 0.245
Past Year
  • Commits: 26
  • Committers: 1
  • Avg Commits per committer: 26.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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
enhancement (2) bug (1) documentation (1)
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)

  • Versions: 32
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 59 Last month
Rankings
Dependent packages count: 7.3%
Average: 29.6%
Forks count: 30.5%
Stargazers count: 39.4%
Dependent repos count: 41.1%
Maintainers (1)
Last synced: 4 months ago