diff --git a/.gitignore b/.gitignore index e18bbb3..c1a1e59 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .mydepend ./pipeline/miscTools/*.out +external/libsdf/libsw/Malloc.c c_tools/hod/hod c_tools/zobov2/jozov2/jozov2 c_tools/zobov2/voz1b1/voz1b1_2 diff --git a/python_tools/void_python_tools/voidUtil/catalogUtil.py b/python_tools/void_python_tools/voidUtil/catalogUtil.py index ab0b986..b1d3caa 100644 --- a/python_tools/void_python_tools/voidUtil/catalogUtil.py +++ b/python_tools/void_python_tools/voidUtil/catalogUtil.py @@ -492,3 +492,41 @@ def filterVoidsOnCentralDen(catalog, maxCentralDen): return catalog + +# ----------------------------------------------------------------------------- +def stackVoids(catalog, stackMode = "ball"): + +# builds a stack of voids from the given catalog +# catalog: void catalog +# stackMode: +# "ball": spherical cut +# "voronoi": only void member particles +# +# returns: +# stackedPart: array of relative particle positions in the stack + + rMax = 100. + periodicLine = getPeriodic(catalog.sampleInfo) + + if stackMode == "ball": + partTree = getPartTree(catalog) + + stackedPart = [] + for void in catalog.voids: + center = void.barycenter + + if stackMode == "ball": + localPart = catalog.partPos[ getBall(partTree, center, rMax) ] + else: + voidPart = getVoidPart(catalog, void.voidID) + localPart = np.zeros((3,len(voidPart))) + localPart[0,:] = getArray(localPart, 'x') + localPart[1,:] = getArray(localPart, 'y') + localPart[2,:] = getArray(localPart, 'z') + + shiftedPart = shiftPart(localPart, center, periodicLine, catalog.ranges) + + stackedPart.extend(shiftedPart) + + return stackedPart +