Skip to content

Instantly share code, notes, and snippets.

View johnarban's full-sized avatar

John Arban Lewis johnarban

View GitHub Profile
/*
* Binary Ajax 0.1.10
* Copyright (c) 2008 Jacob Seidelin, [email protected], http://blog.nihilogic.dk/
* Licensed under the MPL License [http://www.nihilogic.dk/licenses/mpl-license.txt]
*/
var BinaryFile = function(strData, iDataOffset, iDataLength) {
var data = strData;
var dataOffset = iDataOffset || 0;
@johnarban
johnarban / view_nested.py
Created October 29, 2022 20:05
View the nested structure of a pandas DataFrame
from pandas import DataFrame, concat, Series, isna
import json
def expand_subdict(df_col):
"""
Expand a column of dictionaries into a Series
Drop any all nan columns
"""
# drop empty columns that are sometimes created.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@johnarban
johnarban / WCSAxes Example.ipynb
Last active June 17, 2021 14:14
Worked example plotting data with WCS defined axes
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@johnarban
johnarban / simple cutoff_filter.py
Last active March 6, 2021 19:21
A simple frequency cutoff filter based on FFT
# adapted from > https://scipy-lectures.org/intro/scipy/auto_examples/plot_fftpack.html
import numpy as np
from scipy import fftpack
from matplotlib import pyplot as plt
def signal_gen(time_step):
# generate a random signal with low and high frequency components
np.random.seed(1234)
@johnarban
johnarban / IronFall.py
Last active July 18, 2021 09:44
Time to fall from 1 meter to surface of 100 kg iron ball (CodysLab question)
#this should work with a vanilla python install
from math import sqrt, acos
#equation from https://aapt.scitation.org/doi/pdf/10.1119/1.2344089
# derivation is included in their appendix. it is not openly available
# let's work in kg - m - s, SI units
G = 6.674e-11 # 6.674e-11 in SI units
M = 100 # kg
dens = 7847 # kg/m^3
@johnarban
johnarban / montyhall.py
Last active January 26, 2020 01:38
Brooklyn 99 themed Monty Hall Problem
# Simulate the monty hall probelm
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
#import tqdm # gives you a progress bar using tqdm.trange(n)
def monty_hall(switch = None):
# get some doors
door = np.array([0,1,2])
@johnarban
johnarban / turbo_colormap.py
Created October 30, 2019 04:22 — forked from mikhailov-work/turbo_colormap.py
Turbo Colormap Look-up Table
# Copyright 2019 Google LLC.
# SPDX-License-Identifier: Apache-2.0
# Author: Anton Mikhailov
turbo_colormap_data = [[0.18995,0.07176,0.23217],[0.19483,0.08339,0.26149],[0.19956,0.09498,0.29024],[0.20415,0.10652,0.31844],[0.20860,0.11802,0.34607],[0.21291,0.12947,0.37314],[0.21708,0.14087,0.39964],[0.22111,0.15223,0.42558],[0.22500,0.16354,0.45096],[0.22875,0.17481,0.47578],[0.23236,0.18603,0.50004],[0.23582,0.19720,0.52373],[0.23915,0.20833,0.54686],[0.24234,0.21941,0.56942],[0.24539,0.23044,0.59142],[0.24830,0.24143,0.61286],[0.25107,0.25237,0.63374],[0.25369,0.26327,0.65406],[0.25618,0.27412,0.67381],[0.25853,0.28492,0.69300],[0.26074,0.29568,0.71162],[0.26280,0.30639,0.72968],[0.26473,0.31706,0.74718],[0.26652,0.32768,0.76412],[0.26816,0.33825,0.78050],[0.26967,0.34878,0.79631],[0.27103,0.35926,0.81156],[0.27226,0.36970,0.82624],[0.27334,0.38008,0.84037],[0.27429,0.39043,0.85393],[0.27509,0.40072,0.86692],[0.27576,0.41097,0.87936],[0.27628,0.42118,0.89123],[0.27667,0.43134,0.90254],[0.27691,0.44145,0.913
from glue.core import Data, DataCollection
from glue.core.component_link import ComponentLink
for i,d1 in enumerate(dc):
for j,d2 in enumerate(dc):
if j>i:#d1.label != d2.label:
print('\n',d1.label,' <---> ',d2.label,'\n')
comp1 = d1.components
comp2 = d2.components
for c1 in comp1:
for c2 in comp2:
@johnarban
johnarban / whatsapp_chat_log_parser.py
Last active June 6, 2019 01:23
code to analyze whatsapp chat log
import numpy as np
import matplotlib.pyplot as plt
import re
import emoji # pip install emojie
import datetime
from wordcloud import WordCloud #pip install wordcloud
import seaborn as sns # pip install seaborn
from astropy.time import Time # pip install astropy
plt.ion()