75 lines
2.9 KiB
MySQL
75 lines
2.9 KiB
MySQL
|
CREATE OR REPLACE FUNCTION cdb_crankshaft.cdb_crankshaft_version()
|
|||
|
RETURNS text AS $$
|
|||
|
SELECT '0.0.2'::text;
|
|||
|
$$ language 'sql' STABLE STRICT;
|
|||
|
|
|||
|
CREATE OR REPLACE FUNCTION cdb_crankshaft._cdb_crankshaft_internal_version()
|
|||
|
RETURNS text AS $$
|
|||
|
SELECT installed_version FROM pg_available_extensions where name='crankshaft' and pg_available_extensions IS NOT NULL;
|
|||
|
$$ language 'sql' STABLE STRICT;
|
|||
|
CREATE OR REPLACE FUNCTION cdb_crankshaft._cdb_crankshaft_virtualenvs_path()
|
|||
|
RETURNS text
|
|||
|
AS $$
|
|||
|
BEGIN
|
|||
|
RETURN '/home/ubuntu/crankshaft/envs';
|
|||
|
END;
|
|||
|
$$ language plpgsql IMMUTABLE STRICT;
|
|||
|
|
|||
|
CREATE OR REPLACE FUNCTION cdb_crankshaft._cdb_crankshaft_activate_py()
|
|||
|
RETURNS VOID
|
|||
|
AS $$
|
|||
|
import os
|
|||
|
# plpy.notice('%',str(os.environ))
|
|||
|
# activate virtualenv
|
|||
|
crankshaft_version = plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_internal_version()')[0]['_cdb_crankshaft_internal_version']
|
|||
|
base_path = plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_virtualenvs_path()')[0]['_cdb_crankshaft_virtualenvs_path']
|
|||
|
default_venv_path = os.path.join(base_path, crankshaft_version)
|
|||
|
venv_path = os.environ.get('CRANKSHAFT_VENV', default_venv_path)
|
|||
|
activate_path = venv_path + '/bin/activate_this.py'
|
|||
|
exec(open(activate_path).read(), dict(__file__=activate_path))
|
|||
|
$$ LANGUAGE plpythonu;
|
|||
|
|
|||
|
CREATE OR REPLACE FUNCTION
|
|||
|
cdb_crankshaft._cdb_random_seeds (seed_value INTEGER) RETURNS VOID
|
|||
|
AS $$
|
|||
|
plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()')
|
|||
|
from crankshaft import random_seeds
|
|||
|
random_seeds.set_random_seeds(seed_value)
|
|||
|
$$ LANGUAGE plpythonu;
|
|||
|
-- Moran's I
|
|||
|
CREATE OR REPLACE FUNCTION
|
|||
|
cdb_crankshaft.cdb_moran_local (
|
|||
|
t TEXT,
|
|||
|
attr TEXT,
|
|||
|
significance float DEFAULT 0.05,
|
|||
|
num_ngbrs INT DEFAULT 5,
|
|||
|
permutations INT DEFAULT 99,
|
|||
|
geom_column TEXT DEFAULT 'the_geom',
|
|||
|
id_col TEXT DEFAULT 'cartodb_id',
|
|||
|
w_type TEXT DEFAULT 'knn')
|
|||
|
RETURNS TABLE (moran FLOAT, quads TEXT, significance FLOAT, ids INT)
|
|||
|
AS $$
|
|||
|
plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()')
|
|||
|
from crankshaft.clustering import moran_local
|
|||
|
# TODO: use named parameters or a dictionary
|
|||
|
return moran_local(t, attr, significance, num_ngbrs, permutations, geom_column, id_col, w_type)
|
|||
|
$$ LANGUAGE plpythonu;
|
|||
|
|
|||
|
CREATE OR REPLACE FUNCTION
|
|||
|
cdb_crankshaft.cdb_moran_local_rate(t TEXT,
|
|||
|
numerator TEXT,
|
|||
|
denominator TEXT,
|
|||
|
significance FLOAT DEFAULT 0.05,
|
|||
|
num_ngbrs INT DEFAULT 5,
|
|||
|
permutations INT DEFAULT 99,
|
|||
|
geom_column TEXT DEFAULT 'the_geom',
|
|||
|
id_col TEXT DEFAULT 'cartodb_id',
|
|||
|
w_type TEXT DEFAULT 'knn')
|
|||
|
RETURNS TABLE(moran FLOAT, quads TEXT, significance FLOAT, ids INT, y numeric)
|
|||
|
AS $$
|
|||
|
plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()')
|
|||
|
from crankshaft.clustering import moran_local_rate
|
|||
|
# TODO: use named parameters or a dictionary
|
|||
|
return moran_local_rate(t, numerator, denominator, significance, num_ngbrs, permutations, geom_column, id_col, w_type)
|
|||
|
$$ LANGUAGE plpythonu;
|