def generateMCSetupTableProf9(wsname): """ Generate a Le Bail fit Monte Carlo random walk setup table """ tablews = api.CreateEmptyTableWorkspace(OutputWorkspace=str(wsname)) tablews.addColumn("str", "Name") tablews.addColumn("double", "A0") tablews.addColumn("double", "A1") tablews.addColumn("int", "NonNegative") tablews.addColumn("int", "Group") group = 0 tablews.addRow(["Dtt1" , 5.0, 0.0, 0, group]) tablews.addRow(["Dtt2" , 1.0, 0.0, 0, group]) tablews.addRow(["Zero" , 5.0, 0.0, 0, group]) group = 1 tablews.addRow(["Beta0" , 0.50, 1.0, 0, group]) tablews.addRow(["Beta1" , 0.05, 1.0, 0, group]) group = 2 tablews.addRow(["Alph0" , 0.05, 1.0, 0, group]) tablews.addRow(["Alph1" , 0.02, 1.0, 0, group]) group = 3 tablews.addRow(["Sig0", 2.0, 1.0, 1, group]) tablews.addRow(["Sig1", 2.0, 1.0, 1, group]) tablews.addRow(["Sig2", 2.0, 1.0, 1, group]) group = 4 tablews.addRow(["Gam0", 2.0, 1.0, 0, group]) tablews.addRow(["Gam1", 2.0, 1.0, 0, group]) tablews.addRow(["Gam2", 2.0, 1.0, 0, group]) return tablews
def create_table(self, change_list, start_time, has_polarizer=True, has_analyzer=True): split_table_ws = api.CreateEmptyTableWorkspace() split_table_ws.addColumn('float', 'start') split_table_ws.addColumn('float', 'stop') split_table_ws.addColumn('str', 'target') current_state = [False, False, False, False] current_state_t0 = 0 # Keep track of when we have a fully specified state specified = [not has_polarizer, not has_analyzer] for item in change_list: # We have a change of state, add an entry for the state that just ended if specified[0] and specified[ 1] and not current_state[2] and not current_state[3]: xs = "%s_%s" % ('On' if current_state[0] else 'Off', 'On' if current_state[1] else 'Off') split_table_ws.addRow([ int(current_state_t0 - start_time) * 1e-9, (item[0] - start_time) * 1e-9, xs ]) # Now update the current state for i in range(len(current_state)): if item[2][i]: if i < 2: specified[i] = True current_state[i] = item[1] current_state_t0 = item[0] return split_table_ws
def saveProject(self, datawsname, wsindex, projectfname): """ Save current to a project file Note: MC setup table workspace is not generated in this class. So it won't be saved """ import os # FIXME - Find out a good way to remove existing files/directories if os.path.exists(projectfname) is True: import shutil try: os.remove(projectfname) except RuntimeError: shutil.rmtree(projectfname) except IOError: shutil.rmtree(projectfname) except OSError: shutil.rmtree(projectfname) api.SaveNexusProcessed(InputWorkspace=self._wsgroupName, Filename=projectfname, Append=False) # Add data workspace, tracking record table to workspaces # api.GroupWorkspaces(InputWorkspaces="%s, %s, %s" % (datawsname, self._recordwsname, self._wsgroupName), # OutputWorkspace=self._wsgroupName) self.glog.notice("Append record workspace %s" % (self._recordwsname)) api.SaveNexusProcessed(InputWorkspace=self._recordwsname, Filename=projectfname, Append=True) self.glog.notice("Append data workspace %s" % (datawsname)) api.SaveNexusProcessed(InputWorkspace=datawsname, Filename=projectfname, Append=True) # Create a new README table workspace for some other information readmewsname = "READ_%s" % (self._ID) readmews = api.CreateEmptyTableWorkspace(OutputWorkspace=readmewsname) readmews.addColumn("str", "Function") readmews.addColumn("str", "Type") readmews.addRow(["Peak", "Not Important"]) readmews.addRow(["Background", "Not Important"]) readmews.addRow(["ID", str(self._ID)]) readmews.addRow(["Record", self._recordwsname]) readmews.addRow(["Data", str(datawsname)]) readmews.addRow(["Spectrum", str(wsindex)]) api.SaveNexusProcessed(InputWorkspace=readmewsname, Filename=projectfname, Append=True) return
def _genRecordTable(self): """ Generate record table """ tablews = api.CreateEmptyTableWorkspace(OutputWorkspace=self._recordwsname) tablews.addColumn("int", "Step") tablews.addColumn("str", "OutProfile") tablews.addColumn("str", "OutReflection") tablews.addColumn("str", "OutBackgroud") tablews.addColumn("str", "OutBckgroundParam") tablews.addColumn("str", "Refine") tablews.addColumn("double", "RwpOut") tablews.addColumn("int", "LastStep") tablews.addColumn("double", "RwpIn") tablews.addColumn("str", "InProfile") tablews.addColumn("str", "InReflection") tablews.addColumn("str", "InBackgroud") tablews.addColumn("str", "InBckgroundParam") self._recordws = tablews return