vide_public/python_source/vide_pipeline/__main__.py
Paul M. Sutter 3dce2593d9 Implemented (yet another) new boundary handling scheme, whereby we scan radially along survey edge while flagging nearest galaxies. The prepObservation routine was significantly cleaned up to accommodate this, but it was ultimately implemented in python (surveyTools.py) for ease of prototyping, with the intent to move it back into C later.
Some general housekeeping, making sure some new parameters are passed around correctly, and removing the storage of some unused files.

This update is considered HIGHLY UNSTABLE. It will almost certainly break somewhere for simulations.

Still under active development.
2025-01-07 20:04:29 +08:00

143 lines
5.2 KiB
Python

#!/usr/bin/env python
#+
# VIDE -- Void IDentification and Examination -- ./python_tools/void_pipeline/__init__.py
# Copyright (C) 2010-2014 Guilhem Lavaux
# Copyright (C) 2011-2014 P. M. Sutter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#+
# Stage 1 : prepare particles for void finding
# Stage 2 : find voids
# Stage 3 : prune catalog
from backend import *
import voidUtil
import imp
import os
import pickle
# ------------------------------------------------------------------------------
if (len(sys.argv) == 1):
print("Usage: python3 -m vide_pipeline parameter_file.py")
exit(-1)
if (len(sys.argv) > 1):
print("\n\n Welcome to VIDE!\n")
filename = sys.argv[1]
print(" Loading parameters from", filename)
if not os.access(filename, os.F_OK):
print(" Cannot find parameter file %s!" % filename)
exit(-1)
parms = imp.load_source("name", filename)
regenerateFlag = False
globals().update(vars(parms))
void_path = os.path.split(voidUtil.__file__)[0]
ZOBOV_PATH=f'{void_path}/../vide/bin/' # this needs to be cleaned up
CTOOLS_PATH=ZOBOV_PATH
#print(f"ZOBOV_PATH is {ZOBOV_PATH}")
else:
print(" Using default parameters")
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
if not os.access(logDir, os.F_OK):
os.makedirs(logDir)
if not os.access(figDir, os.F_OK):
os.makedirs(figDir)
if not continueRun:
print(" Cleaning out log files...")
if startCatalogStage <= 1 and glob.glob(logDir+"/prepare*") != []:
os.system("rm %s/prepare*" % logDir)
if startCatalogStage <= 2 and glob.glob(logDir+"/zobov*") != []:
os.system("rm %s/zobov*" % logDir)
if startCatalogStage <= 3 and glob.glob(logDir+"/prune*") != []:
os.system("rm %s/prune*" % logDir)
for sample in dataSampleList:
sampleName = sample.fullName
print(" Working with data set", sampleName, "...")
outputDir = workDir+"/sample_"+sampleName+"/"
sample.outputDir = outputDir
if not os.access(outputDir, os.F_OK):
os.makedirs(outputDir)
# ---------------------------------------------------------------------------
if (startCatalogStage <= 1) and (endCatalogStage >= 1) and not sample.isCombo:
print(" Preparing tracers from catalog...", end='')
sys.stdout.flush()
logFile = logDir+"/prepare_"+sampleName+".out"
if sample.dataType == "observation":
PREPARE_PATH = CTOOLS_PATH+"/prepObservation"
else:
PREPARE_PATH = CTOOLS_PATH+"/prepSimulation"
launchPrep(sample, PREPARE_PATH, workDir=workDir,
inputDataDir=inputDataDir, outputDir=outputDir,
figDir=figDir, logFile=logFile, useComoving=sample.useComoving,
continueRun=continueRun, regenerate=regenerateFlag)
# --------------------------------------------------------------------------
if (startCatalogStage <= 2) and (endCatalogStage >= 2) and not sample.isCombo:
print(" Finding voids...", end='')
sys.stdout.flush()
launchZobov(sample, ZOBOV_PATH, outputDir=outputDir, logDir=logDir,
continueRun=continueRun, numZobovDivisions=numZobovDivisions,
numZobovThreads=numZobovThreads,
mergingThreshold=mergingThreshold)
# -------------------------------------------------------------------------
if (startCatalogStage <= 3) and (endCatalogStage >= 3) and not sample.isCombo:
print(" Pruning void catalogs", "...", end='')
sys.stdout.flush()
logFile = logDir+"/pruneVoids_"+sampleName+".out"
PRUNE_PATH = CTOOLS_PATH+"/pruneVoids"
launchPrune(sample, PRUNE_PATH,
logFile=logFile, outputDir=outputDir,
useComoving=sample.useComoving, continueRun=continueRun,
mergingThreshold=mergingThreshold)
# -------------------------------------------------------------------------
if (startCatalogStage <= 4) and (endCatalogStage >= 4):
print(" Plotting...", end='')
sys.stdout.flush()
#for thisDataPortion in dataPortions:
#plotRedshiftDistribution(workDir, dataSampleList, figDir, showPlot=False,
# dataPortion=thisDataPortion, setName=setName)
#plotSizeDistribution(workDir, dataSampleList, figDir, showPlot=False,
# dataPortion=thisDataPortion, setName=setName)
#plotNumberDistribution(workDir, dataSampleList, figDir, showPlot=False,
# dataPortion=thisDataPortion, setName=setName)
#plotVoidDistribution(workDir, dataSampleList, figDir, showPlot=False,
# dataPortion=thisDataPortion, setName=setName)
print("\n VIDE finished!")