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): ...@@ -15,7 +15,7 @@ class ParsCfgHasProperFormat(object):
nelements = len(format) nelements = len(format)
dtin = DictWrapper(data) dtin = DictWrapper(data)
for key, subdata in dtin['variables'].walkitems(): for key, subdata in dtin['parameters'].walkitems():
if isinstance(subdata, tuple): if isinstance(subdata, tuple):
if len(subdata)==nelements: continue if len(subdata)==nelements: continue
else: else:
...@@ -27,7 +27,7 @@ class ParsCfgHasProperFormat(object): ...@@ -27,7 +27,7 @@ class ParsCfgHasProperFormat(object):
return data return data
IsNumber = Or(float, int, error='Invalid number "{}", expect int of float') 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({ IsLabel = Or({
'text': str, 'text': str,
Optional('latex'): str, Optional('latex'): str,
...@@ -40,7 +40,7 @@ IsLabel = Or({ ...@@ -40,7 +40,7 @@ IsLabel = Or({
IsValuesDict = NestedSchema(IsNumberOrTuple) IsValuesDict = NestedSchema(IsNumberOrTuple)
IsLabelsDict = NestedSchema(IsLabel, processdicts=True) IsLabelsDict = NestedSchema(IsLabel, processdicts=True)
def IsFormatOk(format): def IsFormatOk(format):
if not isinstance(format, tuple): if not isinstance(format, (tuple, list)):
return format=='value' return format=='value'
if len(format)==1: if len(format)==1:
...@@ -62,9 +62,9 @@ def IsFormatOk(format): ...@@ -62,9 +62,9 @@ def IsFormatOk(format):
return f1 in ('value', 'central') return f1 in ('value', 'central')
IsFormat = Schema(IsFormatOk, error='Invalid variable format "{}".') IsFormat = Schema(IsFormatOk, error='Invalid parameter format "{}".')
IsVarsCfgDict = Schema({ IsParsCfgDict = Schema({
'variables': IsValuesDict, 'parameters': IsValuesDict,
'labels': IsLabelsDict, 'labels': IsLabelsDict,
'format': IsFormat, 'format': IsFormat,
'state': Or('fixed', 'variable', error='Invalid parameters state: {}'), 'state': Or('fixed', 'variable', error='Invalid parameters state: {}'),
...@@ -72,16 +72,16 @@ IsVarsCfgDict = Schema({ ...@@ -72,16 +72,16 @@ IsVarsCfgDict = Schema({
}, },
# error = 'Invalid parameters configuration: {}' # error = 'Invalid parameters configuration: {}'
) )
IsProperVarsCfgDict = And(IsVarsCfgDict, ParsCfgHasProperFormat()) IsProperParsCfgDict = And(IsParsCfgDict, ParsCfgHasProperFormat())
IsLoadableDict = And( IsLoadableDict = And(
{ {
'load': Or(str, And(Path, Use(str))), 'load': Or(str, And(Path, Use(str))),
Optional(str): object Optional(str): object
}, },
Use(LoadFileWithExt(yaml=LoadYaml, key='load', update=True), error='Failed to load {}'), 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, _, __): def process_var_fixed1(vcfg, _, __):
return {'central': vcfg, 'value': vcfg, 'sigma': None} return {'central': vcfg, 'value': vcfg, 'sigma': None}
...@@ -126,14 +126,14 @@ def get_format_processor(format): ...@@ -126,14 +126,14 @@ def get_format_processor(format):
return process_var_percent return process_var_percent
def iterate_varcfgs(cfg: DictWrapper): def iterate_varcfgs(cfg: DictWrapper):
variablescfg = cfg['variables'] parameterscfg = cfg['parameters']
labelscfg = cfg['labels'] labelscfg = cfg['labels']
format = cfg['format'] format = cfg['format']
hascentral = 'central' in format hascentral = 'central' in format
process = get_format_processor(format) process = get_format_processor(format)
for key, varcfg in variablescfg.walkitems(): for key, varcfg in parameterscfg.walkitems():
varcfg = process(varcfg, format, hascentral) varcfg = process(varcfg, format, hascentral)
try: try:
varcfg['label'] = labelscfg[key] varcfg['label'] = labelscfg[key]
...@@ -143,8 +143,8 @@ def iterate_varcfgs(cfg: DictWrapper): ...@@ -143,8 +143,8 @@ def iterate_varcfgs(cfg: DictWrapper):
from dagflow.variable import Parameters from dagflow.variable import Parameters
def load_variables(acfg): def load_parameters(acfg):
cfg = IsProperVarsCfg.validate(acfg) cfg = IsProperParsCfg.validate(acfg)
cfg = DictWrapper(cfg) cfg = DictWrapper(cfg)
path = cfg['path'] path = cfg['path']
......
from dagflow.graphviz import savegraph from dagflow.graphviz import savegraph
from dagflow.graph import Graph from dagflow.graph import Graph
from dagflow.bundles.load_variables import load_variables from dagflow.bundles.load_parameters import load_parameters
cfg1 = { cfg1 = {
'variables': { 'parameters': {
'var1': 1.0, 'var1': 1.0,
'var2': 1.0, 'var2': 1.0,
'sub1': { 'sub1': {
...@@ -22,7 +22,7 @@ cfg1 = { ...@@ -22,7 +22,7 @@ cfg1 = {
}, },
} }
cfg1a = { cfg1a = {
'variables': { 'parameters': {
'var1': 1.0, 'var1': 1.0,
'var2': 1.0, 'var2': 1.0,
'sub1': { 'sub1': {
...@@ -42,7 +42,7 @@ cfg1a = { ...@@ -42,7 +42,7 @@ cfg1a = {
} }
cfg2 = { cfg2 = {
'variables': { 'parameters': {
'var1': (1.0, 1.0, 0.1), 'var1': (1.0, 1.0, 0.1),
'var2': (1.0, 2.0, 0.1), 'var2': (1.0, 2.0, 0.1),
'sub1': { 'sub1': {
...@@ -63,8 +63,8 @@ cfg2 = { ...@@ -63,8 +63,8 @@ cfg2 = {
} }
cfg3 = { cfg3 = {
'variables': { 'parameters': {
'var1': (1.0, 1.0, 0.1), 'var1': [1.0, 1.0, 0.1],
'var2': (1.0, 2.0, 0.1), 'var2': (1.0, 2.0, 0.1),
'sub1': { 'sub1': {
'var3': (2.0, 3.0, 0.1) 'var3': (2.0, 3.0, 0.1)
...@@ -78,12 +78,12 @@ cfg3 = { ...@@ -78,12 +78,12 @@ cfg3 = {
}, },
'var2': 'simple label 2' 'var2': 'simple label 2'
}, },
'format': ('value', 'central', 'sigma_relative'), 'format': ['value', 'central', 'sigma_relative'],
'state': 'fixed', 'state': 'fixed',
} }
cfg4 = { cfg4 = {
'variables': { 'parameters': {
'var1': (1.0, 1.0, 10), 'var1': (1.0, 1.0, 10),
'var2': (1.0, 2.0, 10), 'var2': (1.0, 2.0, 10),
'sub1': { 'sub1': {
...@@ -102,7 +102,7 @@ cfg4 = { ...@@ -102,7 +102,7 @@ cfg4 = {
} }
cfg5 = { cfg5 = {
'variables': { 'parameters': {
'var1': (1.0, 10), 'var1': (1.0, 10),
'var2': (2.0, 10), 'var2': (2.0, 10),
'sub1': { 'sub1': {
...@@ -121,13 +121,13 @@ cfg5 = { ...@@ -121,13 +121,13 @@ cfg5 = {
} }
from pprint import pprint from pprint import pprint
def test_load_variables_v01(): def test_load_parameters_v01():
cfgs = (cfg1, cfg1a, cfg2, cfg3, cfg4, cfg5) cfgs = (cfg1, cfg1a, cfg2, cfg3, cfg4, cfg5)
with Graph(close=True) as g: with Graph(close=True) as g:
for i, cfg in enumerate(cfgs): for i, cfg in enumerate(cfgs):
vars = load_variables(cfg) vars = load_parameters(cfg)
print(cfg['state']) print(cfg['state'])
print(i, end=' ') print(i, end=' ')
pprint(vars.object) 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