Running models
Once you have configured the model, you use the client to run the model. If you have more than one server specified in the configuration file, you can specify which server to run on. In addition, you can provide a string tag to label the model results. This is useful when you want to group results together within a project and run the same models multiple times with different inputs for instance.
Note: The same model run with the same tag, within the same project will overwrite the old results.
get_model method:
Parameter | Optional / default | Comment |
---|---|---|
model_name | No | The name of the model as specified in the model specification |
server_id | Yes / âdefaultâ | A particular server ID |
model_specification | Yes / None | A model specification can be provided directly. In this case, no call will be made to the NoM Server |
This model returns a Model object.
You can check the is_valid_model flag on this object if you want to confirm that a valid model was returned. If this flag is false, you can inspect the message property of the model object for the error message.
Many models have pre-requisites that need to run to provide appropriate inputs. An example is AP-8 requiring outputs from the SAPRE model.
To determine if a particular model can run:
ae8ap8_model = nom_client.get_model("ae8ap8")
ae8ap8_model.validate_to_run()
>>> {'valid': 'false', 'message': "External input (trajectory) not supplied for model 'ae8ap8'."}
sapre_model = nom_client.get_model("sapre")
sapre_result = nom_client.run_model(sapre_model)
ae8ap8_model.set_external_input(external_input_name="trajectory", external_input=sapre_result)
ae8ap8_model.validate_to_run()
>>>{'valid': 'true', 'message': ''}
This method returns a python dictionary with âvalidâ and âmessageâ keys. This is useful to determine if the model pre-requisites have been provided (such as external inputs etc)
run_model method:
Parameter | Optional / default | Comment |
---|---|---|
model | No | The model object (as returned by the get_model method |
server_id | Yes / âdefaultâ | A particular server ID |
tag | No / âdefaultâ | A tag to label or namespace the results |
When the client runs a model, it blocks for a small (configurable) amount of time. If the model completed within this time a ModelRun object is returned. After this cut-off, the server returns the run_id of the model running.
By default, the client then polls for the result using the run_id until the model completes.
sapre_results = nom_client.run_model(sapre_model)
>>> {"model_name": "sapre", "status": 0, "message": "success", "result_count": 2, "output_files": 3}
sapre_results.status
>>> 'COMPLETED'
sapre_results.message
'success'
Status | Comment |
---|---|
RUNNING | The model is still running on the server |
COMPLETED | The model has completed. **Note**: This does imply that the results are valid or correct in any way |
FAILED | The model has failed. Check the message property for further information |
NOT_RUN | The model run has been created but not run yet |
This method returns a ModelRun object containing the results.
Access to this repository can be requested by emailing space-env@esa.int