thztools--detached

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

https://github.com/kaiblomquist/thztools--detached

Science Score: 54.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
  • DOI references
    Found 12 DOI reference(s) in README
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.4%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 12 months ago · Last pushed 12 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

  • Login: KaiBlomquist
  • Kind: user

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
Last Year

Dependencies

.github/workflows/draft-pdf.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/publish-to-test-pypi.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/pytest-with-coverage.yml actions
  • actions/checkout v3 composite
  • codecov/codecov-action v3 composite
  • mamba-org/setup-micromamba v1 composite
.github/workflows/sphinx.yml actions
  • pandoc/actions/setup v1 composite
  • sphinx-notes/pages v3 composite
.github/workflows/test-pip.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
docs/requirements.txt pypi
  • IPython *
  • ipykernel *
  • matplotlib *
  • nbsphinx *
  • numpydoc *
  • pydata-sphinx-theme *
  • sphinx *
  • sphinx-design *
  • sphinx-gallery *
  • sphinx-tabs *
  • tomli *
pyproject.toml pypi
  • numpy *
  • scipy *