Any / vae /Irand /island /scripts /print_stats.py
kitou's picture
Upload 45 files
e26b925
raw
history blame
4.01 kB
#!/usr/bin/env python
import sys
import os
import subprocess
import json
ELEMENTS = ["isBayCedarA1", "isCoral", "isGardeniaA", "isIronwoodA1", "isLavaRocks", "isNaupakaA",
"isPandanusA", "isBeach", "isDunesA", "isHibiscus", "isIronwoodB", "isMountainA", "isPalmDead",
"osOcean", "isCoastline", "isDunesB", "isHibiscusYoung", "isKava", "isMountainB", "isPalmRig"]
def readJsonFile(jsonFile):
"""
Wrapper script to import json file as dict.
:param jsonFile: file as string
:return: dict
"""
with open(os.path.abspath(jsonFile), "r") as jf:
jsonDict = json.load(jf)
return jsonDict if jsonDict else {}
def getFileSize(objFile):
if os.path.isfile(objFile):
fileStat = os.stat(objFile)
val = fileStat.st_size
for x in ['b', 'KB', 'MB', 'GB']:
if val < 1024.0:
return "%3.1f %s" % (val, x)
val /= 1024.0
def getFaceCount(objFile):
# hacky
cmd = ["grep", "^f ",objFile]
ps = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = subprocess.check_output(['wc'], stdin=ps.stdout)
ps.wait()
return output.split()[0]
def printPrimitiveInfo(primitive, pDict):
global jsonDir
global element
if pDict["type"] == "archive":
primDict = readJsonFile(os.path.join(jsonDir, element + "_" + primitive + ".json"))
for archive, instances in primDict.iteritems():
faceCount = getFaceCount(archive)
fileSize = getFileSize(archive)
print '\t'.join([primitive, "primitive archive", archive, fileSize, str(faceCount), "", "", str(len(instances)) ])
elif pDict["type"] == "curve":
curveDict = readJsonFile(os.path.join(jsonDir, element + "_" + primitive + ".json"))
print '\t'.join([primitive, "primitive curve", "", "", "", str(len(curveDict))])
elif pDict["type"] == "element":
variantDict = readJsonFile(os.path.join(jsonDir, element + "_" + primitive + ".json"))
for var in pDict["variants"]:
instances = len(variantDict[var])
print '\t'.join([primitive, "primitive element", "See file info under %s %s" % (pDict["element"], var),"","","", str(instances)])
def main():
global jsonDir
global element
if len(sys.argv) == 1:
print "Please provide element to examine, i.e. isBeach"
return 0
element = sys.argv[1]
if element not in ELEMENTS:
print "Please provide a valid element."
return
jsonDir = os.path.join(os.path.abspath("json"), element)
objDir = os.path.join(os.path.abspath("obj"), element)
elemDict = readJsonFile(os.path.join(jsonDir, element + ".json"))
faceCount = getFaceCount(elemDict["geomObjFile"])
fileSize = getFileSize(elemDict["geomObjFile"])
copies = len(elemDict["instancedCopies"]) if "instancedCopies" in elemDict else 1
print '\t'.join([element, "main geometry", elemDict["geomObjFile"], fileSize, faceCount])
if "instancedPrimitiveJsonFiles" in elemDict:
for primitive, ipDict in elemDict["instancedPrimitiveJsonFiles"].iteritems():
printPrimitiveInfo(primitive, ipDict)
if "variants" in elemDict:
for variant, vDict in elemDict["variants"].iteritems():
faceCount = getFaceCount(vDict["geomObjFile"])
fileSize = getFileSize(vDict["geomObjFile"])
print '\t'.join([variant, "variant geometry", vDict["geomObjFile"], fileSize, faceCount])
if "instancedPrimitiveJsonFiles" in vDict:
for vprimitive, vipDict in vDict["instancedPrimitiveJsonFiles"].iteritems():
printPrimitiveInfo(vprimitive, vipDict)
if "instancedCopies" not in elemDict:
print '\t'.join(["Total for %s"%element, "", "", "", "","","","","","","1"])
else:
print '\t'.join(["Total for %s"%element, "", "", "", "","","","","","",str(len(elemDict["instancedCopies"]))])
if __name__ == "__main__":
if main():
sys.exit(0)
sys.exit(1)