summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbsimon <bsimon@stsci.edu>2015-04-09 15:38:55 -0400
committerbsimon <bsimon@stsci.edu>2015-04-09 15:38:55 -0400
commit0a03767000dcb29e998d55c120e21f892e2288c3 (patch)
tree8482dc2de72c0d43ea834caf9b3167a8b49ecd68
parent457db3570a50cf2d88fa5ac00d1ba1d5b119ea7a (diff)
downloadstsci.sphere-0a03767000dcb29e998d55c120e21f892e2288c3.tar.gz
adding some backport changes I missed on the first time around
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/stsci.sphere/trunk@38912 fe389314-cf27-0410-b35b-8c050e845b92 Former-commit-id: 5f708691fc28a7c2846cf110e5fe656cfeda8ee3
-rw-r--r--stsci/sphere/graph.py22
-rw-r--r--stsci/sphere/polygon.py6
2 files changed, 23 insertions, 5 deletions
diff --git a/stsci/sphere/graph.py b/stsci/sphere/graph.py
index 55d5835..c6062d1 100644
--- a/stsci/sphere/graph.py
+++ b/stsci/sphere/graph.py
@@ -410,10 +410,15 @@ class Graph:
if not DEBUG:
return
+ log = open("/tmp/sanity.log", 'a')
+ log.write("\n" + title + "\n")
try:
unique_edges = set()
+ log.write("list of edges\n")
for edge in self._edges:
+ log.write("edge: " + str(edge) + "\n")
for node in edge._nodes:
+ log.write("node: " + str(node) + "\n")
assert edge in node._edges
assert node in self._nodes
edge_repr = [tuple(x._point) for x in edge._nodes]
@@ -422,19 +427,24 @@ class Graph:
# assert edge_repr not in unique_edges
unique_edges.add(edge_repr)
+ log.write("list of nodes\n")
for node in self._nodes:
+ log.write("node: " + str(node) + "\n")
if node_is_2:
- assert len(node._edges) == 2
+ assert len(node._edges) % 2 == 0
else:
assert len(node._edges) >= 2
for edge in node._edges:
+ log.write("edge: " + str(edge) + "\n")
assert node in edge._nodes
assert edge in self._edges
except AssertionError as e:
+ log.close()
import traceback
traceback.print_exc()
self._dump_graph(title=title)
raise
+ log.close()
def _dump_graph(self, title=None, lon_0=0, lat_0=90,
projection='vandg', func=lambda x: len(x._edges),
@@ -822,6 +832,9 @@ class Graph:
polygons = []
edges = set(self._edges) # copy
+ for edge in self._edges:
+ edge._followed = False
+
while len(edges):
points = []
edge = edges.pop()
@@ -833,7 +846,12 @@ class Graph:
points.append(node._point)
else:
points.append(node._point)
- edge = node.follow(edge)
+ for edge in node._edges:
+ if edge._followed is False:
+ break
+ else:
+ raise ValueError("No more edges to follow")
+ edge._followed = True
edges.discard(edge)
node = edge.follow(node)
if node is start_node:
diff --git a/stsci/sphere/polygon.py b/stsci/sphere/polygon.py
index 449bd79..509cece 100644
--- a/stsci/sphere/polygon.py
+++ b/stsci/sphere/polygon.py
@@ -88,7 +88,7 @@ class _SingleSphericalPolygon(object):
else:
assert np.array_equal(points[0], points[-1]), 'Polygon is not closed'
- self._points = np.asanyarray(points)
+ self._points = points = np.asanyarray(points)
if inside is None:
self._inside = self._find_new_inside(points)
@@ -515,7 +515,7 @@ class _SingleSphericalPolygon(object):
return inside
# Fallback to the mean
- return np.sum(points[:-1]) / (len(points) - 1)
+ return np.sum(points[:-1], axis=0) / (len(points) - 1)
def intersection(self, other):
"""
@@ -691,7 +691,7 @@ class SphericalPolygon(object):
Iterate over the inside point of each of the polygons.
"""
for polygon in self.iter_polygons_flat():
- yield polygon.points
+ yield polygon.inside
@property
def polygons(self):