Server-side OPeNDAP Analysis - A General Approach Utilizing

advertisement
Weathertop Consulting, LLC
Server-side OPeNDAP Analysis - A
General Approach Utilizing
Legacy Applications through TDS
Roland Schweitzer
Weathertop Consulting, LLC
Steve Hankin and Ansley Manke
NOAA/PMEL
Highlights

Server-side analysis





Motivation
LAS as OPeNDAP Client and Server
Evolution of the server implementation
Community “call to action”
Summary
Weathertop Consulting, LLC
Server-side Analysis


In general server-side analysis is a computation
made by an OPeNDAP server at the request of
a client.
The specification of the computation is
transmitted to the server via the OPeNDAP
URL.
Weathertop Consulting, LLC
Motivation

We are interested in server-side analysis for use with the
Live Access Server (LAS).



Primarily as a way to implement comparisons between data
defined on different grids
We want our implementation to leverage the analysis
capabilities of legacy applications like Ferret and
GrADS.
We want to use our experience running legacy
applications (like Ferret) from within a Java runtime
environment.
Weathertop Consulting, LLC
The Live Access Server (LAS)
A highly configurable Web server designed to provide
flexible access to geo-referenced scientific data
Weathertop Consulting, LLC
LAS Product Server
Product
Server
Metadata
(XML)
client
SQL
Backend
Service
Ferret
Backend Service
Ferret
product
Local
netCDF
data
Local
RDBMS
metadata
product request
XML (REST)
back end
request (SOAP)
DRDS
Backend
Service
OPeNDAP
server
DRDS
server
netCDF
data
Remote
RDBMS
LAS Architecture
Weathertop Consulting, LLC
LAS
Product
Server
Metadata
(XML)
user
SQL
Backend
Service
Ferret
Backend Service
Ferret
DRDS
Backend
Service
product
Suppose the variables
are on different grids?
netCDF
data 1
metadata
product request
XML (REST)
back end
request (SOAP)
OPeNDAP
server
OPeNDAP
server
netCDF
data 2
Comparing OPeNDAP
datasets
Weathertop Consulting, LLC
LAS as an OPeNDAP Server



Data on grids which are available via LAS are
guaranteed to be geo-referenced and at least
COARDS compliant.
We can often “repair” (including re-gridding) the
data and/or metadata by associating a script of
Ferret commands with the data source in the
LAS configuration.
Wouldn’t it be nice to make these “repaired”
data available via OPeNDAP?
Weathertop Consulting, LLC
The Ferret Data Server



FDS made this possible.
FDS provides an OPeNDAP view of the data
being served by LAS and makes any
transformations specified by the associated
script before serving the data.
FDS also implements server-side analysis
(including the ability to pass in external data
sources).
Weathertop Consulting, LLC
A GDS Digression



The GrADS Data (DODS) Server is the first
implementation of this concept.
In fact, FDS used the Anagram framework upon
which GDS is built.
Both GDS and FDS use the Java Runtime
environment to invoke the associated legacy app
(GrADS or Ferret) to do the heavy lifting.
Weathertop Consulting, LLC
FDS Capabilities

FDS took advantage of several characteristics of the
underlying engine (Ferret).




New "virtual" data variables can be defined
Can build the metadata (netCDF header described by
dimensions, coordinate variables and the structure of data
variables) without performing any heavy calculations for both
data read from files and “virtual” data variables
Only performs calculations when the data are requested
Only calculates the minimal set needed to fulfill the current
request
Weathertop Consulting, LLC
FDS Evolution




Keep these advantages and evolve the implementation.
The Java netCDF library allows new data container
formats to be plugged-in by implementing the I/O
Service Provider interface.
Once “plugged-in” clients using nj22 have access to the
data from this container.
We implemented a Ferret I/O Service provider which
can read Ferret command scripts and direct Ferret to
perform the calculations as needed to satisfy data
requests.
Weathertop Consulting, LLC
Example
% more data/simple4.jnl
use levitus_climatology
let/d=levitus_climatology temp_20 =temp[d=levitus_climatology,z=0:20@sum]
set var/title="surface heat content"/units="deg C“ temp_20[d=levitus_climatology]
Weathertop Consulting, LLC
Example
dncdump -c http://porter.pmel.noaa.gov:8920/thredds/dodsC/mydata/simple4.jnl
float TEMP(ZAXLEVITR, YAXLEVITR, XAXLEVITR) ;
TEMP:units = "DEG C" ;
TEMP:long_name = "TEMPERATURE" ;
TEMP:_FillValue = -1.e+10f ;
TEMP:missing_value = -1.e+10f ;
TEMP:dataset = "levitus_climatology.cdf" ;
float TEMP_20(YAXLEVITR, XAXLEVITR) ;
TEMP_20:dataset = "levitus_climatology" ;
TEMP_20:direction = "IJ" ;
TEMP_20:units = "deg C" ;
TEMP_20:long_name = "surface heat content" ;
TEMP_20:missing_value = "-1.00000E+34" ;
TEMP_20:virtual = "true" ;
Weathertop Consulting, LLC
IOSP*
Application
NetcdfFile
The low-level
part of the
NetCDF-Java
version 2.2
architecture
I/O service provider
NetCDF-3
NetCDF-4
HDF5
NIDS
isValid
GRIB
open
GINI
Nexrad
readData
DMSP
Ferret
Java Runtime
GrADS
*Stolen directly from John Caron with only this measly acknowledgement.
Weathertop Consulting, LLC
The THREDDS Data Server



TDS is an OPeNDAP server.
nj22 I/O Service Providers can be plugged in to
TDS.
The combination of the Ferret I/O Service
Provider and TDS (aka F-TDS) serves via
OPeNDAP data which are represented by Ferret
command scripts (both data read from disk by
Ferret and virtual data computed on-the-fly by
Ferret).
Weathertop Consulting, LLC
F-TDS and Server-Side Analysis




A DataSource handler can also be plugged in to TDS
which allows custom handling of OPeNDAP requests
based on the contents of the HTTPServletRequest
Object (and by implication the URL).
We built such a DataSource handler which recognizes
URL with embedded analysis expressions.
The three groups of input to the server-side analysis
were copied from GDS.
The three sets are:



Data sources (e.g. OPeNDAP URLs).
Analysis “commands” which are implementation specific.
A sub-region.
Weathertop Consulting, LLC
An Analysis URL
http://machine:port/thredds/dodsC/
_expr_
{dataset1,dataset2,...}
{expression1;expression2;...}
Part of the original GDS
specification, not necessary
{region}
and not often used with FDS
.URLsuffix?constraint
Weathertop Consulting, LLC
FDS-Specific Example
http://host.gov:9090/thredds/dodsC/data/coads
_expr_
{http://host.gov:9090/thredds/dodsC/data/levitus}
{DIF=SST[d=1]-TEMP[d=2,g=SST[d=1]]}
.asc?DIF
Weathertop Consulting, LLC
Community Action

Can we define a implementation-indepedent
syntax for server-side analysis requests?
Some common operations (averaging, differencing,
linear interpolation) with standard name and syntax
 Server-specific (native) operations


What mechanism?

An encoded XML string?


We use this technique in LAS with good success
A simple command language?
Weathertop Consulting, LLC
XML Analysis Expression
<datasets>
<dataset id=1>"my_local_dset.nc"</dataset>
<dataset id=2>"http://remote_dset.nc"</dataset>
</datasets>
<operation>
<name>DIFF</name>
<arg pos=1 dset=1>sst</arg>
<arg pos=2 dset=2>sst</arg>
</operation>
Weathertop Consulting, LLC
With “native” Operation
<datasets>
<dataset id=1>my_local_dset.nc</dataset>
<dataset id=2>http://remote_dset.nc</dataset>
</datasets>
<native_operation>
LET diff = sst[d=2]-sst[d=1]
</native_operation>
Weathertop Consulting, LLC
Summary



Server-side analysis is critical for the future LAS.
NetCDF Java 2.2 and the THREDDS Data
Server is a great platform for implementing this
type of analysis with a legacy analysis application
(like Ferret).
A community-developed server-side analysis
framework would make it easier to get the
advantages of server-side analysis from other
servers.
Weathertop Consulting, LLC
Acknowledgments

From COLA




Jennifer Adams
Brian Doty
Joe Wielgosz

Former TMAP


Richard Rogers
Yonghua Wei
From Unidata


John Caron
Ethan Davis
Weathertop Consulting, LLC
Download