Skip to main content

Simulate InSAR tropospheric noise

Project description

troposim

Simulate tropospheric noise for InSAR data

Installation

pip install troposim

To make an editable installation

git clone https://github.com/scottstanie/troposim && cd troposim
pip install -e .

Usage

To simulate one turbulence image, you can specify the shape:

from troposim import turbulence
noise = turbulence.simulate(shape=(500, 500))

or add a 3rd dimension to simulate a stack of images

noise = turbulence.simulate(shape=(10, 500, 500))

The beta argument is the slope of the log10(power) vs log10(frequency) graph. The default is to use a single linear slope of $\beta = 8 / 3$:

$$ P(f) \propto \frac{1}{f^\beta} $$

For smaller-scale turbulence, you can use a different beta:

flatter_noise = turbulence.simulate(beta=2.2)

Since real InSAR data typically have a power spectrum that is not a single slope, you can estimate the spectrum from an image and use that to simulate new data:

from troposim.turbulence import Psd
psd = Psd.from_image(noise)
new_noise = psd.simulate()

Here the psd object has attributes

  • p0: the power at the reference frequency freq0
  • beta: a numpy Polynomial which was fit to the log-log PSD along with psd1d, which are the radially averaged spectrum values at the psd.freq frequencies. You can see these with the .plot() method.
# assuming maptlotlib is installed
psd.plot()

# Or, to plot a side-by-side of image and 1D PSD
from troposim import plotting 
plotting.plot_psd(noise, freq=freq, psd1d=psd1d)
# Or just the PSD plot, no image
plotting.plot_psd1d(psd.freq, psd.psd1d)

To simulate a stack of new values from the PSD of one image, you simply pass in a new shape argument to .simulate:

psd.simulate(shape=(10, 400, 400))

Note that the default fit will use a cubic polynomial. To request only a linear fit,

psd = Psd.from_image(noise, deg=1)

You can also save the PSD parameters for later use:

psd.save(outfile="my_psd.npz")
# Later, reload from this file
psd = Psd.load(outfile)

Citation

If you find this library useful, please consider citing our paper:

Staniewicz, S., & Chen, J. (2025). Automatic detection of InSAR deformation and tropospheric noise features using computer vision: A case study over West Texas. Journal of Geophysical Research: Solid Earth, 130(7), e2024JB029614.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

troposim-0.2.0.tar.gz (47.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

troposim-0.2.0-py2.py3-none-any.whl (49.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file troposim-0.2.0.tar.gz.

File metadata

  • Download URL: troposim-0.2.0.tar.gz
  • Upload date:
  • Size: 47.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for troposim-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b77797db9b044db2e4d0db07650fda2df58cd089994ddd9e05b4cd8a88edacba
MD5 b51c9a20128135150abbc6586a03e701
BLAKE2b-256 99b63613baee353559533a9b93291e0a44ce4c7e31ba812474a0376a209dca69

See more details on using hashes here.

File details

Details for the file troposim-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: troposim-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 49.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for troposim-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 93d5b11fb3642ec0f6511b0385f15770fbfaf55cb3639fae51a99d6bcfe52e82
MD5 ea2960cada5705277d0088d09f17c8d2
BLAKE2b-256 01ca4e0fdf9ca4bb460fdf76764fb8d6875c69ff7a5033bf8363011b070517a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page