# Allen Institute Software License - This software license is the 2-clause BSD
# license plus a third clause that prohibits redistribution for commercial
# purposes without further permission.
#
# Copyright 2015-2016. Allen Institute. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Redistributions for commercial purposes are not permitted without the
# Allen Institute's written permission.
# For purposes of this license, commercial purposes is the incorporation of the
# Allen Institute's software into anything for which you will charge fees or
# other compensation. Contact terms@alleninstitute.org for commercial licensing
# opportunities.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
from .rma_api import RmaApi
[docs]class ConnectedServices(object):
'''
A class representing a schema of informatics web services.
Notes
-----
See `Connected Services and Pipes <http://help.brain-map.org/display/api/Connected+Services+and+Pipes>`_
for a human-readable list of services and parameters.
The URL format is documented at
`Service Pipelines <http://help.brain-map.org/display/api/Service+Pipelines>`_.
Connected Services only include API services that are accessed
via the RMA endpoint using an rma::services stage.
'''
ARRAY = 'array'
STRING = 'string'
INTEGER = 'integer'
FLOAT = 'float'
BOOLEAN = 'boolean'
def __init__(self):
pass
[docs] def build_url(self, service_name, kwargs):
'''Create a single stage RMA url from a service name and parameters.
'''
rma = RmaApi()
fmt = kwargs.get('fmt', 'json')
schema_entry = ConnectedServices._schema[service_name]
params = []
for parameter in schema_entry['parameters']:
value = kwargs.get(parameter['name'], None)
if value is not None:
params.append((parameter['name'], value))
service_stage = rma.service_stage(service_name,
params)
url = rma.build_query_url([service_stage], fmt)
return url
@classmethod
@property
def schema(cls):
'''Dictionary of service names and parameters.
Notes
-----
See `Connected Services and Pipes <http://help.brain-map.org/display/api/Connected+Services+and+Pipes>`_
for a human-readable list of connected services and their parameters.
'''
return cls._schema
_schema = {
'dev_human_correlation': {
'parameters': [
{'name': 'set',
'optional': True,
'type': STRING,
'values': ['rna_seq_genes',
'rna_seq_exons',
'exon_microarray_genes'
'exon_microarray_exons']
},
{'name': 'donors',
'optional': True,
'type': ARRAY
},
{'name': 'structures',
'optional': False,
'type': ARRAY
},
{'name': 'probes',
'optional': False,
'type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': ['desc']
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_human_differential': {
'parameters': [
{'name': 'set',
'type': STRING,
'values': ['rna_seq_genes',
'rna_seq_exons',
'exon_microarray_genes',
'exon_microarray_exons']
},
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'optional': True,
'array_type': INTEGER
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_by',
'type': STRING,
'optional': True,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_human_expression': {
'parameters': [
{'name': 'set',
'type': STRING,
'values': ['rna_seq_genes',
'rna_seq_exons',
'exon_microarray_genes',
'exon_microarray_exons']
},
{'name': 'probes',
'type': INTEGER
},
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_human_microarray_correlation': {
'parameters': [
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING]
},
{'name': 'probes',
'type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_human_microarray_differential': {
'parameters': [
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_by',
'type': STRING,
'optional': True,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_human_microarray_expression': {
'parameters': [
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
},
{'name': 'donors',
'type': INTEGER,
'optional': True,
},
{'name': 'structures',
'type': INTEGER,
'optional': True
}
]
},
'dev_mouse_agea': {
'parameters': [
{'name': 'seed_age',
'type': STRING
},
{'name': 'map_age',
'type': STRING
},
{'name': 'seed_point',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'seed_threshold',
'type': ARRAY,
'array_type': FLOAT
},
{'name': 'map_threshold',
'type': ARRAY,
'array_type': FLOAT
},
{'name': 'contrast_threshold',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'target_threshold',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'dev_mouse_correlation': {
'parameters': [
{'name': 'row',
'type': INTEGER
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'ages',
'type': ARRAY,
'array_type': STRING,
'optional': True
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'gbm_correlation': {
'parameters': [
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING]
},
{'name': 'probes',
'type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'gbm_differential': {
'parameters': [
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_by',
'type': STRING,
'optional': True,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'gbm_expression': {
'parameters': [
{'name': 'probes',
'type': INTEGER,
'array_type': INTEGER
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
},
{'name': 'donors',
'type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': INTEGER,
'optional': True
}
]
},
'gbm_ish_differential': {
'parameters': [
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'threshold1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'threshold2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'gbm_ish_expression': {
'parameters': [
{'name': 'structures',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'threshold',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'human_microarray_correlation': {
'parameters': [
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING]
},
{'name': 'probes',
'type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'human_microarray_differential': {
'parameters': [
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'optional': True,
'array_type': INTEGER
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_by',
'type': STRING,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'human_microarray_expression': {
'parameters': [
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_agea': {
'parameters': [
{'name': 'set',
'type': STRING
},
{'name': 'seed_age',
'type': STRING
},
{'name': 'map_age',
'type': STRING
},
{'name': 'seed_point',
'type': ARRAY,
'array_type': FLOAT
},
{'name': 'correlation_threshold1',
'type': FLOAT,
'optional': True,
},
{'name': 'correlation_threshold2',
'type': FLOAT,
'optional': True
},
{'name': 'threshold1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'threshold2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_correlation': {
'parameters': [
{'name': 'set',
'type': STRING,
'values': ['mouse', 'mouse_coronal']
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'row',
'type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_differential': {
'parameters': [
{'name': 'set',
'type': STRING,
'values': ['mouse', 'mouse_coronal']
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'threshold1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'threshold2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_connectivity_correlation': {
'parameters': [
{'name': 'row',
'type': INTEGER
},
{'name': 'structures',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'product_ids',
'type': ARRAY,
'array_type': [INTEGER],
'optional': True
},
{'name': 'hemisphere',
'type': STRING,
'optional': True,
'values': ['right', 'left']
},
{'name': 'transgenic_lines',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'injection_structures',
'type': 'Array',
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'primary_structure_only',
'type': BOOLEAN,
'optional': True,
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_connectivity_injection_coordinate': {
'parameters': [
{'name': 'seed_point',
'type': ARRAY,
'array_type': FLOAT,
'optional': False,
},
{'name': 'transgenic_lines',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'injection_structures',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'product_ids',
'type': ARRAY,
'array_type': [INTEGER],
'optional': True
},
{'name': 'primary_structure_only',
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_connectivity_injection_structure': {
'parameters': [
{'name': 'injection_structures',
'type': ARRAY,
'array_type': [INTEGER, STRING]
},
{'name': 'target_domain',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'injection_hemisphere',
'type': STRING,
'optional': True,
'values': ['right', 'left']
},
{'name': 'target_hemisphere',
'type': STRING,
'optional': True,
'values': ['right', 'left']
},
{'name': 'transgenic_lines',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'injection_domain',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'product_ids',
'type': ARRAY,
'array_type': [INTEGER],
'optional': True
},
{'name': 'primary_structure_only',
'type': BOOLEAN,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'mouse_connectivity_target_spatial': {
'parameters': [
{'name': 'seed_point',
'type': ARRAY,
'array_type': FLOAT,
},
{'name': 'transgenic_lines',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'section_data_set',
'type': INTEGER,
'optional': True
},
{'name': 'injection_structures',
'type': ARRAY,
'array_type': [INTEGER, STRING],
'optional': True
},
{'name': 'product_ids',
'type': ARRAY,
'array_type': [INTEGER],
'optional': True
},
{'name': 'primary_structure_only',
'type': BOOLEAN,
'optional': True
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_lmd_microarray_correlation': {
'parameters': [
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': INTEGER,
},
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_lmd_microarray_differential': {
'parameters': [
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures2',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_by',
'type': STRING,
'optional': True,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_lmd_microarray_expression': {
'parameters': [
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_macro_microarray_correlation': {
'parameters': [
{'name': 'donors',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'sort_order',
'type': STRING,
'optional': True,
'values': ['asc', 'desc'],
'default': 'desc'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_macro_microarray_differential': {
'parameters': [
{'name': 'donors1',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures1',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'donors2',
'type': ARRAY,
'array_type': INTEGER,
'optional': True
},
{'name': 'structures2',
'array_type': INTEGER,
'type': ARRAY
},
{'name': 'sort_by',
'type': STRING,
'optional': True,
'values': ['p-value', 'fold-change'],
'default': 'p-value'
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'nhp_macro_microarray_expression': {
'parameters': [
{'name': 'probes',
'type': ARRAY,
'array_type': INTEGER
},
{'name': 'start_row',
'type': INTEGER,
'optional': True,
'default': 0
},
{'name': 'num_rows',
'type': INTEGER,
'optional': True,
'default': 2000
}
]
},
'text_search': {
'parameters': [
{'name': 'query_string',
'type': STRING
},
{'name': 'k',
'type': STRING
}
]
}
}