Skip to content

Instantly share code, notes, and snippets.

View thearn's full-sized avatar

Tristan Hearn thearn

  • NASA Glenn Research Center
  • Cleveland, OH
View GitHub Profile
@thearn
thearn / fft_convolution.py
Last active November 18, 2023 09:47
1D and 2D FFT-based convolution functions in Python, using numpy.fft
from numpy.fft import fft, ifft, fft2, ifft2, fftshift
import numpy as np
def fft_convolve2d(x,y):
""" 2D convolution, using FFT"""
fr = fft2(x)
fr2 = fft2(np.flipud(np.fliplr(y)))
m,n = fr.shape
cc = np.real(ifft2(fr*fr2))
cc = np.roll(cc, -m/2+1,axis=0)
@thearn
thearn / svd_approximate.py
Last active January 8, 2024 20:25
Function to generate an SVD low-rank approximation of a matrix, using numpy.linalg.svd. Can be used as a form of compression, or to reduce the condition number of a matrix.
import numpy as np
def low_rank_approx(SVD=None, A=None, r=1):
"""
Computes an r-rank approximation of a matrix
given the component u, s, and v of it's SVD
Requires: numpy
"""
@thearn
thearn / gzip_pickle.py
Created April 20, 2013 00:57
Functions for saving and loading python objects using pickle with gzip compression.
import pickle
import gzip
def save(object, filename, protocol = 0):
"""Saves a compressed object to disk
"""
file = gzip.GzipFile(filename, 'wb')
file.write(pickle.dumps(object, protocol))
file.close()
@thearn
thearn / pprocess_test.py
Created April 20, 2013 01:07
An experiment with pprocess
import pprocess
import time
import numpy as np
# Define a function to parallelize:
def takeuptime(x):
"""A function to waste CPU cycles"""
time.sleep(0.1)
return x[-1]
@thearn
thearn / brew.py
Last active December 16, 2015 10:59
A simple command-line app to help profile homebrew'ed beer. User inputs starting temperature, starting original gravity, and the app will compute and print temperature-adjusted original gravity and max potential ABV. Final (post-fermentation) temperature and specific-gravity can also be input to calculate effective ABV, calories per serving, and…
def adjust(t, og):
t2 = 1.34722124e-4 * t
t3 = 2.04052596e-6 * t ** 2
t4 = 2.32820948e-9 * t ** 3
sgcf = 1.00130346 - t2 + t3 - t4
sg = og * sgcf
adjusted_og = sg
OE = -668.962 + 1262.45 * sg - 776.43 * sg * sg + 182.94 * sg * sg * sg
abv_max = (sg - 1) * 105 * 1.25
@thearn
thearn / fft_series.py
Last active December 16, 2015 11:49
Class for buffering an incoming data series and computing an FFT
import numpy as np
import time
class bandProcess(object):
"""
Component to isolate specific frequency bands
"""
@thearn
thearn / ip.py
Last active December 16, 2015 11:59
A python code to determine a computer's external IP address, which is then written to a text file. Run from a dropbox folder (or something similar), this provides a very simple way to determine your home's dynamic external IP address remotely.
import urllib
import re
import time
import datetime
def get_ip():
group = re.compile(u'(?P<ip>\d+\.\d+\.\d+\.\d+)').search(
urllib.URLopener().open('http://jsonip.com/').read()).groupdict()
return group['ip']
@thearn
thearn / opencv-python-ipcam.py
Last active January 12, 2023 17:01
python-opencv ip camera example
import base64
import time
import urllib2
import cv2
import numpy as np
"""
Examples of objects for image frame aquisition from both IP and
@thearn
thearn / microscope.py
Last active December 17, 2015 09:29
Code to operate USB microscope, with selectable contrast correction
import cv2
# Create object to read images from camera 0
cam = cv2.VideoCapture(1)
class imgSlice(object):
def __init__(self):
self.x = 0
@thearn
thearn / capture.py
Created June 15, 2013 21:31
Screen capture using python PIL
import time
import Image
import ImageGrab
while True:
time.sleep(0.5)
t = str(time.time()).replace('.','-')
tt = time.time()
img=ImageGrab.grab()
img = img.resize((800,600))