Skip to content

Instantly share code, notes, and snippets.

View jaantollander's full-sized avatar

Jaan Tollander de Balsch jaantollander

View GitHub Profile
@jaantollander
jaantollander / public.py
Last active February 13, 2017 16:06
Python decorator to add objects to __all__
def public(f):
"""Use a decorator to avoid retyping function/class names. [#]_
* Based on an idea by Duncan Booth:
http://groups.google.com/group/comp.lang.python/msg/11cbb03e09611b8a
* Improved via a suggestion by Dave Angel:
http://groups.google.com/group/comp.lang.python/msg/3d400fb22d8a42e1
References:
.. [#] https://stackoverflow.com/questions/6206089/is-it-a-good-practice-to-add-names-to-all-using-a-decorator
@jaantollander
jaantollander / format_time.py
Last active February 14, 2017 13:25
IPython notebook's timeit time_format function
import math
import sys
def format_time(timespan, precision=3):
"""Formats the timespan in a human readable form
Args:
timespan (float):
Time in seconds.
@jaantollander
jaantollander / sphinx-quickstart.sh
Last active March 8, 2017 15:52
Script quick-starting Sphinx
sphinx-quickstart "docs" -p "project" -a "Jaan Tollander de Balsch" -v "0.1" -l "en" --makefile --batchfile --quiet
@jaantollander
jaantollander / compose.py
Last active March 13, 2017 09:22
Python script for composing functions
# Adapted from a comment from:
# https://mathieularose.com/function-composition-in-python/
import functools
def compose(*funcs):
"""Compose functions f, g, h, ... into ...(f(g(h(x))))
Args:
*funcs: Functions to be composed. Fuctions must take only one argument.
@jaantollander
jaantollander / agent.csv
Created March 15, 2017 12:26
Old agent configuration file
name symbol value unit explanation source
size :math:`N` Number of agents (N)
shape :math:`(N, 2)` Shape for arrays
three_circles_flag Boolean indicating if agent is modeled with three circle model
orientable_flag Boolean indicating if agent is orientable
active Boolean indicating if agent is active
goal_reached Boolean indicating if goal is reahed
mass :math:`m` kg Mass fds+evac
radius :math:`r` m Radius fds+evac
r_t :math:`r_t` m Radius of torso fds+evac
@jaantollander
jaantollander / format_numpy.py
Created March 15, 2017 14:42
Setup string formatting of numpy arrays
def format_numpy(precision=5, threshold=6, edgeitems=3, linewidth=None,
suppress=False, nanstr=None, infstr=None, formatter=None):
try:
import numpy as np
np.set_printoptions(precision, threshold, edgeitems, linewidth,
suppress, nanstr, infstr, formatter)
except ImportError:
return
@jaantollander
jaantollander / yield_from.py
Last active March 19, 2017 05:26
Example of python yield from aka generator delegation syntax
def generator(): return range(10)
# Here f and g does the exactly same thing
# Generator delegation
def f():
yield from generator()
# Legacy python syntax
@jaantollander
jaantollander / geometry.py
Last active April 17, 2017 07:21
Converting shapely geometries to other objects
"""Convert shapely geometries to other objects
Other interfaces
- matplotlib: PathPatch
- pyqtgraph: PlotItem
- bokeh: Glyph
- scikit-image: Indices on a grid
References
@jaantollander
jaantollander / patterns.py
Last active May 21, 2017 07:03
Pycharm live templates for various Python patterns
# Pytest
def test_$NAME$():
assert True$END$
# Traitlets
@default('$NAME$')
def _default_$NAME$(self):
return $END$
@jaantollander
jaantollander / lprof.py
Created June 1, 2017 05:11
How to use Python line_profiler programatically
"""How to use line profiler [1]_ programatically. Code adapted from [2]_.
.. [1] https://github.com/rkern/line_profiler
.. [2] https://nvbn.github.io/2017/05/29/complexity/
"""
from line_profiler import LineProfiler
def main(*args, **kwargs):
"""Function to be profiled"""