Skip to content

Instantly share code, notes, and snippets.

View matham's full-sized avatar

Matt Einhorn matham

View GitHub Profile
@matham
matham / play_network.py
Created April 17, 2025 21:27
Client API for receiving images from a Filers server over the network (or locally).
"""
Client API for receiving images from a Filers server over the network (or locally).
To install::
pip install tree_config ffpyplayer
To use, see `RemoteVideoPlayer` and the sample script at the end.
"""
from itertools import accumulate
@matham
matham / imspector_scripting.py
Created February 3, 2025 20:55
Tools for acquiring and processing LaVision lightsheet data
import pyautogui as pag
import pyscreeze
import pygetwindow
import pyperclip
from PIL import Image
import time
import datetime
from pathlib import Path
from dataclasses import dataclass
from textwrap import dedent
@matham
matham / lightsheet_lens.py
Created February 3, 2025 20:48
Analyzes lightsheet optics for lenses and RI
import math
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import scipy.special
from scipy.stats import linregress
from scipy import integrate
import scipy.optimize as optimize
from scipy.optimize import curve_fit, minimize, Bounds
import numpy as np
from functools import partial
@matham
matham / teaball_behavior.py
Created February 3, 2025 20:46
Export results for teaball experiments - sniffing, occupancy etc
from dataclasses import dataclass, field
from typing import Callable, Union
from pathlib import Path
import csv
import math
import numpy as np
from functools import partial
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
from scipy.ndimage import gaussian_filter
from pathlib import Path
import csv
import numpy as np
root = Path(r"...")
odors = {"CH4", "NH3", "TBP", "TEP", "Air", "Humidity"}
odors = list(sorted(odors))
confusents = {"None", "Diesel", "Gasoline", "Roundup", "Tobacco", "Smoke", "Vanilla"}
confusents = list(sorted(confusents))
import h5py
import matplotlib.pyplot as plt
import numpy as np
import re
from elephant.statistics import time_histogram
import quantities
from neo import SpikeTrain
def arr2str(arr):
package com.cplab.jstripe;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import io.scif.ImageMetadata;
import io.scif.config.SCIFIOConfig;
comm = TeensyComm()
comm.create_serial_device('COM5')
comm.write_serial(comm.make_modio_create(15, 2, 0x12, ModIOFreq.freq_100k, ModIOPullup.disabled))
comm.write_serial(comm.make_modio_write_digital(46, 2, 0x12, False, True))
comm.write_serial(comm.make_modio_write_digital(46, 2, 0x12, False))
for i in range(200):
comm.write_serial(comm.make_modio_write_digital(46, 2, 0x12, *vals[i % 2]))
#comm.write_serial(comm.make_modio_write_digital(46, 2, 0x13, *vals[i % 2]))
import trio
import contextlib
from async_generator import aclosing
async def gen():
for i in range(10):
yield i
@matham
matham / _msvccompiler.py
Last active July 11, 2020 19:48
github action rc crash
"""distutils._msvccompiler
Contains MSVCCompiler, an implementation of the abstract CCompiler class
for Microsoft Visual Studio 2015.
The module is compatible with VS 2015 and later. You can find legacy support
for older versions in distutils.msvc9compiler and distutils.msvccompiler.
"""
# Written by Perry Stoll