Skip to content

Instantly share code, notes, and snippets.

View bradlipovsky's full-sized avatar

Brad Lipovsky bradlipovsky

View GitHub Profile
@bradlipovsky
bradlipovsky / glacier-timescale.py
Created May 1, 2023 20:48
Glacier timescale of adjustment to changing mass balance
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import ticker, cm
from matplotlib.colors import LogNorm
import matplotlib
matplotlib.rc('xtick', labelsize=20)
matplotlib.rc('ytick', labelsize=20)
m,h = np.meshgrid(np.logspace(-3,1,100),np.logspace(1,3.5,100))
T = h/m
@bradlipovsky
bradlipovsky / glacier-flow.py
Created April 24, 2023 21:22
Simple model of glacier vertical flow profile
import numpy as np
import matplotlib.pyplot as plt
rho = 910
g = 9.8
h = 100
alpha = 5 * np.pi/180
y = np.linspace(0,100)
dy = np.mean(np.diff(y))
@bradlipovsky
bradlipovsky / wavy-buried-das.py
Last active March 31, 2023 17:49
Near surface wavy DAS cable?
import numpy as np
import matplotlib.pyplot as plt
wavelength = 100 #m
c = 4000 # m/s
z = np.linspace(-0.5*wavelength,0,100) #m
k = 2*np.pi/wavelength
up = np.cos(k*z) # phasor; assume exp(i omega t) dependence
@bradlipovsky
bradlipovsky / svd-example.py
Created December 9, 2022 18:21
Simple example of doing PCA (SVD) with DAS data
'''
Demo SVD for "PCA" analysis -- using DAS data.
See https://stats.stackexchange.com/a/134283 for PCA v SVD distinction
'''
import h5py
import matplotlib.pyplot as plt
from scipy.sparse.linalg import svds
import numpy as np
@bradlipovsky
bradlipovsky / olsen-nettles-2019.py
Created November 8, 2022 18:53
Example calving event seismogram from Olsen and Nettles (2019)
'''
Pull the data for Figure 2 of Olsen and Nettles (2019),
Constraints on Terminus Dynamics at Greenland Glaciers From Small Glacial Earthquakes
https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2019JF005054
'''
from obspy import UTCDateTime
@bradlipovsky
bradlipovsky / comcat-kernel.sh
Created November 2, 2022 21:42
Install a new conda kernel with Comcat for Jupyter Hub
# The following are all shell commands that you can run from a terminal on sermeq
# 1. Create a new conda environment with cartopy and ipykernel:
conda create -n comcat --channel conda-forge python=3.9
# 2. Activate that environment
conda activate comcat
# 3. Install ipykernel FOR THIS ENVIRONMENT
python3 -m ipykernel install --user
@bradlipovsky
bradlipovsky / cutde-example.py
Created November 2, 2022 21:25
Calculate longitudinal strains using CUTDE
import matplotlib.pyplot as plt
import numpy as np
import cutde.fullspace as FS
from scipy.spatial.transform import Rotation as R
# Update the following four lines with well coordinates
obsx = np.linspace(-2,2,100)
obsy = np.linspace(-2,2,100)
obsz = np.linspace(-2,2,100)
pts = np.array([obsx, obsy, 0 * obsz]).reshape((3, -1)).T.copy()
@bradlipovsky
bradlipovsky / Plot-with-table.py
Created October 31, 2022 18:37
Plot with table
import numpy as np
import matplotlib.pyplot as plt
data = [[ 66386, 174296, 75131, 577908, 32015],
[ 58230, 381139, 78045, 99308, 160454],
[ 89135, 80552, 152558, 497981, 603535],
[ 78415, 81858, 150656, 193263, 69638],
[139361, 331509, 343164, 781380, 52269]]
columns = ('Region 1', 'Region 2', 'Region 3', 'Region 4', 'Region 5')
rows = ('M','F','E','X','X')
@bradlipovsky
bradlipovsky / ooi-filtering.py
Created October 20, 2022 18:11
Filter and plot the OOI Data with an eye towards ocean swell
import h5py
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
path = "/data/data2/south-data-ejm/hdd/South-C1-LR-95km-P1kHz-GL50m-SP2m-FS200Hz_2021-11-01T16_09_15-0700/"
file = "South-C1-LR-95km-P1kHz-GL50m-SP2m-FS200Hz_2021-11-01T231114Z.h5"
f = h5py.File(path + file, 'r')
data = f['Acquisition']['Raw[0]']['RawData'][:, :].astype('int64')
f.close()
import matplotlib.pyplot as plt
plt.subplots()
y = (158,141,90)
x = ("Farinotti","Milan","Edasi")
yr = (41,40,38)
plt.errorbar(x,y,yerr=yr,linestyle='None',marker='o')
plt.grid()