Skip to content

Accessing Results from Local Calculations

Loading a Table

In the "Workflow" tutorial, we executed a calculation and stored the results in our database table. We also learned how to find the table and data in DBeaver. This section will guide you through accessing these results using Python.

The results database table is always linked to the workflow via the database_table attribute. Here's how to load it:

from simmate.workflows.utilities import get_workflow

workflow = get_workflow("static-energy.quantum-espresso.quality00")
table = workflow.database_table

Viewing Available Columns

To view the data stored in this table, use the show_columns() method. This will display all the columns in the table:


The output will be a list of all the columns in the table.

Converting to an Excel-like Table

To view a table's data, we will use the objects attribute to access the table rows (i.e., 1 object = 1 row). Therefore, something like table.objects effectively means "grab all rows of this table". Then to make things easier to view, we will convert these objects to a DataFrame object, which Spyder let's us open up:

data = table.objects.to_dataframe()

To view the table, double-click data in Spyder's variable explorer (top right window). Here's what a typical dataframe looks like in Spyder:

Basic Filtering

You can also use the table columns to filter your results.

search_results = table.objects.filter(

In the previous example, we converted this list of results into a dataframe for easier viewing. You can also convert each row into a toolkit Structure. Feel free to experiment with each:

# You can convert this list of objects to a dataframe like we did above
data = search_results.to_dataframe()

# Or you can convert to a list of structure objects (ToolkitStructure)
structures = search_results.to_toolkit()


This may not seem very exciting now as we only have one row/structure in our table, but we'll explore more advanced filtering in the next section.