コード例 #1
0
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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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