remove if conditions and relying on pysal.W to build weights norms

This commit is contained in:
Andy Eschbacher 2016-04-01 08:22:27 -04:00
parent 693f6a68db
commit 3294eb35ab

View File

@ -20,19 +20,23 @@ def construct_neighbor_query(w_type, query_vals):
def get_weight(query_res, w_type='knn', num_ngbrs=5): def get_weight(query_res, w_type='knn', num_ngbrs=5):
""" """
Construct PySAL weight from return value of query Construct PySAL weight from return value of query
@param query_res: query results with attributes and neighbors @param query_res dict-like: query results with attributes and neighbors
""" """
if w_type == 'knn': # if w_type == 'knn':
row_normed_weights = [1.0 / float(num_ngbrs)] * num_ngbrs # row_normed_weights = [1.0 / float(num_ngbrs)] * num_ngbrs
weights = {x['id']: row_normed_weights for x in query_res} # weights = {x['id']: row_normed_weights for x in query_res}
else: # else:
weights = {x['id']: [1.0 / len(x['neighbors'])] * len(x['neighbors']) # weights = {x['id']: [1.0 / len(x['neighbors'])] * len(x['neighbors'])
if len(x['neighbors']) > 0 # if len(x['neighbors']) > 0
else [] for x in query_res} # else [] for x in query_res}
neighbors = {x['id']: x['neighbors'] for x in query_res} neighbors = {x['id']: x['neighbors'] for x in query_res}
print 'len of neighbors: %d' % len(neighbors)
return ps.W(neighbors, weights) built_weight = ps.W(neighbors)
built_weight.transform = 'r'
return built_weight
def query_attr_select(params): def query_attr_select(params):
""" """