I’ve made a test evaluation of edgedb for the purposes of a small company.
My order of priorities (starting from most important):
- correctness of results (data and code)
- developer convenience
- minimal maintenance
- efficiency/scalability
# Run command with the same user ID as current user | |
# -v $(pwd):/tmp/mount - mount current directory to /tmp/mount/ | |
# --env HOME="/tmp/" - some commands may need to be able to write to your home, se it to temporary folder | |
docker run -ti --rm -v $(pwd):/tmp/mount —user=$(id -u) --env HOME="/tmp/" debian:jessie | |
# Mount current users and group and be able to use them | |
# mount /etc/group and /etc/passwd read only | |
# set user from $USER | |
docker run -ti --rm -v $(pwd):/tmp/mount -w /tmp/hx -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro —user=$USER debian:jessie |
----> call function __getitem__ | |
------> call function __contains__ | |
<------ exit function __contains__ | |
------> call function _getitem_column | |
--------> call function _get_item_cache | |
----------> call function get | |
------------> call function _get_items | |
<------------ exit function _get_items | |
------------> call function isnull | |
--------------> call function _isnull_new |
# to be executed from different notebook! | |
def check_notebook_reproducibility(filename): | |
md5s = [] | |
for attempt in [1, 2]: | |
!jupyter nbconvert --to notebook --inplace --execute $filename --ExecutePreprocessor.timeout=86400 | |
result = !md5sum $filename | |
md5s.append(result) | |
print result | |
a, b = md5s | |
assert a == b, 'hashes are different' |
def compile_fortran(source, modulename, extra_args=''): | |
import tempfile | |
import sys | |
import numpy.f2py | |
from numpy.distutils.exec_command import exec_command | |
try: | |
f = tempfile.NamedTemporaryFile(suffix='.f90') | |
f.write(source) | |
f.flush() |
def isotonic_transform(x, y, alpha=0.001): | |
target = y + 0. | |
output = numpy.zeros(len(x)) | |
steps = 2 ** numpy.arange(int(numpy.log2(len(x)) - 1))[::-1] | |
print steps | |
for i in range(100): | |
for step in steps: | |
penalty = 2 * (target - output) | |
diffs = - (output[step:] - output[:-step]) | |
diffs = diffs.clip(0) |
import numpy | |
from scipy.special import expit | |
class GRBM(object): | |
def __init__(self, n_vis, n_hid, std=0.1): | |
self.std = std | |
self.W = numpy.random.normal(loc=-1./n_hid, scale=0.1, size=[n_vis + 1, n_hid + 1]) | |
def hidden_p(self, data): | |
result = expit(data.dot(self.W)) |