Skip to content

Instantly share code, notes, and snippets.

# Converts Ordnance Survey Terrian 50 United Kingdom data to a simple NumPy array of terrain altitudes
# The original OS data is freely downloadable from:
# Directly converts the zipped terrain file to a NPZ file
# Resulting array is a (24600, 13200) array of float64
# Requirements:
# * pycrs
# * lxml
import os, sys
import numpy as np
from sklearn.metrics import confusion_matrix
from collections import defaultdict
def itr(confusion_matrix, timings, eps=1e-8):
"""Take a confusion matrix of the form
(actual) a b c d
a 10 0 1 9
johnhw /
Created Jul 18, 2019
Matplotlib draw connections between two sets of 2D points efficiently
from matplotlib.collections import LineCollection
def plot_connected_pairs(a,b,*args,**kwargs):
Draw lines between two arrays of 2D points.
a and b must be the same shape, both [N,2] arrays to be plotted.
a: [N,2] array of points to plot from
johnhw /
Last active Jul 10, 2019
Bivariate colormap in matplotlib
# bivariate colormaps in matplotlib
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
## Bivariate colormapping
from scipy.interpolate import RegularGridInterpolator
johnhw /
Created Jul 8, 2019
Determine source of function calls in Python
import inspect
class tracked:
"""Class to remember the execution frame
that a function call was made in."""
def __init__(self, fn):
self.fn = fn
import numpy as np
def softmax(a,b):
return np.log(np.exp(a)+np.exp(b))
def softmin(a,b):
return -softmax(-a, -b)
def softrank(a, b):
return softmin(a,b), softmax(a,b)
from import trange, tqdm
def tqdm_train_loop(train_fn, num_epochs, train_loader, val_fn=None):
# each epoch
with trange(num_epochs, unit="epoch") as epoch_t:
for epoch in epoch_t:
# each batch
with tqdm(train_loader, leave=False, unit='batch', postfix='') as batch_t:
for batch_idx, (features, targets) in enumerate(batch_t):
cost = train_fn(features, labels)
batch_t.postfix = f"cost {cost.item():.2f}"
johnhw /
Created Mar 17, 2019
Animate the "flower" pattern of primes, using the Hungarian algorithm to ensure smooth interpolation
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from collections import defaultdict
import colorsys
import munkres # provides Hungarian algorithm
import scipy.spatial.distance as dist
import functools
import os
View dropout_test.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
# This implements the ideas in the paper "Neural Ordinary Differential Equations"
# in as simple a form as possible, using only autograd. It is not efficient.
# It is not useful for any practical purpose.
# Use [torchdiffeq]( for any real use.
# > [1] Ricky T. Q. Chen, Yulia Rubanova, Jesse Bettencourt, David Duvenaud.
# "Neural Ordinary Differential Equations." *Advances in Neural Processing Information Systems.* 2018.
# [[arxiv]](
# The implementation is based on the
You can’t perform that action at this time.