def gajobs(path, inputpath="input.py"): from copy import deepcopy import IPython.ipapi from pylada.ga.escan.elemental.functional import Darwin as Functional from pylada.ga.escan.elemental.evaluator import Dipole as Evaluator from pylada.ga.escan.elemental import LayeredConverter as Converter from pylada.jobs import JobFolder from pylada.escan import read_input # reads input file. input = read_input(inputpath) jobfolder = JobFolder() for scale in input.scales: for p in input.periods: for trial in input.trials: supercell = input.supercell(p) escan = deepcopy(input.escan) escan.fft_mesh = input.fftmesh(supercell) escan.vff.lattice.scale = scale converter = Converter(supercell, lattice=escan.vff.lattice) evaluator = Evaluator(converter=converter, escan=escan, **input.kwargs) evaluator._outdir.envvar = "$SCRATCH" functional = Functional(evaluator) functional.popsize = input.population_size functional.max_gen = input.max_generations functional.rate = input.offspring_rate functional.mean_conc = input.mean_conc functional.stddev_conc = input.stddev_conc functional.pools = input.pools gajob = jobfolder / "scale_{0:.2f}/period_{1}/trial_{2}".format(scale, p, trial) gajob.functional = functional ip = IPython.ipapi.get() ip.user_ns["current_jobfolder"] = jobfolder ip.magic("savejobs " + path)