Skip to content

Instantly share code, notes, and snippets.

View kurtbrose's full-sized avatar
💭
carbon based

Kurt Rose kurtbrose

💭
carbon based
View GitHub Profile
@kurtbrose
kurtbrose / usage.py
Last active April 17, 2019 00:21
playing with relativity APIs
m2m = M2M()
ch = M2MChain()
gr = M2MGraph()
# TRANSFORMING BETWEEN TYPES
chain(*ch.m2ms) # kind of a copy
chain(ch) # also results in copy
@kurtbrose
kurtbrose / log_methods.py
Created March 12, 2019 23:09
quick method logging
import collections
import functools
def log_methods(cls):
def __init__(self, *a, **kw):
cls.__init__(self, *a, **kw)
self._log = collections.deque(maxlen=100)
def logit(method):
"""
experimenting with increasingly general notions of indexing
"""
from relativity import M2M
class IndexedTriple(object):
"""
keeps track of "left" to "right" pairs
"""
@kurtbrose
kurtbrose / gist:f34524c7ad4de888505b057702df4fbe
Created February 21, 2019 05:14
maybe we should never use range(len(list))
>>> import timeit
>>> LIST = [None] * 10
>>> countrange = lambda: [1 for i in range(len(LIST))]
>>> countdirect = lambda: [1 for e in LIST]
>>> timeit.timeit(countrange, number=1000) * 1000
0.8033999999952357
>>> timeit.timeit(countdirect, number=1000) * 1000
0.5680000000012342
>>> LIST = [None] * 100
>>> timeit.timeit(countrange, number=1000) * 1000
@kurtbrose
kurtbrose / schema.py
Created February 4, 2019 08:16
sketching out what a general purpose schema container would look like
"""
A Schema is a more general container for Python objects.
In addition to tracking relationships between objects,
it can also keep other kind of indexing structures.
Will need a more flexible query object that can represent
comparisons.
NOTE -- not sure if this is really worth it since it only
import glom
class F(object):
"""
F for filter!
An F object encapsulates boolean comparisons in a similar
manner to SQLAlchemy or Pandas columns.
_PAIRING = object() # marker
#TODO: rename to Relation
class ManyToMany(object):
"""
a dict-like entity that represents a many-to-many relationship
between two groups of objects
behaves like a dict-of-tuples; also has .inv which is kept
@kurtbrose
kurtbrose / time_sampler.py
Created January 24, 2019 17:13
this is actually not useful -- just keeping it here in case it is handy later
import attr
import numpy as np
class TimeSampler(object)
'''
samples from a time indexed series based on time -- pick a random
time within the range of the series; returns the time-delta
and value-delta of the point to the right of the sample with the
point before it
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
'''
line interpolation class for doing a linear regression
'''
import numpy as np
import pandas
import attr
@attr.s
class Line(object):