INCF Atlas Hub Specification and INCF

International Neuroinformatics Coordinating Facility
Date: 2011-01-10
Reference number of this INCF document: INCF 10-001
Version: 0.7
Category: INCF Discussion Paper
Editor: Ilya Zaslavsky
INCF Atlas Services and Waxholm Markup
Language
Digital Atlasing Infrastructure Task Force
Copyright notice
Copyright © 2011 International Neuroinformatics Coordinating Facility. All rights
reserved.
To obtain additional rights of use, visit http://www.incf.org/legal/.
Warning
This document is not an INCF Standard. This document is an INCF Discussion Paper and
is therefore not an official position of the INCF membership. It is distributed for review
and comment. It is subject to change without notice and may not be referred to as an INCF
Standard. Further, an INCF Discussion Paper should not be referenced as required or
mandatory technology in procurements
i
Contents
INCF Atlas Services and Waxholm Markup Language ................................................. i
Figures ............................................................................................................................... iv
Tables v
Preface ............................................................................................................................... vi
i.
Submitting organizations .................................................................................... vi
ii.
Submission contact points ................................................................................... vi
iii.
Revision history ................................................................................................... vii
iv.
Changes to other INCF Specifications .............................................................. vii
v.
Future work ......................................................................................................... vii
Foreword .............................................................................................................................1
Introduction ........................................................................................................................2
1.
Scope........................................................................................................................3
2.
Conformance ..........................................................................................................3
3.
Normative references .............................................................................................3
4.
Terms and definitions ............................................................................................4
5.
Conventions ............................................................................................................7
5.1.
Symbols (and abbreviated terms) .........................................................................7
5.2.
XML conventions ...................................................................................................8
6.
Core concepts and implementation context .........................................................9
6.1.
INCF Service Oriented Architecture (SOA): INCF Hubs and services, INCF
Central ....................................................................................................................9
6.2.
Atlas hubs and atlas services ...............................................................................13
6.3.
Spatial reference systems and SRS registry ......................................................14
6.4.
List of atlas services at the hub level ..................................................................19
6.5.
List of atlas services as INCF Central ................................................................21
7.
Service signatures and WaxML schemas ..........................................................22
7.1.
Atlas services as WPS profile: the basics ...........................................................22
7.2.
Atlas services and WaxML conventions ............................................................24
7.3.
GetCapabilities .....................................................................................................25
7.4.
DescribeProcess ....................................................................................................27
7.5.
Execute ListSRSs .................................................................................................29
7.6.
Execute DescribeSRS ..........................................................................................32
ii
7.7.
Execute ListTransformations .............................................................................34
7.8.
Execute DescribeTransformation .......................................................................35
7.9.
Execute GetTransformationChain .....................................................................36
7.10. Execute TransformPOI .......................................................................................38
7.11. Execute GetStructureNamesByPOI ...................................................................40
7.12. Execute Get2DImagesByPOI ..............................................................................44
7.13. Execute Retrieve2DImage ...................................................................................47
7.14. Execute GetCorrelationMapByPOI ...................................................................50
7.15. Execute GetGenesByPOI.....................................................................................51
7.16. Execute Get2DImagesByURI ..............................................................................54
7.17. Exception report.....................................................................................................55
Annex A.............................................................................................................................56
A1. Physical implementation of a hub............................................................................57
A2. Extensions: convenience APIs ..................................................................................57
A3. HUB deployment model and additional requirements ..........................................58
A4. Code Design, Management, and Deployment .........................................................59
iii
Figures
Figure 1. INCF SOA: main components....................................................................................... 10
Figure 2. Potential content of an INCF Hub ................................................................................. 11
Figure 3. INCF Central and INCF Hubs ....................................................................................... 11
Figure 4. INCF atlas hubs ............................................................................................................. 14
Figure 5. Spatial Reference Systems .............................................Error! Bookmark not defined.
Figure 6. Sample relational representation of SRS tables............................................................. 18
Figure 7. Schema of the SRSType element .................................................................................. 19
Figure 8. Schematic representation of core components of a hub ................................................ 21
Figure 9. XML schema diagram of the Capabilities response ...................................................... 27
Figure 10. XML schema diagram of ProcessDescription ............................................................. 29
Figure 11. XML schema diagram of the Execute response .......................................................... 29
Figure 12. XML schema diagram of the QueryInfo component. The element is expected to be
included in all Execute requests .................................................................................................... 30
Figure 13. XML schema diagram of ListSRS response ............................................................... 32
Figure 14. XML schema diagram of DescribeSRS response ....................................................... 32
Figure 15. XML schema diagram of ListTransformations response ............................................ 34
Figure 16. XML schema diagram of CoordinateTransformationChainResponse ........................ 38
Figure 17. XML schema diagrams of TransformationResponse and POI .................................... 39
Figure 18. XML schema diagrams of StructureTermsResponse and StructureTerm .................. 44
Figure 19. XML schema diagram of ImagesResponse ................................................................. 46
Figure 20. XML schema diagram of Retrieve2DImages response ............................................... 48
Figure 21. XML schema diagram of CorrelationMap response ................................................... 51
Figure 22. XML schema diagrams of GeneType and GeneExpressionLevel (components of
GetGenesByPOI response) ........................................................................................................... 52
Figure 23. Deployment model of INCF hub ................................................................................. 58
iv
Tables
Table 1. Spatial reference system core characteristics.................................................................. 14
v
Preface
Atlas web services is a term for a group of services created to support information
integration across atlases of the brain. The services return information in Waxholm Markup
Language (WaxML). Together, the WaxML encoding and the Atlas Service interface
specification form the backbone of the INCF Digital Atlasing Infrastructure.
The services and the XML output schema are defined and created through the activities of
the INCF Digital Atlasing Task Force, a collaborative effort that involves neuroscience
atlasing experts from several countries. The focus of this work is integration of atlas data for
rodent brain, however the principles and services expressed below can be applicable to
other species. INCF-DAI Task Force Members are in discussion with INCF about further
standardization of the schema and service signatures.
Suggested additions, changes, and comments on this discussion paper are welcome and
encouraged. Such suggestions may be submitted by INCF portal message, email message,
or by making suggested changes in an edited copy of this document.
The changes made in this document version, relative to the previous version, are tracked by
Microsoft Word, and can be viewed if desired. If you choose to submit suggested changes by
editing this document, please first accept all the current changes, and then make your
suggested changes with change tracking on.
i.
Submitting organizations
The following organizations submitted this Discussion Paper to the International
Neuroinformatics Coordinating Facility as a Request For Comment (RFC):
a) INCF Digital Atlasing Infrastructure Task Force
ii.
Submission contact points
All questions regarding this submission should be directed to the editor:
CONTACT
Ilya Zaslavsky
COMPANY
UCSD
EMAIL
izaslavsky [at]ucsd.edu
vi
iii.
Revision history
Date
2010-09-15
2011-01-10
iv.
Release
0.6
0.7
Author
Paragraph modified
Description
Ilya
Baseline external version
Zaslavsky
and INCFDAI TF
Specification of WaxML and INCF
Atlas Services as implemented in the
September’2010 release. Versions 0.10.5 are internal development versions
Ilya
Throughout
Zaslavsky
and INCF
DAI TF
Specification as implemented in
January’2011 release (transition to
Deegree services, feedback from
implementers and readers)
Changes to other INCF Specifications
Changes in other INCF specifications are not required to accommodate this INCF
specification.
v.
Future work
In future versions of this specification, we intend to discuss harmonization of WaxML and
the atlas services with other relevant standards and conventions used in the neuroscience
community, and add methods and output schemas as requested by atlas implementers and
users.
We anticipate that a community process is organized by which atlas services and their
output schema are discussed and adopted as INCF standards – possibly via a formal process
that involves public discussions and comments, pilot implementations, interoperability
experiments, and eventual adoption vote. After the initial round of specification
development is complete, INCF is expected to continue governing standards development
by monitoring change requests, issuing calls for implementation, developing groups of
related standards as a unified system, and otherwise supporting a transparent community
consensus system of international neuroinformatics standards
vii
Foreword
This document is being provided to INCF for review and discussion by the INCF membership. There may be
potential harmonization work to align WaxML with other specifications.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights.
INCF shall not be held responsible for identifying any or all such patent rights. However, to date, no such rights
have been claimed or identified.
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims
or other intellectual property rights of which they may be aware that might be infringed by any implementation of
the specification set forth in this document, and to provide supporting documentation.
1
Introduction
During 2008-2009, the INCF Digital Atlasing Task force members started developing
service-oriented infrastructure for rodent brain atlases. The goal is to formally define spatial
reference systems used for rodent brain atlases, transformations between them, and a
collection of service functions that expose the content of the atlases based on point of
interest requests. This work has been tightly integrated with the development of Waxholm
Space, an open source publicly accessible 3D model of mouse brain that is used as the
central reference framework that other spatial reference systems interoperate with.
In September 2009, a first collection of INCF Atlas services was demonstrated. These
services included several initial coordinate transformation services and wrappers over POI
(Point of Interest)-based requests that could be executed over several key online sources of
rodent brain data, including the Allen Brain Atlas and the Edinburgh Mouse Atlas, as well as
a collection of spatially-registered imagery at UCSD.
During 2010, a new INCF-sponsored project focused on converting the initial demo into a
more solid infrastructure. This included formal definitions of coordinate systems and
coordinate transformations for the mouse brain, defining a service interface, developing a
standards-based XML schema for the service output, and conceptualizing components of
INCF SOA as a network of INCF atlas hubs linked to the central metadata catalog. This
document describes the interface specification of hub services and the output XML schema
called Waxholm Markup Language (WaxML). The goal of this first phase is to create a fairly
rigid though minimalistic foundation of INCF SOA, and follow it strictly, to ensure that atlas
hubs and atlas clients exchange information in a systematic and unambiguous manner.
This document has dual purpose. One is to formally specify: a) service interface for atlas
services and b) WaxML as the output XML schema used by such services. This information is
presented in the main (normative) part of the document. Another is to place the services
and the schema in the context of INCF-DAI (Digital Atlasing Infrastructure), describe main
components of this infrastructure (INCF Central, different types of atlas hubs, spatial
reference system registry, transformations registry), and provide information for
developers. This material is partially presented in Section 6 and in the appendix
(informative) section.
Several reports generated in the course of the INCF-DAI TF activities are the basis of this
specification: the 2009 INCF-DA TF report, and the final report for the 2009 demonstration
project (from UCSD.) Versions 0.1-0.4 of the specification were developed internally
between October 2009-March 2010 (Edinburgh INCF DAI meeting). Version 0.5 incorporated
initial comments from members of the Digital Atlasing Infrastructure Task Force and INCF
research staff. Version 0.6 is a significant refactoring and standardization of the previous
text, along with the completion of the first draft of service implementation (September
2010).. Version 0.7 (current) reflects a significant update and service enhancements related
to the transition to Deegree-based services, and several service interface changes based on
feedback from users and developers.
This and related documents can be accessed from the atlasing group space on Google Code:
http://code.google.com/p/incf-dai/ The Google code page includes the WaxML schema,
sample XML output for atlas service requests, coding examples, and source code. The
schema is also available at http://www.incf.org/WaxML/xmlschema.
2
IMPORTANT: Developers are expected to consult the WIKI at
http://code.google.com/p/incf-dai for the most up to date versions of the service
signatures.
The template for this document is based on documents of Open Geospatial Consortium
(www.opengeospatial.org).
1. Scope
This document describes the initial version of the WaxML messaging schema as
implemented in the initial version of the INCF Atlas services. It also lays out strategies for
expanding WaxML to include a variety of POI-based requests in a way conformant with
specifications that are adopted for exchanging spatial information.
The Atlas services API includes a simple set of methods that can be called to discover and
interpret atlas information spatially, and get information about existing spatial reference
frameworks for the brain. The core methods and related XML constructs list and describe
available SRS (Spatial Reference System) and transformations (ListSRSs,
ListTransformations, DescribeSRS, DescribeTransformation), derive and compute spatial
transformations (GetTransformationChain, TransformPOI), and link anatomic labels with
points in space (GetStructureNamesByPOI). These methods are expected to be included in
all atlas hub services. The specification includes two generic POI-based requests that return
objects or properties at specified coordinates (GetObjectsByPOI and GetPropertyByPOI). At
the same time, the WPS-based service approach does not require that all methods are
presented as the generic requests above: atlas hubs may expose additional functionality
following conventions specific to one or more atlas hubs. Such additional requests may have
compatible signatures across hubs, thus making cross-hub queries easier. Several such
methods are also described here (Get2DImagesByPOI, Retrieve2DImage, getGenesByPOI,
etc.) though strictly speaking they are outside the core set of methods that should be
standardized as the first priority. Enabling cross-hub querying for semantically related
methods with different signatures can be accomplished with a mediator at the central server
– but this is out of scope for the document.
2. Conformance
Not applicable at this time.
3. Normative references
The following normative documents contain provisions which, through reference in this text,
constitute provisions of this document. For dated references, subsequent amendments to,
or revisions of, any of these publications do not apply. However, parties to agreements
based on this document are encouraged to investigate the possibility of applying the most
recent editions of the normative documents indicated below. For undated references, the
latest edition of the normative document referred to applies.
3
ISO 1000:1994, SI units and recommendations for the use of their multiples and of certain other
units.
ISO 8601:2004, Data elements and interchange formats— Information interchange
Representation of dates and times
ISO 19101:2003, Geographic Information—Reference Model
ISO/TS 19103:2006, Geographic Information — Conceptual schema language
ISO 19110:2006 , Geographic Information – Feature cataloguing methodology
IETF RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax. (August 1998)
W3C XLink, XML Linking Language (XLink) Version 1.0. W3C Recommendation (27 June
2001)
W3C XML, Extensible Markup Language (XML) 1.0 (Second Edition), W3C Recommendation
(6 October 2000)
W3C XML Namespaces, Namespaces in XML. W3C Recommendation (14 January 1999)
W3C XML Schema Part 1, XML Schema Part 1: Structures. W3C Recommendation (2 May
2001)
W3C XML Schema Part 2, XML Schema Part 2: Datatypes. W3C Recommendation (2 May
2001)
4. Terms and definitions
For the purposes of this document, the following terms and definitions apply.
4.1
application schema
conceptual schema for data required by one or more applications
[ISO 19101]
4.2
attribute <XML>
name-value pair contained in an element
4.3
child element <XML>
immediate descendant element of an element
4.4
coordinate reference system (see spatial reference system)
In geospatial data processing, it represents a coordinate system that is related to the real world by
a datum [ISO 19111]. In this document, we define coordinate reference systems with respect to
anatomic features or image processing artefacts/procedures (see section XXX). Note that a
“coordinate reference system” is treated here as a special case of “spatial reference system”
4
where location is described by coordinates. In a general case of neuroscience-oriented spatial
reference system, location in the brain can be referenced via ontology, or a collection of spatial
rules defined relative to non-problematic anatomic features and/or fiducial points.
4.5
data type
specification of a value domain with operations allowed on values in this domain
[ISO/TS 19103]
EXAMPLE
Integer, Real, Boolean, String, Date (conversion of a data into a series of codes).
Data types include primitive predefined types and user-definable types. All instances of data types lack identity.
4.6
domain
well-defined set
[ISO/TS 19103]
1
A mathematical function may be defined on this set, i.e. in a function f:AB A is the domain of the function f.
2
A domain as in domain of discourse refers to a subject or area of interest.
4.7
element <XML>
basic information item of an XML document containing child elements, attributes and
character data
From the XML Information Set: “Each XML document contains one or more elements, the boundaries of which are
either delimited by start-tags and end-tags, or, for empty elements, by an empty-element tag. Each element has
a type, identified by name, sometimes called its ‘generic identifier’ (GI), and may have a set of attribute
specifications. Each attribute specification has a name and a value.”
4.8
feature
abstraction of real world phenomena. In the neuroinformatics context refers to anatomic features
in the brain
[ISO 19101]
A feature may occur as a type or an instance. Feature type or feature instance should be used when only one is
meant.
4.9
feature association
relationship that links instances of one feature type with instances of the same or different feature
type
[ISO 19110]
5
4.10
grid
network composed of two or more sets of curves in which the members of each set intersect the
members of the other sets in an algorithmic way. In typical neuroinformatics usage, refers to a
2D or 3D regular space tessellation as specified by a recording procedure or device: microscope,
camera, downsampling or other algorithm, 3D reconstruction, etc.
[ISO 19123]
The curves partition a space into grid cells.
4.11
namespace <XML>
collection of names, identified by a URI reference, which are used in XML documents as
element names and attribute names [W3C XML Namespaces]
4.12
property <General Feature Model>
characteristic of a feature type, including attribute, association role, defined behaviour, feature
association, specialization and generalization relationship, constraints
[ISO 19109]
4.13
property <GML>
a child element of a GML object
It corresponds to feature attribute and feature association role in ISO 19109. If a GML property of a feature has an
xlink:href attribute that references a feature, the property represents a feature association role.
4.14
schema
formal description of a model
[ISO 19101]
In general, a schema is an abstract representation of an object's characteristics and relationship to other objects. An
XML schema represents the relationship between the attributes and elements of an XML object (for example, a
document or a portion of a document)
4.15
schema <XML Schema>
collection of schema components within the same target namespace
EXAMPLE
Schema components of W3C XML Schema are types, elements, attributes, groups, etc.
4.16
schema document <XML Schema>
XML document containing schema component definitions and declarations
6
The W3C XML Schema provides an XML interchange format for schema information. A single schema document
provides descriptions of components associated with a single XML namespace, but several documents may
describe components in the same schema, i.e. the same target namespace.
4.17
semantic type
category of objects that share some common characteristics and are thus given an identifying
type name in a particular domain of discourse
4.18
tag <XML>
markup in an XML document delimiting the content of an element
4.19
UML application schema
application schema written in UML according to ISO 19109
4.20
Uniform Resource Identifier (URI)
unique identifier for a resource, structured in conformance with IETF RFC 2396
The general syntax is <scheme>::<scheme-specific-part>. The hierarchical syntax with a namespace is
<scheme>://<authority><path>?<query> - see [RFC 2396].
4.21
value
member of the value-space of a datatype. A value may use one of a variety of scales including
nominal, ordinal, ratio and interval, spatial and temporal. Primitive datatypes may be combined
to form aggregate datatypes with aggregate values, including vectors, tensors and images
[ISO11404].
5. Conventions
5.1.
ABA
AGEA
API
COTS
EMAP
EMAGE
GML
ISO
OGC
OWS
UCSD
UML
WXS
Symbols (and abbreviated terms)
Allen Brain Atlas
Anatomic Gene Expression Atlas
Application Program Interface
Commercial Off The Shelf
Edinburgh Mouse Atlas Project
Edinburgh Mouse Atlas Gene Expression
Geography Markup Languaged
International Organization for Standardization
Open Geospatial Consortium
OGC Web Services
University of California San Diego
Unified Modeling Language
W3C XML Schema Definition Language
7
WaxML
WCS
WHS
WMS
WPS
XML
1D
2D
3D
INCF Waxholm Markup Language
Web Coverage Service
INCF Waxholm Space
Web Mapping Service
Web Processing Service
Extensible Markup Language
One Dimensional
Two Dimensional
Three Dimensional
5.2.
XML conventions
To describe the parts of an XML file in text, this document uses the following conventions:
 Element names are enclosed in brackets, e.g. <element>
 Attributes are prefixed with the @ symbol, e.g. @attribute
 Element text (text content of an element) is enclosed in quotes, e.g. “element text”
The following example XML illustrates these conventions. The example shows a <PlusZ>
element, with a @maxValue attribute and a text value of “Anterior”.
<PlusZ maxValue="9.0" xlin:href="#Anterior">Anterior</PlusZ>
8
6. Core concepts and implementation context
6.1.
INCF Service Oriented Architecture (SOA): INCF
Hubs and services, INCF Central
The goal of INCF Digital Atlasing Infrastructure Task Force is to develop scientific and
technical foundations and development principles and prototypes for a distributed system of
neuroscience resources that can be published, shared and integrated based on spatial
characteristics of their content. These spatial characteristics can include different ways of
referencing location in the brain (by coordinates, by anatomic labels, by spatial placement
rules, verbally), different types of spatial relationships (common topological and metric
relationships, as well as specific spatial predicates used by neuroscientists) and different
types of spatial arrangement and patterns. In the initial version of the INCF atlasing
infrastructure, we address only one manner of spatial data integration across atlases: by
location in the brain defined in a brain spatial reference system.
This distributed system of neuroscience resources is presented as a collection of selfcontained web services that expose location-based functionality and describe spatial
properties of atlases. These services are envisioned to be a part of general INCF
cyberinfrastructure developed to support interoperability between neuroscience resources of
different types.
The INCF-DAI Service-Oriented Architecture (SOA) would rely, where possible, on:
 standard service interfaces and encoding schemas;
 standardized coordinate reference systems, and a service-accessible registry of
reference systems;
 a collection of coordinate transformation services, with Waxholm Space (WHS) at
the center;
 standardized data models for the types of neuroscience data incorporated in the
SOA;
 standard terminology explicated in registered ontologies and available via term
cross-walks where needed.
9
Figure 1. INCF SOA: main components
Figure 1 presents a vision of a neuroscience information system enabling publication and
access to different types of data. . This list of data types is not exhaustive. The information
models for each data type abstract distributed data sources, allowing them to be published
as web services in a standard manner, and then registered and indexed at INCF service
registries. Generally, registration would place each neuroscience resource in a spatial and
semantic framework, and in other frameworks as required by querying over different types
of data. Each of the resource types may be managed in its own registry; in addition the
spatial and semantic registries can be used across data types to support querying by spatial
and semantic attributes where appropriate. Note that a particular physical resource may
expose more than one type of data, e.g. the Allen Brain Atlas (ABA) includes 2D images and
3D volumes, gene expression data and segmentations, some of which share semantic and
spatial frameworks.
From the user perspective, the resources, registries and catalogs will be accessible from
several types of user interfaces: data management, data publication/registration, data
curation, visualization, analysis and annotation. Since in neuroscience atlasing many user
interfaces are unique and tuned to specific types of resources, it is also useful to have a
services interface that supports exchange of spatial information between clients.
At the physical level the resources referenced above can be published at INCF hubs
(NeuroHubs) as web services, and registered at INCF Central.
As shown in Figure 2, a NeuroHub may contain different types of resources exposed as
different types of standard web services, beyond atlas services specifically. They may
10
include, for example, services for other types of data, database and registry management
and harvesting tools, collaboration and other applications.
Figure 2. Potential content of an INCF Hub
Figure 3. INCF Central and INCF Hubs
Different types of neuroscience hubs in INCF SOA could include, for example (see Figure 3):

National hubs: as long as they provide a list of services through GetCapabilities
and DescribeProcess mechanism, and perhaps support RSS (ideally, GeoRSS,
references coordinates in a brain coordinate system) feeds;
11


Community software repositories such as NITRC: as long as they support
GetCapabilities requests and expose their holdings via some standard protocol,
e.g. CSW/ebRIM;
Specialized resources, such as simulation providers or ontology providers and
marked-up resource providers such as NIF: as long as they are exposed via some
discovery and access services that can be used to harvest their metadata
content.
The different atlas hubs and the services they host can be registered at INCF Central. The
functions of the INCF Central server will include:







Allow hub data managers to register their hubs to the INCF Central, and edit hub
metadata;
Support service access to and query of hub registration records;
Support regular harvesting of hub metadata into a collection of INCF Central
tables;
Support discovery hub metadata, including information about known coordinate
reference systems, spatial transformations, functionality of each hub, and
registered spatial datasets (e.g. images);
Spawn data queries to atlas hubs;
Compute chains of coordinate transformations that may involve multiple hubs;
Support subscription/notification of users as information becomes available in a
catalog on a particular topic or area.
In addition to the portal, discovery and registration server (INCF Central), the central facility
may support a co-located INCF hub. Its functions will include: providing space and data
management and other functions for INCF-DAI users who cannot register their resources to
other national or project hubs; maintaining framework datasets and reference systems (in
case of atlasing, it would include, for example, versions of the WHS spatial reference system
and reference datasets); maintaining standards-based wrappers of external hubs; often
used resources from other hubs that would be efficient to cache centrally to ensure their
high availability.
The different types of services are listed in a local NeuroHub service registry (or Neurohub
catalog). The NeuroHub service registry may follow the CSW specification
(http://www.opengeospatial.org/standards/cat), or any other convenient specification, or
just generate a custom capability document in response to a hub-level GetCapabilities
request.
Hub services are expected to follow standard service interface specifications and publish
their capabilities via GetCapabilities method describing the content of the service. For
example, atlas services described below declare their content via GetCapabilities request
which is part of the Web Processing Service interface standard. Other hub services may use
other interface standards as appropriate, as long as they support a Capabilities description
which can be registered at the INCF Central server. At the very least, such capabilities
descriptions would contain service type and endpoint, and general Dublin core metadata.
12
6.2.
Atlas services
An INCF Atlas Service represents a collection of web functions that provide access to brain
atlas resources available in a NeuroHub, as well as translations from specific atlas spatial
reference systems (SRS) or vocabularies local to the hub, to INCF-supported spatial
reference system (currently: WHS) and an ontology management system (currently: NIFbased), respectively.
The role of INCF Central is to support a discovery system over metadata harvested from
distributed atlas services, and let registered users add/update service registrations.
The key INCF-DAI data publishing and registration workflow that involves Atlas
Services and INCF Central, can be described as follows:







A collection of data loaders for specific types of data, available at the hub or on a
local machine, is used by INCF hub manager to ingest and publish data as hub’s
resources.
The loaders populate a data store for each specific type of data (e.g. gene
expression data loader takes Excel or CSV files and puts them into RDBMS).
Indexes are rebuilt and databases are tested for outliers, completeness, etc. A
template data store shall be provided as part of a “standard hub” (see below).
To create a new service instance for the new data, a service template for each
data type is configured to point to the local data store instance where the data
have been ingested (e.g., by editing connection parameters and metadata), and
the service is automatically deployed.
The service registry at the local hub (or directly at INCF Central) is updated to
include a reference to the new service . If the hub maintains a local service
registry, INCF Central should be capable of harvesting this registry rather than
individual services
INCF Central’s registry application automatically re-harvests registered
resources, whether they represent hub catalogs or individual atlas service
capabilities (at regular intervals, or as triggered by service registration).
Once the new service is registered at INCF Central by a hub data manager, INCF
Central curator validates and approves the service, making it available via the
INCF Central catalog, and incorporating hub’s resources into INCF Central’s
federated applications (e.g. computation of coordinate transformations across
hubs) The INCF Central catalog services may support one or more client
applications, e.g. the Whole Brain Catalog, BrainExplorer, and MBAT.
Operational roles envisioned in the above scenario are: a) hub data manager, and b) INCF
Central curator.
13
Figure 4. INCF atlas hubs
Since we often deal with a collection of legacy atlas services with variety of query and
access mechanisms, and established APIs, we make a distinction between “standard” hubs
and “hybrid” hubs. In the former case, the entire atlas service functionality is provided by a
remote hub, while the central facility only maintain service registration, In the latter case,
INCF Central hub will maintain a wrapper of atlasing functions of a resource. This wrapper
will provide a collection of core services and extended hub services (e.g. GetCorrelationMap
described below, which is specific for the ABA hub) that can be further registered at the
INCF Central server. Figure 4 demonstrates a collection of such hybrid hubs that wrap
existing atlas applications and services to expose them as standard atlasing resources.
6.3.
Spatial reference systems and SRS registry
A registry of spatial coordinate systems is one of the key components of global spatial data
infrastructure. In the earth science domain, EPSG Geodetic Parameter Dataset
(http://info.ogp.org.uk/geodesy/Geodetic.html) is widely used. The geospatial SRS registry
at http://www.epsg-registry.org/ contains descriptions of thousands of spatial reference
systems. In particular, it has the following naming conventions when describing coordinate
systems:
Code: EPSG::4326 (this code is used by services and applications to reference the SRS)
Name: WGS 84 (this is a generic name of the SRS; note that versioning is loosely captured
by specifying a year: World Geodetic System 1984)
Type: geographic 2D
For INCF DAI, we propose a similar standards-setting repository of neuroscience coordinate
systems. Figure 5 shows the available coordinate systems, with origin and axis orientation
shown on each diagram with respect to neuroscience orientations.
SRSName, used to refer to a specific SRS, is constructed as a concatenation
"Species_BaseName_Version", as in the following table:
Table 1. Spatial reference system core characteristics
srsCode
srsName
srsBase
INCF:0001 Mouse_WHS_0.9
WHS
srsVersion Species srsDescription
0.9
Mouse WHS initial
14
INCF:0002 Mouse_WHS_1.0
WHS
1.0
Mouse
INCF:0100 Mouse_ABAvoxel_1.0
ABAvoxel
1.0
Mouse
INCF:0101 Mouse_ABAreference_1.0 ABAreference 1.0
Mouse
INCF:0102 Mouse_AGEA_1.0
AGEA
1.0
Mouse
INCF:0200 Mouse_Paxinos_1.0
Paxinos
1.0
Mouse
INCF:0300 Mouse_EMAP-T23_1.0
EMAP-T23
1.0
Mouse
version, with
origin in
back-leftbottom
corner
WHS with
origin shifted
to AC-midline
intersection
SRS used in
ABA 3D
model
SRS in ABA
reference
atlas of
mouse brain
SRS used in
ABA gene
expression
module, a
derivative of
ABAvoxel
SRS in
PaxinosFranklin
stereotaxic
atlas
A T23 model
of EMAP
developing
mouse atlas
The use of INCF:XXXX codes will be encouraged in the next phase, once their interpretation
is established. At the moment this srsCode assignment is arbitrary.
When referring to transformations between coordinate systems, we use the following
naming convention: "inputSrsName_To_outputSrsName_Version", e.g.
Mouse_Paxinos_1.0_To_Mouse_WHS_0.9_v1.0. Further details are in the section on
transformations.
The INCF-DAI SRS registry includes the following tables:

SRS (spatial reference system): contains key attributes of SRS, in particular
relationship between X, Y and Z coordinate axes and orientations in the brain
described in the Orientation table, and a pointer to a reference implementation of
the space. Fields: SRSCode, SRSName, SRSDescription, SRSVersion, SRSAuthor,
SRSDateSubmitted, Origin of the coordinate system, NeuroPlusX, NeuroMinusX (and
the same for Y and Z), RegionOfValidity (some SRSes can be defined only locally to
an anatomic structure or a group of structures), RegionURI (URN pointing to
definition of the area of validity), extents of coordinates in each direction
(DimensionMinX, DimensionMaxX - and the same for Y and Z), Units, SourceURI of
15
the reference implementation, SourceDescriptionURI, SourceFileFormat, Abstract,
DerivedFrom (in case the SRS is derived from another SRS), DerivedMethod

Structure: describes anatomic features segmented in 2D or 3D, and contains the
following fields: StructureCode, StructureName, StructureVersion, StructureType,
SRSCode (i.e. to which space in SRStable this Structure belongs),
StructureVocabulary (vocabulary in which this feature is named), StructureAuthor
(who named and delineated the structure), pointer to spatial objects/SVA/VRML files,
Date of submission, Version, Certainty level (or pointer to certainty description).

Fiducial (or Landmarks): fiducials are points or higher-dimensional features
generally derived from anatomic Structures; they can be used to relate one SRS to
another. Relevant attributes are FiducialCode, FiducialName, FiducialType
(instrument artifact, or derived from a feature), DerivedFrom (or some provenance
description, derivation function (either explicitly encoded or pointing to a function
description), certainty_level (as propagated from location accuracy of anatomic
structures from which the fiducial is derived), AuthorCode, spatial data object
describing the fiducial (point, line, polygon, volume, etc.) .

Orientation: provides interpretation of neuroscience coordinate axes. These axes
may be simple (e.g. describing straight dorsal-ventral orientations), or complex - for
development brain (where the posterior and anterior orientations may be described
as curves rather than straight lines) or tilted volumes/images. The attributes are:
OrientationCode, OrientationName, OrientationDescription, Author (submitter), and
DateSubmitted. The Orientation name may contain standard terms such as
"anterior", "posterior", "left", "right", "dorsal", "ventral (in that case the “Author” is
“standard”), or some functions of those.

Slice: description of individual slices that form up the atlas; this information is
necessary when the atlas space is defined through a collection of 2D plates with
segmented structures rather than by a 3D volume. The attributes include: SliceCode
(typically, the slice # in the atlas), Orientation (coronal, sagittal, horizontal),
SRSCode, ConstantValue (e.g. distance to bregma, distance to midline, depending on
the Orientation of the plate), Xorientation (direction of the horizontal axis on the
plate, with respect to neuroscience orientations), Yorientation (the same for the
vertical axis), Description.
Additional tables in the registry may include: rules_for_fiducials (specifying that, for
example, a particular fiducial/landmark is located at the intersection of AC line and midline,
or at some spatial relationship to one or more segmented anatomic features), authors
(those responsible for defining SRS or their components), vocabularies. A sample relational
schema reflecting the minimal set of tables is shown in Figure 6. Information from this
registry will be available via ListSRSs and DescribeSRS, and potentially via other requests
against additional tables. SRSType element, the key information object returned by these
two requests, is shown in Figure 7.
16
Figure 5. Spatial Reference Systems
17
Figure 6. Sample relational representation of SRS tables
18
Figure 7. Schema of the SRSType element
6.4.
List of atlas services at hub level
We consider the following types of service requests within Atlas Services:
A. Core atlas service requests, expected to be implemented by all or most atlas hubs:





Capability descriptions: GetCapabilities and DescribeProcess. These requests are
mandatory components of Web Processing Service (WPS), which is used as the
interface model for atlas services; they shall be implemented for each atlas service .
Descriptions of available spatial reference systems: ListSRSs, DescribeSRS. These
functions are expected to be supported by an atlas service if the hub hosts one or
more coordinate systems.
Spatial transformations: ListTransformations, DescribeTransformation,
TransformPOI. These methods should be supported by those hubs that publish a
local coordinate system; others may use centrally stored transformations without
declaring their own.
Structure Lookup: GetStructureNamesByPOI. This method should support
structure lookup for canonical set of segmentations of each atlas (we expect that an
atlas comes with a single set of “authoritative” segmentations. If there are multiple
versions of the segmentations by the maintainer of the canonical space, the latest
version is returned (unless an earlier version is requested explicitly).
Two generic POI-based requests: GetObjectsByPOI and GetPropertyByPOI: the
first one returns a list of discrete objects in the vicinity of the point of interest (e.g.
cells, annotations); the second one assumes a continuous field and returns a value
at the specified location, or some aggregate measure computed for this location (e.g.
based on voxel neighborhood of the POI.)
19
B. Atlas service requests that are not mandatory but are likely to be implemented at
one or several hubs. Strictly speaking these methods are outside the scope of atlas
services. However, we include descriptions of several common requests in this
document. The intent is to demonstrate how reliance on WPS standard allows
developers to design, develop, register and consume atlas services even if they
follow different information models. We believe that establishing interoperability at
the level of service interfaces would be the necessary first step towards broader atlas
interoperability, while agreeing on a common information model may take
significantly longer effort. In addition, in our opinion, formulating atlas service
requests in terms that generally follow naming conventions in neuroscience, would
encourage their adoption despite information model imperfections – which remains
an active area of research.




POI-based requests, such as Get2DImagesByPOI; GetCorrelationMapByPOI;
GetGenesByPOI. To the extent possible, method signatures for such requests have
been made uniform across different hubs.
Other methods, including those based on structure names, e.g.
GetGenesByStructureName. While these requests do not refer to atlas coordinate
spaces, or WHS, directly, they may be the only way to connect to atlases for which
spatial transformations have not been or cannot be developed, but structures have
been identified and these names have been shown to correspond to known standard
structure delineations.. While such methods are outside the scope of atlas aervices
they may be needed to support common scenarios where POI-based requests are not
available.
Basic information about the content of atlas services, harvested by INCF central
server: ListGenes, ListStructures, etc.
Registration, monitoring and subscription/notification services. These are undefined,
at present, but include methods to register a hub with the central server, a method
to list all hubs (at the central server), and an “I’m alive” service monitor to alert the
central server of a hubs status, and workload.
C. Atlas services needed for registering data to a common spatial and semantic
framework. These services are not covered by this specification, because they are
internal to each hub’s data management workflows. However, we believe that it is
important to provide an easy path for hub developers to integrate their image and
segmentation data with INCF-DAI: thus, a common specification of registration
services would be useful since these are the most essential components of a hub,
and could find wide cross-hub application. As sketched below, the registration service
requests are intended to support: a) the ability to incorporate various registration
algorithms, and b) integration of registration functions with INCF-DAI, so that the
registration leads to automatic generation of SRS descriptions (DescribeSRS) and
coordinate transformation (TransformPOI) requests.
A spatial registration workflow built on such principles, would include: a) establishing
correspondence between user images or volumes, and the canonical reference space
(e.g. WHS, but also any other SRS defined in INCF-DAI) – using any available
algorithm and user environment, manual or automatic (e.g. based on manually
established fiducials, or automatic entropy-based alignment, etc.). Ideally, the
different algorithms would be available via services, so that users could select the
most appropriate technique; b) the alignment algorithm generates a description of
image spatial reference system, which may be added to the INCF SRS registry if the
spatial reference system is likely to be used for multiple datasets (and become
available via DescribeSRS requests); c) transformations computed in the first step
20
are used to instantiate a coordinate lookup, and a corresponding TransformPOI
request; d) the computed transformations may be also used to generate a warped
version of the initial image or volume, so that it can be aligned with WHS or another
target reference space.
D.
In the future, another group of methods, which supports exchanging location information
between atlases as spatial placement rules (as described in the INCF Atlasing task force
report), will be developed.
6.5.
List of atlas services as INCF Central
INCF Central’s functionality includes registration of atlas services from individual hubs,
harvesting their metadata to support centralized querying across hubs; data discovery and
query orchestration functions. For better performance, INCF Central may cache selected
framework datasets and operations (in particular, spatial operations and transformations);
perform load balancing and service monitoring, and support subscription/notification about
atlas service updates. The following tentative list of services is proposed (maintaining
compatibility with INCF Hubs API as maximally possible):
1. INCF Central’s capability descriptions: GetCapabilities and DescribeProcess,
which will provide INCF Central’s metadata, and reference two types of Execute
requests:
2. Execute requests that spawn one or more identical standard requests to registered
hub services, and union the results. The output schemas of these requests
(GetStructureNamesByPOI, Get2DImagesByPOI, other POI-based requests, as
well as “List” requests such as ListSRSs and ListTransformations) are identical to
respective schemas used by atlas services at individual hubs.
3. Execute requests that rely on harvested information from other hubs in order to
proceed. An example currently implemented at INCF Central is
4.
5. GetTransformationChain, which computes a chain of coordinate transformations
that may involve transformations hosted by multiple hubs
6.
21
7. Service signatures and WaxML schemas
7.1.
Atlas services as WPS profile: the basics
The INCF atlas services hosted by an Atlas hub represent a collection of HTTP GET
requests modeled after the WPS interface specification. Web Processing Service (WPS,
http://www.opengeospatial.org/standards/wps) provides a standard framework for invoking
and chaining web requests, specifically oriented to requests that can be described as spatial
data processing functions. It is selected here as a generic way of describing web
functionality that supports several bindings, allows service chaining with BPEL4WS, and has
several client and catalog implementations.
The general format of the request is:
http://<server-path>/HostServiceController?Service=WPS&version=1.0.0
&request=<WPS_Request>
&Identifier=<identifier_name>
&ResponseForm={format}
&DataInputs={Encoded Inputs}
In the discussion of method signatures below we refer to a base WPS request which takes
the following form:
http://<server-path>/HostServiceController?service=WPS
In order to discover the available processing services at a node, a client would invoke the
service and request a capabilities document:
{BaseServiceUrl}&request=GetCapabilities
This request returns general service capabilities including the version of the service and a
list of function (process) identifiers. A more complete description of functionality
implemented in a WPS service is provided by a DescribeProcess call, which takes the service
version and a method identifier (optionally) as inputs:
{BaseServiceUrl}&version=1.0.0&request=DescribeProcess&Identifier={ProcessT
oDescribe}
Examples of WPS requests in the current implementation are:
http://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&request=GetCapabilitieshttp://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=DescribeProcess&Ident
ifier=Get2DImagesByPOIhttp://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=Execute&Identifier=Tr
ansformPOI&DataInputs=transformationCode=Mouse_ABAvoxel_1.0_To_Mouse_AGEA_1.0_
22
v1.0;x=1;y=112;z=162Note that this syntax recognizes that atlas services (invoked as
“atlas?”) are hosted within a hub (“aba”, in this case).
WPS specification support several additional components of the calling requests. For atlas
services, most important of them are:

&lineage=true: includes lineage information in the response (Data Inputs), which
may be useful if responses are saved on disk for future use. For example:
http://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=Execute&Identifier=Tr
ansformPOI&lineage=true&DataInputs=transformationCode=Mouse_ABAvoxel_1.0_To_Mou
se_AGEA_1.0_v1.0;x=1;y=112;z=162

&storeExecuteResponse=true: stores the result of the request as a web-accessible
resource, which may be useful if responses are large or need to be processed on the
server without being returned to the client; instead, a URL of the stored response is
returned:
http://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=Execute&Identifier=Tr
ansformPOI&storeExecuteResponse=true&DataInputs=transformationCode=Mouse_ABAvox
el_1.0_To_Mouse_AGEA_1.0_v1.0;x=1;y=112;z=162

&status=true: for long-running processes which create a web-accessible resource,
requests a status update:
http://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=Execute&Identifier=Tr
ansformPOI&storeExecuteResponse=true&status=true&DataInputs=transformationCode=M
ouse_ABAvoxel_1.0_To_Mouse_AGEA_1.0_v1.0;x=1;y=112;z=162

&RawDataOutput=[TransformPOIOutput]: used when a short response is requested,
only returning process output (when there is only one output), e.g.
http://incf-devlocal.crbs.ucsd.edu/aba/atlas?service=WPS&version=1.0.0&request=Execute&Identifier=Tr
ansformPOI&RawDataOutput=TransformPOIOutput&DataInputs=transformationCode=Mous
e_ABAvoxel_1.0_To_Mouse_AGEA_1.0_v1.0;x=1;y=112;z=162
The WPS specification document provides detailed descriptions of the rules for specifying
these and other inputs.
Draft service output specifications are presented below. They are expected to follow
Waxholm Markup Language (WaxML), a working name for an output schema that we
are designing to provide a uniform information model for the elements that form an atlas:
coordinate reference systems, transformations, POIs, and objects returned on POI-based
requests. Where other standards are available (e.g. for gene expression data, for
23
description of feature geometry, for coordinate information) the respective elements will be
presented in their own namespaces.
7.2.
Atlas services and WaxML conventions
Where feasible, objects and properties are described by a triad: propertyCode,
propertyName and propertyDescription. The “code” is expected to be unique within a hub.
Names and Descriptions don’t need to be unique. For example, a propertyCode may be
“HIP” (or some numeric code), propertyName may be “Hippocampus”, and
propertyDescription may be “Hippocampal area”. Either propertyCode or propertyName may
be used as a Label for display purposes. Similarly, spatial reference systems may have an
srsCode (e.g. "INCF:0001"),srsName (e.g. "Mouse_WHS_0.9") and srsDescription (e.g. "the
original version of the Waxholm reference dataset".) Ideally, property names shall be
accompanied by a persistent URI pointing the property definition in a community vocabulary
system.
The naming standard for atlas service methods we generally follow is:



List: list objects without a query. These requests should support paging capabilities,
and enable harvesting.
Describe: returns a single object using a persistent identifier
Get: returns one or more objects using a submitted query, or a pointer to a service
Objects and properties can be specified in a globally unique way by prepending their codes
with a respective hub and coordinate space or vocabulary name, in the form:
hub:{srs|vocabulary}:code,
e.g. ABA:Mouse_ABAvoxel_1.0:HIP (which stands for Hippocampus labeled “HIP” in the
vocabulary associated with the current ABAvoxel volume and served from the ABA hub).
Depending on the context, the hub prefix can be omitted. In many cases, however, it may
be better to use a descriptive "name" in place of a cryptic "code".
The general agreement is that XML elements (and UML classes, interfaces, associations,
packages, states, use cases, actors) are specified in UpperCamelCase, while attributes (as
well as UML attributes, roles, operations, stereotypes, instances, events, actions) follow the
lowerCamelCase convention. This is generally consistent with business practices (e.g.
http://xml.coverpages.org/ebXML-TechArchv104.pdf)
While the above capitalization rules shall be generally followed, parsers should be caseinsensitive. In the HTTP GET strings, the same capitalization conventions should apply. In
addition, three high-level keywords (service, request and version) are lower-case, while
other components of URLs (e.g. DataInputs, Indentifier) are in UpperCamelCase.
24
Services should support authentication/authorization (where required). In case of atlas
data, authorization would be at the level of spatial registry records.
Services should provide a mechanism for retrieving the best quality record: e.g. multiple
versions of the same image may be registered in a spatial registry, but based on
preferences established by a hub manager, only the most recent version may be available
by default (other versions would require authorization)
7.3.
GetCapabilities
This is a mandatory method to be implemented by each atlas service. The request is:
{BaseService}&request=GetCapabilities
A sample method call (against the atlas service hosted by the ABA hub):
http://incf-dev-local.crbs.ucsd.edu/aba/atlas?service=WPS&request=GetCapabilities
The output includes service metadata (title, abstract, type, version) – which are common for
all OGC service specifications (and hence are in the ows – ‘OGC Web Service’ – namespace).
It also includes a list of functions (processes) that can be called via the WPS Execute
directive (the wps namespace is used here). The functions are grouped within the
wps:ProcessOfferings element; each has an identifier, title, abstract and version.
25
A sample output is (fragment):
<?xml version="1.0" encoding="UTF-8"?>
<wps:Capabilities xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
service="WPS" version="1.0.0" xml:lang="en" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd">
<ows:ServiceIdentification xmlns:ows="http://www.opengis.net/ows">
<ows:Title>ABA Atlas Services</ows:Title>
<ows:Abstract> . . .
</ows:Abstract>
<ows:ServiceType>WPS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>INCF Digital Atlasing Infrastructure Task Force</ows:ProviderName>
<ows:ProviderSite xlink:href="http://ucsd.edu"></ows:ProviderSite>
<ows:ServiceContact>
<ows:IndividualName>Ilya Zaslavsky</ows:IndividualName>
. . .
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas?"></ows:Get>
<ows:Post xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas"></ows:Post>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeProcess">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas?"></ows:Get>
<ows:Post xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas"></ows:Post>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="Execute">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas?"></ows:Get>
<ows:Post xlink:href="http://incf-dev-local.crbs.ucsd.edu/aba/atlas"></ows:Post>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<wps:ProcessOfferings>
<wps:Process wps:processVersion="1.0.0">
<ows:Identifier>GetStructureNamesByPOI</ows:Identifier>
<ows:Title>Get Structure Names by POI</ows:Title>
<ows:Abstract>
The response from this request contains a list of anatomic structure codes and their
descriptions.
</ows:Abstract>
</wps:Process>
</wps:ProcessOfferings>
<wps:Languages>
<wps:Default>
<ows:Language>en</ows:Language>
</wps:Default>
<wps:Supported>
<ows:Language>en</ows:Language>
</wps:Supported>
</wps:Languages>
</wps:Capabilities>
26
Figure 8. XML schema diagram of the Capabilities response
7.4.
DescribeProcess
This method describes inputs and outputs of functions (processes) implemented within an
atlasing service at a hub. The base WPS request is
{BaseService}&version=1.0.0&request=DescribeProcess
Example method call is:
http://incf-dev.crbs.ucsd.edu:8080/atlas-aba?service=WPS&version=1.0.0&request=DescribeProcess
The output of this request provides details of either all processes within the service, or a
single process (specified by identifier). Each process (“ProcessDescription” element) is
characterized by an identifier, title, abstract, version, and process inputs and outputs. Each
process input, in turn, has an identifier, title and abstract, as well as a list of allowed values
if applicable. ProcessOutput includes a reference to the type of output (both default and
supported), and possibly a reference to the schema that the output should comply with.
Process metadata are being further discussed within OGC, and OGC WPS 2.0 (which is now
nearing completion (see http://www.opengeospatial.org/projects/groups/wps2.0swg) may
have additional attributes. In particular, inclusion of semantic annotations in WPS and other
OGC standards would be a useful extension (e.g.
http://portal.opengeospatial.org/files/index.php?artifact_id=34916).
27
A sample example output is (fragment):
<?xml version="1.0" encoding="UTF-8"?>
<wps:ProcessDescriptions xmlns:wps="http://www.opengis.net/wps/1.0.0"
xmlns:ows="http://www.opengis.net/ows/1.1" xml:lang="en-US" version="1.0.0"
service="WPS">
<ProcessDescription wps:processVersion="1.0.0">
<ows:Identifier>DescribeSRS</ows:Identifier>
<ows:Title>Describe SRS</ows:Title>
<ows:Abstract/>
<DataInputs>
<Input>
<ows:Identifier>srsName</ows:Identifier>
<ows:Title>Atlas SRS Name</ows:Title>
<ows:Abstract>The Atlas SRS (Spatial Reference System) name.</ows:Abstract>
<LiteralData>
<ows:AllowedValues>
<ows:Value>Mouse_ABAreference_1.0</ows:Value>
<ows:Value>Mouse_ABAvoxel_1.0</ows:Value>
<ows:Value>Mouse_AGEA_1.0</ows:Value>
<ows:Value>Mouse_EMAP-T26_1.0</ows:Value>
<ows:Value>Mouse_Paxinos_1.0</ows:Value>
<ows:Value>Mouse_WHS_0.9</ows:Value>
<ows:Value>Mouse_WHS_1.0</ows:Value>
</ows:AllowedValues>
</LiteralData>
</Input>
</DataInputs>
<ProcessOutputs>
<Output>
<ows:Identifier>ImageURL</ows:Identifier>
<ows:Title>2D Image at POI result</ows:Title>
<ows:Abstract>2D Image at POI result</ows:Abstract>
<ComplexOutput>
<Default>
<Format>
<MimeType>application/vnd.incf.waxml</MimeType>
<Encoding>UTF-8</Encoding>
<Schema>http://www.incf.org/atlas/WaxML/schema/DescribeSRSResponse.xsd</Schema>
</Format>
</Default>
<Supported>
<Format>
<MimeType>application/vnd.incf.waxml</MimeType>
<Encoding>UTF-8</Encoding>
<Schema>http://www.incf.org/atlas/WaxML/schema/DescribeSRSResponse.xsd</Schema>
</Format>
</Supported>
</ComplexOutput>
</Output>
</ProcessOutputs>
</ProcessDescription>
...
</wps:ProcessDescriptions>
28
Figure 9. XML schema diagram of ProcessDescription
7.5.
Execute ListSRSs
The WPS Execute operation processes the requests and delivers an XML document to the
client (by default: when process execution has been completed), following a schema
generally depicted in Figure 11. ListSRSs is the first of a series of processes invoked via the
WPS Execute mechanism.
Figure 10. XML schema diagram of the Execute response
29
The ListSRS process returns a list of coordinate reference systems with their metadata as
defined in the WaxML schema and discussed in section 6.3. The request shall be
implemented at both atlas hubs and at the INCF central server. Atlas hubs don’t need to
maintain coordinate space definitions that are already registered at the INCF Central server
– but they shall maintain definitions of coordinate spaces that are unique for this hub.
The basic request, in WPS syntax, is:
{BaseService}&version=1.0.0&request=Execute&Identifier=ListSRSs
Example request:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=ListSRSs
The ListSRSResponse structure returned on this request, includes <QueryInfo>, <SRSList>
and <Orientations> as the main components.
<QueryInfo> is a common component of atlas service responses. Populating it is
encouraged though not required. Using <QueryInfo> allows users to re-examine the source
of information and trace the lineage if needed. Often, a single query URL and a list of inputs
is not sufficient to define a source of returned data completely. In this case, additional
<note> elements with @type=”sourceUrl” are suggested.
Figure 11. XML schema diagram of the QueryInfo component. The
element is expected to be included in all Execute requests
The SRSList element nests <SRS> elements which provide brief SRS descriptions. Each SRS
is characterized by its name, code, basename, version and species; includes description,
author, and dates when created and updated. Other attributes closely follow the fields in the
SRS table as described in 6.3.
The <Orientations> element contains descriptions of orientations in the brain as referenced
within the <Neurodimensions> element of SRS description. It is essential for interpreting
(X,Y,Z) coordinates used in SRS with respect to coordinate axes as they are commonly used
in neuroscience. The orientations may be simple (e.g. posterior, ventral, etc.), or some
functions of the simple orientations.
30
<ListSRSResponse xmlns="http://www.incf.org/WaxML/" xmlns:gml="http://www.opengis.net/gml/3.2">
<QueryInfo>
<QueryUrl>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=ListSRSs</QueryUrl>
</QueryInfo>
<SRSList>
<SRS>
<Name srsCode="INCF:0101" srsBase="ABAreference" srsVersion="1.0" species="Mouse">Mouse_ABAreference_1.0</Name>
<Description>ABAreference</Description>
<Author authorCode="ABA" dateSubmitted="2010-09-14-07:00"/>
<DateCreated>2010-09-14-07:00</DateCreated>
<DateUpdated>2010-09-14-07:00</DateUpdated>
<Origin>bregma</Origin>
<Area structureName="whole brain"/>
<Units uom="mm"/>
<Neurodimensions>
<MinusX maxValue="-6.0">Right</MinusX>
<PlusX maxValue="6.0">Left</PlusX>
<MinusY maxValue="-1.0">Dorsal</MinusY>
<PlusY maxValue="7.0">Ventral</PlusY>
<MinusZ maxValue="-9.0">Posterior</MinusZ>
<PlusZ maxValue="6.0">Anterior</PlusZ>
</Neurodimensions>
<Source format="Slices">http://mouse.brain-map.org/welcome.do</Source>
<DerivedFrom/>
</SRS>
<SRS>
<Name srsCode="INCF:0100" srsBase="ABAvoxel" srsVersion="1.0" species="Mouse">Mouse_ABAvoxel_1.0</Name>
<Description>ABAvoxel</Description>
<Author authorCode="ABA" dateSubmitted="2010-09-14-07:00"/>
<DateCreated>2010-09-14-07:00</DateCreated>
<DateUpdated>2010-09-14-07:00</DateUpdated>
<Origin>front-right-top</Origin>
<Area structureName="whole brain"/>
<Units uom="px"/>
<Neurodimensions>
<MinusX maxValue="0.0">Anterior</MinusX>
<PlusX maxValue="528.0">Posterior</PlusX>
<MinusY maxValue="0.0">Dorsal</MinusY>
<PlusY maxValue="320.0">Ventral</PlusY>
<MinusZ maxValue="0.0">Right</MinusZ>
<PlusZ maxValue="456.0">Left</PlusZ>
</Neurodimensions>
<Source>http://mouse.brain-map.org/welcome.do</Source>
<DerivedFrom/>
</SRS>
</SRSList>
<Orientations>
<Orientation code="Left" gml:id="72" name="Left">
<Description>Left of midline.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Right" gml:id="72" name="Right">
<Description>Right of midline.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Ventral" gml:id="99" name="Ventral">
<Description>Towards the abdomen/front.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Dorsal" gml:id="78" name="Dorsal">
<Description>Toward spinal column/back.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Posterior" gml:id="15" name="Posterior">
<Description>Towards the back.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Anterior" gml:id="62" name="Anterior">
<Description>Towards the front.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
</Orientations>
</ListSRSResponse>
31
Figure 12. XML schema diagram of ListSRS response
7.6.
Execute DescribeSRS
DescribeSRS (srsName) is a companion request that provides detailed information about
a spatial reference system, including SRS metadata (as in the previous request), and
possibly features, fiducials, and other components as specified in the SRS model in Section
6.3. The features, fiducials and slides associated with an SRS may be listed and described
by separate calls, which will be defined once the SRS information model is finalized. A series
of such calls should be sufficient to populate the relational structure describing coordinate
reference systems at the INCF Central.
The basic request, in WPS syntax, is:
{BaseService}&version=1.0.0&request=Execute&Identifier=DescribeSRS&DataIn
puts=srsName={Name}
In the current implementation, the response follows the same schema as in the
ListSRSResponse. In the next implementation, the schema will be extended to include
fiducials because they are important for computing coordinate transformations. A fragment
of the output which includes the fiducials is shown below.
Note that the fiducial encoding in the sample output is a point, and uses a GML (Geography
Markup Language) construct to describe a point in three dimensions. For higher-dimensional
objects, other GML constructs can be used: gml:LineString, gml:Polygon, etc. GML is a
standard for describing geospatial features (http://www.opengeospatial.org/standards/gml).
Figure 13. XML schema diagram of DescribeSRS response
32
<SRS>
<Name srsCode="INCF:0101" srsBase="ABAreference" srsVersion="1.0"
species="Mouse">Mouse_ABAreference_1.0</Name>
<Description>ABAreference</Description>
<Author authorCode="ABA" dateSubmitted="2010-09-14-07:00"/>
<DateCreated>2010-09-14-07:00</DateCreated>
<DateUpdated>2010-09-14-07:00</DateUpdated>
<Origin>bregma</Origin>
<Area structureName="whole brain"/>
<Units uom="mm"/>
<Neurodimensions>
<MinusX maxValue="-6.0">Right</MinusX>
<PlusX maxValue="6.0">Left</PlusX>
<MinusY maxValue="-1.0">Dorsal</MinusY>
<PlusY maxValue="7.0">Ventral</PlusY>
<MinusZ maxValue="-9.0">Posterior</MinusZ>
<PlusZ maxValue="6.0">Anterior</PlusZ>
</Neurodimensions>
<Source format="Slices">http://mouse.brain-map.org/welcome.do</Source>
<DerivedFrom/>
</SRS>
<Orientations>
<Orientation code="Left" gml:id="72" name="Left">
<Description>Left of midline.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Right" gml:id="72" name="Right">
<Description>Right of midline.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Ventral" gml:id="99" name="Ventral">
<Description>Towards the abdomen/front.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Dorsal" gml:id="78" name="Dorsal">
<Description>Toward spinal column/back.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Posterior" gml:id="15" name="Posterior">
<Description>Towards the back.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
<Orientation code="Anterior" gml:id="62" name="Anterior">
<Description>Towards the front.</Description>
<Author dateSubmitted="2010-09-14-07:00" authorCode="standard">Standard</Author>
</Orientation>
</Orientations>
<Fiducials>
<Fiducial>
<Name fiducialCode="XXX" fiducialType="anatomic" >Fiducial Name 1</Name>
<Description>Intersection of AC and ML</Description>
<Author authorCode="ABA" dateSubmitted="2010-09-14-07:00"/>
<Certainty_level/>
<DerivedFrom/>
<gml:Point gml:id="35" srsName="Mouse_ABAReference_1.0">
<gml:pos>1.0 1.0 1.0</gml:pos>
</gml:Point>
</Fiducial>
<Fiducial>
</Fiducial>
</Fiducials>
33
7.7.
Execute ListTransformations
This process lists coordinate transformations available at a hub or registered at INCF
Central.
The base request is:
{BaseService}&version=1.0.0&request=Execute&Identifier=ListTransformations&
DataInputs=inputSrsName={srsName};outputSrsName={srsName};filter={string
}
Example request:
Example:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=ListTransformations&DataIn
puts=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_ABAreference_1.0;filter=
Cerebellum
The request takes inputSRSName, outputSRSName, and filter as inputs. All of these inputs
are optional. The filter parameter may be used to restrict listing of transformations to those
implemented for the area of interest (we assume that eventually more accurate coordinate
transformations will be implemented for smaller sections of the brain).
The output of this process lists coordinate transformations. For each of them, it provides the
transformation code, the hub where the transformation is implemented, and the
characteristics of the transformation (inputSRS, outputSRS, version, filter, accuracy). It also
includes a completely formed TransformPOI request (with placeholders for X,Y,Z and filter
inputs).
If inputSRS, outputSRS and filter are not specified, the request returns all coordinate
transformations implemented at a hub or registered at INCF Central.
A TransformationCode is a concatenation in this form:
<inputSRSName>_To_<outputSRSName>_Version
Figure 14. XML schema diagram of ListTransformations response
A sample output:
34
<ListTransformationsResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<TimeCreated>2010-09-14T00:53:39.610-07:00</TimeCreated>
<QueryUrl name="ListTransformations">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=ListTransformations
&DataInputs=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_ABAreference_1.0;filt
er=Cerebellum</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="inputSrsName">
<Value>Mouse_Paxinos_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="outputSrsName">
<Value>Mouse_ABAreference_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>Cerebellum</Value>
</Input>
</Criteria>
</QueryInfo>
<TransformationList>
<CoordinateTransformation code="Mouse_Paxinos_1.0_To_Mouse_WHS_0.9_v1.0" hub="UCSD"
inputSrsName="Mouse_Paxinos_1.0" outputSrsName="Mouse_WHS_0.9" filter=”” accuracy=””
version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasucsd?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&D
ataInputs=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_WHS_0.9;x=;y=;z=;filter=</C
oordinateTransformation>
<CoordinateTransformation code="Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0" hub="ABA"
inputSrsName="Mouse_WHS_0.9" outputSrsName="Mouse_AGEA_1.0" filter=”” accuracy=””
version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_WHS_0.9;outputSrsName=Mouse_AGEA_1.0;x=;y=;z=;filter=</Coord
inateTransformation>
<CoordinateTransformation code="Mouse_AGEA_1.0_To_Mouse_ABAvoxel_1.0_v1.0" hub="ABA"
inputSrsName="Mouse_AGEA_1.0" outputSrsName="Mouse_ABAvoxel_1.0" filter=”” accuracy=””
version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_AGEA_1.0;outputSrsName=Mouse_ABAvoxel_1.0;x=;y=;z=;filter=</
CoordinateTransformation>
<CoordinateTransformation code="Mouse_ABAvoxel_1.0_To_Mouse_ABAreference_1.0_v1.0"
hub="ABA" inputSrsName="Mouse_ABAvoxel_1.0" outputSrsName="Mouse_ABAreference_1.0"
filter=”” accuracy=”” version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_ABAvoxel_1.0;outputSrsName=Mouse_ABAreference_1.0;x=;y=;z=;f
ilter=</CoordinateTransformation>
</TransformationList>
</ListTransformationsResponse>
7.8.
Execute DescribeTransformation
Not specified in the current version. Discussion of the information model for a spatial
transformation is ongoing.
35
Encoding of Transformation will go beyond the minimal metadata returned by the
ListTransformations method, and may contain: 1) information about the transformation
algorithm, 2) information about the area (domain) for which the transformation is valid, 3)
description of transformation type: linear, polynomial, etc., 4) fiducials on which the
transformation was based, 5) tools used to derive the transformation, 6) pointer to inverse
transformation, 7) author of the transformation, and possibly a citation, 8) distortion volume, 9)
version of the transformation, and any dependencies/lineage, 10) piecewise mesh complexity,
11) piecewise mesh: list of nodes and estimated errors, 12) resolution, 13) comments
7.9.
Execute GetTransformationChain
The GetTransformationChain (inputSrsName, outputSrsName, filter) request has
been implemented to derive a transformation chain between any two known
transformations. For example, if the ABA hub implements
Mouse_AGEA_1.0_To_Mouse_WHS_0.9 and the UCSD hub implements
Mouse_WHS_0.9_To_Mouse_Paxinos_1.0, then a request for a transformation chain
between Mouse_AGEA_1.0 and Mouse_Paxinos_1.0 would return these two transformations,
in this order, taking advantage of INCF-DAI requirement that each hub with a unique
coordinate system at least supports spatial transformations between a local hub SRS and
WHS. The filter parameter may be used to specify the area in the brain for which the
transformation chain will be computed. As mentioned in 7.7, we expect that local
transformations will be developed in addition to whole-brain transformations, providing
better transformation accuracy for certain parts of the brain (e.g. hippocampus). Restricting
chains of coordinate transformations to such conversions, if available, would produce better
transformation accuracy.
The base request is:
{BaseService}&version=1.0.0&request=Execute&Identifier=GetTransformationCh
ain&DataInputs=inputSrsName={srsName};outputSrsName={srsName};filter={s
tring}
Example request:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetTransformationChain&Da
taInputs=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_ABAreference_1.0;filt
er=Cerebellum
The response is similar to the TransformationList response, except in this case each
transformation has an additional attribute “order”, which refers to the execution sequence of
transformations in the chain.
A sample response is:
36
<CoordinateTransformationChainResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<TimeCreated>2010-09-14T00:56:06.042-07:00</TimeCreated>
<QueryUrl name="GetTransformationChain">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetTransformationCh
ain&DataInputs=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_ABAreference_1.0;f
ilter=Cerebellum</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="inputSrsName">
<Value>Mouse_Paxinos_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="outputSrsName">
<Value>Mouse_ABAreference_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>Cerebellum</Value>
</Input>
</Criteria>
</QueryInfo>
<CoordinateTransformationChain>
<CoordinateTransformation order="1" code="Mouse_Paxinos_1.0_To_Mouse_WHS_0.9_v1.0"
hub="UCSD" inputSrsName="Mouse_Paxinos_1.0" outputSrsName="Mouse_WHS_0.9" filter=””
accuracy=”” version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasucsd?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&D
ataInputs=inputSrsName=Mouse_Paxinos_1.0;outputSrsName=Mouse_WHS_0.9;x=;y=;z=;filter=</C
oordinateTransformation>
<CoordinateTransformation order="2" code="Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0"
hub="ABA" inputSrsName="Mouse_WHS_0.9" outputSrsName="Mouse_AGEA_1.0" filter=””
accuracy=”” version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_WHS_0.9;outputSrsName=Mouse_AGEA_1.0;x=;y=;z=;filter=</Coord
inateTransformation>
<CoordinateTransformation order="3" code="Mouse_AGEA_1.0_To_Mouse_ABAvoxel_1.0_v1.0"
hub="ABA" inputSrsName="Mouse_AGEA_1.0" outputSrsName="Mouse_ABAvoxel_1.0" filter=””
accuracy=”” version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_AGEA_1.0;outputSrsName=Mouse_ABAvoxel_1.0;x=;y=;z=;filter=</
CoordinateTransformation>
<CoordinateTransformation order="4"
code="Mouse_ABAvoxel_1.0_To_Mouse_ABAreference_1.0_v1.0" hub="ABA"
inputSrsName="Mouse_ABAvoxel_1.0" outputSrsName="Mouse_ABAreference_1.0" filter=””
accuracy=”” version=”1.0”>http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=inputSrsName=Mouse_ABAvoxel_1.0;outputSrsName=Mouse_ABAreference_1.0;x=;y=;z=;f
ilter=</CoordinateTransformation>
</CoordinateTransformationChain>
</CoordinateTransformationChainResponse>
It is expected that this call will be implemented against the table of registered coordinate
transformations at the INCF Central, to support chaining coordinate translation services
hosted by several different hubs. Respective GetTransformationChain methods hosted by
37
each hub may return information about single transformations, or a sequence of
transformations within a family of SRSs hosted by a hub (as in case of the ABA service,
where Mouse_ABAreference, Mouse_ABAvoxel and Mouse_AGEA are supported).
Figure 15. XML schema diagram of CoordinateTransformationChainResponse
7.10. Execute TransformPOI
This is a mandatory method to be exposed by a hub if the hub registers data to a spatial
reference system other than WHS.
It is expected that each hub implements translations between at least one locally-unique
coordinate system, and WHS. For example, the ABA hub currently implements direct and
reverse translations between WHS and AGEA, at the same time supporting translations
between AGEA and ABAvoxel space, and between ABAvoxel and ABAreference. The method
inputs include inputSrsName, outputSrsName, POI coordinates in the inputSrsName space,
and the output type (ResponseForm).
The method signatures are:
WaxMl
{BaseService}&version=1.0.0&request=Execute&Identifier=TransformPOI&DataI
nputs=transformationCode=Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0;x=280.0
;y=112.0&z=162.0
Since this process is expected to be called in multiple application contexts, we provide HTML
and Text requests:
Html:
{BaseService}&version=1.0.0&request=Execute&Identifier=
TransformPOI&DataInputs=transformationCode=Mouse_WHS_0.9_To_Mouse_AG
EA_1.0_v1.0;x=280.0;y=112.0&z=162.0&ResponseForm=text/html
Text:
38
{BaseService}&version=1.0.0&request=Execute&Identifier=
TransformPOI&DataInputs=transformationCode=Mouse_WHS_0.9_To_Mouse_AG
EA_1.0_v1.0;x=280.0;y=112.0&z=162.0&ResponseForm=text/plain
Example method call is:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&DataInputs=t
ransformationCode=Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0;x=1;y=112;z=162
The POI output follows GML simple features conventions, as shown in the example:
Figure 16. XML schema diagrams of TransformationResponse and POI
39
<TransformationResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml/3.2">
<QueryInfo>
<TimeCreated>2010-09-14T01:00:09.520-07:00</TimeCreated>
<QueryUrl name="TransformPOI">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=TransformPOI&Da
taInputs=transformationCode=Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0;x=1;y=112;z=162
</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="transformationCode">
<Value>Mouse_WHS_0.9_To_Mouse_AGEA_1.0_v1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="x">
<Value>1</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="y">
<Value>112</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="z">
<Value>162</Value>
</Input>
</Criteria>
</QueryInfo>
<POI>
<gml:Point gml:id="35" srsName="Mouse_AGEA_1.0">
<gml:pos>25 2800 4050</gml:pos>
</gml:Point>
</POI>
</TransformationResponse>
An example of “text/plain” output may be:
POI:
srsName: Mouse_ABAvoxel_1.0
Point: x y z
Note that output with ResponseType other than WaxML doesn’t need to include
<QueryInfo>.
7.11. Execute GetStructureNamesByPOI
GetStructureNamesByPOI(POI, outputVocabulary, filter) returns name(s) of
segmented anatomic structures at the point of interest, in a specified vocabulary.
A sample request is:
40
{BaseService}&version=1.0.0&request=Execute&identifier=GetStructureNamesBy
POI&DataInputs=srsName=Mouse_ABAVoxel_1.0;x=295.0;y=113.0;z=146.0;voca
bulary=Mouse_ABAVoxel;filter=structureset:Fine
Or, generating HTML output:
{BaseService}&version=1.0.0&request=Execute&identifier=GetStructureNamesBy
POI&DataInputs=srsName=Mouse_ABAVoxel_1.0;x=295.0;y=113.0;z=146.0;voca
bulary=Mouse_ABAVoxel_1.0; filter=structureset:Fine&ResponseForm=text/html
Example method call (new implementation as per the specification) is:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetStructureNamesByPOI&D
ataInputs=srsName=Mouse_ABAvoxel_1.0;x=280;y=112;z=162;vocabulary=Mouse_ABAvo
xel_1.0;filter=structureset:Fine
This service is not mandatory, but expected in a majority of atlas cases, where there is a
correspondence between coordinates and structures.
In the current implementation, the call returns a single structure segmented at a given
point (or, for atlases specified through a collection of slices with often unclosed polygons –
by a nearest label). In future implementations, it will be extended to return a list of
structures ranked by relevance, or proximity to the POI (or by some other defined rule).
The inputs of the request are:



POI is defined as (X,Y,Z) in a known spatial reference system (srsName).
The “vocabulary” term will generally be the same as the spatial reference system.
However, we shall allow for multiple segmentations of the same coordinate space
(e.g. there are canonical Paxinos structures, many of them not closed in the original
atlas; in addition there are results of segmenting 3D space built over Paxinos slices;
other segmentations may be developed over 3D volumes registered to the Paxinos
space). It is expected that vocabularies will be managed by PONS.
In each case, the definition of returned structure may be different. For example, ABA
allows return of “anatomic” or “fine” structures. In the Paxinos case, we may return
the closest label or a collection of labels. This information is specified in the “filter”
string input, as it will be unique for each source. The unique allowable values of the
“filter” element should be specified in DescribeProcess output for each process at
each hub service.
The WaxML output includes a collection of <StructureTerms>. In the expanded case,
StructureTerm definition will also include geometric properties of the structure if they are
available.
41
Notice the use of the gml namespace to describe spatial characteristics of the structure
(centroid and bounding envelope). The GML simple features profile is defined at
http://www.ogcnetwork.net/gml-sf.
The meaning of “feature” vs “structure” should be further discussed and defined. Note that
in OGC standards “features” refer to entities that have geometric properties. “Structure”
(“anatomic structure”) may be reserved for constructs that include multiple geometric
features, and other properties – as is consistent with our usage here.
As mentioned above, in this initial version of the method we do not require that a criterion
for selecting a structure is specified. The rule by which particular structure names, and their
sequence, are returned is up to the hub to specify. Moreover, the currently implemented
version of the request returns a single structure rather than a collection of structures (e.g.
the nearest label, or the smallest segmented for the POI). In the future, the hub may
specify the relationship used to return the structure name explicitly, e.g. “the closest label”,
or “finest structure”, or “parent of structure pointed to with xlink:href. For example:
<structureTerm order=”1” relationship=”finest”>. This extension is slated for future
versions, in the expectation that PONS services will be able to pick up the structure name in
a specified vocabulary, and translate it to other names as needed, for example, for gene
search (in the most typical case, it would translate to a parent structure for which gene
searches are available).
Generally, the rule may be specified explicitly using spatial relationships, e.g. returning a
set of structure names that are in spatial relationship R to the POI, where R can be
constructed based on containment or other topological properties, proximity, etc. (“inside”,
“nearest”, “within 100 microns”, etc.). Additional spatial relationships R may be supported if
ROI is passed as part of the request instead of POI. However, few atlases support ROIbased requests at present (with the exception of the SMART atlas), so this may be
implemented after other hubs move in this direction. Until then, a GetStructureNamesByROI
will belong to extended hub requests.
The “url” element points to a 3D representation of a structure, which could be an octree-or
3D R-tree-indexed collection of voxels, a mesh, a segment set, a 2D polygon stack, a 2D
pixel stack, or a 3D server where the structure can be requested. A companion method
Get3DStructureShape (URI, outputtype), or more generally, DescribeStructure, would
return an XML representation of the structure in a specified format and or a pointer to such
description or a respective web service (returning VRML, SVA, X3D, etc.)
42
<StructureTermsResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<TimeCreated>2010-09-14T01:02:19.080-07:00</TimeCreated>
<QueryUrl name="GetStructureNamesByPOI">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetStructureNamesByPOI&a
mp;DataInputs=srsName=Mouse_ABAvoxel_1.0;x=280;y=112;z=162;vocabulary=Mouse_ABAvoxel_1.0;filt
er=structureset:Fine</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="srsName">
<Value>Mouse_ABAvoxel_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="x">
<Value>280</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="y">
<Value>112</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="z">
<Value>162</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="vocabulary">
<Value>Mouse_ABAvoxel_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>structureset:Fine</Value>
</Input>
</Criteria>
</QueryInfo>
<StructureTerms>
<StructureTerm>
<Code codeSpace="Mouse_ABAvoxel_1.0" isDefault="true" structureID="1369">HIP</Code>
<Uri>uri:incf:pons-repository.org:structurenames:Hippocampus</Uri>
<Name>Hippocampus</Name>
<Description>Term - DG derived from ABA hub based on the supplied POI.</Description>
<Feature>
<Centroid>
<gml:Point gml:id="requiredAnyId" srsName="Mouse_ABAvoxel_1.0">
<gml:pos>1 1 1</gml:pos>
</gml:Point>
</Centroid>
<BoundedBy>
<gml:Envelope srsName="Mouse_WHS_1.0">
<gml:lowerCorner axisLabels="right ventral anterior">10 10 10</gml:lowerCorner>
<gml:upperCorner axisLabels="left dorsal posterior">20 20 20</gml:upperCorner>
</gml:Envelope>
</BoundedBy>
<Shape>
<Url srsName="Mouse_ABAvoxel_1.0">URI</Url>
<Format>VRML</Format>
! this will point to web service that returns VRML/SVA/etc
for the structure
</Shape>
</Feature>
</StructureTerm>
</StructureTerms>
</StructureTermsResponse>
43
Note that an atlas hub service may expose more than one set of segmented structures: this
is either handled by the filter string, or by setting up an additional service controller.
In the current implementation, this method (and other POI-based methods) can take POI in
any known coordinate system. Internally, it will perform the necessary coordinate
transformations to request structure names in a spatial reference system understood by the
hub that services this request (in case client uses a different SRS).
Figure 17. XML schema diagrams of StructureTermsResponse and StructureTerm
7.12. Execute Get2DImagesByPOI
Similarly to GetStructureNamesByPOI, this is a method we typically expect to be
implemented by most atlas hubs. Similarly to GetStructureNamesByPOI, hubs are free to
interpret this request to return references to either one or a stack of images, and select a
rule for image selection. The selection may implement search over spatial registry within a
user-defined or predefined tolerance (as in the case of images registered for display in
Smart atlas) or some procedure deriving an appropriate image numerically from POI. We
expect this call to be supported at INCF Central as well, either over the central spatial
registry harvested from individual hubs or as a union of Get2DImagesByPOI requests
against the hubs that support it.
The proposed request is:
44
{BaseService}&version=1.0.0&request=Execute&Identifier=get2DImagesByPOI&
DataInputs=srsName=Mouse_ABAvoxel_1.0;x=263;y=159;z=227;filter=maptype:
coronal;tolerance=1.0
And, in other formats:
Html
{BaseService}&version=1.0.0&request=Execute&Identifier=get2DImagesByPOI&
DataInputs=srsName=Mouse_ABAvoxel_1.0;x=263;y=159;z=227;
filter=maptype:coronal;tolerance=1.0&ResponseForm=text/html
JSON
{BaseService}&version=1.0.0&request=Execute&Identifier=get2DImagesByPOI&
DataInputs=srsName=Mouse_ABAvoxel_1.0;x=263;y=159;z=227;filter=maptype:
coronal;tolerance=1.0&ResponseForm=text/json
Example method call is:
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=Get2DImagesByPOI&DataIn
puts=srsName=Mouse_AGEA_1.0;x=6600;y=4000;z=5600;filter=maptype:coronal;toleran
ce=300
The inputs to this request are:



Specification of POI, including X,Y,Z coordinates and their srsCode
Tolerance: the size of the "query prism" around the POI (user-defined; possibly per
hub, since hubs may expose images at different density). Depending on
implementation, it may be a sphere rather than a prism. It is expressed in the units
of the srsName
Filter: any additional hub-specific string defining a rule for selecting images
The request will return a list of images, each with a URL of the image and its spatial
characteristics, and perhaps a thumbnail. The return should be sufficient for the calling
application to present to the user a menu of images, and then formulate an image retrieval
request such that the retrieved image can be positioned correctly and arrives at appropriate
resolution.
The <ImagePosition> element is optional; here it is inserted to illustrate the WaxML
schema. When this information is present, it allows the client to position retrieved images
correctly with respect to other images or volumes already shown in the client. If the image
position is not available (as in the actual call below), the image would be opened in a
separate browser window or frame and won’t be aligned with other images.
Similarly to GetStructureNamesByPOI, a hub may expose more than one set of images: this
is either handled by the filter string, or by setting up an additional service controller.
45
Figure 18. XML schema diagram of ImagesResponse
46
<ImagesResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<QueryUrl name="Get2DImagesByPOI">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=Get2DImagesByPOI&Dat
aInputs=srsName=Mouse_AGEA_1.0;x=6600;y=4000;z=5600;filter=maptype:coronal</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="srsName">
<Value>Mouse_AGEA_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="x">
<Value>6600</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="y">
<Value>4000</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="y">
<Value>5600</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>maptype:coronal</Value>
</Input>
</Criteria>
</QueryInfo>
<Image2Dcollection>
<Image2D>
<ImageSource format="image/jpeg" name="Plxnb1_253_1899" thumbnail="http://www.brainmap.org/aba/api/image?zoom=0&path=production4/Plxnb1_Baylor_7331/zoomify/primary/null/Plx
nb1_253_null_D.aff&mime=2">http://www.brain-map.org/aba/api/image?zoom=1&path=production4/Plxnb1_Baylor_7331/zoomify/primary/null/Plxnb1_253_null_D.aff&mime
=2</ImageSource>
<ImagePosition>
<ImagePlaneEquation srsName="SRS">1 2 3 4</ImagePlaneEquation>
<ImagePlanePlacement srsName="SRS">1 2 3 4 5 6.0</ImagePlanePlacement>
<ImageBoundingBox srsName="SRS" minX="XXX" minY="XXX" minZ="XXX" maxX="XXX"
maxY="XXX" maxZ="XXX" />
</ImagePosition>
</Image2D>
</Image2Dcollection>
</ImagesResponse>
7.13.
Execute Retrieve2DImage
This request wraps different mechanisms implemented at hubs for image retrieval. This
could include static images, or images served via WMS (Web Map Server) protocol, Zoomify,
or other protocols.
Let’s consider it with WMS as an example. WMS implementation specification
(http://www.opengeospatial.org/standards/wms) describes how one requests capabilities
from a map server (GetCapabilities), and then formulates and requests geopositioned
47
images (GetMap), via HTTP. WMS can be setup as an additional standards-compliant hub
service, and declare its capabilities to INCF Central registry similarly to how a WPS-based
service would do it.
The GetMap requests are outside the scope of WaxML and atlas services, although they may
be present in an atlas hub (e.g. they are present in the UCSD hub). Retrieve2DImage
represents a simplified WPS-based interface of GetMap, tuned to retrieval of neuroscience
images.
A sample request is:
{BaseService}&version=1.0.0&request=Execute&Identifier=Retrieve2DImage&Da
taInputs=sourceType=WMS;sourceURL=...;srsName=Mouse_ABAvoxel_1.0;xmin=
...;xmax=...;ymin=...;ymax=...;filter=...
The data inputs in this request are extracted from the response to a previous
Get2DImagesByPOI request (the URL of the image), and from the extent and SRS of the
currently displayed canvas (xmin,xmax,ymin,ymax, srsName).
Example:
http://incf-dev.crbs.ucsd.edu:8080/atlasucsd?service=WPS&version=1.0.0&request=Execute&Identifier=Retrieve2DImage&DataInputs=sourceTy
pe=WMS;sourceURL=http%3A%2F%2Fimage.wholebraincatalog.org%2Fcgibin%2Fmapserv%3Fmap%3Dcrbsatlas%2Fmapfiles%2Fgensat_3363_modified_sm_transformedms.map%26LAYERS%3Dgensat_penk1_09%26FORMAT%3Dpng24%26VERSION%3D1.1.1%26REQU
EST%3DGetMap;srsName=Mouse_ABAvoxel_1.0;xmin=-1.9298;xmax=8.73376;ymin=9.92461;ymax=1.14128;filter=maptype:Sagittal
The response is a URL of image that can be displayed on the client.
Figure 19. XML schema diagram of Retrieve2DImages response
48
<Retrieve2DImageResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<TimeCreated>2010-09-14T01:09:48.363-07:00</TimeCreated>
<QueryUrl name="GetMap">http://incf-dev.crbs.ucsd.edu:8080/atlasucsd?service=WPS&version=1.0.0&request=Execute&Identifier=Retrieve2DImage&am
p;DataInputs=sourceType=WMS;sourceURL=http%3A%2F%2Fimage.wholebraincatalog.org%2Fcgibin%2Fmapserv%3Fmap%3Dcrbsatlas%2Fmapfiles%2Fgensat_3363_modified_sm_transformedms.map%26LAYERS%3Dgensat_penk1_09%26FORMAT%3Dpng24%26VERSION%3D1.1.1%26REQUEST%3DGetMap;
srsName=Mouse_ABAvoxel_1.0;xmin=-1.9298;xmax=8.73376;ymin=9.92461;ymax=1.14128;filter=maptype:Sagittal</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="sourceType">
<Value>wms-png</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="sourceURL">
<Value>http%3A%2F%2Fimage.wholebraincatalog.org%2Fcgibin%2Fmapserv%3Fmap%3Dcrbsatlas%2Fmapfiles%2Fgensat_3363_modified_sm_transformedms.map%26LAYERS%3Dgensat_penk1_09%26FORMAT%3Dpng24%26VERSION%3D1.1.1%26REQUEST%3DGetMap<
/Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="srsName">
<Value>Mouse_ABAvoxel_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="xmin">
<Value>-1.9298</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="xmax">
<Value>8.73376</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="ymin">
<Value>-9.92461</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="ymax">
<Value>1.14128</Value>
</Input>
</Criteria>
</QueryInfo>
<ImageUrl><![CDATA[http://image.wholebraincatalog.org/cgibin/mapserv?map=crbsatlas/mapfiles/gensat_3363_modified_sm_transformedms.map&LAYERS=gensat_penk1_09&FORMAT=png24&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&WI
DTH=256&HEIGHT=256&BBOX=-1.9298,-9.92461,8.73376,1.14128]]></ImageUrl>
</Retrieve2DImageResponse>
49
7.14. Execute GetCorrelationMapByPOI
This request is implemented at atlas-ABA service controller only.
A sample request is:
{BaseService}&version=1.0.0&request=Execute&Indentifier=getCorrelationMapB
yPOI&DataInputs=srsName=Mouse_ABAVoxel_1.0;x=263;y=159;z=227;filter=ma
ptype:coronal&ResponseForm=application/waxml
Or in text format:
{BaseService}&version=1.0.0&request=Execute&Indentifier=getCorrelationMapB
yPOI&DataInputs=srsName=Mouse_ABAVoxel_1.0;x=263;y=159;z=227;filter=ma
ptype:coronal&ResponseForm=text/plain
http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetCorrelationMapByPOI&D
ataInputs=srsName=Mouse_ABAvoxel_1.0;x=263;y=159;z=227;filter=maptype:coronal
This method merely returns a URL of a web page to be displayed in a browser:
<CorrelationMapResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueryInfo>
<QueryUrl name="GetCorrelationMapByPOI">http://incf-dev.crbs.ucsd.edu:8080/atlasaba?service=WPS&version=1.0.0&request=Execute&Identifier=GetCorrelationMapByPOI&a
mp;DataInputs=srsName=Mouse_ABAvoxel_1.0;x=263;y=159;z=227;filter=maptype:coronal</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="srsName">
<Value>Mouse_ABAvoxel_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="x">
<Value>263</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="y">
<Value>159</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType" name="z">
<Value>227</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>maptype:coronal</Value>
</Input>
</Criteria>
</QueryInfo>
<CorrelationUrl>http://mouse.brainmap.org/agea/all_coronal?correlation&seedPoint=6575,3975,5675</CorrelationUrl>
</CorrelationMapResponse>
50
Figure 20. XML schema diagram of CorrelationMap response
7.15. Execute GetGenesByPOI
This request is currently implemented for the ABA and EMAP hubs.
WaxMl
{BaseService}&version=1.0.0&request=Execute&Identifier=GetGenesByPOI&Dat
aInputs=srsName=Mouse_ABAVoxel_1.0;x=263;y=159&z=227&
filter=&ResponseForm=application/waxml
Text Format
{BaseService}&version=1.0.0&request=Execute&Identifier=GetGenesByPOI&Dat
aInputs=srsName=Mouse_ABAVoxel_1.0;x=263;y=159&z=227&filter=&Response
Form=text/plain
51
Figure 21. XML schema diagrams of GeneType and GeneExpressionLevel (components of GetGenesByPOI
response)
52
A sample output of the call:
<GenesResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlin="http://www.w3.org/1999/xlink">
<QueryInfo>
<QueryUrl name="GetGenesByPOI">URL</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="srsCode">
<Value>Mouse_ABAVoxel_1.0</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>AFilter</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="x">
<Value>263</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="y">
<Value>159</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="y">
<Value>227</Value>
</Input>
</Criteria>
</QueryInfo>
<GenesByPOI>
<Gene>
<!--Codespace required. Ideally it will be a base identifier the org responsible
for the naming-->
<!--gml:id is required, and is used to reference this item in the document-->
<Symbol codeSpace="uri:incf.org" gml:id="AAAAAB">Bmp4</Symbol>
<MarkerAccessionId separator=":">
<Prefix>string</Prefix>
<Identifier>string</Identifier>
<FullIdentifier>string:string</FullIdentifier>
</MarkerAccessionId>
<Name>bone morphogenetic protein 4</Name>
<Organism>mouse</Organism>
</Gene>
<ExpressionLevel>
<!--href references Bmp4 by gml:id-->
<!--references Bmp4 by name.-->
<GeneSymbol xlin:href="#AAAAB"/>
<Stage>TS11</Stage>
<Level>strong</Level>
<ResourceUri>http://www.emouseatlas.org/emagewebapp/pages/emage_entry_page.jsf?id=EMAGE:
86</ResourceUri>
</ExpressionLevel>
</GenesByPOI>
53
</GenesResponse>
7.16. Execute Get2DImagesByURI
This method is not formally a part of atlas services, but is needed as a bridge with PONS. It
is included here to support image requests primarily for images that are not placed in a
specific SRS, but have been tagged with a name of anatomic structure or cell. In particular
this refers to images at the cellular level.
The URI in the request refers to such a name in NIF, and is in the form described in the
GetStructureNameByPOI method output. It is typically a Uniform Resource Name (URN).
The WaxML output is the same as in the Get2DImagesByPOI call, with two exceptions: a)
the <queryinfo> element is different, and b) the <ImagePosition> element is not included.
The sample request is:
{BaseService}&version=1.0.0&request=Execute&Identifier=get2DImagesByURI&
DataInputs=URI=urn:incf:pons-repository.org:structurenames:Hippocampus;
filter=
The inputs are:


URI, pointing to feature definition in the PONS repository
Filter: any additional hub-specific string defining a rule for selecting images
As with the Get2dImagesByPOI, the returned document will contain the <queryinfo>
element and a list of images, each with a URL of the image, and perhaps a thumbnail. As
earlier, the returned information should be sufficient to formulate subsequent requests for
image fragments, or open a specialized 2d image browser.
54
<ImagesResponse xmlns="http://www.incf.org/WaxML/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml/3.2">
<QueryInfo>
<QueryUrl name="Get2DImagesByURI ">URL</QueryUrl>
<Criteria>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="URI">
<Value>urn:incf:pons-repository.org:structurenames:Hippocampus</Value>
</Input>
<Input xmlns:wax="http://www.incf.org/WaxML/" xsi:type="wax:InputStringType"
name="filter">
<Value>maptype:coronal</Value>
</Input>
</Criteria>
</QueryInfo>
<Image2Dcollection>
<!--format ~ mime type
{WMS/jpg|WMS/gif|WMS/png|zoomify|image/jpeg|image/png|image/gif|text/html|url} found in
incfRemoteFormatEnum-->
<!--optional thumbnail-->
<!--type is type of service {wms-jpg|wms-png|wms-gif|zoomify|url} from type
incfImageServicesEnum-->
<Image2D>
<ImageSource format="image/jpeg" relavance="0.6" srsName="srscode"
thumbnanil="http://example.com/image.jpg" metadata="URL" type="url">URL</ImageSource>
<ImagePosition>
<ImagePlaneEquation srsName="SRS">1 2 3 4</ImagePlaneEquation>
<ImagePlanePlacement srsName="SRS">1 2 3 4 5 6.0</ImagePlanePlacement>
<Corners>
<Corner position="topleft">
<gml:Point gml:id="image1TopLeft">
<gml:pos srsName="Mouse_ABAvoxel_1.0">1 1 1</gml:pos>
</gml:Point>
</Corner>
<Corner position="bottomleft">
<gml:Point gml:id="image1BOTTOMLEFT">
<gml:pos srsName="Mouse_ABAvoxel_1.0">1 1 1</gml:pos>
</gml:Point>
</Corner>
<Corner position="topright">
<gml:Point gml:id="image1TOPRIGHT">
<gml:pos srsName="Mouse_ABAvoxel_1.0">1 1 1</gml:pos>
</gml:Point>
</Corner>
<Corner position="bottomright">
<gml:Point gml:id="image1BOTTOMRIGHT">
<gml:pos srsName="Mouse_ABAvoxel_1.0">1 1 1</gml:pos>
</gml:Point>
</Corner>
</Corners>
</ImagePosition>
</Image2D>
</Image2Dcollection>
</ImagesResponse>
55
7.17. Exception report
Exceptions should be generated on bad or missing input parameters, values out of bound,
etc. Anytime an atlas server is unable to return a valid response with content, the server
will return a WPS owsExceptionReport:
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/2.0" version="1.0.0"
xml:lang="en-US">
<ows:Exception exceptionCode="NotApplicableCode" locator="locator">
<ows:ExceptionText>Line 1a.</ows:ExceptionText>
<ows:ExceptionText>Line 1b.</ows:ExceptionText>
</ows:Exception>
<ows:Exception exceptionCode="NotApplicableCode" locator="locator">
<ows:ExceptionText>Line 2a.</ows:ExceptionText>
<ows:ExceptionText>Line 2b.</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
56
Annex A
A1. Physical implementation of a hub
We are considering two types of INCF atlas data hubs, referred to as “standard hub” and
“hybrid hub”. So far, the demo implementation followed a “hybrid hub” model, where some
functions are available from an independently managed legacy server (e.g. ABA,
EMAP/EMAGE, Smart Atlas), while other functions are developed to bring the service in
compliance with the atlas service specification. The remote functionality (local APIs) is
wrapped into standard service requests described earlier. In addition, several core but
missing requests are added: those implementing GetCapabilities and DescribeProcess calls,
spatial transformations, and anatomic structure lookup. In this fairly lightweight model, a
hybrid hub hosts (a) service controller for the hub, with automatically updated
GetCapabilities/DescribeProcess requests as the hub content changes, (b) service wrappers
of remote services, (c) description of local coordinate spaces and transformations to and
from WHS. We assume that such remote hubs do their own database and services
management, and are not interested in additional web presence.
A “standard hub” is intended for atlas groups that don’t have web service presence, and
would like to setup a hub from scratch. In this case, the hub software stack may include
backend services, providing secure access to dataset and collection management, portal
components with a variety of tools, containers for other services, etc. Earlier, we referred to
this setup as “Neurohub.” It is expected that the atlas hub functions (data loaders,
canonical RDBMS schemas, registries, spatial and semantic registration workflows, image
server, atlas hub services etc.) would reside in an “atlas container” implemented within
Neurohub. The standard hub’s application services (as described in section 1) will still be
registered at the INCF Central in the same fashion as those from a hybrid hub.
The purpose of the above outline is to describe functionality and implementation of a hub
from the Atlasing perspective. A description of how the atlas service interacts with other
components of a hub (e.g. portal, collaborative tools, backend data management, etc.) is
beyond the scope of this document. This, however, will become one of the foci at the
implementation stage of atlas hub service. Therefore, we provide a glimpse of the
anticipated hardware and software model of a Neurohub, which will serve as a container for
atlas services.
One of the “standard hubs” we envision will be co-located with the INCF Central server itself
(Figure 3). This hub will be used by researchers who, for any reason, prefer not to stand a
separate hub with the above defined functionality, but rather upload their data to INCF
directly.
A2. Extensions: convenience APIs
We also envision various convenience APIs to be developed over the basic atlas services, as
well as additional language bindings (e.g. Python). For example, translating image corners
from a source SRS to a target SRS, to correctly position an image in a 2D or 3D viewer that
uses the target SRS is often difficult because image corners may be outside valid value
ranges. To resolve this problem, a simple approximate technique may be used (e.g.
transforming the center point of an image along with four vertices of a small congruent
rectangle with the same centerpoint, then extrapolating the transformed values). Such a
service (“TransformImageRectangle”) may use a series of the core TransformPOI calls.
57
A3. HUB deployment model and additional requirements
At the physical level, a NeuroHub may represent a collection of virtual machines (VMs),
managed and load-balanced. These machines could host atlas services (as described
above), data management/data sharing services and backend, collaboration tools, ontology,
resource registry, data discovery system, etc. A more detailed specification of the
deployment model is below.
The VMs comprising a hub are established per functional group (precise VM slicing to be
defined): for database server, collection/data management, atlas services, portal framework
with associated communication/collaboration tools, workflow services, resource registry,
etc. In a standard deployment configuration, 2 physical servers with identical configuration
(primary and failover), plus a single shared storage, will be provided. Figure 23 shows the
physical organization. The system itself can also (based on hardware and VM configuration)
load balance VMs across the two nodes.
Figure 22. Deployment model of INCF hub
The specific set of VMs at each hub would vary. An example of application services would be
the atlas services described above. We anticipate that separate application-level services
(and eventually VMs) would be needed for different hub maintainers (i.e. some data types
58
may be specific for a group. Some of the groups of data types managed by the INCF
infrastructure would include (also shown in Fig 1):















2D images
2D vector segmentations
3D volumes
Connectivity data
Cell models
Electrophysiology data
Surfaces
Phenotype/behavioral data
FMRI (4+D)
Time series
Gene expression data
Distortion fields, numerics
Simulation results and animations
Annotations
Publications
For each of these data type groups, the infrastructure should include: data loaders (or other
services for harvesting, ingesting and registering data of these types); data storage with
canonical relational or XML schemas; registries; spatial and semantic registration
workflows; specialized database or image servers (e.g. servers for large 2D and 3D imagery
such as CCDB); client-side applications for resource registration, curation, visualization,
resource discovery (such as services provided by NIF), analytical workflow composition (e.g.
such as the services provided by projects such as CAMERA), annotation, etc. In some
instances, such components exist, usually as individual tools. Development of these
components as part of the INCF infrastructure depends on the adoption of international
community standards for exchanging data of each type – the process which INCF is wellpositioned to lead.
A4. Code Design, Management, and Deployment
Software technologies





Tomcat – Each hub (ABA, EMAP, UCSD, WHS, etc.) is web service designed to be
deployed
Web Service (WS) – Each hub is a RESTful web service
Java – Program code
XML – All WS responses are XML documents specified with and XML schema
PostgreSQL/PostGIS – Database support
Java technologies



JUnit – Unit testing
Restlet – Facilitates RESTful WS
XMLBeans – Document-object mapping, marshaling, and serializing HTTP responses
Code management tools
59


Maven – Dependency management, builds, version control, and deployment
packaging
Subversion (SVN) – Software Configuration Management (SCM), revision control
Software project structure



Each hub is separate project (atlas-aba, atlas-emap, etc.)
Shared Java code is in the atlas-common project
Shared XML schema is in the AtlasXmlBeans2 project which includes unit tests and
example XML documents
Testing


Unit testing
HTTP server testing
Exception and Error Handling – Anytime a hub server is unable to return a valid response
with content, the server will return a WPS owsExceptionReport.
Development team practices




Comment code
Commit frequently
Commit only code that builds
Development team source code repository – http://code.google.com/p/incfdai/source/browse/
Active source code projects in repository






atlas-aba – Allen Brain Atlas hub
atlas-common – code share across hubs
atlas-emap – Edinburgh Mouse Atlas Project hub
atlas-ucsd – University of California, San Diego hub
atlas-whs – Waxholm Space (WHS) hub
AtlasXmlBeans2 – WaxML XML schema, example Java code, and example XML
documents
Deployment – The deployable Maven projects produce a ".war" (web archive file) which is
easily deployed to any Tomcat server. Note: the Tomcat server should be v6.0.x and Java
should be Java 6.
Documentation





This document
JavaDocs – (JavaDocs are not current pubished.)
Code commenting
Wiki – http://code.google.com/p/incf-dai/w/list
Google Documents – Selected document are shared (including this one) or linked
from other documentation.
60