Skip to content

Instantly share code, notes, and snippets.

@mattmcd
mattmcd / print_sympy_expr.py
Created January 24, 2021 15:41
Printing a SymPy LaTeX expression to png e.g. for Markdown or Medium
from subprocess import run
import sympy as sp
def print_to_file(fname, expr):
# See https://tex.stackexchange.com/questions/34054/tex-to-image-over-command-line/34058#34058
t_start = r"""\documentclass[border=2pt]{standalone}
\usepackage{amsmath}
\usepackage{varwidth}
\begin{document}
{
"verbs" : ["aggregate", "architect", "benchmark", "brand", "cultivate", "deliver", "deploy", "disintermediate",
"disrupt", "drive", "e-enable", "embrace", "empower", "enable", "engage", "engineer", "enhance",
"envisioneer", "evolve", "expedite", "exploit", "extend", "facilitate", "generate", "grow", "harness", "implement", "incentivize", "incubate", "innovate", "integrate",
"iterate", "leverage", "matrix", "maximize", "mesh", "monetize", "morph", "optimize", "orchestrate", "productize", "recontextualize", "redefine", "reintermediate",
"reinvent", "repurpose", "revolutionize", "scale", "seize", "strategize", "streamline", "syndicate", "synergize", "synthesize", "target",
"transform", "transition", "unleash", "utilize", "visualize", "whiteboard"],
"adjectives": ["24/365", "24/7", "B2B", "B2C", "back-end", "best-of-breed", "bleeding-edge", "bricks-and-clicks", "clicks-and-mortar",
"collaborative", "compelling", "cross-p
@mattmcd
mattmcd / kullback_leibler.py
Last active April 6, 2018 08:33
Kullback Leibler divergence between two Gaussians
import sympy as sp
x = sp.symbols('x', real=True)
p, q = sp.symbols('p q', positive=True)
KL = sp.Integral(p*sp.log(p) - p*sp.log(q), (x, -sp.oo, sp.oo))
mu, mu1, mu2 = sp.symbols('mu mu1 mu2', real=True)
sig, sig1, sig2 = sp.symbols('sig sig1 sig2', positive=True)
n = 1/sp.sqrt(2*sp.pi*sig**2)*sp.exp(-(x - mu)**2/(2*sig**2))
KL_n = sp.simplify(
KL.subs({p: n.subs({mu: mu1, sig: sig1}), q: n.subs({mu: mu2, sig: sig2})}).doit()
)
@mattmcd
mattmcd / lib_install.py
Created March 20, 2018 17:27
Hook for AWS Lambda function to retrieve library files from S3 and add to local path in tmp directory
import boto3
import os
import sys
import zipfile
HERE = os.path.dirname(os.path.realpath(__file__))
def library_install():
"""Dynamically add libraries to path, retrieving from S3 if necessary
@mattmcd
mattmcd / Dockerfile
Created March 20, 2018 10:56
TensorFlow library install on AmazonLinux for AWS Lambda
FROM amazonlinux:latest
MAINTAINER Matt McDonnell "matt@matt-mcdonnell.com"
RUN yum -y -q update
RUN yum -y -q install python27-pip zip
RUN pip install -q virtualenv
@mattmcd
mattmcd / MaskRCNN_setup.sh
Last active March 31, 2018 07:34
10 minutes to Mask R-CNN
# Amazon #Sagemaker instance
# open Jupyter
# new terminal
cd SageMaker
git clone https://github.com/matterport/Mask_RCNN.git
git clone https://github.com/waleedka/coco.git
cd coco/PythonAPI
source activate tensorflow_p36
make
python setup.py install
@mattmcd
mattmcd / two_compartment.py
Created December 23, 2016 11:25
PyStan version of two compartment model from "Stan: A probabilistic programming language for Bayesian inference and optimization" Gelman, Lee, Guo (2015)
import pystan
import numpy as np
# Two compartment model from
# "Stan: A probabilistic programming language for
# Bayesian inference and optimization" Gelman, Lee, Guo (2015)
# http://www.stat.columbia.edu/~gelman/research/published/stan_jebs_2.pdf
a = np.array([0.8, 1.0])
b = np.array([2, 0.1])

Keybase proof

I hereby claim:

  • I am mattmcd on github.
  • I am mattmcd (https://keybase.io/mattmcd) on keybase.
  • I have a public key ASC3HfvXMCZ-vnJ4gWwCe_hsgtgEHRNrV2qtHOK8iU40Bgo

To claim this, I am signing this object:

@mattmcd
mattmcd / s3_upload.json
Created May 8, 2016 10:54
IAM policy for uploading files to S3
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:CreateBucket"
@mattmcd
mattmcd / FTSE100.csv
Created May 8, 2016 08:41
Files for scheduled stock data download on EC2
ticker name premium_code free_code
ADN Aberdeen Asset Management GOOG/LON_ADN
ADM Admiral Group EOD/ADM GOOG/LON_ADM
AGK Aggreko GOOG/LON_AGK
AMEC AMEC GOOG/LON_AMEC
AAL Anglo American plc EOD/AAL GOOG/LON_AAL
ANTO Antofagasta GOOG/LON_ANTO
ARM ARM Holdings GOOG/LON_ARM
ABF Associated British Foods GOOG/LON_ABF
AZN AstraZeneca EOD/AZN GOOG/LON_AZN