Skip to main content

Codes to perform Dynamic Time Warping Based Hierarchical Agglomerative Clustering of GPS data

Project description

Dynamic Time Warping based Hierarchical Agglomerative Clustering

Codes to perform Dynamic Time Warping Based Hierarchical Agglomerative Clustering of GPS data

Documentation

Installation and usage information can be obtained from the documentation: dtwhaclustering.pdf

Complete documentation at: dtwhaclustering-docs

Details

This package include codes for processing the GPS displacement data including least-square modelling for trend, co-seismic jumps, seasonal and tidal signals. Finally, it can be used to cluster the GPS displacements based on the similarity of the waveforms. The similarity among the waveforms will be obtained using the DTW distance.

Usage

Least-squares modeling

Load Pickle Data into Pandas DataFrame

from dtwhaclustering.leastSquareModeling import lsqmodeling
final_dU, final_dN, final_dE = lsqmodeling(dUU, dNN, dEE,stnlocfile="helper_files/stn_loc.txt",  plot_results=True, remove_trend=False, remove_seasonality=True, remove_jumps=False)

LSQ Model

Plot station map

from dtwhaclustering import plot_stations
plot_stations.plot_station_map(station_data = 'helper_files/selected_stations_info.txt', outfig=f'{outloc}/station_map.pdf')

Plot linear trend

slopeFile=f'stn_slope_res_U.txt'
df = pd.read_csv(slopeFile, names=['stn','lon','lat','slope'], delimiter='\s+')
plot_linear_trend_on_map(df, outfig=f"Maps/slope-plot_U.pdf")

Note: slopeFile is obtained from lsqmodeling.

Dynamic Time Warping Analysis

from dtwhaclustering.dtw_analysis import dtw_signal_pairs, dtw_clustering
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

np.random.seed(0)
# sampling parameters
fs = 100   # sampling rate, in Hz
T = 1      # duration, in seconds
N = T * fs  # duration, in samples

# time variable
t = np.linspace(0, T, N)

SNR = 0.2 #noise

XX0 = np.sin(2 * np.pi * t * 7+np.pi/2) #+ np.random.randn(1, N) * SNR
XX1 = signal.sawtooth(2 * np.pi * t * 5+np.pi/2) #+ np.random.randn(1, N) * SNR
# XX1 = np.abs(np.cos(2 * np.pi * t * 3)) - 0.5
s1, s2 = XX0, XX1

dtwsig = dtw_signal_pairs(s1, s2, labels=['S1', 'S2'])

dtwsig.plot_signals()
plt.show()
dtwsig.plot_matrix(windowfrac=0.6, psi=None) #Only allow for shifts up to 60% of the minimum signal length away from the two diagonals.
plt.show()

References

  1. Kumar, U., Chao, B.F., Chang, E.T.-Y.Y., 2020. What Causes the Common‐Mode Error in Array GPS Displacement Fields: Case Study for Taiwan in Relation to Atmospheric Mass Loading. Earth Sp. Sci. 0–2. https://doi.org/10.1029/2020ea001159

License

© 2021 Utpal Kumar

Licensed under the Apache License, Version 2.0

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

dtwhaclustering-1.0.12.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

dtwhaclustering-1.0.12-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file dtwhaclustering-1.0.12.tar.gz.

File metadata

  • Download URL: dtwhaclustering-1.0.12.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for dtwhaclustering-1.0.12.tar.gz
Algorithm Hash digest
SHA256 8dfd8fd4d3820125ba9378c87db4c06364311a4d3f07a6e4aada438d78ff82f8
MD5 e28b6443b5d0e2d98e5d4f604b311092
BLAKE2b-256 3fab9f4cec3d73480598224ce4e3d2575dedfba464a17c398a1e94c3fec94508

See more details on using hashes here.

File details

Details for the file dtwhaclustering-1.0.12-py3-none-any.whl.

File metadata

  • Download URL: dtwhaclustering-1.0.12-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for dtwhaclustering-1.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 c1d42215d8a373fdab12d0544c85a89a75025891bcee31e9f23f04404d72e53a
MD5 6a273658ccb6a3940f7302964f3e6468
BLAKE2b-256 35f6555fea9c4846725ff5388bdd33775fc0c82e1fcdab581992625365bb5340

See more details on using hashes here.

Supported by

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