Data pre-processing: wps_climdexInput_raw¶
WPS wrapper for climdexInput.raw data pre-processing functions
In [ ]:
import os
import requests
from birdy import WPSClient
from rpy2 import robjects
from urllib.request import urlretrieve
from importlib.resources import files
from tempfile import NamedTemporaryFile
from wps_tools.testing import get_target_url
from quail.utils import test_ci_output
In [2]:
# Ensure we are in the working directory with access to the data
while os.path.basename(os.getcwd()) != "quail":
os.chdir('../')
In [3]:
# NBVAL_IGNORE_OUTPUT
url = get_target_url("quail")
print(f"Using quail on {url}")
Using quail on https://docker-dev03.pcic.uvic.ca/twitcher/ows/proxy/quail/wps
In [4]:
quail = WPSClient(url)
Help for individual processes can be diplayed using the ? command (ex/ bird.process?)¶
In [5]:
# NBVAL_IGNORE_OUTPUT
quail.climdex_input_raw?
Signature: quail.climdex_input_raw( prec_file=None, tmax_name='tmax', tmin_name='tmin', prec_name='prec', tavg_name='tavg', tmax_column='tmax', tmin_column='tmin', prec_column='prec', tavg_column='tavg', base_range='c(1961, 1990)', cal='gregorian', date_fields="c('year', 'jday')", date_format='%Y %j', n=5, northern_hemisphere=True, quantiles='NULL', temp_qtiles='c(0.1, 0.9)', prec_qtiles='c(0.95, 0.99)', max_missing_days='c(annual = 15, monthly =3)', min_base_data_fraction_present=0.1, loglevel='INFO', tmax_file=None, tmin_file=None, tavg_file=None, output_file='output.rda', vector_name='days', output_formats=None, ) Docstring: Process for creating climdexInput object from data already ingested into R Parameters ---------- tmax_file : ComplexData:mimetype:`application/x-gzip` Name of file containing daily maximum temperature data. tmin_file : ComplexData:mimetype:`application/x-gzip` Name of file containing daily minimum temperature data. prec_file : ComplexData:mimetype:`application/x-gzip` Name of file containing daily total precipitation data. tavg_file : ComplexData:mimetype:`application/x-gzip` Name of file containing daily mean temperature data. tmax_name : string In a Rda file, the name of the R object containing daily maximum temperature data. You may leave as default for RDS files. tmin_name : string In a Rda file, the name of the R object containing daily minimum temperature data. You may leave as default for RDS files. prec_name : string In a Rda file, the name of the R object containing daily mean temperature data. You may leave as default for RDS files. tavg_name : string In a Rda file, the name of the R object containing daily total precipitation data. You may leave as default for RDS files. tmax_column : string Column name for tmax data. tmin_column : string Column name for tmin data. prec_column : string Column name for prec data. tavg_column : string Column name for tavg data. base_range : string Years to use for the baseline cal : string The calendar type used in the input files. date_fields : string Vector of names consisting of the columns to be concatenated together with spaces. date_format : string Date format as taken by strptime. n : integer Number of days to use as window for daily quantiles. northern_hemisphere : boolean Number of days to use as window for daily quantiles. quantiles : string Threshold quantiles for supplied variables. temp_qtiles : string Quantiles to calculate for temperature variables prec_qtiles : string Quantiles to calculate for precipitation max_missing_days : string Vector containing thresholds for number of days allowed missing per year (annual) and per month (monthly). min_base_data_fraction_present : float Minimum fraction of base data that must be present for quantile to be calculated for a particular day output_file : string Filename to store the output Rdata (extension .rda) vector_name : string Name to label the output vector loglevel : {'CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET'}string Logging level Returns ------- climdexinput : ComplexData:mimetype:`application/x-gzip` Output R data file for generated climdexInput File: ~/github/quail/</tmp/quail-venv/lib/python3.8/site-packages/birdy/client/base.py-3> Type: method
Run wps_climdexInput process¶
In [ ]:
with NamedTemporaryFile(suffix=".rda", prefix="summer_days_", dir="/tmp", delete=True) as output_file:
output = quail.climdex_input_raw(
tmax_file=(files("tests") / "data/ec.1018935.rda").resolve(),
tmin_file=(files("tests") / "data/ec.1018935.rda").resolve(),
prec_file=(files("tests") / "data/ec.1018935.rda").resolve(),
tmax_name="ec.1018935.tmax",
tmin_name="ec.1018935.tmin",
prec_name="ec.1018935.prec",
tmax_column='MAX_TEMP',
tmin_column='MIN_TEMP',
prec_column='ONE_DAY_PRECIPITATION',
base_range="c(1971, 2000)",
vector_name="climdexInput",
)
ci_url = output.get()[0]
In [7]:
test_ci_output(
ci_url, "climdexInput", "climdexInput.rda", "ci"
)