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 available through pip:

pip install phmin

Or, alternatively, download and install directly from this repo:

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()

To print or plot the results, call

example_minner.print_results()
example_minner.plot_results()

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.3 (6 Feb, 2023)
-Removed redundant fmt in plot_results()

V0.1.2 (6 Feb, 2023)
-Fixed label in ph_minner.plot_results()

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.3.tar.gz (7.3 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.3-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file phmin-0.1.3.tar.gz.

File metadata

  • Download URL: phmin-0.1.3.tar.gz
  • Upload date:
  • Size: 7.3 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.3.tar.gz
Algorithm Hash digest
SHA256 20036e9a2ded947c00afd579446e7e80a571984e3d08db466166449ef0ba8423
MD5 c834d7b6f07330412500563f8a4f9475
BLAKE2b-256 eb47c03ccaafdd7aa7e92848cfa8bed776f8c4024b3ffd908086f3d507ae4ef3

See more details on using hashes here.

File details

Details for the file phmin-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: phmin-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7f4b0efefbe04a515e9496b9c43d5c1531ae56d2810b8eca30191b26da571320
MD5 c1733434ae6f77f452dc4ef2ac989837
BLAKE2b-256 256ac17a35fe35e3b2c636df647e51c76f574732182432d8f34ddd82b4d385f4

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