This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import json | |
import subprocess | |
import argparse | |
import sys | |
import os | |
def parse_override_args(args): | |
"""Parse CLI arguments that start with '--' into a dict.""" | |
overrides = {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# audio_data2url.py | |
# Author: Scott H. Hawley | |
# License: MIT | |
# Date: Sep 2, 2024 | |
# Description: This script will convert base64 audio src data in a Jupyter notebook to URLs of the same audio | |
# which is saved in a separate branch of the same GitHub repository. The script will save the audio files in a | |
# directory named 'audio_files' and commit them to the 'audio-storage' branch. The script will then replace the | |
# base64 data with the raw URL of the audio file in the notebook. The script can be run on a single notebook file |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env python | |
# OS-Agnostic PS5 DualSense Controller Listener | |
# Author: Scott H. Hawley | |
# Instructions: | |
# 1. Pair the DualSense controller with your computer | |
# 2. Install hidapi system binary, e.g. on Mac: brew install hidapi | |
# 3. Install Python packages: pip install hidapi pygame numpy | |
# 4. Run this script! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# tails output of any SLURM job that is listed in the queue. | |
# if job is pending, tailjob will wait until the output file exists | |
# usage: tailjob <job_id> | |
tailjob() { | |
local job_id=$1 | |
if [[ -n "$job_id" ]]; then | |
local stdout_file=$(scontrol show job "$job_id" | awk -F= '/StdOut=/{print $2}') | |
echo "Running tail -F $stdout_file" | |
tail -F "$stdout_file" | |
else |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from einops import rearrange as _rearrange | |
class RearrangeWrapper(): | |
"wrapper to endow einops.rearrange with an 'inverse' operation" | |
def __init__(self): | |
self.shape, self.s = None, None # just in case someone tries to call inverse first | |
def __call__(self, x, s:str, **kwargs): # this 'forward' call is lightweight to preserve original usage | |
self.shape, self.s = x.shape, s | |
return _rearrange(x, s, **kwargs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def magic_mult(a, b): | |
""" | |
Tries to multiply two arrays/matrices in a variety of ways | |
Returns all possible working combos as a dict, with the shapes of their respective outputs | |
Author: Scott H. Hawley, @drscotthawley | |
""" | |
combos = ['a*b', 'a*b.T', 'a.T*b', 'a.T*b.T','b*a', 'b*a.T', 'b.T*a', 'b.T*a.T'] # elementwise multiplications | |
combos += [s.replace('*',' @ ') for s in combos] # matrix multiplications (I like the space here) | |
working_combos = {} | |
for s in combos: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env python3 | |
""" | |
SLURM usage tracker Discord bot by drscotthawley & rom1504 | |
Requires external file token_channel.csv to connect to Discord | |
Syntax of that file should be: | |
token,channel | |
<DISCORD_BOT_TOKEN>,<CHANNEL_ID> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# Do violence to the Logitech C920s webcam settings in realtime | |
# To annoy your Zoom-mates by constantly changing the image | |
from pynput.keyboard import Listener | |
import os, sys | |
import random | |
import time |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# In case you didn't think to add k-fold cross-validation until late in your | |
# ML project,... | |
# This is built for a situation where datasets are arrays of, say, images. | |
def kfold_swap(train_X, train_Y, val_X, val_Y, k): | |
""" | |
Swaps val with a section of train, given a value for k | |
"Duct tape" approach used to "retro-fit" k-fold cross-validation while minimally | |
disturbing the rest of the code, while avoiding reloading data from disk and | |
keeping RAM use manageable. (e.g. np.append() is bad b/c it would copy all of train) |
NewerOlder