Skip to content

Commit d385174

Browse files
committed
Merge branch 'master' of github.com:pysal/libpysal into todense
2 parents 8153a8a + 42f0940 commit d385174

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

libpysal/weights/tests/test_util.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
except:
1919
HAS_GEOPANDAS = False
2020

21-
SCIPY1_7 = False
22-
if scipy.version.version == '1.7.0':
23-
SCIPY1_7 = True
2421

2522
class Testutil(unittest.TestCase):
2623
def setUp(self):
@@ -33,9 +30,7 @@ def test_lat2W(self):
3330
self.assertEqual(w9.pct_nonzero, 29.62962962962963)
3431
self.assertEqual(w9[0], {1: 1.0, 3: 1.0})
3532
self.assertEqual(w9[3], {0: 1.0, 4: 1.0, 6: 1.0})
36-
@unittest.skipIf(
37-
SCIPY1_7, "Known failure due to dia change (TOFIX)"
38-
)
33+
3934
def test_lat2SW(self):
4035
w9 = util.lat2SW(3, 3)
4136
rows, cols = w9.shape
@@ -352,12 +347,16 @@ def test_fuzzy_contiguity(self):
352347
wf = fuzzy_contiguity(rs_df)
353348
self.assertEqual(wf.islands, [])
354349
self.assertEqual(set(wf.neighbors[0]), set([239, 59, 152, 23]))
355-
buff = fuzzy_contiguity(rs_df, buffering=True, buffer=.2)
356-
self.assertEqual(set(buff.neighbors[0]), set([175, 119, 239, 59, 152, 246, 23, 107]))
357-
rs_index = rs_df.set_index('NM_MUNICIP')
350+
buff = fuzzy_contiguity(rs_df, buffering=True, buffer=0.2)
351+
self.assertEqual(
352+
set(buff.neighbors[0]), set([175, 119, 239, 59, 152, 246, 23, 107])
353+
)
354+
rs_index = rs_df.set_index("NM_MUNICIP")
358355
index_w = fuzzy_contiguity(rs_index)
359-
self.assertEqual(set(index_w.neighbors['TAVARES']), set(['SÃO JOSÉ DO NORTE', 'MOSTARDAS']))
360-
wf_pred = fuzzy_contiguity(rs_df, predicate='touches')
356+
self.assertEqual(
357+
set(index_w.neighbors["TAVARES"]), set(["SÃO JOSÉ DO NORTE", "MOSTARDAS"])
358+
)
359+
wf_pred = fuzzy_contiguity(rs_df, predicate="touches")
361360
self.assertEqual(set(wf_pred.neighbors[0]), set([]))
362361
self.assertEqual(set(wf_pred.neighbors[1]), set([142, 82, 197, 285, 386, 350]))
363362

libpysal/weights/util.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,8 @@ def lat2SW(nrows=3, ncols=5, criterion="rook", row_st=False):
12411241
m = m + m.T
12421242
if row_st:
12431243
m = sparse.spdiags(1.0 / m.sum(1).T, 0, *m.shape) * m
1244+
m = m.tocsc()
1245+
m.eliminate_zeros()
12441246
return m
12451247

12461248

@@ -1510,8 +1512,17 @@ def nonplanar_neighbors(w, geodataframe, tolerance=0.001, **kwargs):
15101512
w.non_planar_joins = fixes
15111513
return w
15121514

1513-
@requires('geopandas')
1514-
def fuzzy_contiguity(gdf, tolerance=0.005, buffering=False, drop=True, buffer=None, predicate='intersects', **kwargs):
1515+
1516+
@requires("geopandas")
1517+
def fuzzy_contiguity(
1518+
gdf,
1519+
tolerance=0.005,
1520+
buffering=False,
1521+
drop=True,
1522+
buffer=None,
1523+
predicate="intersects",
1524+
**kwargs,
1525+
):
15151526
"""
15161527
Fuzzy contiguity spatial weights
15171528
@@ -1625,7 +1636,7 @@ def fuzzy_contiguity(gdf, tolerance=0.005, buffering=False, drop=True, buffer=No
16251636
new_geometry = gdf.geometry.buffer(buffer)
16261637
gdf["_buffer"] = new_geometry
16271638
old_geometry_name = gdf.geometry.name
1628-
gdf.set_geometry('_buffer', inplace=True)
1639+
gdf.set_geometry("_buffer", inplace=True)
16291640

16301641
neighbors = {}
16311642
if GPD_08:
@@ -1641,8 +1652,8 @@ def fuzzy_contiguity(gdf, tolerance=0.005, buffering=False, drop=True, buffer=No
16411652
ids = gdf.index[res[inp == i]].tolist()
16421653
neighbors[ix] = ids
16431654
else:
1644-
if predicate != 'intersects':
1645-
raise ValueError(f'Predicate `{predicate}` requires geopandas >= 0.8.0.')
1655+
if predicate != "intersects":
1656+
raise ValueError(f"Predicate `{predicate}` requires geopandas >= 0.8.0.")
16461657
tree = gdf.sindex
16471658
for i, (ix, geom) in enumerate(gdf.geometry.iteritems()):
16481659
hits = list(tree.intersection(geom.bounds))

0 commit comments

Comments
 (0)