modified scripts to work with new generateMock

This commit is contained in:
P.M. Sutter 2013-03-02 09:40:06 -06:00
parent 86cdfb0421
commit df98c86a03
3 changed files with 94 additions and 58 deletions

View file

@ -548,7 +548,7 @@ int main(int argc, char **argv) {
} }
} }
voids.resize(iGood); voids.resize(iGood);
printf(" 1st filter: reiGoodected %d obviously bad\n", numWrong); printf(" 1st filter: rejected %d obviously bad\n", numWrong);
iGood = 0; iGood = 0;
for (iVoid = 0; iVoid < voids.size(); iVoid++) { for (iVoid = 0; iVoid < voids.size(); iVoid++) {
@ -559,7 +559,7 @@ int main(int argc, char **argv) {
} }
} }
voids.resize(iGood); voids.resize(iGood);
printf(" 2nd filter: reiGoodected %d too small\n", numTooSmall); printf(" 2nd filter: rejected %d too small\n", numTooSmall);
iGood = 0; iGood = 0;
@ -572,7 +572,7 @@ int main(int argc, char **argv) {
} }
} }
voids.resize(iGood); voids.resize(iGood);
printf(" 3rd filter: reiGoodected %d too close to high redshift boundaries\n", numNearZ); printf(" 3rd filter: rejected %d too close to high redshift boundaries\n", numNearZ);
numNearZ = 0; numNearZ = 0;
iGood = 0; iGood = 0;
@ -586,7 +586,7 @@ int main(int argc, char **argv) {
} }
} }
voids.resize(iGood); voids.resize(iGood);
printf(" 4th filter: reiGoodected %d too close to low redshift boundaries\n", numNearZ); printf(" 4th filter: rejected %d too close to low redshift boundaries\n", numNearZ);
for (iVoid = 0; iVoid < voids.size(); iVoid++) { for (iVoid = 0; iVoid < voids.size(); iVoid++) {
if (voids[iVoid].centralDen > args.maxCentralDen_arg) { if (voids[iVoid].centralDen > args.maxCentralDen_arg) {

View file

@ -62,7 +62,7 @@ def getSampleName(setName, redshift, useVel, iSlice=-1, iVol=-1):
def writeScript(setName, dataFileNameBase, dataFormat, def writeScript(setName, dataFileNameBase, dataFormat,
scriptDir, catalogDir, fileNums, redshifts, numSubvolumes, scriptDir, catalogDir, fileNums, redshifts, numSubvolumes,
numSlices, useVel, lbox, minRadius, omegaM, subsample=1.0, numSlices, useVel, lbox, minRadius, omegaM, subsample=1.0,
suffix=".dat"): suffix=".dat", dataFileNameList=None):
if useVel: setName += "_pv" if useVel: setName += "_pv"
@ -134,7 +134,7 @@ newSample = Sample(dataFile = "{dataFile}",
numSubvolumes = {numSubvolumes}, numSubvolumes = {numSubvolumes},
mySubvolume = "{mySubvolume}", mySubvolume = "{mySubvolume}",
useLightCone = {useLightCone}, useLightCone = {useLightCone},
subsample = {subsample}) subsample = "{subsample}")
dataSampleList.append(newSample) dataSampleList.append(newSample)
newSample.addStack(0.0, 5.0, 20, 25, False, False) newSample.addStack(0.0, 5.0, 20, 25, False, False)
newSample.addStack(0.0, 5.0, 30, 35, False, False) newSample.addStack(0.0, 5.0, 30, 35, False, False)
@ -187,7 +187,10 @@ newSample.addStack(0.0, 5.0, 90, 95, False, False)
sliceMinMpc = "%0.1f" % sliceMinMpc sliceMinMpc = "%0.1f" % sliceMinMpc
sliceMaxMpc = "%0.1f" % sliceMaxMpc sliceMaxMpc = "%0.1f" % sliceMaxMpc
dataFileName = dataFileNameBase + fileNum + suffix if (dataFileNameList != None):
dataFileName = dataFileNameList[iFile]
else:
dataFileName = dataFileNameBase + fileNum + suffix
for iX in xrange(numSubvolumes): for iX in xrange(numSubvolumes):
for iY in xrange(numSubvolumes): for iY in xrange(numSubvolumes):
@ -212,7 +215,7 @@ newSample.addStack(0.0, 5.0, 90, 95, False, False)
numSubvolumes=numSubvolumes, numSubvolumes=numSubvolumes,
mySubvolume=mySubvolume, mySubvolume=mySubvolume,
useLightCone=useLightCone, useLightCone=useLightCone,
subsample=subsample)) subsample=str(subsample).strip('[]')))
scriptFile.close() scriptFile.close()
return return
@ -229,44 +232,60 @@ if not os.access(catalogDir, os.F_OK): os.mkdir(catalogDir)
# ss0.000175 ~ SDSS DR9 mid # ss0.000175 ~ SDSS DR9 mid
baseResolution = float(numPart)/lbox/lbox/lbox # particles/Mpc^3 baseResolution = float(numPart)/lbox/lbox/lbox # particles/Mpc^3
prevSubSample = -1 prevSubSample = -1
for thisSubSample in sorted(subSamples, reverse=True): subSamples = sorted(subSamples, reverse=True)
for iSubSample in xrange(len(subSamples)):
keepFraction = float(thisSubSample) / baseResolution subSampleList = subSamples[0:iSubSample+1]
maxKeep = keepFraction * numPart
keepFractionList = []
for subSample in subSampleList:
keepFractionList.append(float(subSample) / baseResolution)
thisSubSample = subSamples[iSubSample]
maxKeep = keepFractionList[-1] * numPart
minRadius = int(np.ceil(lbox/maxKeep**(1./3))) minRadius = int(np.ceil(lbox/maxKeep**(1./3)))
partFileList = []
for (iRedshift, redshift) in enumerate(redshifts):
if particleFileDummy == '':
partFileList.append(particleFileBase+fileNums[iRedshift])
else:
partFileList.append(particleFileBase.replace(particleFileDummy,
fileNums[iRedshift]))
if args.script or args.all: if args.script or args.all:
print " Doing subsample", thisSubSample, "scripts" print " Doing subsample", thisSubSample, "scripts"
sys.stdout.flush() sys.stdout.flush()
setName = prefix+"ss"+str(thisSubSample) setName = prefix+"ss"+str(thisSubSample)
if dataFormat == "multidark":
subSampleToUse = 1.0 if dataFormat == "random":
fileToUse = prefix+"ss"+str(thisSubSample)+"_z"
suffix = ".dat"
elif dataFormat == "gadget":
subSampleToUse = keepFraction
#subSampleToUse = thisSubSample
fileToUse = particleFileBase
suffix = ""
elif dataFormat == "lanl":
subSampleToUse = keepFraction
#subSampleToUse = thisSubSample
fileToUse = particleFileBase
suffix = ""
elif dataFormat == "random":
subSampleToUse = 1.0 subSampleToUse = 1.0
fileToUse = "ran.ss"+str(thisSubSample)+"_z" fileToUse = "ran.ss"+str(thisSubSample)+"_z"
suffix = ".dat" suffix = ".dat"
writeScript(setName, fileToUse, dataFormat, writeScript(setName, fileToUse, dataFormat,
scriptDir, catalogDir, fileNums, redshifts, scriptDir, catalogDir, fileNums, redshifts,
numSubvolumes, numSlices, False, lbox, minRadius, omegaM, numSubvolumes, numSlices, False, lbox, minRadius, omegaM,
subsample=subSampleToUse, suffix=suffix) subsample=subSampleToUse, suffix=suffix)
writeScript(setName, fileToUse, dataFormat, writeScript(setName, fileToUse, dataFormat,
scriptDir, catalogDir, fileNums, redshifts, scriptDir, catalogDir, fileNums, redshifts,
numSubvolumes, numSlices, True, lbox, minRadius, omegaM, numSubvolumes, numSlices, True, lbox, minRadius, omegaM,
subsample=subSampleToUse, suffix=suffix) subsample=subSampleToUse, suffix=suffix)
else:
subSampleToUse = keepFractionList
suffix = ""
fileToUse = partFileList[0]
writeScript(setName, fileToUse, dataFormat,
scriptDir, catalogDir, fileNums, redshifts,
numSubvolumes, numSlices, False, lbox, minRadius, omegaM,
subsample=subSampleToUse, suffix=suffix,
dataFileNameList=partFileList)
writeScript(setName, fileToUse, dataFormat,
scriptDir, catalogDir, fileNums, redshifts,
numSubvolumes, numSlices, True, lbox, minRadius, omegaM,
subsample=subSampleToUse, suffix=suffix,
dataFileNameList=partFileList)
if args.subsample or args.all: if args.subsample or args.all:
print " Doing subsample", thisSubSample print " Doing subsample", thisSubSample
sys.stdout.flush() sys.stdout.flush()
@ -407,31 +426,37 @@ if (args.halos or args.all) and haloFileBase != "":
sampleName = prefix+"halos_min"+str(minHaloMass)+"_z"+fileNums[iRedshift] sampleName = prefix+"halos_min"+str(minHaloMass)+"_z"+fileNums[iRedshift]
outFile = open(catalogDir+"/"+sampleName+".dat", 'w') outFile = open(catalogDir+"/"+sampleName+".dat", 'w')
outFile.write("%f\n" %(lbox)) outFile.write("%f\n" %(lbox))
outFile.write("%s\n" %(omegaM)) outFile.write("%s\n" %(omegaM))
outFile.write("%s\n" %(hubble)) outFile.write("%s\n" %(hubble))
outFile.write("%s\n" %(redshift)) outFile.write("%s\n" %(redshift))
outFile.write("%d\n" %(numPart)) outFile.write("%d\n" %(numPart))
inFile = open(dataFile, 'r') if dataFormat == "sdf":
for (iHalo,line) in enumerate(inFile): # TODO process halo file with SDFcvt
if iHalo < haloFileNumComLines: continue outFile = open(catalogDir+"/"+sampleName+".dat", 'w')
line = line.split(haloFileColSep) outFile.write("-99 -99 -99 -99 -99 -99 -99\n")
if minHaloMass == "none" or float(line[haloFileMCol]) > minHaloMass: outFile.close()
x = float(line[haloFileXCol]) else:
y = float(line[haloFileYCol]) outFile = open(catalogDir+"/"+sampleName+".dat", 'w')
z = float(line[haloFileZCol]) inFile = open(dataFile, 'r')
vz = float(line[haloFileVZCol]) for (iHalo,line) in enumerate(inFile):
vy = float(line[haloFileVYCol]) if iHalo < haloFileNumComLines: continue
vx = float(line[haloFileVXCol]) line = line.split(haloFileColSep)
if minHaloMass == "none" or float(line[haloFileMCol]) > minHaloMass:
x = float(line[haloFileXCol])
y = float(line[haloFileYCol])
z = float(line[haloFileZCol])
vz = float(line[haloFileVZCol])
vy = float(line[haloFileVYCol])
vx = float(line[haloFileVXCol])
# write to output file # write to output file
outFile.write("%d %e %e %e %e %e %e\n" %(iHalo,x,y,z,vz,vy,vx)) outFile.write("%d %e %e %e %e %e %e\n" %(iHalo,x,y,z,vz,vy,vx))
outFile.write("-99 -99 -99 -99 -99 -99 -99\n") outFile.write("-99 -99 -99 -99 -99 -99 -99\n")
inFile.close() outFile.close()
outFile.close() inFile.close()
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# now the HOD # now the HOD
@ -506,6 +531,14 @@ if (args.hod or args.all) and haloFileBase != "":
else: else:
haloFile = catalogDir+haloFileBase.replace(haloFileDummy, haloFile = catalogDir+haloFileBase.replace(haloFileDummy,
fileNums[iRedshift]) fileNums[iRedshift])
if dataFormat == "sdf":
# TODO process halo file with SDFcvt
inFile = haloFile
outFile = haloFile+"_temp"
haloFile = outFile
parFile.write(parFileText.format(omegaM=omegaM, parFile.write(parFileText.format(omegaM=omegaM,
hubble=hubble, hubble=hubble,
redshift=redshift, redshift=redshift,
@ -531,4 +564,6 @@ if (args.hod or args.all) and haloFileBase != "":
os.system("mv %s/hod.mock %s" % (catalogDir, outFileName)) os.system("mv %s/hod.mock %s" % (catalogDir, outFileName))
os.system("rm %s/hod.*" % catalogDir) os.system("rm %s/hod.*" % catalogDir)
os.system("rm %s" % haloFile)
print " Done!" print " Done!"

View file

@ -106,19 +106,19 @@ def launchGenerate(sample, binPath, workDir=None, inputDataDir=None,
datafile = inputDataDir+"/"+sample.dataFile datafile = inputDataDir+"/"+sample.dataFile
prevSubSample = -1 prevSubSample = -1
for thisSubSample in sample.subsample.split(): for thisSubSample in sample.subsample.split(', '):
if prevSubSample == -1: if prevSubSample == -1:
inputParameterFlag = "" inputParameterFlag = ""
outputFile = zobovDir+"/zobov_slice_" + sampleName + "_ss" + thisSubSample outputFile = zobovDir+"/zobov_slice_" + sampleName + "_ss" + thisSubSample
keepFraction = float(thsSubSample) keepFraction = float(thisSubSample)
subSampleLime = "subsample %g" % keepFraction subSampleLine = "subsample %g" % keepFraction
else: else:
inputParameterFlag = "inputParameter " + zobovDir+"/zobov_slice_"+\ inputParameterFlag = "inputParameter " + zobovDir+"/zobov_slice_"+\
sampleName+"_ss"+prevSubSample+".par" sampleName+"_ss"+prevSubSample+".par"
outputFile = zobovDir+"/_zobov_slice_" + sampleName + "_ss" + tihsSubSample outputFile = zobovDir+"/_zobov_slice_" + sampleName + "_ss" + thisSubSample
keepFraction = float(thisSubSample)/float(prevSubSample) keepFraction = float(thisSubSample)/float(prevSubSample)
subSampleLime = "resubsample %g" % keepFraction subSampleLine = "resubsample %g" % keepFraction
includePecVelString = "" includePecVelString = ""
if sample.usePecVel: includePecVelString = "peculiarVelocities" if sample.usePecVel: includePecVelString = "peculiarVelocities"
@ -155,6 +155,7 @@ def launchGenerate(sample, binPath, workDir=None, inputDataDir=None,
rangeZ_min %g rangeZ_min %g
rangeZ_max %g rangeZ_max %g
%s %s
%s
""" % (dataFileLine, outputFile, """ % (dataFileLine, outputFile,
outputFile+".par", outputFile+".par",
includePecVelString, includePecVelString,
@ -168,21 +169,18 @@ def launchGenerate(sample, binPath, workDir=None, inputDataDir=None,
file(parmFile, mode="w").write(conf) file(parmFile, mode="w").write(conf)
doneLine = "Done %g\n" % keepFraction doneLine = "Done! %5.2e\n" % keepFraction
print "TEST", doneLine
if not (continueRun and jobSuccessful(logFile, doneLine)): if not (continueRun and jobSuccessful(logFile, doneLine)):
if (prevSubSample == -1): if (prevSubSample == -1):
cmd = "%s --configFile=%s &> %s" % (binPath,parmFile,logFile) cmd = "%s --configFile=%s &> %s" % (binPath,parmFile,logFile)
else: else:
cmd = "%s --configFile=%s &>> %s" % (binPath,parmFile,logFile) cmd = "%s --configFile=%s &>> %s" % (binPath,parmFile,logFile)
os.system(cmd) os.system(cmd)
if jobSuccessful(logFile, doneLine):
print "done" if not jobSuccessful(logFile, doneLine):
else:
print "FAILED!" print "FAILED!"
exit(-1) exit(-1)
else:
print "already done!"
# remove intermediate files # remove intermediate files
if (prevSubSample != -1): if (prevSubSample != -1):
@ -191,6 +189,9 @@ def launchGenerate(sample, binPath, workDir=None, inputDataDir=None,
prevSubSample = thisSubSample prevSubSample = thisSubSample
if (continueRun and jobSuccessful(logFile, doneLine)): print "already done!"
if jobSuccessful(logFile, doneLine): print "done"
# place the final subsample # place the final subsample
os.system("mv %s %s" % (zobovDir+"/zobov_slice_"+sampleName+"_ss"+\ os.system("mv %s %s" % (zobovDir+"/zobov_slice_"+sampleName+"_ss"+\
prevSubSample, zobovDir+"/zobov_slice_"+sampleName)) prevSubSample, zobovDir+"/zobov_slice_"+sampleName))