Basic Utilities for Solar Wind Turbulence
Project description
Power Spectral Density and Smoothing Analysis
This package provides tools for analyzing time-series data using spectral methods, including Fourier and wavelet transforms. It includes functionality for smoothing data, estimating the power spectral density (PSD) for 3D signals, and other utilities for handling spectral data.
Features
-
Data Smoothing:
smooth: A wrapper function for logarithmic smoothing of data based on FFT frequency distributions.smoothing_function: Core function for performing logarithmic window smoothing.
-
Power Spectral Density Estimation:
TracePSD: Computes the PSD using the Fourier transform for 3D signals.trace_PSD_wavelet: Estimates the PSD using the Continuous Wavelet Transform (CWT) with optional Cone of Influence (CoI) consideration.
Installation
Install this package by cloning the repository and using pip:
git clone https://github.com/your-repo/SWTurbPy.git
cd SWTurbPy
pip install .
Dependencies
numpy: For numerical operations and FFT computations.pycwt: For wavelet analysis.numba: For optimizing performance of computationally intensive functions.
Usage
1. Logarithmic Data Smoothing
import numpy as np
from SWTurbPy.SWTurbPy import smooth
# Example data
x = np.fft.rfftfreq(1000, d=0.01)
y = np.random.random(len(x))
# Apply smoothing
xoutmean, yout = smooth(x, y, pad=10)
2. PSD Estimation with FFT
from SWTurbPy.SWTurbPy import TracePSD
# Example data
x = np.sin(np.linspace(0, 10, 1000))
y = np.cos(np.linspace(0, 10, 1000))
z = np.sin(np.linspace(0, 10, 1000)) * 0.5
dt = 0.01 # Sampling time
freqs, B_pow = TracePSD(x, y, z, dt, norm='forward')
3. PSD Estimation with Wavelet Transform
from SWTurbPy.SWTurbPy import trace_PSD_wavelet
# Example data
x = np.sin(np.linspace(0, 10, 1000))
y = np.cos(np.linspace(0, 10, 1000))
z = np.sin(np.linspace(0, 10, 1000)) * 0.5
dt = 0.01 # Sampling time
dj = 0.1 # Scale resolution
db_x, db_y, db_z, freqs, PSD, scales, coi = trace_PSD_wavelet(x, y, z, dt, dj, consider_coi=True)
Function Descriptions
smooth(x, y, pad)
Description: A wrapper for smoothing data based on logarithmic spacing of indices. Assumes x is the output of numpy.fft.rfftfreq.
Parameters:
x(numpy.ndarray): FFT frequency array.y(numpy.ndarray): Data to smooth.pad(int): Controls the density of smoothing intervals.
Returns:
xoutmean(numpy.ndarray): Smoothed x-values.yout(numpy.ndarray): Smoothed y-values.
TracePSD(x, y, z, dt, norm=None)
Description: Estimate the PSD using the Fourier transform for a 3-component signal.
Parameters:
x, y, z(numpy.ndarray): Time series data for each component.dt(float): Sampling time.norm(str, optional): Normalization method for FFT. Options are{'forward', 'backward', 'ortho'}.
Returns:
freqs(numpy.ndarray): Frequencies of the PSD.B_pow(numpy.ndarray): Power spectral density.
trace_PSD_wavelet(x, y, z, dt, dj, consider_coi=True)
Description: Estimate the PSD using wavelet transform for a 3-component signal.
Parameters:
x, y, z(numpy.ndarray): Time series data for each component.dt(float): Sampling time.dj(float): Scale resolution.consider_coi(bool, optional): Whether to exclude regions in the Cone of Influence (CoI).
Returns:
db_x, db_y, db_z(numpy.ndarray): Wavelet coefficients for each component.freqs(numpy.ndarray): Frequencies of the PSD.PSD(numpy.ndarray): Power spectral density.scales(numpy.ndarray): Scales used for the wavelet transform.coi(numpy.ndarray): Cone of Influence (CoI).
Example Plots
You can visualize the smoothed data or PSD using libraries like matplotlib.
import matplotlib.pyplot as plt
# Plot FFT-based PSD
plt.loglog(freqs, B_pow)
plt.title('Power Spectral Density (FFT)')
plt.xlabel('Frequency')
plt.ylabel('PSD')
plt.grid()
plt.show()
# Plot Wavelet-based PSD
plt.loglog(freqs, PSD)
plt.title('Power Spectral Density (Wavelet)')
plt.xlabel('Frequency')
plt.ylabel('PSD')
plt.grid()
plt.show()
Contribution
Contributions are welcome! Please submit issues or pull requests to improve the code or documentation.
License
This project is licensed under the MIT License.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swturbpy-0.0.6.tar.gz.
File metadata
- Download URL: swturbpy-0.0.6.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
274f03d15e8cc99fc23f9460ebca69421a4c3ecd1bb3041ef300aa6fc2ab0a93
|
|
| MD5 |
4123da4d0a8da789b7d31fba3dd0fe45
|
|
| BLAKE2b-256 |
1bd528c9de0fcb9630b5bdb51c8a9545f90e5a9ab277b880f017952f02c77a5e
|
File details
Details for the file swturbpy-0.0.6-py3-none-any.whl.
File metadata
- Download URL: swturbpy-0.0.6-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e17ddc258f6b4224ce0a58495ba3badda6986fbfa96889bf1f05e792864d8da
|
|
| MD5 |
4e2e3ff61390aaa20a8df06bed52f084
|
|
| BLAKE2b-256 |
f9cbd927c9cfa82b88256cab17c4006c19f6266c2cdb96f3710c6d8b018ae36f
|