Mercurial > hg > GlobalNeighbors
comparison globalneighbors/distance.py @ 1:1b94f3bf97e5
* limit distance function
* start gridding
* improve unicode handling
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sat, 24 Jun 2017 14:02:14 -0700 |
| parents | 5dba84370182 |
| children | 49aae0c0293b |
comparison
equal
deleted
inserted
replaced
| 0:5dba84370182 | 1:1b94f3bf97e5 |
|---|---|
| 94 new_distance = haversine(*args, r=Rearth) | 94 new_distance = haversine(*args, r=Rearth) |
| 95 | 95 |
| 96 # insert in order | 96 # insert in order |
| 97 for i in (id1, id2): | 97 for i in (id1, id2): |
| 98 distances = neighbors.setdefault(i, []) | 98 distances = neighbors.setdefault(i, []) |
| 99 if len(distances) == k and new_distance > distances[-1][-1]: | 99 if len(distances) == k and new_distance >= distances[-1][-1]: |
| 100 break | 100 continue |
| 101 | 101 |
| 102 # TODO: Binary Search Tree | 102 # TODO: Binary Search Tree |
| 103 for _index, (geoid, old_distance) in enumerate(distances): | 103 for _index, (geoid, old_distance) in enumerate(distances): |
| 104 if new_distance < old_distance: | 104 if new_distance < old_distance: |
| 105 distances.insert(_index, (i, new_distance)) | 105 distances.insert(_index, (i, new_distance)) |
| 107 distances.pop() | 107 distances.pop() |
| 108 break | 108 break |
| 109 else: | 109 else: |
| 110 distances.append((i, new_distance)) | 110 distances.append((i, new_distance)) |
| 111 | 111 |
| 112 print ("DONE") | |
| 113 sys.stdout.flush() | |
| 114 import pdb; pdb.set_trace() | |
| 115 return neighbors | 112 return neighbors |
| 116 | 113 |
| 117 | 114 |
| 118 def main(args=sys.argv[1:]): | 115 def main(args=sys.argv[1:]): |
| 119 """CLI""" | 116 """CLI""" |
| 142 neighbors = calculate_neighbors(city_locations, | 139 neighbors = calculate_neighbors(city_locations, |
| 143 k=options.k, | 140 k=options.k, |
| 144 output=options.output_counter) | 141 output=options.output_counter) |
| 145 | 142 |
| 146 # output | 143 # output |
| 147 print ("AFTER") | |
| 148 sys.stddout.flush() | |
| 149 options.output.write(json.dumps(neighbors, indent=2)) | 144 options.output.write(json.dumps(neighbors, indent=2)) |
| 150 | 145 |
| 151 if __name__ == '__main__': | 146 if __name__ == '__main__': |
| 152 main() | 147 main() |
