checkpoint for cleaning up output files and consolidating

This commit is contained in:
Paul M. Sutter 2025-05-20 16:46:38 -04:00
parent acdb19e6df
commit d6a939d2cf
3 changed files with 214 additions and 249 deletions

View file

@ -31,7 +31,10 @@ import os
NetCDFFile = Dataset
ncFloat = 'f8'
# -----------------------------------------------------------------------------
CATALOG_V1 = 1
CATALOG_V2 = 2
# -----------------------------------------------------------------------
def loadPart(sampleDir):
print(" Loading particle data...")
sys.stdout.flush()
@ -270,11 +273,14 @@ def loadVoidCatalog(sampleDir,
print("Loading catalog from ", sampleDir)
isOldCatalog = os.path.exists(sampleDir+"/mask_index.txt")
if os.path.exists(sampleDir+"/mask_index.txt"):
version = CATALOG_V1
else:
version = CATALOG_V2
if isOldCatalog and clearNearBoundaries:
if version == CATALOG_V1 and clearNearBoundaries:
print("WARNING: Old catalog. Unable to clear near boundaries.")
if isOldCatalog and maxCentralDen != -1:
if version == CATALOG_V1 and maxCentralDen != -1:
print("WARNING: Old catalog. Central density cuts already applied.")
if replicateOldCentralVoids:
@ -310,19 +316,24 @@ def loadVoidCatalog(sampleDir,
# for new catalogs, we will load by default the whole shebang, then
# apply filters later. for old catalogs, we need to pick the right file
prefix = "untrimmed_"
if isOldCatalog and clearTree: prefix = ""
if version == CATALOG_V1:
if clearTree:
prefix = ""
else:
prefix = "untrimmed_"
dataPortion = "all"
if isOldCatalog and clearEdges: dataPortion = "central"
if clearEdges:
dataPortion = "central"
else:
dataPortion = "all"
print("Loading voids...")
fileName = sampleDir+"/"+prefix+"voidDesc_"+dataPortion+"_"+sample.fullName+".out"
print("Loading version-1 voids...")
fileName = sampleDir+"/"+prefix+"voidDesc_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#", skiprows=2)
catalog.voids = []
for line in catData:
catalog.voids.append(Bunch(iVoid = int(line[0]),
catData = np.loadtxt(fileName, comments="#", skiprows=2)
catalog.voids = []
for line in catData:
catalog.voids.append(Bunch(iVoid = int(line[0]),
voidID = int(line[1]),
coreParticle = line[2],
coreDens = line[3],
@ -335,7 +346,6 @@ def loadVoidCatalog(sampleDir,
voidProb = line[10],
# below values to be read in or computed later
radius = 0.,
macrocenter = np.zeros((3)),
redshift = 0,
RA = 0,
Dec = 0,
@ -351,78 +361,130 @@ def loadVoidCatalog(sampleDir,
nearestEdge = 0.
))
catalog.numVoids = len(catalog.voids)
print(" Read %d voids" % catalog.numVoids)
catalog.numVoids = len(catalog.voids)
print(" Read %d voids" % catalog.numVoids)
print("Loading macrocenters...")
iLine = 0
for line in open(sampleDir+"/"+prefix+"macrocenters_"+dataPortion+"_"+sample.fullName+".out"):
line = line.split()
catalog.voids[iLine].macrocenter[0] = float(line[1])
catalog.voids[iLine].macrocenter[1] = float(line[2])
catalog.voids[iLine].macrocenter[2] = float(line[3])
iLine += 1
print("Loading macrocenters...")
iLine = 0
for line in open(sampleDir+"/"+prefix+"macrocenters_"+dataPortion+"_"+sample.fullName+".out"):
line = line.split()
catalog.voids[iLine].macrocenter[0] = float(line[1])
catalog.voids[iLine].macrocenter[1] = float(line[2])
catalog.voids[iLine].macrocenter[2] = float(line[3])
iLine += 1
iLine = 0
fileName = sampleDir+"/"+prefix+"sky_positions_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for line in catData:
catalog.voids[iLine].RA = float(line[0])
catalog.voids[iLine].Dec = float(line[1])
iLine += 1
iLine = 0
fileName = sampleDir+"/"+prefix+"sky_positions_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for line in catData:
catalog.voids[iLine].RA = float(line[0])
catalog.voids[iLine].Dec = float(line[1])
iLine += 1
print("Loading derived void information...")
fileName = sampleDir+"/"+prefix+"centers_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for (iLine,line) in enumerate(catData):
catalog.voids[iLine].volume = float(line[6])
catalog.voids[iLine].radius = float(line[4])
catalog.voids[iLine].redshift = float(line[5])
catalog.voids[iLine].parentID = float(line[10])
catalog.voids[iLine].treeLevel = float(line[11])
catalog.voids[iLine].numChildren = float(line[12])
catalog.voids[iLine].centralDen = float(line[13])
iLine += 1
fileName = sampleDir+"/"+prefix+"shapes_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for (iLine,line) in enumerate(catData):
catalog.voids[iLine].ellipticity = float(line[1])
catalog.voids[iLine].eigenVals[0] = float(line[2])
catalog.voids[iLine].eigenVals[1] = float(line[3])
catalog.voids[iLine].eigenVals[2] = float(line[4])
catalog.voids[iLine].eigenVecs[0][0] = float(line[5])
catalog.voids[iLine].eigenVecs[0][1] = float(line[6])
catalog.voids[iLine].eigenVecs[0][2] = float(line[7])
catalog.voids[iLine].eigenVecs[1][0] = float(line[8])
catalog.voids[iLine].eigenVecs[1][1] = float(line[9])
catalog.voids[iLine].eigenVecs[1][2] = float(line[10])
catalog.voids[iLine].eigenVecs[2][0] = float(line[11])
catalog.voids[iLine].eigenVecs[2][1] = float(line[12])
catalog.voids[iLine].eigenVecs[2][2] = float(line[13])
iLine += 1
fileName = sampleDir+"/"+prefix+"extraInfo_"+dataPortion+"_"+sample.fullName+".out"
if os.path.exists(fileName):
print("Loading derived void information...")
fileName = sampleDir+"/"+prefix+"centers_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for (iLine,line) in enumerate(catData):
catalog.voids[iLine].voidType = int(line[0])
catalog.voids[iLine].maxRadius = float(line[1])
catalog.voids[iLine].nearestEdge = float(line[2])
catalog.voids[iLine].volume = float(line[6])
catalog.voids[iLine].radius = float(line[4])
catalog.voids[iLine].redshift = float(line[5])
catalog.voids[iLine].parentID = float(line[10])
catalog.voids[iLine].treeLevel = float(line[11])
catalog.voids[iLine].numChildren = float(line[12])
catalog.voids[iLine].centralDen = float(line[13])
iLine += 1
fileName = sampleDir+"/"+prefix+"shapes_"+dataPortion+"_"+sample.fullName+".out"
catData = np.loadtxt(fileName, comments="#")
for (iLine,line) in enumerate(catData):
catalog.voids[iLine].ellipticity = float(line[1])
catalog.voids[iLine].eigenVals[0] = float(line[2])
catalog.voids[iLine].eigenVals[1] = float(line[3])
catalog.voids[iLine].eigenVals[2] = float(line[4])
catalog.voids[iLine].eigenVecs[0][0] = float(line[5])
catalog.voids[iLine].eigenVecs[0][1] = float(line[6])
catalog.voids[iLine].eigenVecs[0][2] = float(line[7])
catalog.voids[iLine].eigenVecs[1][0] = float(line[8])
catalog.voids[iLine].eigenVecs[1][1] = float(line[9])
catalog.voids[iLine].eigenVecs[1][2] = float(line[10])
catalog.voids[iLine].eigenVecs[2][0] = float(line[11])
catalog.voids[iLine].eigenVecs[2][1] = float(line[12])
catalog.voids[iLine].eigenVecs[2][2] = float(line[13])
iLine += 1
iLine += 1
else:
print(" Old catalog: extra info file not found")
print("Loading version-2 voids...")
fileName = sampleDir+"/"+prefix+"voidDatabase_"+sample.fullName+".out"
catalog.voids = []
for line in catData:
macrocenter = np.zeros((3))
macrocenter[0] = float(line[2])
macrocenter[1] = float(line[3])
macrocenter[2] = float(line[4])
eigenVals = np.zeros((3))
eigenVecs = np.zeros((3,3))
eigenVals[0] = float(line[26])
eigenVals[1] = float(line[27])
eigenVals[2] = float(line[28])
eigenVecs[0][0] = float(line[29])
eigenVecs[0][1] = float(line[30])
eigenVecs[0][2] = float(line[31])
eigenVecs[1][0] = float(line[32])
eigenVecs[1][1] = float(line[33])
eigenVecs[1][2] = float(line[34])
eigenVecs[2][0] = float(line[35])
eigenVecs[2][1] = float(line[36])
eigenVecs[2][2] = float(line[37])
catalog.voids.append(Bunch(
voidID = int(line[0]),
voidType = int(line[1]),
macrocenter = macrocenter,
voidVol = float(line[5]),
volume = float(line[6]),
radius = float(line[7]),
redshift = float(line[8]),
RA = float(line[9]),
Dec = float(line[10]),
densCon = float(line[11]),
maxRadius = float(line[12]),
nearestEdge = float(line[13]),
numPart = int(line[14]),
parentID = int(line[15]),
treeLevel = int(line[16]),
numChildren = int(line[17]),
centralDen = float(line[18]),
coreParticle = int(line[19]),
coreDens = float(line[20]),
zoneVol = float(line[21]),
zoneNumPart = int(line[22]),
numZones = int(line[23]),
voidProb = float(line[24]),
ellipticity = float(line[25]),
eigenVals = eigenVals,
eigenVecs = eigenVecs
))
catalog.numVoids = len(catalog.voids)
print(" Read %d voids" % catalog.numVoids)
# apply filters to new catalogs
if not isOldCatalog:
if version != CATALOG_V1:
print("Filtering catalog...")
if clearEdges: catalog = filterOnType(catalog, CENTRAL_VOID)
if clearTree: catalog = filterOnTreeLevel(catalog, level=-1)