From eb858c8535b3ec9bcfdce1f9dffaca7eb2a9a2d1 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Mon, 20 Feb 2023 14:33:10 +0100 Subject: [PATCH] First commit (prototype for APPLESCABM) --- endpoint_tests/run_REFERENCEM.py | 81 ++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 endpoint_tests/run_REFERENCEM.py diff --git a/endpoint_tests/run_REFERENCEM.py b/endpoint_tests/run_REFERENCEM.py new file mode 100755 index 0000000..898988b --- /dev/null +++ b/endpoint_tests/run_REFERENCEM.py @@ -0,0 +1,81 @@ +#!/usr/bin/python3 + +""" + Naïve script demonstrating how to run a model from a client in the simplest way. Assumes that the + VIPS-Python reference model is deployed on the running instance of VIPSCore-Python + + Please note that this script does NOT require/utilize VIPSCore-Common-Python, which contains + data classes and utils for weather data, result objects etc. + + Copyright (C) 2023 NIBIO <tor-einar.skog@nibio.no> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +""" + +import requests +import json +from datetime import datetime +from dateutil import parser + +# Which weather data source to connect to +weather_data_source_name = "LMT" + +weather_data_source_uri = "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback?weatherStationId=%s&%s" +weather_param_string = "elementMeasurementTypes[]=TM&elementMeasurementTypes[]=RR&elementMeasurementTypes[]=BT&logInterval=1h&startDate=2016-03-01&startTime=00&endDate=2016-09-30&endTime=00&timeZone=Europe/Oslo" + +# Which VIPSCore system to connect to +core_server_uri = "https://coremanager.testvips.nibio.no" + +# The unique identificator for the Apple Scab model +model_id = "APPLESCABM" + +print("Downloading weather data from %s, please wait..." % weather_data_source_name) +weather_data_request = requests.get( weather_data_source_uri % ("5", weather_param_string)) + +#print weather_data_request.text +# Convert the text to Python JSON representation +#print(weather_data_request.text) +weather_data = weather_data_request.json() + +print ("Sending request to VIPS, waiting for calculation results, please wait...") +# Building the request with config values and weather data to send to VIPS +model_config = { + "loginInfo": { + "username": "testuser", + "password": "testpass" + }, + "modelId": "APPLESCABM", + "configParameters": { + "timeZone": "Europe/Oslo", + "startDateAscosporeMaturity": "2016-03-10", # APPLESCABM Specific configuration value + "observations": weather_data + } +} +# Posting the request to VIPSLogic +r2 = requests.post("%s/models/%s/run" % (core_server_uri, model_id), json=model_config) +#print r2.text +results = r2.json() +for result in results: + # Create a Python timestamp from the JSON timestamp string + timestamp = parser.parse(result["validTimeStart"]) + # Printing selected result parameters to stdout + allValues = json.loads(result["allValues"]) + print ("%s: Ascospore maturation = %s, Accumulated Mills = %s, Warning status = %s" % ( + datetime.strftime(timestamp, '%Y-%m-%dT%H:%M %Z'), + allValues["APPLESCABM.ASCMAT"], + allValues["APPLESCABM.ACCMILLS"], + result["warningStatus"] + ) + ) \ No newline at end of file -- GitLab