Definitions of Floe Classifications

Starting with Orion version 2022.2, the Orion user interface allows users to find Floes by navigating trees of Floe categories. These categories are represented internally as classification values that are attributes of Workfloe objects.


The categories shown in the Orion user interface are based on the Floes available to the specific user on Orion. Categories defined in snowball as shown below will not be visible in the user interface until a Floe uses a given category or set of categories.

For more information about managing classification values from programs, see the section on creating a Workfloe object in the Orion Programming Guide. Also note that you opt in to this behavior for the entire Floe package. You define it in manifest.json using the `classify_floes` keyword; see the section on the manifest in the Orion Programming Guide.

You can import and use the classification values provided in the Snowball package and used by OpenEye Floe developers.

There are four main classification trees provided in Snowball. Multiple categories can be added to a single Floe. For OpenEye-provided Floes, we have attempted to add a category from each of the four main trees as much as possible, going up or down a tree to find the most appropriate fit.

  1. Task-based: Categorizes Floes based on the task a user wants to perform.

  2. Solution-based: Categorizes Floes based on a specific stage and calculation in a drug discovery project.

  3. Role-based: Categorizes Floes based on which Floes are suitable given a user’s role.

  4. Product-based: Categorizes Floes based on the OpenEye products used in the Floes.

Each of these four trees is predefined and can easily be imported to use the provided categories.

Example using predefined categories “Generate 3D Conformers”:

from snowball import product_omega, role_compchem, task_lib_confgen, solution_smlo_confsampl

floe = WorkFloe('floe', title='Generate 3D Conformers')
floe.classification = [product_omega, role_compchem, task_lib_confgen, solution_smlo_confsampl]

The category trees are also easily extended to augment the tree provided in Snowball for subcategories that we did not yet cover.

Example extending existing definitions:

from snowball import product, task_vssb

# Extending the existing top level Product tree with a new leaf/node
product_magic = product / "Drug Discovery Magic"

floe = WorkFloe('floe', title='Bippity Boppity Boo')
floe.classification = [product_magic, task_vssb]

If a Floe does not fit into any of the existing trees provided in snowball, or if as a company you want your proprietary Floes to have a different top level categorization, you can easily define new trees, as shown in the example below.

Example adding a new top level tree trunk:

from snowball import task_vssb

# Adding a new top level tree based on e.g. company name, and adding branches/leafs beneath it
company = PurePosixPath("NextGen Tx")
company_magic = company / "Drug Discovery Magic"

floe = WorkFloe('floe', title='Bippity Boppity Boo')
floe.classification = [company_magic, task_vssb]