Skip to content

Instantly share code, notes, and snippets.


Thomas Aarholt thomasaarholt

  • University of Oslo
  • Oslo, Norway
View GitHub Profile
thomasaarholt /
Created Feb 15, 2021
Acquire STEM Rotation Series with temscript
from pprint import pprint
import temscript as ts
from math import pi
dwelltime = 1e-5 # seconds
tem = ts.Microscope()
illumination = tem._tem_illumination
instrument = ts.GetInstrument()
thomasaarholt /
Created Feb 11, 2021
1D Tophat function using radius and center
import hyperspy.api as hs
expr = "where(abs(x - center) < radius, A, 0)"
tophat = hs.model.components1D.Expression(expr, 'Top Hat', position="center", A=1, center=0, radius=1)
thomasaarholt /
Created Feb 11, 2021
2D TopHat Hyperspy Sympy Component
import hyperspy.api as hs
expr = "where(sqrt((x - xc)**2 + (y - yc)**2) < radius, A, 0)"
tophat = hs.model.components2D.Expression(expr, 'Top Hat', position=("xc", "yc"), A=1, xc=0, yc=0, radius=1)
thomasaarholt / gist:b383445e094d9690dc9da3733d04cbbf
Created Feb 11, 2021
1D TopHat Hyperspy Sympy component using Relationals
View gist:b383445e094d9690dc9da3733d04cbbf
import hyperspy.api as hs
expr = "where(And(left < x, x < right), A, 0)"
tophat = hs.model.components1D.Expression(expr, 'Top Hat', position="left", A=1, left=0, right=1)
def loadXRD(filename):
with open(filename, 'r') as f:
lines = f.readlines()
angles = []
intensity = []
for line in lines[1:-2]:
x, y = line.split('\n')[0].split(",")[:-1]
x = np.array(angles)
thomasaarholt /
Created Jan 27, 2021
2D Convolution Using FFT and Scipy for even and odd-sized arrays
import numpy as np
from scipy.signal import convolve2d, gaussian
from scipy.misc import face
import matplotlib.pyplot as plt
def convolve2d_fft(arr1, arr2):
s0, s1 = arr1.shape
conv = np.fft.irfft2(
np.fft.rfft2(arr1) * np.fft.rfft2(arr2),
View gist:34f5712b07b5bee119d649808961f37c
$ pip install pytetgen
Collecting pytetgen
Using cached pytetgen-0.1.4.tar.gz (392 kB)
Building wheels for collected packages: pytetgen
Building wheel for pytetgen ( ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Users\thomasaar\Miniconda3\envs\py38\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\thomasaar\\AppData\\Local\\Temp\\pip-install-xphrb4j7\\pytetgen_dc8134ee876b4f18b1a1373353bd0c09\\'"'"'; __file__='"'"'C:\\Users\\thomasaar\\AppData\\Local\\Temp\\pip-install-xphrb4j7\\pytetgen_dc8134ee876b4f18b1a1373353bd0c09\\'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);'"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\thomasaar\AppData\Local\Temp\pip-wheel-igdis3c8'
cwd: C:\Users\thomasaar\AppData\Local\Temp\pip-install-xphrb4j7\pytetgen_dc8134ee876b4f18b1a1373353bd0c09\
Complete output (339 lines):
running bdist_whee
thomasaarholt /
Last active Jan 13, 2021
Create a matplotlib Arc patch to show the angle between two lines
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
Arc = matplotlib.patches.Arc
def halfangle(a, b):
"Gets the middle angle between a and b, when increasing from a to b"
if b < a:
b += 360
return (a + b)/2 % 360
thomasaarholt /
Created Jan 12, 2021
Row roll of an ndarray with optional fill_value=np.nan
def row_roll(arr, shifts, axis=1, fill=np.nan):
"""Apply an independent roll for each dimensions of a single axis.
arr : np.ndarray
Array of any shape.
shifts : np.ndarray, dtype int. Shape: `(arr.shape[:axis],)`.
Amount to roll each row by. Positive shifts row right.
thomasaarholt /
Created Dec 14, 2020
Example of using IndexedBase in order to do for loops in Sympy for memory conservation
import sympy as sp
import matplotlib.pyplot as plt
import numpy as np
def Gaussian(x, a, xc, sigma):
return a*sp.exp(-((x-xc)**2)/(2*sigma**2))
x, i, n = sp.symbols('x i n') # x is our main independent variable. i and n are indices
a, xc, sigma = sp.symbols('A xc sigma', cls=sp.IndexedBase) # parameters that are held in arrays
symbols = (x, a, xc, sigma, n)