Skip to content

Commit efb70ed

Browse files
committed
Added updateParamsFromDictionary() function
1 parent 3518953 commit efb70ed

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

simtool/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from .utils import getGetSimToolNameRevisionFromEnvironment, findInstalledSimToolNotebooks, searchForSimTool
1010
from .utils import findInstalledSimToolNotebooks as findSimTools
11-
from .utils import parse, getValidatedInputs, getParamsFromDictionary
11+
from .utils import parse, getValidatedInputs, getParamsFromDictionary, updateParamsFromDictionary
1212
from .utils import findSimToolNotebook, getSimToolInputs, getSimToolOutputs
1313
from .run import Run, DB
1414
from .experiment import Experiment, set_experiment, get_experiment

simtool/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def __init__(self,simToolLocation,inputs,runName,cache,
8686
self.dstore = None
8787
if not trustedExecution:
8888
if cache:
89-
hashableInputs = _get_inputs_cache_dict(getParamsFromDictionary(inputsSchema,self.input_dict))
89+
hashableInputs = _get_inputs_cache_dict(updateParamsFromDictionary(inputsSchema,self.input_dict))
9090
self.dstore = RunBase.DSHANDLER(simToolLocation['simToolName'],simToolLocation['simToolRevision'],hashableInputs)
9191
del hashableInputs
9292
self.cached = self.dstore.read_cache(self.outdir)

simtool/utils.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import os
88
import sys
99
import re
10+
import copy
1011
import glob
1112
import nbformat
1213
import hashlib
@@ -52,6 +53,7 @@ def getParamsFromDictionary(inputs,
5253
try:
5354
parameters = parse(inputs)
5455
except ValueError as e:
56+
parameters = {}
5557
print(e)
5658
else:
5759
for label in inputs:
@@ -79,6 +81,46 @@ def getParamsFromDictionary(inputs,
7981
return parameters
8082

8183

84+
def updateParamsFromDictionary(parameters,
85+
valueDictionary):
86+
"""Update Params objects from dictionary of values
87+
88+
Args:
89+
parameters: Valid Params
90+
91+
valueDictionary: dictionary of values. valueDictionary.keys()
92+
should match parameters.keys()
93+
Returns:
94+
updatedParameters: dictionary of Params objects. Each Params object
95+
represents one SimTool input or output.
96+
"""
97+
updatedParameters = copy.deepcopy(parameters)
98+
for label in valueDictionary:
99+
if label in parameters:
100+
value = valueDictionary[label]
101+
checkForFile = False
102+
if hasattr(parameters[label],'file'):
103+
try:
104+
if isinstance(value,basestring):
105+
checkForFile = True
106+
except NameError:
107+
if isinstance(value,str):
108+
checkForFile = True
109+
110+
if checkForFile:
111+
if value.startswith('file://'):
112+
updatedParameters[label].file = value[7:]
113+
else:
114+
updatedParameters[label].value = value
115+
else:
116+
try:
117+
updatedParameters[label].value = value
118+
except:
119+
pass
120+
121+
return updatedParameters
122+
123+
82124
def getValidatedInputs(inputs):
83125
"""Test inputs for validity.
84126

0 commit comments

Comments
 (0)