MCPcopy
hub / github.com/mne-tools/mne-python / _decimate_surface_spacing

Function _decimate_surface_spacing

mne/surface.py:1345–1374  ·  view source on GitHub ↗
(surf, spacing)

Source from the content-addressed store, hash-verified

1343
1344
1345def _decimate_surface_spacing(surf, spacing):
1346 assert isinstance(spacing, int)
1347 assert spacing > 0
1348 logger.info(" Decimating...")
1349 d = np.full(surf["np"], 10000, int)
1350
1351 # A mysterious algorithm follows
1352 for k in range(surf["np"]):
1353 neigh = surf["neighbor_vert"][k]
1354 d[k] = min(np.min(d[neigh]) + 1, d[k])
1355 if d[k] >= spacing:
1356 d[k] = 0
1357 d[neigh] = np.minimum(d[neigh], d[k] + 1)
1358
1359 if spacing == 2.0:
1360 for k in range(surf["np"] - 1, -1, -1):
1361 for n in surf["neighbor_vert"][k]:
1362 d[k] = min(d[k], d[n] + 1)
1363 d[n] = min(d[n], d[k] + 1)
1364 for k in range(surf["np"]):
1365 if d[k] > 0:
1366 neigh = surf["neighbor_vert"][k]
1367 n = np.sum(d[neigh] == 0)
1368 if n <= 2:
1369 d[k] = 0
1370 d[neigh] = np.minimum(d[neigh], d[k] + 1)
1371
1372 surf["inuse"] = np.zeros(surf["np"], int)
1373 surf["inuse"][d == 0] = 1
1374 return surf
1375
1376
1377@verbose

Callers 1

_create_surf_spacingFunction · 0.85

Calls 3

infoMethod · 0.80
minimumMethod · 0.80
sumMethod · 0.45

Tested by

no test coverage detected