Skip to content

Instantly share code, notes, and snippets.

View graeme-winter's full-sized avatar
💭
Always trying to make the campsite nicer

Graeme Winter graeme-winter

💭
Always trying to make the campsite nicer
View GitHub Profile
@graeme-winter
graeme-winter / jpg_mp4.py
Created September 23, 2023 06:27
JPG sequence conversion to MP4 - N.B. set up for monochrome, includes overlay with time
import sys
import os
import numpy as np
from PIL import Image, ImageFont, ImageDraw
import cv2
def main(file_template, start, end):
font = ImageFont.truetype("FreeMono.ttf", 32)
@graeme-winter
graeme-winter / unbitshufflelz4.py
Created April 3, 2024 05:37
Manually unpack bitshuffle / lz4 data in Python
# Proof of work is computing the sha1 hash of the uncompressed and unshuffled
# data and comparing with the result of doing the operation on the h5py
# extracted data
import binascii
import hashlib
import struct
import sys
import lz4.block
@graeme-winter
graeme-winter / make_shoeboxes.py
Last active April 11, 2024 09:31
Script to take predictions, add some fixed shoebox size and then extract to shoeboxes.refl
# to get to the starting point:
#
# dials.import ~/data/i04_bag_training/*gz
# dials.find_spots imported.expt
# dials.index imported.expt strong.refl
# dials.refine indexed.*
# dials.predict refined.expt
#
# then
#
@graeme-winter
graeme-winter / simple_dispersion.cc
Created June 27, 2024 13:52
Simple dispersion spot finding implementation in C++
#include <vector>
int dispersion_filter(std::vector<uint16_t> &image_in,
std::vector<uint16_t> &mask_out,
int NY, int NX) {
int32_t knl = 3;
float sigma_b = 6.0f, sigma_s = 3.0f;
std::vector<uint32_t> im(NY * NX);
@graeme-winter
graeme-winter / extract.py
Created September 11, 2024 08:24
Tool to extract raw data from NeXus formatted HDF5 files to "raw" memory mapped data files
import os
import sys
import tqdm
import hdf5plugin
import h5py
def extract(nxs, template, start=None, end=None):