A basic python package for identifying frequencies present in time series data based on the principles of phase dispersion minimization.
Project description
phmin
A basic python package for determining periods in time series data through phase dispersion minimization.
Author: Erik William Stacey
Date: 6 Feb, 2023
Installation
phmin is presently only available on github and must be downloaded and installed using pip:
git clone https://github.com/erikstacey/phmin.git ./phmin
cd phmin
pip install .
Usage
The ph_minner class is used to store and operate on time series data. Here's a basic example snippit setting up a ph_minner:
import numpy as np
from phmin import ph_minner
x, y, y_err = np.loadtxt("sample.txt", unpack=True)
example_minner = ph_minner(x=x, y=y, err=y_err)
The above code will automatically generate a period grid. To run the minimizer, call the run method:
example_minner.run()
Advanced Usage
The ph_minner class can be initialized with optional parameters periods and t0. Setting periods manually defines the period grid, and setting t0 manually sets the reference time for the phasing.
manual_period_grid = np.linspace(4.4, 4.8, 500)
example_minner = ph_minner(x=x, y=y, err=y_err, periods=manual_period_grid, t0=2457000.0)
The results can be directly accessed through attributes of the ph_minner class.
example_minner.periods - Array of periods
example_minner.red_chisqs - Array of reduced chi squared values corresponding to the best fit achieved at each period
example_minner.chisqs - Array of (unreduced) chi squared values corresponding to the best fit achieved at each period
example_minner.best_amps - Array of the optimized amplitude at each period
example_minner.best_phcorrs - Array of the optimized phase at each period. This defines the signal phase relative to t0.
Method
This package is intended to solve the problem of determining the principal frequency present in time series data through phase dispersion minimization. Once the ph_minner has been initialized and run, it iterates over all candidate periods and in each iteration:
- Converts the timeseries time stamps to phases
- Optimizes a sinusoidal model using scipy minimize in amplitude and phase
- Measures a reduced chi squared of the optimized sinusoidal model
- Stores the reduced chi squared and optimized amplitude/phase
Then, after iterating over all candidate periods, the results can be examined and the best-fit period can be determined by finding the candidate period corresponding to the minimum reduced chi squared. Alternatively, the relationship between period and goodness of fit can be examined by plotting candidate period v. red chi squared.
Changelog
V0.1.0 (6 Feb, 2023)
-Added methods to ph_minner for printing and plotting results
-Throws an exception if the user tries to plot or print without running first
V0.0.1 6 Feb, 2023
-Working package published on github
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 phmin-0.1.0.tar.gz.
File metadata
- Download URL: phmin-0.1.0.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31ecdd8315d7195382629be7a280d3bc7718dd15e144fc19ab151e243346ecd2
|
|
| MD5 |
aa43a221965800e868b71007b83006e8
|
|
| BLAKE2b-256 |
6794ab6559aae51ac62299ae2630fc34c8febccd102b87fd184b47a6b226f10c
|
File details
Details for the file phmin-0.1.0-py3-none-any.whl.
File metadata
- Download URL: phmin-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e5f283ee24063e6dc0b450f0de86ae96cdf148d85d21aecf91168ef4444b28f
|
|
| MD5 |
1732c9309aa7750e5e1238e9ff1fd115
|
|
| BLAKE2b-256 |
7facc6de320c10ed67ea5f58e7e5251ed708300d994ba55c96b6e9e0c1335be8
|