From 61ad95ca712a374f6e58127fda738b67c57d743d Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Wed, 04 Jan 2017 21:19:52 +0000
Subject: [PATCH] Added many changes to trisurf.py. Mostly readability. Great fix in class Runner by introducing @property tag

---
 python/trisurf/trisurf.py |   59 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 40 insertions(+), 19 deletions(-)

diff --git a/python/trisurf/trisurf.py b/python/trisurf/trisurf.py
index 3a1689e..01c3d0c 100644
--- a/python/trisurf/trisurf.py
+++ b/python/trisurf/trisurf.py
@@ -2,7 +2,7 @@
 import xml.etree.ElementTree as ET
 import base64
 import zlib
-import io
+import sys,io
 import os
 from itertools import islice
 import mmap
@@ -236,14 +236,19 @@
 		try:
 			self.dT=int(epoch2)-int(epoch1)
 			self.last=n2
-			print(epoch1)
-			print(epoch2)
-			print(self.dT)
-			print(self.last)
+			#print(epoch1)
+			#print(epoch2)
+			#print(self.dT)
+			#print(self.last)
 			self.startDate=os.path.getmtime(os.path.join(self.path,'.lock'))
 		except:
 			return(False)
 		return(True)
+
+	def readText(self):
+		with open(self.fullname, 'r+') as fin:
+			cont=fin.read()
+		return cont
 
 	def read_old(self):
 		'''
@@ -297,6 +302,16 @@
 	'''
 	Class Runner consists of a single running or terminated instance of the trisurf. It manages starting, stopping, verifying the running process and printing the reports of the configured instances.
 	'''
+
+	@property
+	def Dir(self):
+		return Directory(maindir=self.maindir,simdir=self.subdir)
+
+
+	@property
+	def Statistics(self):
+		return Statistics(self.Dir.fullpath(), "statistics.csv")
+
 	def __init__(self, subdir='run0', tape=None, snapshot=None, runArgs=[]):
 		self.subdir=subdir
 		self.runArgs=runArgs
@@ -328,7 +343,7 @@
 		self.tape.setTape(tapetxt.text)
 
 	def getPID(self):
-		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
+#		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 		#self.Dir.makeifnotexist()
 		try:
 			fp = open(os.path.join(self.Dir.fullpath(),'.lock'))
@@ -339,7 +354,7 @@
 		return int(pid)
 
 	def getLastIteration(self):
-		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
+#		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 		#self.Dir.makeifnotexist()
 		try:
 			fp = open(os.path.join(self.Dir.fullpath(),'.status'))
@@ -350,7 +365,7 @@
 		return int(status)
 
 	def isCompleted(self):
-		if (int(self.tape.getValue("iterations"))==self.getLastIteration()+1):
+		if int(self.tape.getValue("iterations"))+int(self.tape.getValue("inititer"))==self.getLastIteration()+1:
 			return True
 		else:
 			return False
@@ -386,7 +401,7 @@
 			if(shutil.which('trisurf')==None):
 				print("Error. Trisurf executable not found in PATH. Please install trisurf prior to running trisurf manager.")
 				exit(1)
-			self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
+#			self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 #Symlinks tape file to the directory or create tape file from snapshot in the direcory...
 			if(self.Dir.makeifnotexist()):
 				if(self.fromSnapshot==False):
@@ -443,6 +458,8 @@
 		for p,v in zip(prefix,variables):
 			if(v=="xk0"):
 				tv=str(round(float(self.tape.config[v])))
+				if sys.version_info<(3,0):
+					tv=str(int(float(self.tape.config[v])))
 			else:
 				tv=self.tape.config[v]
 			maindir=maindir+p+tv
@@ -454,13 +471,13 @@
 		return
 
 	def getStatistics(self, statfile="statistics.csv"):
-		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
-		self.statistics=Statistics(self.Dir.fullpath(), statfile)
+#		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
+#		self.statistics=Statistics(self.Dir.fullpath(), statfile)
 		self.Comment=FileContent(os.path.join(self.Dir.fullpath(),".comment"))
 		pid=self.getPID()
 		status=self.getStatus()
-		if(self.statistics.fileOK):
-			ETA=str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.statistics.last))*self.statistics.dT)*1000000)
+		if(self.Statistics.fileOK):
+			ETA=str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.Statistics.last))*self.Statistics.dT)*1000000)
 		if(status==TS_NONEXISTANT or status==TS_NOLOCK):
 			statustxt="Not running"
 			pid=""
@@ -475,25 +492,29 @@
 		else:
 			statustxt="Running"
 
-		if(self.statistics.fileOK):
-			report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.statistics.startDate))),ETA, statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
+		if(self.Statistics.fileOK):
+			report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.Statistics.startDate))),ETA, statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
 		else:
 			report=["N/A","N/A",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()]
 		return report
 
 
 	def stop(self):
-		p=psutil.Process(self.getPID())
-		p.kill()
+		try:
+			p=psutil.Process(self.getPID())
+			p.kill()
+		except:
+			print("Could not stop the process. Is the process running? Do you have sufficient privileges?")
+
 
 	def writeComment(self, data, mode='w'):
-		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
+#		self.Dir=Directory(maindir=self.maindir,simdir=self.subdir)
 		self.Comment=FileContent(os.path.join(self.Dir.fullpath(),".comment"))
 		self.Comment.writefile(data,mode=mode)
 
 
 	def getLastVTU(self):
-		vtuidx=self.getLastIteration()
+		vtuidx=self.getLastIteration()-int(self.tape.getValue("inititer"))
 		if vtuidx<0:
 			return None
 		else:

--
Gitblit v1.9.3