Skip to content

Instantly share code, notes, and snippets.

View thomasaarholt's full-sized avatar

Thomas Aarholt thomasaarholt

View GitHub Profile
@thomasaarholt
thomasaarholt / lightgbm_gpu.sh
Last active July 24, 2022 11:01
Building lightgbm with GPU support from source on Red Hat with mload
module load CUDA/11.0 CMake/3.21.1-GCCcore-11.2.0 Boost/1.74.0-GCC-10.2.0
pip install lightgbm --install-option=--gpu
# If running from notebook, ensure that the following contains Boost:
# import os
# os.environ["LD_LIBRARY_PATH"].split(":")
@thomasaarholt
thomasaarholt / xgboost_gpu.sh
Last active July 24, 2022 11:01
Building XGBoost with GPU support from source on Red Hat with mload
# must not use gcc version > 10
module load CUDA/11.0 CMake/3.21.1-GCCcore-11.2.0
# Clone with recursive! Otherwise you get dmlc error later on!
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost/python-package
# clean out any old build files that may break things if try to recompile
rm -rf build
@thomasaarholt
thomasaarholt / docker_terminal.sh
Created June 6, 2022 08:23
Instructions for building a docker image and logging into its bash terminal
# From a directory with a Dockerfile
# Example Dockerfile with "Dockerfile" as filename
FROM python:3.10-slim-buster
RUN pip install numpy
# Then, run the following
docker build -t your_image_name .
@thomasaarholt
thomasaarholt / cmap.py
Created January 26, 2022 13:16
Linear colormap from one rgb color to another
from matplotlib.colors import LinearSegmentedColormap
def black_to_color(high_color: tuple, low_color: tuple = (0,0,0), name: str = "my_color", steps=256):
"Get linear colormap from one rgb color to another, defaulting from black"
r1,g1,b1 = low_color
r2,g2,b2 = high_color
cdict = {
'red': [(0.0, r1, r1),
@thomasaarholt
thomasaarholt / gist:4c63d9f15a6895a4153e9bfa98f75360
Created September 27, 2021 10:24
jupyter lab settings with auto closing brackets enabled in docker image
cat /root/.jupyter/lab/user-settings/@jupyterlab/notebook-extension/tracker.jupyterlab-settings
{
// Notebook
// @jupyterlab/notebook-extension:tracker
// Notebook settings.
// **************************************
// Code Cell Configuration
// The configuration for all code cells.
"codeCellConfig": {
@thomasaarholt
thomasaarholt / check_docker_running.sh
Created August 24, 2021 08:10
Simple bash script to test if Docker is running
if docker info > /dev/null 2>&1; then
: # pass
else
echo "Docker Daemon is not running. Please open it and retry."
exit -1
fi
@thomasaarholt
thomasaarholt / dask_inv_bench.py
Created August 1, 2021 18:01
Benchmarking dask linalg inv on nd arrays
import numpy as np
import dask.array as da
x = da.random.random((120,500,500), chunks=(40, 500, 500)) # 80 MB chunks
X = x.compute()
@da.as_gufunc(signature="(n,n)->(n,n)", output_dtypes=float, vectorize=True)
def gufunc(x):
return np.linalg.inv(x)
@thomasaarholt
thomasaarholt / gufunc.py
Created August 1, 2021 16:38
gufunc error with whitespace in dask
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/var/folders/yt/z22_f0896l74f8gs3_20vc_00000gn/T/ipykernel_88946/1449311839.py in <module>
7 return np.linalg.inv(x)
8
----> 9 y = gufoo(b)
~/mambaforge/envs/py/lib/python3.9/site-packages/dask/array/gufunc.py in __call__(self, *args, **kwargs)
659
660 def __call__(self, *args, **kwargs):
@thomasaarholt
thomasaarholt / bilinear_interpolate.py
Created July 8, 2021 16:36
Bilinearly interpolate points from an image using NumPy or CuPy
def bilinear_interpolate(img, points, clipped_nan=True):
"""Bilinearly interpolate points from an image using NumPy or CuPy
Args:
img: Image of shape (Y, X) to interpolate from.
points: array of shape (2, N) of (y, x) coordinates
clipped_nan: If True, the value of coordinates outside the image shape
are set to nan. Otherwise they are clipped to the image edge.
Returns:
@thomasaarholt
thomasaarholt / bilinear_binning.py
Last active July 6, 2021 16:09
Bilinear binning, supports numpy and CuPy inputs using the np.array(..., like=arr) synax
def bilinear_binning(points, intensities, subpixel=1, gaussian_blur=False):
"""Bilinear weighting of points onto a grid.
Extent of grid given by min and max of points in each dimension
points should be an array of shape (N, 2)
intensity should be an array of shape (N,)
subpixel will increase the gridsize by its factor
gaussian_blur: blur the binned intensity and weighting images before they are divided, avoiding divide-by-zero warnings
TODO: Give a known grid as input
"""