Skip to content
Snippets Groups Projects
Commit f563d32b authored by Maxim Gonchar's avatar Maxim Gonchar
Browse files

Merge commit '5180dd6f'

parents 08aeef8b 5180dd6f
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@ class ParsCfgHasProperFormat(object):
nelements = len(format)
dtin = DictWrapper(data)
for key, subdata in dtin['variables'].walkitems():
for key, subdata in dtin['parameters'].walkitems():
if isinstance(subdata, tuple):
if len(subdata)==nelements: continue
else:
......@@ -27,7 +27,7 @@ class ParsCfgHasProperFormat(object):
return data
IsNumber = Or(float, int, error='Invalid number "{}", expect int of float')
IsNumberOrTuple = Or(IsNumber, (IsNumber,), error='Invalid number/tuple {}')
IsNumberOrTuple = Or(IsNumber, (IsNumber,), And([IsNumber], Use(tuple)), error='Invalid number/tuple {}')
IsLabel = Or({
'text': str,
Optional('latex'): str,
......@@ -40,7 +40,7 @@ IsLabel = Or({
IsValuesDict = NestedSchema(IsNumberOrTuple)
IsLabelsDict = NestedSchema(IsLabel, processdicts=True)
def IsFormatOk(format):
if not isinstance(format, tuple):
if not isinstance(format, (tuple, list)):
return format=='value'
if len(format)==1:
......@@ -62,9 +62,9 @@ def IsFormatOk(format):
return f1 in ('value', 'central')
IsFormat = Schema(IsFormatOk, error='Invalid variable format "{}".')
IsVarsCfgDict = Schema({
'variables': IsValuesDict,
IsFormat = Schema(IsFormatOk, error='Invalid parameter format "{}".')
IsParsCfgDict = Schema({
'parameters': IsValuesDict,
'labels': IsLabelsDict,
'format': IsFormat,
'state': Or('fixed', 'variable', error='Invalid parameters state: {}'),
......@@ -72,16 +72,16 @@ IsVarsCfgDict = Schema({
},
# error = 'Invalid parameters configuration: {}'
)
IsProperVarsCfgDict = And(IsVarsCfgDict, ParsCfgHasProperFormat())
IsProperParsCfgDict = And(IsParsCfgDict, ParsCfgHasProperFormat())
IsLoadableDict = And(
{
'load': Or(str, And(Path, Use(str))),
Optional(str): object
},
Use(LoadFileWithExt(yaml=LoadYaml, key='load', update=True), error='Failed to load {}'),
IsProperVarsCfgDict
IsProperParsCfgDict
)
IsProperVarsCfg = Or(IsProperVarsCfgDict, IsLoadableDict)
IsProperParsCfg = Or(IsProperParsCfgDict, IsLoadableDict)
def process_var_fixed1(vcfg, _, __):
return {'central': vcfg, 'value': vcfg, 'sigma': None}
......@@ -126,14 +126,14 @@ def get_format_processor(format):
return process_var_percent
def iterate_varcfgs(cfg: DictWrapper):
variablescfg = cfg['variables']
parameterscfg = cfg['parameters']
labelscfg = cfg['labels']
format = cfg['format']
hascentral = 'central' in format
process = get_format_processor(format)
for key, varcfg in variablescfg.walkitems():
for key, varcfg in parameterscfg.walkitems():
varcfg = process(varcfg, format, hascentral)
try:
varcfg['label'] = labelscfg[key]
......@@ -143,8 +143,8 @@ def iterate_varcfgs(cfg: DictWrapper):
from dagflow.variable import Parameters
def load_variables(acfg):
cfg = IsProperVarsCfg.validate(acfg)
def load_parameters(acfg):
cfg = IsProperParsCfg.validate(acfg)
cfg = DictWrapper(cfg)
path = cfg['path']
......
from dagflow.graphviz import savegraph
from dagflow.graph import Graph
from dagflow.bundles.load_variables import load_variables
from dagflow.bundles.load_parameters import load_parameters
cfg1 = {
'variables': {
'parameters': {
'var1': 1.0,
'var2': 1.0,
'sub1': {
......@@ -22,7 +22,7 @@ cfg1 = {
},
}
cfg1a = {
'variables': {
'parameters': {
'var1': 1.0,
'var2': 1.0,
'sub1': {
......@@ -42,7 +42,7 @@ cfg1a = {
}
cfg2 = {
'variables': {
'parameters': {
'var1': (1.0, 1.0, 0.1),
'var2': (1.0, 2.0, 0.1),
'sub1': {
......@@ -63,8 +63,8 @@ cfg2 = {
}
cfg3 = {
'variables': {
'var1': (1.0, 1.0, 0.1),
'parameters': {
'var1': [1.0, 1.0, 0.1],
'var2': (1.0, 2.0, 0.1),
'sub1': {
'var3': (2.0, 3.0, 0.1)
......@@ -78,12 +78,12 @@ cfg3 = {
},
'var2': 'simple label 2'
},
'format': ('value', 'central', 'sigma_relative'),
'format': ['value', 'central', 'sigma_relative'],
'state': 'fixed',
}
cfg4 = {
'variables': {
'parameters': {
'var1': (1.0, 1.0, 10),
'var2': (1.0, 2.0, 10),
'sub1': {
......@@ -102,7 +102,7 @@ cfg4 = {
}
cfg5 = {
'variables': {
'parameters': {
'var1': (1.0, 10),
'var2': (2.0, 10),
'sub1': {
......@@ -121,13 +121,13 @@ cfg5 = {
}
from pprint import pprint
def test_load_variables_v01():
def test_load_parameters_v01():
cfgs = (cfg1, cfg1a, cfg2, cfg3, cfg4, cfg5)
with Graph(close=True) as g:
for i, cfg in enumerate(cfgs):
vars = load_variables(cfg)
vars = load_parameters(cfg)
print(cfg['state'])
print(i, end=' ')
pprint(vars.object)
savegraph(g, 'output/test_load_variables.pdf', show='all')
savegraph(g, 'output/test_load_parameters.pdf', show='all')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment