py_os_design

Introduction

Functionality to handle individual designs and DOEs. These can either emerge from Actor calculation results or be manually constructed.:

Example Code
import os
import numpy as np
import py_os_design as pod
from py_os_parameter import PyParameterManager
from py_omdb import PyOMDB


def f(x):
    s = np.sum(x)
    if s >= 0:
        return np.sqrt(s)
    else:
        return np.nan

# constants
dim = 4  # problem dimension
N = 12  # number of designs
start_design = 23   # design numbers to start with this number
param_names = ['x' + str(i) for i in range(dim)]
lower_bounds = np.array(dim * [-2.0], dtype=float)
upper_bounds = np.array(dim * [5.0], dtype=float)

# creating new design points
design_container = pod.PyOSDesignContainer()  # creating an empty new design container

for j in range(N):

    # creating an empty new design
    design = pod.PyOSDesign()  # creating a new design
    params = pod.PyOSDesignPoint()  # object for storing parameters for the new design
    resps = pod.PyOSDesignPoint()  # object for storing responses for the new design
    design_number = startdesign + j
    design.set_number(design_number) # new chosen design number
    design.set_run_status(pod.AWAITING)

    # setting input parameters
    x = lower_bounds + np.random.rand(dim) * (upper_bounds - lower_bounds)
    for i in range(dim):
        params.add(param_names[i], x[i])

    design.set_parameters(params)

    # setting response values
    y = f(x)
    resps.add('y', f(x))
    design.set_responses(resps)

    msg = 'iter {}: new design has parameters = {}'.format(j, x)
    msg += '    and responses = {}'.format(y)
    print(msg)

    # setting additional flags and infos
    if np.isnan(y):
        design.add_status(pod.RunInfoMeta(pod.SOLVER_FAIL))
    else:
        design.add_status(pod.RunInfoMeta(pod.NO_FAIL))

    design.set_run_status(pod.DONE)

    # add the design to the design container
    design_container.push_back(design)

# creating the parameter manager
pm = PyParameterManager()
for i, pname in enumerate(param_names):
    pm.add_deterministic_continuous_parameter(pname,
                                              lower_bounds[i],
                                              upper_bounds[i],
                                              0.5 * (lower_bounds[i] + upper_bounds[i]),
                                              0)

# store the design and parameter manager information in an .omdb file
db_file = PyOMDB()
db_file.design_container = design_container
db_file.parameter_manager = pm
db_file.check_consistency()
db_file.save_to_file(os.path.join(OSL_PROJECT_DIR, 'my_design_data.omdb')

Enums

DesignRunStatus
AWAITING
INPROCESS
DONE
DesignStatus
NO_FAIL
SOLVER_FAIL
NO_SOLVER_FAIL
RESPONSE_NAN
CRITERIA_FAIL
EntryType
UNINITIALIZED
BOOL
REAL
INTEGER
STRING
VARIANT

Functions

calculate_criteria

calculate_criteria( (PyOSDesign)design [, (bool)unsafe=False [, (bool)force=False [, (bool)log_design_number=True]]]) -> PyOSDesign



calculate_criteria_with_calc

calculate_criteria_with_calc( (PyOSDesign)design, (object)calculator [, (bool)unsafe=False [, (bool)force=False [, (bool)log_design_number=True]]]) -> PyOSDesign



CalculateCriteria

deprecated

CalculateCriteriaC

deprecated

create_nvp_design_entry

create_nvp_design_entry( (str)name, (PyOSDesignEntry)value) -> object


Create entry pair with name and value.

export_designs_to_csv

export_designs_to_csv( (PyOSDesignContainer)designs, (Path)file, (str)delimiter) -> None



ExportDesigns2CSV

deprecated

import_designs_from_csv

import_designs_from_csv( (PyOSDesignPoint)inputs, (PyOSCriterionContainer)criteria, (Path)file, (str)delimiter) -> PyOSDesignContainer



ImportDesignsFromCSV

deprecated

PyNVP_DesignEntry

deprecated

read_design_from_file

read_design_from_file( (Path)file, (str)parsed_filename) -> PyOSDesign



ReadDesignFromFile

deprecated

write_design_to_file

write_design_to_file( (PyOSDesign)design, (Path)file, (bool)inputs_only, (str)source_file) -> None



WriteDesignToFile

deprecated

Classes

DesignExporterCSV

Inherits from: DesignExporterGeneric

Constructors

DesignExporterGeneric

Constructors

DesignExporterJson

Inherits from: DesignExporterGeneric

Constructors

DesignExporterOIA

Inherits from: DesignExporterGeneric

Constructors

DesignImporterCSV

Inherits from: DesignImporterGeneric

Constructors

DesignImporterGeneric

Constructors

DesignImporterJson

Inherits from: DesignImporterGeneric

Constructors

DesignImporterOIA

Inherits from: DesignImporterGeneric

Constructors

HID

Constructors

Methods

GetChild

GetChild() -> HID



GetDepth

GetDepth() -> int



GetLeaf

GetLeaf() -> HID



GetNumber

GetNumber() -> int



HasChild

HasChild() -> bool



RemoveUndermostChild

RemoveUndermostChild() -> HID



ToString

ToString() -> str



PyOSDesign

Represents a single design in a DOE. Usually consists of parameters, responses, criteria and additional status information.

Constructors

Methods

add_missing_criteria

add_missing_criteria( (PyOSDesign)reference) -> None


Add criteria from reference that are not defined in self.

add_missing_parameters

add_missing_parameters( (PyOSDesign)reference) -> None


Add parameters from reference that are not defined in self.

add_missing_responses

add_missing_responses( (PyOSDesign)reference) -> None


Add responses from reference that are not defined in self.

add_status

add_status( (RunInfoMeta)status) -> None



AddMissingCriteria deprecated

AddMissingParameters deprecated

AddMissingResponses deprecated

AddStatus deprecated

dominates

dominates( (PyOSDesign)design) -> bool


Whether the provided design dominates this design regarding fulfilment of criteria.

Dominates deprecated

get_algorithm_iteration

get_algorithm_iteration() -> int



get_criteria

get_criteria() -> PyOSCriterionContainer



get_design_leaf_number

get_design_leaf_number() -> int


Return the leaf number of the design's ID.

get_design_type

get_design_type() -> DesignTypes



get_id

get_id() -> HID



get_iteration

get_iteration() -> HID



get_parameters

get_parameters() -> PyOSDesignPoint


Example Code
for name, value in design.get_parameters():
    print(name, value.get())

get_responses

get_responses() -> PyOSDesignPoint


Example Code
for name, value in design.get_responses():
    print(name, value.get_scalar())

get_run_status

get_run_status() -> DesignRunStatus



get_status

get_status() -> RunInfoContainer



get_workflow_id

get_workflow_id() -> SupportedAlgorithms



GetAlgorithmIteration deprecated

GetCriteria deprecated

GetDesignLeafNumber deprecated

GetDesignType deprecated

GetId deprecated

GetIteration deprecated

GetParameters deprecated

GetResponses deprecated

GetStatus deprecated

GetWorkflowId deprecated

has_error_state

has_error_state() -> bool



has_everything_failed deprecated

HasErrorState deprecated

HasEverythingFailed deprecated

is_active

is_active() -> bool



is_awaiting

is_awaiting() -> bool



is_complete deprecated

is_done

is_done() -> bool



is_failed

is_failed() -> bool



is_incomplete

is_incomplete() -> bool



is_succeeded

is_succeeded() -> bool



is_violated

is_violated() -> bool



IsActive deprecated

IsAwaiting deprecated

IsComplete deprecated

IsDone deprecated

IsDuplicated

IsDuplicated() -> bool



IsIncomplete deprecated

IsViolated deprecated

needs_reevaluation

needs_reevaluation() -> bool



NeedsReevaluation deprecated

set_awaiting

set_awaiting() -> None



set_criteria

set_criteria( (PyOSCriterionContainer)criteria) -> None



set_design_type

set_design_type( (DesignTypes)type) -> None



set_duplication

set_duplication( (HID)id) -> None


Specifiy a duplicate of this design.

set_id

set_id( (HID)id) -> None



set_number

set_number( (int)number) -> None



set_parameters

set_parameters( (PyOSDesignPoint)parameters) -> None


Example Code
design = PyOSDesign()
params = PyOSDesignPoint()
params.add("input", 5)
design.set_parameters(params)

set_responses

set_responses( (PyOSDesignPoint)responses) -> None


Example Code
design = PyOSDesign()
responses = PyOSDesignPoint()
responses.add("output", 200)
design.set_responses(responses)

set_run_status

set_run_status( (DesignRunStatus)status) -> None



set_workflow_id

set_workflow_id( (SupportedAlgorithms)id) -> None



SetAwaiting deprecated

SetCriteria deprecated

SetDesignType deprecated

SetDuplication deprecated

SetId deprecated

SetNumber deprecated

SetParameters deprecated

SetResponses deprecated

SetRunStatus deprecated

SetWorkflowId deprecated

PyOSDesignContainer

iterable has_length
Provides access to designs within a DOE
Example Code
for des in design_container:
    print(des.is_succeeded())

Constructors

Methods

append_designs

append_designs( (PyOSDesignContainer)designs) -> None



AppendDesigns deprecated

get_best_designs

get_best_designs() -> PyOSDesignContainer



get_design

get_design( (HID)id [, (bool)compare_leaf_only=False]) -> PyOSDesign



GetBestDesigns deprecated

has_design

has_design( (HID)id [, (bool)compare_leaf_only=False]) -> bool



push_back

push_back( (PyOSDesign)design) -> None



rename_parameter

rename_parameter( (str)from, (str)to, (bool)adapt_criteria) -> None



rename_response

rename_response( (str)from, (str)to, (bool)adapt_criteria) -> None



RenameParameter deprecated

RenameResponse deprecated

set_design_awaiting

set_design_awaiting( (HID)id) -> None



set_designs_done

set_designs_done( [, (bool)force=False]) -> None



SetDesignAwaiting deprecated

SetDesignsDone deprecated

PyOSDesignEntry

Wraps a single entry as part of a design.
Example Code
entry = PyOSDesignEntry(3.5)
entry.get_scalar().real

Constructors

Methods

get

get() -> object


Extract as Python bultin type.

get_domain_type

get_domain_type() -> EntryType


Get the entry's domain type.

get_scalar

get_scalar() -> complex


Try to extract as scalar.

get_variant

get_variant() -> VariantD


Try to extract as variant.

GetDomainType deprecated

GetScalar deprecated

GetVariant deprecated

is_inf

is_inf() -> bool


Whether the value is infinity.

is_nan

is_nan() -> bool


Whether the value is NaN.

is_scalar

is_scalar() -> bool


Whether entry is scalar.

is_uninitialized

is_uninitialized() -> bool


Whether the entry is not initialized with a value.

IsInf deprecated

IsNaN deprecated

IsScalar deprecated

IsUninitialized deprecated

size

size() -> int


Get the entry's size in case it is non-scalar.

Size deprecated

PyOSDesignEntryVec

iterable has_length itemsetter itemgetter
Array of design entries.

Constructors

Methods

append

append( (object)arg2) -> None



extend

extend( (object)arg2) -> None



push_back

push_back( (PyOSDesignEntry)arg2) -> None



size

size() -> int



PyOSDesignPoint

iterable has_length itemsetter itemgetter
Collection of design entries keyed by name.
Example Code
dp = PyOSDesignPoint()
dp.add("param_01", 3.5)
dp.add("param_02", PyOSDesignEntry(4.5))

Constructors

Methods

add

add( (str)name, (float)value) -> None



----

add( (str)name, (str)value) -> None



----

add( (str)name, (bool)value) -> None



----

add( (str)name, (int)value) -> None



----

add( (str)name, (VariantD)value) -> None



----

add( (str)name, (PyOSDesignEntry)value) -> None



PyOSDesignPointContainer

iterable has_length
Array of design points.

Constructors

Methods

push_back

push_back( (PyOSDesignPoint)arg2) -> None



PyParameters

iterable has_length itemsetter itemgetter
Collection of design entries keyed by name.
Example Code
dp = PyOSDesignPoint()
dp.add("param_01", 3.5)
dp.add("param_02", PyOSDesignEntry(4.5))

Constructors

Methods

add

add( (str)name, (float)value) -> None



----

add( (str)name, (str)value) -> None



----

add( (str)name, (bool)value) -> None



----

add( (str)name, (int)value) -> None



----

add( (str)name, (VariantD)value) -> None



----

add( (str)name, (PyOSDesignEntry)value) -> None



PyResponses

iterable has_length itemsetter itemgetter
Collection of design entries keyed by name.
Example Code
dp = PyOSDesignPoint()
dp.add("param_01", 3.5)
dp.add("param_02", PyOSDesignEntry(4.5))

Constructors

Methods

add

add( (str)name, (float)value) -> None



----

add( (str)name, (str)value) -> None



----

add( (str)name, (bool)value) -> None



----

add( (str)name, (int)value) -> None



----

add( (str)name, (VariantD)value) -> None



----

add( (str)name, (PyOSDesignEntry)value) -> None



RunInfoContainer

iterable has_length

Constructors

Methods

add_run_info

add_run_info( (RunInfoMeta)arg2) -> None



AddRunInfo deprecated

succeeded

succeeded() -> bool



Succeeded deprecated

RunInfoMeta

Constructors

UninitializedType

Constructors