Skip to main content

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:

  1. Converts the timeseries time stamps to phases
  2. Optimizes a sinusoidal model using scipy minimize in amplitude and phase
  3. Measures a reduced chi squared of the optimized sinusoidal model
  4. 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

phmin-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

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

phmin-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

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

Hashes for phmin-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31ecdd8315d7195382629be7a280d3bc7718dd15e144fc19ab151e243346ecd2
MD5 aa43a221965800e868b71007b83006e8
BLAKE2b-256 6794ab6559aae51ac62299ae2630fc34c8febccd102b87fd184b47a6b226f10c

See more details on using hashes here.

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

Hashes for phmin-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e5f283ee24063e6dc0b450f0de86ae96cdf148d85d21aecf91168ef4444b28f
MD5 1732c9309aa7750e5e1238e9ff1fd115
BLAKE2b-256 7facc6de320c10ed67ea5f58e7e5251ed708300d994ba55c96b6e9e0c1335be8

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