def createTestWorkspace(self, run=23456): """ Create a workspace for testing against with ideal log values """ from mantid.simpleapi import CreateWorkspace from mantid.simpleapi import AddSampleLog from time import gmtime, strftime,mktime import numpy as np # Create a matrix workspace x = np.array([1.,2.,3.,4.]) y = np.array([1.,2.,3.]) e = np.sqrt(np.array([1.,2.,3.])) wksp = CreateWorkspace(DataX=x, DataY=y,DataE=e,NSpec=1,UnitX='TOF') # Add run_start tmptime = strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(gmtime()))) AddSampleLog(Workspace=wksp,LogName='run_start',LogText=str(tmptime)) tsp_a=kernel.FloatTimeSeriesProperty("proton_charge") tsp_b=kernel.FloatTimeSeriesProperty("SensorA") for i in arange(25): tmptime = strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(gmtime())+i)) if run == 23456: shift = 0 else: shift = int(run) tsp_a.addValue(tmptime, 1.0*i*i + shift) tsp_b.addValue(tmptime, 1.234*(i+1)) wksp.mutableRun()['run_number']=str(run) wksp.mutableRun()['duration']=342.3 wksp.mutableRun()['SensorA'] = tsp_b wksp.mutableRun()['proton_charge']=tsp_a return wksp
def createTestWorkspace(self): """ Create a workspace for testing against with ideal log values """ from mantid.simpleapi import CreateWorkspace from mantid.simpleapi import AddSampleLog from time import gmtime, strftime, mktime # Create a matrix workspace x = np.array([1., 2., 3., 4.]) y = np.array([1., 2., 3.]) e = np.sqrt(np.array([1., 2., 3.])) wksp = CreateWorkspace(DataX=x, DataY=y, DataE=e, NSpec=1, UnitX='TOF') # Add run_start tmptime = strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(gmtime()))) AddSampleLog(Workspace=wksp, LogName='run_start', LogText=str(tmptime)) tsp_a = kernel.FloatTimeSeriesProperty("SensorA") tsp_b = kernel.FloatTimeSeriesProperty("SensorB") tsp_c = kernel.FloatTimeSeriesProperty("SensorC") for i in np.arange(25): tmptime = strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(gmtime()) + i)) tsp_a.addValue(tmptime, 1.0 * i * i) tsp_b.addValue(tmptime, 2.0 * i * i) tsp_c.addValue(tmptime, 3.0 * i * i) wksp.mutableRun()['SensorA'] = tsp_a wksp.mutableRun()['SensorB'] = tsp_b wksp.mutableRun()['SensorC'] = tsp_c return wksp
def createTestWorkspace2(self): """ Create a workspace for testing against with more situation """ from mantid.simpleapi import CreateWorkspace from mantid.simpleapi import AddSampleLog import numpy from numpy import datetime64, timedelta64 #from time import gmtime, strftime,mktime # in debug prints # Create a matrix workspace x = np.array([1., 2., 3., 4.]) y = np.array([1., 2., 3.]) e = np.sqrt(np.array([1., 2., 3.])) wksp = CreateWorkspace(DataX=x, DataY=y, DataE=e, NSpec=1, UnitX='TOF') # Add run_start dtimesec = 0.0010 timefluc = 0.0001 runstart = '2014-02-15T13:34:03' # older numpy assumes local timezone if LooseVersion(numpy.__version__) < LooseVersion('1.9'): runstart = runstart + 'Z' runstart = datetime64(runstart, 'us') # microsecond needed for deltas AddSampleLog(Workspace=wksp, LogName='run_start', LogText=str(runstart)) tsp_a = kernel.FloatTimeSeriesProperty("SensorA") tsp_b = kernel.FloatTimeSeriesProperty("SensorB") tsp_c = kernel.FloatTimeSeriesProperty("SensorC") tsp_d = kernel.FloatTimeSeriesProperty("SensorD") logs = [tsp_a, tsp_b, tsp_c, tsp_d] dbbuf = "" np.random.seed(0) for i in np.arange(25): # Randomly pick up log without records # first iteration must have all the record skiploglist = [] if i > 0: numnorecord = np.random.randint(-1, 4) if numnorecord > 0: for j in range(numnorecord): logindex = np.random.randint(0, 6) skiploglist.append(logindex) # ENDFOR (j) # ENDIF (numnorecord) # ENDIF (i) dbbuf += "----------- %d -------------\n" % (i) # Record for j in range(4): # Skip if selected if j in skiploglist: continue # get random time shifts timeshift = (np.random.random() - 0.5) * timefluc if i == 0: # first record should have the 'exactly' same time stamps timeshift *= 0.0001 deltatime = i * dtimesec + timeshift # fraction of a day deltatime = timedelta64(int(deltatime * 24 * 3600 * 1e6), 'us') # timedelta64 requires int tmptime = runstart + deltatime tmpvalue = float(i * i * 6) + j logs[j].addValue(tmptime, tmpvalue) #dbbuf += "{}: {} = {}\n".format(logs[j].name, tmptime, tmpvalue) # ENDFOR (j) # ENDFOR (i) #print(dbbuf) wksp.mutableRun()['SensorA'] = tsp_a wksp.mutableRun()['SensorB'] = tsp_b wksp.mutableRun()['SensorC'] = tsp_c wksp.mutableRun()['SensorD'] = tsp_d return wksp
def createTestWorkspace2(self): """ Create a workspace for testing against with more situation """ from mantid.simpleapi import CreateWorkspace from mantid.simpleapi import AddSampleLog from time import gmtime, strftime, mktime from datetime import datetime, timedelta import numpy as np # Create a matrix workspace x = np.array([1., 2., 3., 4.]) y = np.array([1., 2., 3.]) e = np.sqrt(np.array([1., 2., 3.])) wksp = CreateWorkspace(DataX=x, DataY=y, DataE=e, NSpec=1, UnitX='TOF') # Add run_start year = 2014 month = 2 day = 15 hour = 13 minute = 34 second = 3 dtimesec = 0.0010 timefluc = 0.0001 #tmptime = strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(gmtime()))) runstart = datetime(year, month, day, hour, minute, second) AddSampleLog(Workspace=wksp, LogName='run_start', LogText=str(runstart)) tsp_a = kernel.FloatTimeSeriesProperty("SensorA") tsp_b = kernel.FloatTimeSeriesProperty("SensorB") tsp_c = kernel.FloatTimeSeriesProperty("SensorC") tsp_d = kernel.FloatTimeSeriesProperty("SensorD") logs = [tsp_a, tsp_b, tsp_c, tsp_d] dbbuf = "" random.seed(0) for i in arange(25): # Randomly pick up log without records # first iteration must have all the record skiploglist = [] if i > 0: numnorecord = random.randint(-1, 4) if numnorecord > 0: for j in range(numnorecord): logindex = random.randint(0, 6) skiploglist.append(logindex) # ENDFOR (j) # ENDIF (numnorecord) # ENDIF (i) dbbuf += "----------- %d -------------\n" % (i) # Record for j in range(4): # Skip if selected if j in skiploglist: continue # get random time shifts timeshift = (random.random() - 0.5) * timefluc if i == 0: # first record should have the 'exactly' same time stamps timeshift *= 0.0001 deltatime = timedelta(i * dtimesec + timeshift) tmptime = str(runstart + deltatime) tmpvalue = float(i * i * 6) + j logs[j].addValue(tmptime, tmpvalue) dbbuf += "%s: %s = %d\n" % (logs[j].name, tmptime, tmpvalue) # ENDFOR (j) # ENDFOR (i) # print dbbuf wksp.mutableRun()['SensorA'] = tsp_a wksp.mutableRun()['SensorB'] = tsp_b wksp.mutableRun()['SensorC'] = tsp_c wksp.mutableRun()['SensorD'] = tsp_d return wksp