From ebc16a360f8ef11578d42588d871195c16aa0997 Mon Sep 17 00:00:00 2001 From: "Mads M. Pedersen" <mmpe@dtu.dk> Date: Wed, 19 Oct 2016 10:08:44 +0200 Subject: [PATCH] bug fix in hawc2.simulation --- wetb/hawc2/simulation.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/wetb/hawc2/simulation.py b/wetb/hawc2/simulation.py index c25b0807..b53acd1a 100755 --- a/wetb/hawc2/simulation.py +++ b/wetb/hawc2/simulation.py @@ -86,7 +86,7 @@ class Simulation(object): if not os.path.isabs(htcfilename): htcfilename = os.path.join(modelpath, htcfilename) self.filename = os.path.basename(htcfilename) - self.htcFile = HTCFile(htcfilename) + self.htcFile = HTCFile(htcfilename, os.path.relpath(self.modelpath,os.path.dirname(htcfilename))) self.time_stop = self.htcFile.simulation.time_stop[0] self.hawc2exe = hawc2exe self.copy_turbulence = copy_turbulence @@ -127,7 +127,7 @@ class Simulation(object): def abort(self, update_status=True): if self.status != QUEUED: self.host.stop() - for _ in range(100): + for _ in range(50): if self.is_simulating is False: break time.sleep(0.1) @@ -175,7 +175,7 @@ class Simulation(object): src = os.path.relpath (src) assert not src.startswith(".."), "%s referes to a file outside the model path\nAll input files be inside model path" % src return src - input_patterns = [fmt(src) for src in self.htcFile.input_files() + self.htcFile.turbulence_files() + self.additional_files().get('input', [])] + input_patterns = [fmt(src) for src in self.htcFile.input_files() + ([], self.htcFile.turbulence_files())[self.copy_turbulence] + self.additional_files().get('input', [])] input_files = set([f for pattern in input_patterns for f in glob.glob(os.path.join(self.modelpath, pattern)) if os.path.isfile(f)]) if not os.path.isdir(os.path.dirname(self.modelpath + self.stdout_filename)): os.makedirs(os.path.dirname(self.modelpath + self.stdout_filename)) @@ -435,7 +435,6 @@ class LocalSimulationHost(SimulationResource): self.logFile.update_status() def stop(self): - if self.simulationThread.is_alive(): self.simulationThread.stop() self.simulationThread.join() @@ -466,7 +465,8 @@ class SimulationThread(Thread): with open (os.path.join(self.modelpath, stdout), 'wb') as stdout: if isinstance(hawc2exe, tuple): - self.process = subprocess.Popen(list(hawc2exe + (htcfile, stdout)), stdout=stdout, stderr=STDOUT, shell=False, cwd=modelpath) + wine, hawc2exe = hawc2exe + self.process = subprocess.Popen([wine, hawc2exe, htcfile], stdout=stdout, stderr=STDOUT, shell=True, cwd=modelpath) #shell must be True to inwoke wine else: self.process = subprocess.Popen([hawc2exe, htcfile], stdout=stdout, stderr=STDOUT, shell=False, cwd=modelpath) #, creationflags=CREATE_NO_WINDOW) self.process.communicate() @@ -506,7 +506,7 @@ class SimulationThread(Thread): def stop(self): if hasattr(self, 'process'): subprocess.Popen("TASKKILL /F /PID {pid} /T".format(pid=self.process.pid)) - + class PBSClusterSimulationHost(SimulationResource, SSHClient): def __init__(self, simulation, resource, host, username, password, port=22): @@ -649,7 +649,7 @@ class PBSClusterSimulationHost(SimulationResource, SSHClient): #PBS -j oe #PBS -o %s ### Maximum wallclock time format HOURS:MINUTES:SECONDS -#PBS -l walltime=01:00:00 +#PBS -l walltime=04:00:00 ###PBS -a 201547.53 #PBS -lnodes=1:ppn=1 ### Queue name @@ -661,6 +661,11 @@ cp -R . /scratch/$USER/$PBS_JOBID ### Execute commands on scratch nodes cd /scratch/$USER/$PBS_JOBID pwd +export PATH=/home/python/miniconda3/bin:$PATH +source activate wetb_py3 +WINEARCH=win32 WINEPREFIX=~/.wine32 winefix +### modelpath: %s +### htc: %s echo "---------------------" %s -c "from wetb.hawc2.cluster_simulation import ClusterSimulation;ClusterSimulation('.','%s', ('%s','%s'))" echo "---------------------" @@ -672,7 +677,7 @@ cd /scratch/$USER/$PBS_JOBID echo $PBS_JOBID cd /scratch/ ### rm -r $PBS_JOBID -exit""" % (self.simulation_id, self.stdout_filename, self.resource.python_cmd, rel_htcfilename, self.resource.wine_cmd, self.hawc2exe, cp_back) +exit""" % (self.simulation_id, self.stdout_filename, self.modelpath, self.htcFile.filename, self.resource.python_cmd, rel_htcfilename, self.resource.wine_cmd, self.hawc2exe, cp_back) -- GitLab