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
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)
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
- 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
Release history Release notifications | RSS feed
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
File details
Details for the file dtwhaclustering-1.0.13.tar.gz
.
File metadata
- Download URL: dtwhaclustering-1.0.13.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82c3f8d94de03adcef012cf7480f7a3ecc1d7b4ee4d6ecbf3053eb076b97f5fe |
|
MD5 | b53ec34edcbbbbfdd99cc405534a768e |
|
BLAKE2b-256 | 34496bba42f3343385d38bb302200cdb74df7288219c108e9c073fe78fb441f1 |
File details
Details for the file dtwhaclustering-1.0.13-py3-none-any.whl
.
File metadata
- Download URL: dtwhaclustering-1.0.13-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54888d93c20d0219b01379f87b7904ab2d0ab93282165e2ada95fa9b6232c2a0 |
|
MD5 | f4874b482d09519aaef54f969daa0e4e |
|
BLAKE2b-256 | 3f241b23e9275144a91f54bdc9f01b2d31ddaf28f085fb20d93aaa6493252dbf |