Skip to content

Instantly share code, notes, and snippets.

@jcmgray
jcmgray / sgd-for-scipy.py
Created June 18, 2020 19:33
Stochastic gradient descent functions compatible with ``scipy.optimize.minimize(..., method=func)``.
import numpy as np
from scipy.optimize import OptimizeResult
def sgd(
fun,
x0,
jac,
args=(),
learning_rate=0.001,
@jcmgray
jcmgray / oset.py
Created May 30, 2020 07:19
oset - an fast ordered set implemenation using the 'orderedness' of py3.6+ dicts
class oset:
"""An ordered set which stores elements as the keys of a dict (ordered as
of python 3.6). 'A few times' slower than using a set directly for small
sizes, but makes everything deterministic.
"""
def __init__(self, it):
self._d = dict.fromkeys(it)
@classmethod
@jcmgray
jcmgray / oinsum.py
Created May 30, 2020 07:15
oinsum - an einsum implementation for numpy object arrays
def oinsum(eq, *arrays):
"""A ``einsum`` implementation for ``numpy`` object arrays.
"""
import numpy as np
import functools
import operator
lhs, output = eq.split('->')
inputs = lhs.split(',')
@jcmgray
jcmgray / compare_pip_and_conda_packages.py
Last active March 12, 2019 01:10
List: (a) pip installed packages that can be found on conda, (b) pip-only installed packages that are outdated.
#!/usr/bin/env python
import subprocess
print("Finding packages conda says are installed by pip...")
conda_raw = subprocess.run(
['conda', 'list'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
).stdout.decode('utf-8')
@jcmgray
jcmgray / opt-einsum-benchmark-paths.ipynb
Last active September 1, 2019 21:18
Benchmarking path finding for opt-einsum v3.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@jcmgray
jcmgray / .gitignore
Last active October 11, 2018 14:01
Sample data for opt_einsum large contractions
\.ipynb_checkpoints/
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@jcmgray
jcmgray / cached_contract.py
Created August 8, 2018 22:20
Uses xxhash and LRU to cache the results of tensordot based on the input arrays themselves.
import functools
import numpy as np
transpose = np.transpose
einsum = np.einsum
@functools.lru_cache(1)
def get_hasher():
@jcmgray
jcmgray / rand_reg_graph_maxcut_step_qasm_create.py
Last active July 25, 2018 12:48
Create quantum circuit file for a single trotterization step of the maxcut QAOA algorithm.
import networkx as nx
reg = 3
n = 100
seed = 0
gamma0 = -0.743043
beta0 = 0.754082
# create the random graph