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 / run-flake8
Created June 7, 2019 08:40
Run flake8 comparing current branch to master (ignoring Python2/3 xrange; cmp)
BRANCH=$(git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
CHANGED_FILES=$(git diff --name-only master...${BRANCH} -- "*.py")
[ -z "${CHANGED_FILES}" ] && echo There are no relevant changes. Skipping test. && exit 0
echo Running flake8 on changed files:
flake8 --select=E711,E712,E713,E714,E721,E722,E901,F401,F402,F403,F632,F811,F812,F821,F822,F841,F901,W191,W602,W603,W604,W605,W606 $CHANGED_FILES | grep -v "'xrange'" | grep -v "'cmp'"
@graeme-winter
graeme-winter / hello_world.py
Created April 8, 2021 07:41
Hello, world! on a Pimoroni pico scroll, using show_bitmap_1d() method (includes full character set definition)
# generate 5x7 font bitmap as 5 bytes / char
#
# (C) Graeme Winter, 2021
#
# Encoding: each column of 7 bits is encoded top down with LSB as top ->
# horizontal line across the top is 0x01 0x01 0x01 0x01 0x01, vertical line
# on left side of box only would be 0x7f 0x00 0x00 0x00 0x00.
__bitmap = {
0x0: (0x0, 0x0, 0x0, 0x0, 0x0),
@graeme-winter
graeme-winter / chunker.py
Created February 9, 2022 08:59
HDF5 direct chunk write example
import h5py
import numpy
import hdf5plugin
import time
NN = 1024
NY = 4096
NX = 4096
@graeme-winter
graeme-winter / verify.py
Created February 9, 2022 09:18
Verify that the frames of an HDF5 file are all identical, and return the hash
import h5py
import hdf5plugin
import sys
def verify(filename):
with h5py.File(filename, "r") as f:
data = f["data"]
nn = data.shape[0]
h = None
@graeme-winter
graeme-winter / camera.sh
Last active June 11, 2022 11:15
Raspberry pi wildlife camera script
#!/bin/bash
# any questions to my.name@gmail.com
TODAY=$(date +%Y%m%d)
START=${1}
HOURS=${2}
# how many ms to run
MS=$((3600 * ${HOURS} * 1000))
@graeme-winter
graeme-winter / movify.py
Created June 11, 2022 05:07
Python script to make movie from stack of jpeg images
import sys
import os
import numpy as np
from PIL import Image, ImageFont, ImageDraw
import cv2
def main(file_template, start=0, end=100000):
@graeme-winter
graeme-winter / fetch-7085897.sh
Created February 24, 2023 11:25
Shell script to download i24 multi-crystal data for a dials tutorial from Zenodo
for filename in ins11_b200_1_000001.h5 ins11_b200_1_master.h5 ins11_b200_1_meta.h5 ins11_b200_1.nxs ins11_b295_1_000001.h5 ins11_b295_1_master.h5 ins11_b295_1_meta.h5 ins11_b295_1.nxs ins11_b299_1_000001.h5 ins11_b299_1_master.h5 ins11_b299_1_meta.h5 ins11_b299_1.nxs ins11_b302_1_000001.h5 ins11_b302_1_master.h5 ins11_b302_1_meta.h5 ins11_b302_1.nxs ins11_b365_1_000001.h5 ins11_b365_1_master.h5 ins11_b365_1_meta.h5 ins11_b365_1.nxs ins11_b391_1_000001.h5 ins11_b391_1_master.h5 ins11_b391_1_meta.h5 ins11_b391_1.nxs ins11_b453_1_000001.h5 ins11_b453_1_master.h5 ins11_b453_1_meta.h5 ins11_b453_1.nxs ins11_b474_1_000001.h5 ins11_b474_1_master.h5 ins11_b474_1_meta.h5 ins11_b474_1.nxs ins11_b487_1_000001.h5 ins11_b487_1_master.h5 ins11_b487_1_meta.h5 ins11_b487_1.nxs ins11_b508_1_000001.h5 ins11_b508_1_master.h5 ins11_b508_1_meta.h5 ins11_b508_1.nxs ins11_b566_1_000001.h5 ins11_b566_1_master.h5 ins11_b566_1_meta.h5 ins11_b566_1.nxs ins11_b616_1_000001.h5 ins11_b616_1_master.h5 ins11_b616_1_meta.h5 ins11_b616_1.nxs
@graeme-winter
graeme-winter / blink.dis
Created March 1, 2023 07:11
Disassembled blink code
@graeme-winter
graeme-winter / reciprocal_xyz.py
Created May 9, 2023 09:09
Map strong spots to reciprocal space and print x, y, z positions
# Print reciprocal space positions from DIALS strong reflections
# after spot finding
#
# Usage:
#
# dials.import (data)
# dials.find_spots imported.expt
# dials.python reciprocal_xyz.py strong.refl imported.expt
#
# Prints long list of x, y, z positions
@graeme-winter
graeme-winter / quilt.py
Created May 14, 2023 18:48
Quilt combination generator - ensure each 3x3 block contains a unique permutation of 5 coloured pieces
import random
# FIXME fill in numbers of each unique piece here
tiles = {
"a": 10,
"b": 10,
"c": 10,
"d": 10,
"e": 10,