DMF Workspace¶
As shown in the overview diagram on the About IDAES and the DMF page, the DMF Workspace is the container for all DMF Resources that can be worked on as a unit. Below is the documentation for the Workspace main class:
-
class
idaes.dmf.workspace.
Workspace
(path, create=False, add_defaults=False)[source] DMF Workspace.
In essence, a workspace is some information at the root of a directory tree, a database (currently file-based, so also in the directory tree) of Resources, and a set of files associated with these resources.
Workspace Configuration
When the DMF is initialized, the workspace is given as a path to a directory. In that directory is a special file named
config.yaml
, that contains metadata about the workspace. The very existence of a file by that name is taken by the DMF code as an indication that the containing directory is a DMF workspace:/path/to/dmf: Root DMF directory | +- config.yaml: Configuration file +- resourcedb.json: Resource metadata "database" (uses TinyDB) +- files: Data files for all resources
The configuration file is a YAML formatted file
The DMF configuration file defines the following key/value pairs:
- _id
- Unique identifier for the workspace. This is auto-generated by the library, of course.
- name
- Short name for the workspace.
- description
- Possibly longer text describing the workspace.
- created
- Date at which the workspace was created, as string in the ISO8601 format.
- modified
- Date at which the workspace was last modified, as string in the ISO8601 format.
- htmldocs
- Full path to the location of the built (not source) Sphinx HTML documentation for the idaes_dmf package. See DMF Help Configuration for more details.
There are many different possible “styles” of formatting a list of values in YAML, but we prefer the simple block-indented style, where the key is on its own line and the values are each indented with a dash:
_id: fe5372a7e51d498fb377da49704874eb created: '2018-07-16 11:10:44' description: A bottomless trashcan modified: '2018-07-16 11:10:44' name: Oscar the Grouch's Home htmldocs: - '{dmf_root}/doc/build/html/dmf' - '{dmf_root}/doc/build/html/models'
Any paths in the workspace configuration, e.g., for the “htmldocs”, can use two special variables that will take on values relative to the workspace location. This avoids hardcoded paths and makes the workspace more portable across environments.
{ws_root}
will be replaces with the path to the workspace directory, and{dmf_root}
will be replaced with the path to the (installed) DMF package.The config.yaml file will allow keys and values it does not know about. These will be accessible, loaded into a Python dictionary, via the
meta
attribute on theWorkspace
instance. This may be useful for passing additional user-defined information into the DMF at startup.