Add xfsearch helper.

This commit is contained in:
Steven Robertson 2012-03-16 20:34:02 -07:00
parent fcc0911b3b
commit 0384815c8b

49
helpers/xfsearch.py Normal file
View File

@ -0,0 +1,49 @@
#!/usr/bin/python2
"""
Render multiple versions of a genome, disabling each xform and variation in
turn, for use in debugging.
"""
import os, sys, json, scipy, pycuda.autoinit
import numpy as np
from copy import deepcopy
sys.path.insert(0, '.')
from cuburn import genome, render
prof = dict(fps=24, width=1280, height=720, quality=2500, skip=0, duration=30)
from main import save
def main(gnm_path, time):
basename = os.path.basename(gnm_path).rsplit('.', 1)[0]
rmgr = render.RenderManager()
def go(gj, name):
gnm = genome.Genome(gj)
gnm.set_profile(prof)
rt = [('out/%s_%s_%04d.jpg' % (name, basename, time * 10000), time)]
for out in rmgr.render(gnm, rt, 1280, 720):
save(out)
gnm = json.load(open(gnm_path))
for i in gnm['xforms']:
xf = gnm['xforms'].pop(i)
go(gnm, 'noxf_' + i)
gnm['xforms'][i] = xf
vars = set([v for g in gnm['xforms'].values() for v in g['variations']])
for v in vars:
g2 = deepcopy(gnm)
for x in g2['xforms'].values():
x['variations'].pop(v, None)
if not x['variations']:
x['variations']['linear'] = {'weight': 1}
go(g2, 'novar_' + v)
if __name__ == "__main__":
if len(sys.argv) != 3:
sys.exit('Usage: progname gnmpath render_time_01')
main(sys.argv[1], float(sys.argv[2]))