Skip to content

Instantly share code, notes, and snippets.

View mehdidc's full-sized avatar

Mehdi Cherti mehdidc

View GitHub Profile
# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
@mehdidc
mehdidc / cython_tricks.md
Created May 6, 2018 08:47 — forked from ctokheim/cython_tricks.md
cython tricks

Cython

Cython has two major benefits:

  1. Making python code faster, particularly things that can't be done in scipy/numpy
  2. Wrapping/interfacing with C/C++ code

Cython gains most of it's benefit from statically typing arguments. However, statically typing is not required, in fact, regular python code is valid cython (but don't expect much of a speed up). By incrementally adding more type information, the code can speed up by several factors. This gist just provides a very basic usage of cython.

@mehdidc
mehdidc / Ubuntu1604py36Dockerfile
Created April 11, 2018 22:21 — forked from monkut/Ubuntu1604py36Dockerfile
Base Docker image for ubuntu-16.04 & Python3.6
# docker build -t ubuntu1604py36
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y software-properties-common vim
RUN add-apt-repository ppa:jonathonf/python-3.6
RUN apt-get update
RUN apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv
RUN apt-get install -y git
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Start window numbering at 1
set -g base-index 1
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-copycat'
id start end
0 2015-06-06 09:23:14.000000 2015-06-06 10:23:00.000000
1 2015-06-06 10:28:05.000000 2015-06-06 11:28:00.000000
2 2015-06-06 11:33:00.000000 2015-06-06 12:33:00.000000
3 2015-06-06 12:38:00.000000 2015-06-06 13:38:00.000000
4 2015-06-06 14:12:06.000000 2015-06-06 15:12:00.000000
5 2015-06-06 15:20:10.000000 2015-06-06 16:20:00.000000
6 2015-06-06 16:25:00.000000 2015-06-06 17:25:18.000000
7 2015-06-08 09:38:39.000000 2015-06-08 10:39:00.000000
8 2015-06-08 10:44:00.000000 2015-06-08 11:44:00.000000
@mehdidc
mehdidc / tmux_cheatsheet.markdown
Created November 26, 2017 01:00 — forked from henrik/tmux_cheatsheet.markdown
tmux cheatsheet

tmux cheatsheet

As configured in my dotfiles.

start new:

tmux

start new with session name:

import pickle
import sys
import numpy as np
import os
from subprocess import call
import pandas as pd
from skimage.io import imsave
from subprocess import call
import numpy as np
import os
import pandas as pd
from skimage.io import imsave
def download(url):
fname = os.path.basename(url)
if not os.path.exists(fname):
@mehdidc
mehdidc / showarray.py
Created June 30, 2017 11:45 — forked from kylemcdonald/showarray.py
Minimal code for rendering a numpy array as an image in a Jupyter notebook in memory. Borrowed from the Deep Dream notebook.
import PIL.Image
from cStringIO import StringIO
import IPython.display
import numpy as np
def showarray(a, fmt='png'):
a = np.uint8(a)
f = StringIO()
PIL.Image.fromarray(a).save(f, fmt)
IPython.display.display(IPython.display.Image(data=f.getvalue()))
import numpy as np
from scipy.spatial.distance import cdist
from lapjv import lapjv
def grid_embedding(h):
assert int(np.sqrt(h.shape[0])) ** 2 == h.shape[0], 'Nb of examples must be a square number'
size = np.sqrt(h.shape[0])
grid = np.dstack(np.meshgrid(np.linspace(0, 1, size), np.linspace(0, 1, size))).reshape(-1, 2)
cost_matrix = cdist(grid, h, "sqeuclidean").astype('float32')
cost_matrix = cost_matrix * (100000 / cost_matrix.max())