Working with Workspaces in Python¶
mantid.simpleapi, you can access existing workspaces as a dictionary using the
mtd["worskpace_name"] command for a specific workspace name key. More explanation can be found in Accessing Workspaces From Python.
# This creates a workspace without explicitly capturing the output CreateSampleWorkspace(OutputWorkspace="my_new_workspace") # You can get a python variable pointing to the workspace with the command myWS = mtd["my_new_workspace"] print("The variable myWS now points to the workspace called " + str(myWS)) # You can assign a python variable when calling an algorithm and the workspace will match the variable name myOtherWS = CreateSampleWorkspace() print("myOtherWS now points to the workspace called " + str(myOtherWS))
The variable myWS now points to the workspace called my_new_workspace myOtherWS now points to the workspace called myOtherWS
You can look at the Workspace API reference for a full list of properties, but here are some of the key ones.
myWS = CreateSampleWorkspace() print("name = " + myWS.name()) myWS.setTitle("This is my Title") print("getTitle = " + myWS.getTitle()) myWS.setComment("This is my comment") print("comment = " + myWS.getComment()) print("id = " + myWS.id()) print("getMemorySize = " + str(myWS.getMemorySize()))
name = myWS getTitle = This is my Title comment = This is my comment id = Workspace2D getMemorySize = ...
Workspaces keep a track of all of the algorithms used on them, so you can ask a workspace to tell you about it’s history. The algorithm GeneratePythonScript uses this information to create a python script able to re-run the workspace history.
# Run a few algorithms myWS = CreateSampleWorkspace() myWS = ConvertUnits(myWS,Target="Wavelength") myWS = Rebin(myWS,Params=200) # You can access the history using getHistory() history = myWS.getHistory() for algHistory in history.getAlgorithmHistories(): print(algHistory.name()) for property in algHistory.getProperties(): if not property.isDefault(): print("\t" + property.name() + " = " + property.value())
CreateSampleWorkspace OutputWorkspace = myWS ConvertUnits InputWorkspace = myWS OutputWorkspace = myWS Target = Wavelength Rebin InputWorkspace = myWS OutputWorkspace = myWS Params = 200
The full documentation for workspace history can be found at the