fix query templating / response access

This commit is contained in:
Andy Eschbacher
2016-12-06 12:26:25 -05:00
parent c884eae90e
commit cc0a683a26
2 changed files with 9 additions and 6 deletions

View File

@@ -46,13 +46,15 @@ class AnalysisDataProvider:
def get_nonspatial_kmeans(self, params):
"""fetch data for non-spatial kmeans"""
agg_cols = ', '.join(['array_agg({0}) As arr_col{1}'.format(idx+1, val)
for idx, val in enumerate(params['colnames'])])
query = '''
SELECT {cols}, array_agg({id_col}) As rowid
FROM ({subquery}) As a
'''.format(subquery=params['subquery'],
id_col=params['id_col'],
cols=', '.join(['array_agg({0}) As arr_{0}'.format(c)
for c in params['colnames']]))
cols=agg_cols)
try:
data = plpy.execute(query)
return data

View File

@@ -59,9 +59,9 @@ class Kmeans:
# fill array with values for k-means clustering
if standarize:
cluster_columns = _scale_data(
_extract_columns(data, colnames))
_extract_columns(data, len(colnames)))
else:
cluster_columns = _extract_columns(data, colnames)
cluster_columns = _extract_columns(data, len(colnames))
print str(cluster_columns)
# TODO: decide on optimal parameters for most cases
@@ -84,14 +84,15 @@ class Kmeans:
# -- Preprocessing steps
def _extract_columns(data, colnames):
def _extract_columns(data, n_cols):
"""
Extract the features from the query and pack them into a NumPy array
data (list of dicts): result of the kmeans request
id_col_name (string): name of column which has the row id (not a
feature of the analysis)
"""
return np.array([data[0]['arr_{}'.format(c)] for c in colnames],
return np.array([data[0]['arr_col{0}'.format(i+1)]
for i in xrange(n_cols)],
dtype=float).T