Skip to content

Instantly share code, notes, and snippets.

View tlancon's full-sized avatar

Trevor Lancon tlancon

View GitHub Profile
@tlancon
tlancon / AutoAdjustOrthoSliceColormap.tcl
Created May 2, 2018 12:45
Auto-adjusts the colormap for Avizo/Amira Ortho Slice modules
# 1. Copy/paste this into Avizo/Amira console
# 2. Select one or more Ortho Slices to auto-adjust and press F3
# Note: Can change 'onKeyFX' to the desired keybinding
proc onKeyF3 {} {
foreach slice [all -selected HxOrthoSlice] {
$slice colormap adjustRange; $slice fire
}
}
@tlancon
tlancon / CompareTwoDatasets.tcl
Last active June 11, 2018 14:36
Compares to selected datasets in Amira/Avizo
# 1. Copy/paste this into Avizo/Amira console
# 2. Select two datasets to compare and press Shift+F3
# Note: Can change 'onKeyFX' to the desired keybinding
# Note: Requires Avizo (not Avizo Lite) or the XImagePAQ extension for Amira
proc onKeyShiftF3 {} {
if {[llength [all -selected]] != 2} {
echo "Please select two data objects."
} else {
set before [lindex [all -selected] 0]
set after [lindex [all -selected] 1]
@tlancon
tlancon / LabelAnalysisToDataFrame.py
Created June 11, 2018 17:53
Converts HxLabelAnalysis or HxSpreadSheet objects to Pandas data frames in Amira/Avizo.
# Copy/paste into the Avizo/Amira Python console.
# Alternatively, save to a file, add that file to your path, and import.
# See docstring for usage.
def labelanalysis_to_dataframe(tablelike_object):
"""
Converts a tablelike object (HxSpreadSheet, HxLabelAnalysis, or anything with
.all_interfaces.HxSpreadSheetInterface) to a Pandas data frame with the column names intact.
You must use the object handle, not just the name of the object! For example,
to convert a HxLabelAnalysis data object named "chocolate-bar.Label-Analysis":
@tlancon
tlancon / MultipleChoice.py
Created June 24, 2018 18:54
Compares a user's input to a list of allowable reponses and returns the keyword.
def parse_response(multiple_choice, prompt=None):
"""
Splits a user's input into individual words and searches a list
of allowable responses for a unique match, then returns the word
that matches one of the options.
List comprehension syntax explained for my own reference:
1. for i in response.split() - breaks every word of response
into individual strings
2. if i in multiple_choice - searches for ALL recognized words
@tlancon
tlancon / GetLabelAnalysisCellContents.py
Created July 20, 2018 16:02
Retrieves the contents of a specific cell from a tablelike-object (HxLabelAnalysis, HxSpreadSheet, etc.) in Amira/Avizo.
# Copy/paste into the Avizo/Amira Python console.
# Alternatively, save to a file, add that file to your path, and import.
# See docstring for usage.
def get_cell_contents(tablelike_object,row,column,table=0):
"""
Retrieves contents of cell i,j in a table through
HxSpreadSheetInterface.
You must use the object handle, not just the name of the object! For example,
to get the contents of row 4 from column 5 of a HxLabelAnalysis data object
@tlancon
tlancon / sarcastify.py
Last active July 2, 2019 17:01
Make any string sarcastic!
def sarcastify(my_string):
"""
Returns a sarcastic version of the provided string.
Example:
>>> sarcastify('Do you really think that\'s a good idea?')
"dO YoU ReAlLy tHiNk tHaT'S A GoOd iDeA?"
Useful for arguing online or replying all to that email that accidentally
went to the whole company.
@tlancon
tlancon / distance_between_points.py
Created May 17, 2020 04:19
Calculate the distance between X, Y points saved arrays using NumPy's diff() function without a loop.
import numpy as np
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([4, 5, 6, 7, 8, 9])
displacement = np.sqrt(np.diff(x, prepend=x[0])**2 + np.diff(y, prepend=y[0])**2)
@tlancon
tlancon / InspectLine.py
Created May 28, 2020 21:23
Inspect labeled objects in an image touching either a horizontal or vertical center line. Information is printed to the console.
import os
import numpy as np
import matplotlib.pyplot as plt
from skimage import io
from skimage.measure import regionprops
# ----------------------------------------------------------
# Input
wdir = os.path.dirname('<DIRECTORY_CONTAINING_IMAGES>')
fname = '<LABELED_IMAGE_NAME>.tif'
@tlancon
tlancon / reject_outliers.py
Created June 5, 2020 18:52
Reject outliers from a 1D signal based on a sliding window and a deviation threshold.
def reject_outliers(arr, window_size, threshold):
"""
Given a 1D signal, replace outliers with the average of the surrounding points.
Does the following for every point:
1. Computes the median of the sliding window
2. Computes the percentage difference between the current point and the
sliding window median
3. If that deviation exceeds the given threshold, replaces that point with
the average of the surrounding two points.
@tlancon
tlancon / rip_gopro_audio.cmd
Last active September 29, 2020 14:02
Rips the audio from the all MP4s in the current directory to WAV. Requires FFMPEG.
for /r %%f in (*MP4) do (
ffmpeg -i %%f -q:a 0 -map a "%%~nf.wav"
)