vfbquery 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- test/readme_parser.py +29 -33
- test/term_info_queries_test.py +49 -34
- test/test_default_caching.py +86 -85
- test/test_examples_code.py +7 -0
- test/test_examples_diff.py +95 -172
- test/test_neurons_part_here.py +12 -13
- test/test_query_performance.py +3 -7
- vfbquery/__init__.py +47 -35
- vfbquery/cached_functions.py +772 -131
- vfbquery/owlery_client.py +1 -1
- vfbquery/solr_cache_integration.py +34 -30
- vfbquery/solr_result_cache.py +262 -99
- vfbquery/term_info_queries.py +1 -1
- vfbquery/vfb_queries.py +69 -20
- vfbquery-0.5.2.dist-info/METADATA +2806 -0
- {vfbquery-0.5.0.dist-info → vfbquery-0.5.2.dist-info}/RECORD +19 -18
- {vfbquery-0.5.0.dist-info → vfbquery-0.5.2.dist-info}/WHEEL +1 -1
- vfbquery-0.5.0.dist-info/METADATA +0 -2273
- {vfbquery-0.5.0.dist-info → vfbquery-0.5.2.dist-info}/LICENSE +0 -0
- {vfbquery-0.5.0.dist-info → vfbquery-0.5.2.dist-info}/top_level.txt +0 -0
vfbquery/cached_functions.py
CHANGED
|
@@ -6,7 +6,7 @@ inspired by VFB_connect optimizations.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
from typing import Dict, Any, Optional
|
|
9
|
-
from .
|
|
9
|
+
from .solr_result_cache import with_solr_cache
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def is_valid_term_info_result(result):
|
|
@@ -28,173 +28,624 @@ def is_valid_term_info_result(result):
|
|
|
28
28
|
# Check if preview_results has the correct structure
|
|
29
29
|
preview_results = query.get('preview_results')
|
|
30
30
|
if not isinstance(preview_results, dict):
|
|
31
|
-
print(f"DEBUG: Invalid preview_results type {type(preview_results)} detected")
|
|
31
|
+
# print(f"DEBUG: Invalid preview_results type {type(preview_results)} detected")
|
|
32
32
|
return False
|
|
33
33
|
|
|
34
34
|
headers = preview_results.get('headers', [])
|
|
35
35
|
if not headers:
|
|
36
|
-
print(f"DEBUG: Empty headers detected in preview_results")
|
|
36
|
+
# print(f"DEBUG: Empty headers detected in preview_results")
|
|
37
37
|
return False
|
|
38
38
|
|
|
39
39
|
# Only reject if count is -1 (failed execution) or if count is 0 but preview_results is missing/empty
|
|
40
40
|
if count < 0:
|
|
41
|
-
print(f"DEBUG: Invalid query count {count} detected")
|
|
41
|
+
# print(f"DEBUG: Invalid query count {count} detected")
|
|
42
42
|
return False
|
|
43
43
|
|
|
44
44
|
return True
|
|
45
45
|
from .vfb_queries import (
|
|
46
46
|
get_term_info as _original_get_term_info,
|
|
47
47
|
get_instances as _original_get_instances,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
get_templates as _original_get_templates,
|
|
49
|
+
get_related_anatomy as _original_get_related_anatomy,
|
|
50
|
+
get_similar_neurons as _original_get_similar_neurons,
|
|
51
|
+
get_individual_neuron_inputs as _original_get_individual_neuron_inputs,
|
|
52
|
+
get_expression_overlaps_here as _original_get_expression_overlaps_here,
|
|
53
|
+
get_neurons_with_part_in as _original_get_neurons_with_part_in,
|
|
54
|
+
get_neurons_with_synapses_in as _original_get_neurons_with_synapses_in,
|
|
55
|
+
get_neurons_with_presynaptic_terminals_in as _original_get_neurons_with_presynaptic_terminals_in,
|
|
56
|
+
get_neurons_with_postsynaptic_terminals_in as _original_get_neurons_with_postsynaptic_terminals_in,
|
|
57
|
+
get_components_of as _original_get_components_of,
|
|
58
|
+
get_parts_of as _original_get_parts_of,
|
|
59
|
+
get_subclasses_of as _original_get_subclasses_of,
|
|
60
|
+
get_neuron_classes_fasciculating_here as _original_get_neuron_classes_fasciculating_here,
|
|
61
|
+
get_tracts_nerves_innervating_here as _original_get_tracts_nerves_innervating_here,
|
|
62
|
+
get_lineage_clones_in as _original_get_lineage_clones_in,
|
|
63
|
+
get_neuron_neuron_connectivity as _original_get_neuron_neuron_connectivity,
|
|
64
|
+
get_neuron_region_connectivity as _original_get_neuron_region_connectivity,
|
|
65
|
+
get_images_neurons as _original_get_images_neurons,
|
|
66
|
+
get_images_that_develop_from as _original_get_images_that_develop_from,
|
|
67
|
+
get_expression_pattern_fragments as _original_get_expression_pattern_fragments,
|
|
68
|
+
get_anatomy_scrnaseq as _original_get_anatomy_scrnaseq,
|
|
69
|
+
get_cluster_expression as _original_get_cluster_expression,
|
|
70
|
+
get_expression_cluster as _original_get_expression_cluster,
|
|
71
|
+
get_scrnaseq_dataset_data as _original_get_scrnaseq_dataset_data,
|
|
72
|
+
get_similar_morphology as _original_get_similar_morphology,
|
|
73
|
+
get_similar_morphology_part_of as _original_get_similar_morphology_part_of,
|
|
74
|
+
get_similar_morphology_part_of_exp as _original_get_similar_morphology_part_of_exp,
|
|
75
|
+
get_similar_morphology_nb as _original_get_similar_morphology_nb,
|
|
76
|
+
get_similar_morphology_nb_exp as _original_get_similar_morphology_nb_exp,
|
|
77
|
+
get_similar_morphology_userdata as _original_get_similar_morphology_userdata,
|
|
78
|
+
get_painted_domains as _original_get_painted_domains,
|
|
79
|
+
get_dataset_images as _original_get_dataset_images,
|
|
80
|
+
get_all_aligned_images as _original_get_all_aligned_images,
|
|
81
|
+
get_aligned_datasets as _original_get_aligned_datasets,
|
|
82
|
+
get_all_datasets as _original_get_all_datasets,
|
|
83
|
+
get_terms_for_pub as _original_get_terms_for_pub,
|
|
84
|
+
get_transgene_expression_here as _original_get_transgene_expression_here,
|
|
51
85
|
)
|
|
52
86
|
|
|
53
|
-
@
|
|
54
|
-
def
|
|
55
|
-
"""Cached version of SOLR search."""
|
|
56
|
-
return vfb_solr.search(query)
|
|
57
|
-
|
|
58
|
-
@cache_result("term_info_parse", "term_info_cache_enabled")
|
|
59
|
-
def cached_term_info_parse_object(results, short_form: str):
|
|
60
|
-
"""Cached version of term_info_parse_object."""
|
|
61
|
-
return _original_term_info_parse_object(results, short_form)
|
|
62
|
-
|
|
63
|
-
@cache_result("query_results", "query_result_cache_enabled")
|
|
64
|
-
def cached_fill_query_results(term_info: Dict[str, Any]):
|
|
65
|
-
"""Cached version of fill_query_results."""
|
|
66
|
-
return _original_fill_query_results(term_info)
|
|
67
|
-
|
|
68
|
-
@cache_result("get_instances", "query_result_cache_enabled")
|
|
69
|
-
def cached_get_instances(short_form: str, return_dataframe=True, limit: int = -1):
|
|
70
|
-
"""Cached version of get_instances."""
|
|
71
|
-
return _original_get_instances(short_form, return_dataframe, limit)
|
|
72
|
-
|
|
73
|
-
def get_term_info_cached(short_form: str, preview: bool = False):
|
|
87
|
+
@with_solr_cache('term_info')
|
|
88
|
+
def get_term_info_cached(short_form: str, preview: bool = True, force_refresh: bool = False):
|
|
74
89
|
"""
|
|
75
|
-
Enhanced get_term_info with
|
|
90
|
+
Enhanced get_term_info with SOLR caching.
|
|
76
91
|
|
|
77
|
-
This version
|
|
78
|
-
1. Final result caching (entire term_info response)
|
|
79
|
-
2. SOLR query result caching
|
|
80
|
-
3. Term info parsing caching
|
|
81
|
-
4. Query result caching
|
|
92
|
+
This version caches complete term_info responses in SOLR for fast retrieval.
|
|
82
93
|
|
|
83
94
|
Args:
|
|
84
95
|
short_form: Term short form (e.g., 'FBbt_00003748')
|
|
85
96
|
preview: Whether to include preview results
|
|
97
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
86
98
|
|
|
87
99
|
Returns:
|
|
88
100
|
Term info dictionary or None if not found
|
|
89
101
|
"""
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# Check for complete result in cache first
|
|
93
|
-
cache_key = cache._generate_cache_key("term_info_complete", short_form, preview)
|
|
94
|
-
cached_result = cache.get(cache_key)
|
|
95
|
-
print(f"DEBUG: Cache lookup for {short_form}: {'HIT' if cached_result is not None else 'MISS'}")
|
|
96
|
-
if cached_result is not None:
|
|
97
|
-
# Validate that cached result has essential fields
|
|
98
|
-
if not is_valid_term_info_result(cached_result):
|
|
99
|
-
print(f"DEBUG: Cached result incomplete for {short_form}, falling back to original function")
|
|
100
|
-
print(f"DEBUG: cached_result keys: {list(cached_result.keys()) if cached_result else 'None'}")
|
|
101
|
-
print(f"DEBUG: cached_result Id: {cached_result.get('Id', 'MISSING') if cached_result else 'None'}")
|
|
102
|
-
print(f"DEBUG: cached_result Name: {cached_result.get('Name', 'MISSING') if cached_result else 'None'}")
|
|
103
|
-
|
|
104
|
-
# Fall back to original function and cache the complete result
|
|
105
|
-
fallback_result = _original_get_term_info(short_form, preview)
|
|
106
|
-
if is_valid_term_info_result(fallback_result):
|
|
107
|
-
print(f"DEBUG: Fallback successful, caching complete result for {short_form}")
|
|
108
|
-
cache.set(cache_key, fallback_result)
|
|
109
|
-
return fallback_result
|
|
110
|
-
else:
|
|
111
|
-
print(f"DEBUG: Using valid cached result for {short_form}")
|
|
112
|
-
return cached_result
|
|
113
|
-
|
|
114
|
-
parsed_object = None
|
|
115
|
-
try:
|
|
116
|
-
# Use cached SOLR search
|
|
117
|
-
results = cached_solr_search('id:' + short_form)
|
|
118
|
-
|
|
119
|
-
# Use cached term info parsing
|
|
120
|
-
parsed_object = cached_term_info_parse_object(results, short_form)
|
|
121
|
-
|
|
122
|
-
if parsed_object:
|
|
123
|
-
# Use cached query result filling (skip if queries would fail)
|
|
124
|
-
if parsed_object.get('Queries') and len(parsed_object['Queries']) > 0:
|
|
125
|
-
try:
|
|
126
|
-
term_info = cached_fill_query_results(parsed_object)
|
|
127
|
-
if term_info:
|
|
128
|
-
# Validate result before caching
|
|
129
|
-
if term_info.get('Id') and term_info.get('Name'):
|
|
130
|
-
# Cache the complete result
|
|
131
|
-
cache.set(cache_key, term_info)
|
|
132
|
-
return term_info
|
|
133
|
-
else:
|
|
134
|
-
print(f"Query result for {short_form} is incomplete, falling back to original function...")
|
|
135
|
-
return _original_get_term_info(short_form, preview)
|
|
136
|
-
else:
|
|
137
|
-
print("Failed to fill query preview results!")
|
|
138
|
-
# Validate result before caching
|
|
139
|
-
if parsed_object.get('Id') and parsed_object.get('Name'):
|
|
140
|
-
# Cache the complete result
|
|
141
|
-
cache.set(cache_key, parsed_object)
|
|
142
|
-
return parsed_object
|
|
143
|
-
else:
|
|
144
|
-
print(f"Parsed object for {short_form} is incomplete, falling back to original function...")
|
|
145
|
-
return _original_get_term_info(short_form, preview)
|
|
146
|
-
except Exception as e:
|
|
147
|
-
print(f"Error filling query results (continuing without query data): {e}")
|
|
148
|
-
# Validate result before caching
|
|
149
|
-
if is_valid_term_info_result(parsed_object):
|
|
150
|
-
cache.set(cache_key, parsed_object)
|
|
151
|
-
return parsed_object
|
|
152
|
-
else:
|
|
153
|
-
print(f"DEBUG: Exception case - parsed object incomplete for {short_form}, falling back to original function")
|
|
154
|
-
fallback_result = _original_get_term_info(short_form, preview)
|
|
155
|
-
if is_valid_term_info_result(fallback_result):
|
|
156
|
-
cache.set(cache_key, fallback_result)
|
|
157
|
-
return fallback_result
|
|
158
|
-
else:
|
|
159
|
-
# No queries to fill, validate result before caching
|
|
160
|
-
if parsed_object.get('Id') and parsed_object.get('Name'):
|
|
161
|
-
# Cache and return parsed object directly
|
|
162
|
-
cache.set(cache_key, parsed_object)
|
|
163
|
-
return parsed_object
|
|
164
|
-
else:
|
|
165
|
-
print(f"DEBUG: No queries case - parsed object incomplete for {short_form}, falling back to original function...")
|
|
166
|
-
fallback_result = _original_get_term_info(short_form, preview)
|
|
167
|
-
if is_valid_term_info_result(fallback_result):
|
|
168
|
-
cache.set(cache_key, fallback_result)
|
|
169
|
-
return fallback_result
|
|
170
|
-
else:
|
|
171
|
-
print(f"No valid term info found for ID '{short_form}'")
|
|
172
|
-
return None
|
|
173
|
-
|
|
174
|
-
except Exception as e:
|
|
175
|
-
print(f"Error in cached get_term_info: {type(e).__name__}: {e}")
|
|
176
|
-
# Fall back to original function if caching fails
|
|
177
|
-
return _original_get_term_info(short_form, preview)
|
|
102
|
+
return _original_get_term_info(short_form=short_form, preview=preview)
|
|
178
103
|
|
|
179
|
-
def get_instances_cached(short_form: str, return_dataframe=True, limit: int = -1):
|
|
104
|
+
def get_instances_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
180
105
|
"""
|
|
181
|
-
Enhanced get_instances with caching.
|
|
106
|
+
Enhanced get_instances with SOLR caching.
|
|
182
107
|
|
|
183
|
-
This cached version
|
|
184
|
-
especially useful for:
|
|
185
|
-
- UI applications with repeated browsing
|
|
186
|
-
- Data analysis workflows
|
|
187
|
-
- Testing and development
|
|
108
|
+
This cached version provides dramatic speedup for repeated queries.
|
|
188
109
|
|
|
189
110
|
Args:
|
|
190
111
|
short_form: Class short form
|
|
191
112
|
return_dataframe: Whether to return DataFrame or formatted dict
|
|
192
113
|
limit: Maximum number of results (-1 for all)
|
|
114
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
193
115
|
|
|
194
116
|
Returns:
|
|
195
117
|
Instances data (DataFrame or formatted dict based on return_dataframe)
|
|
196
118
|
"""
|
|
197
|
-
return
|
|
119
|
+
return _original_get_instances(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
120
|
+
|
|
121
|
+
@with_solr_cache('similar_neurons')
|
|
122
|
+
def get_similar_neurons_cached(neuron, similarity_score='NBLAST_score', return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
123
|
+
"""
|
|
124
|
+
Enhanced get_similar_neurons with SOLR caching.
|
|
125
|
+
|
|
126
|
+
This cached version provides dramatic speedup for repeated NBLAST similarity queries.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
neuron: Neuron identifier
|
|
130
|
+
similarity_score: Similarity score type ('NBLAST_score', etc.)
|
|
131
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
132
|
+
limit: Maximum number of results (-1 for all)
|
|
133
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
Similar neurons data (DataFrame or list of dicts)
|
|
137
|
+
"""
|
|
138
|
+
return _original_get_similar_neurons(neuron=neuron, similarity_score=similarity_score, return_dataframe=return_dataframe, limit=limit)
|
|
139
|
+
|
|
140
|
+
def get_similar_morphology_cached(neuron_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
141
|
+
"""
|
|
142
|
+
Enhanced get_similar_morphology with SOLR caching.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
neuron_short_form: Neuron short form
|
|
146
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
147
|
+
limit: Maximum number of results (-1 for all)
|
|
148
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
Similar morphology data
|
|
152
|
+
"""
|
|
153
|
+
return _original_get_similar_morphology(neuron_short_form=neuron_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
154
|
+
|
|
155
|
+
def get_similar_morphology_part_of_cached(neuron_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
156
|
+
"""
|
|
157
|
+
Enhanced get_similar_morphology_part_of with SOLR caching.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
neuron_short_form: Neuron short form
|
|
161
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
162
|
+
limit: Maximum number of results (-1 for all)
|
|
163
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Similar morphology part-of data
|
|
167
|
+
"""
|
|
168
|
+
return _original_get_similar_morphology_part_of(neuron_short_form=neuron_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
169
|
+
|
|
170
|
+
def get_similar_morphology_part_of_exp_cached(expression_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
171
|
+
"""
|
|
172
|
+
Enhanced get_similar_morphology_part_of_exp with SOLR caching.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
expression_short_form: Expression pattern short form
|
|
176
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
177
|
+
limit: Maximum number of results (-1 for all)
|
|
178
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
Similar morphology expression data
|
|
182
|
+
"""
|
|
183
|
+
return _original_get_similar_morphology_part_of_exp(expression_short_form=expression_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
184
|
+
|
|
185
|
+
def get_similar_morphology_nb_cached(neuron_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
186
|
+
"""
|
|
187
|
+
Enhanced get_similar_morphology_nb with SOLR caching.
|
|
188
|
+
|
|
189
|
+
Args:
|
|
190
|
+
neuron_short_form: Neuron short form
|
|
191
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
192
|
+
limit: Maximum number of results (-1 for all)
|
|
193
|
+
|
|
194
|
+
Returns:
|
|
195
|
+
NBLAST similar morphology data
|
|
196
|
+
"""
|
|
197
|
+
return _original_get_similar_morphology_nb(neuron_short_form=neuron_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
198
|
+
|
|
199
|
+
def get_similar_morphology_nb_exp_cached(expression_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
200
|
+
"""
|
|
201
|
+
Enhanced get_similar_morphology_nb_exp with SOLR caching.
|
|
202
|
+
|
|
203
|
+
Args:
|
|
204
|
+
expression_short_form: Expression pattern short form
|
|
205
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
206
|
+
limit: Maximum number of results (-1 for all)
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
NBLAST expression similarity data
|
|
210
|
+
"""
|
|
211
|
+
return _original_get_similar_morphology_nb_exp(expression_short_form=expression_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
212
|
+
|
|
213
|
+
def get_similar_morphology_userdata_cached(upload_id: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
214
|
+
"""
|
|
215
|
+
Enhanced get_similar_morphology_userdata with SOLR caching.
|
|
216
|
+
|
|
217
|
+
Args:
|
|
218
|
+
upload_id: User upload identifier
|
|
219
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
220
|
+
limit: Maximum number of results (-1 for all)
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
User data similarity results
|
|
224
|
+
"""
|
|
225
|
+
return _original_get_similar_morphology_userdata(upload_id=upload_id, return_dataframe=return_dataframe, limit=limit)
|
|
226
|
+
|
|
227
|
+
def get_neurons_with_part_in_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
228
|
+
"""
|
|
229
|
+
Enhanced get_neurons_with_part_in with SOLR caching.
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
short_form: Anatomical structure short form
|
|
233
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
234
|
+
limit: Maximum number of results (-1 for all)
|
|
235
|
+
|
|
236
|
+
Returns:
|
|
237
|
+
Neurons with part in the specified anatomical structure
|
|
238
|
+
"""
|
|
239
|
+
return _original_get_neurons_with_part_in(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
240
|
+
|
|
241
|
+
def get_neurons_with_synapses_in_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
242
|
+
"""
|
|
243
|
+
Enhanced get_neurons_with_synapses_in with SOLR caching.
|
|
244
|
+
|
|
245
|
+
Args:
|
|
246
|
+
short_form: Anatomical structure short form
|
|
247
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
248
|
+
limit: Maximum number of results (-1 for all)
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
Neurons with synapses in the specified anatomical structure
|
|
252
|
+
"""
|
|
253
|
+
return _original_get_neurons_with_synapses_in(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
254
|
+
|
|
255
|
+
def get_neurons_with_presynaptic_terminals_in_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
256
|
+
"""
|
|
257
|
+
Enhanced get_neurons_with_presynaptic_terminals_in with SOLR caching.
|
|
258
|
+
|
|
259
|
+
Args:
|
|
260
|
+
short_form: Anatomical structure short form
|
|
261
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
262
|
+
limit: Maximum number of results (-1 for all)
|
|
263
|
+
|
|
264
|
+
Returns:
|
|
265
|
+
Neurons with presynaptic terminals in the specified anatomical structure
|
|
266
|
+
"""
|
|
267
|
+
return _original_get_neurons_with_presynaptic_terminals_in(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
268
|
+
|
|
269
|
+
def get_neurons_with_postsynaptic_terminals_in_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
270
|
+
"""
|
|
271
|
+
Enhanced get_neurons_with_postsynaptic_terminals_in with SOLR caching.
|
|
272
|
+
|
|
273
|
+
Args:
|
|
274
|
+
short_form: Anatomical structure short form
|
|
275
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
276
|
+
limit: Maximum number of results (-1 for all)
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
Neurons with postsynaptic terminals in the specified anatomical structure
|
|
280
|
+
"""
|
|
281
|
+
return _original_get_neurons_with_postsynaptic_terminals_in(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
282
|
+
|
|
283
|
+
def get_templates_cached(limit: int = -1, return_dataframe: bool = False, force_refresh: bool = False):
|
|
284
|
+
"""
|
|
285
|
+
Enhanced get_templates with SOLR caching.
|
|
286
|
+
|
|
287
|
+
Args:
|
|
288
|
+
limit: Maximum number of results (-1 for all)
|
|
289
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
290
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
291
|
+
|
|
292
|
+
Returns:
|
|
293
|
+
Template data
|
|
294
|
+
"""
|
|
295
|
+
return _original_get_templates(limit=limit, return_dataframe=return_dataframe)
|
|
296
|
+
|
|
297
|
+
def get_related_anatomy_cached(template_short_form: str, limit: int = -1, return_dataframe: bool = False, force_refresh: bool = False):
|
|
298
|
+
"""
|
|
299
|
+
Enhanced get_related_anatomy with SOLR caching.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
template_short_form: Template short form
|
|
303
|
+
limit: Maximum number of results (-1 for all)
|
|
304
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
305
|
+
force_refresh: Whether to bypass cache and fetch fresh data
|
|
306
|
+
|
|
307
|
+
Returns:
|
|
308
|
+
Related anatomy data
|
|
309
|
+
"""
|
|
310
|
+
return _original_get_related_anatomy(template_short_form=template_short_form, limit=limit, return_dataframe=return_dataframe)
|
|
311
|
+
|
|
312
|
+
def get_painted_domains_cached(template_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
313
|
+
"""
|
|
314
|
+
Enhanced get_painted_domains with SOLR caching.
|
|
315
|
+
|
|
316
|
+
Args:
|
|
317
|
+
template_short_form: Template short form
|
|
318
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
319
|
+
limit: Maximum number of results (-1 for all)
|
|
320
|
+
|
|
321
|
+
Returns:
|
|
322
|
+
Painted domains data
|
|
323
|
+
"""
|
|
324
|
+
return _original_get_painted_domains(template_short_form=template_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
325
|
+
|
|
326
|
+
def get_dataset_images_cached(dataset_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
327
|
+
"""
|
|
328
|
+
Enhanced get_dataset_images with SOLR caching.
|
|
329
|
+
|
|
330
|
+
Args:
|
|
331
|
+
dataset_short_form: Dataset short form
|
|
332
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
333
|
+
limit: Maximum number of results (-1 for all)
|
|
334
|
+
|
|
335
|
+
Returns:
|
|
336
|
+
Dataset images data
|
|
337
|
+
"""
|
|
338
|
+
return _original_get_dataset_images(dataset_short_form=dataset_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
339
|
+
|
|
340
|
+
def get_all_aligned_images_cached(template_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
341
|
+
"""
|
|
342
|
+
Enhanced get_all_aligned_images with SOLR caching.
|
|
343
|
+
|
|
344
|
+
Args:
|
|
345
|
+
template_short_form: Template short form
|
|
346
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
347
|
+
limit: Maximum number of results (-1 for all)
|
|
348
|
+
|
|
349
|
+
Returns:
|
|
350
|
+
All aligned images data
|
|
351
|
+
"""
|
|
352
|
+
return _original_get_all_aligned_images(template_short_form=template_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
353
|
+
|
|
354
|
+
def get_aligned_datasets_cached(template_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
355
|
+
"""
|
|
356
|
+
Enhanced get_aligned_datasets with SOLR caching.
|
|
357
|
+
|
|
358
|
+
Args:
|
|
359
|
+
template_short_form: Template short form
|
|
360
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
361
|
+
limit: Maximum number of results (-1 for all)
|
|
362
|
+
|
|
363
|
+
Returns:
|
|
364
|
+
Aligned datasets data
|
|
365
|
+
"""
|
|
366
|
+
return _original_get_aligned_datasets(template_short_form=template_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
367
|
+
|
|
368
|
+
def get_all_datasets_cached(return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
369
|
+
"""
|
|
370
|
+
Enhanced get_all_datasets with SOLR caching.
|
|
371
|
+
|
|
372
|
+
Args:
|
|
373
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
374
|
+
limit: Maximum number of results (-1 for all)
|
|
375
|
+
|
|
376
|
+
Returns:
|
|
377
|
+
All datasets data
|
|
378
|
+
"""
|
|
379
|
+
return _original_get_all_datasets(return_dataframe=return_dataframe, limit=limit)
|
|
380
|
+
|
|
381
|
+
def get_individual_neuron_inputs_cached(neuron_short_form: str, return_dataframe=True, limit: int = -1, summary_mode: bool = False, force_refresh: bool = False):
|
|
382
|
+
"""
|
|
383
|
+
Enhanced get_individual_neuron_inputs with SOLR caching.
|
|
384
|
+
|
|
385
|
+
Args:
|
|
386
|
+
neuron_short_form: Neuron short form
|
|
387
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
388
|
+
limit: Maximum number of results (-1 for all)
|
|
389
|
+
summary_mode: Whether to return summary mode
|
|
390
|
+
|
|
391
|
+
Returns:
|
|
392
|
+
Individual neuron inputs data
|
|
393
|
+
"""
|
|
394
|
+
return _original_get_individual_neuron_inputs(neuron_short_form=neuron_short_form, return_dataframe=return_dataframe, limit=limit, summary_mode=summary_mode)
|
|
395
|
+
|
|
396
|
+
def get_neuron_neuron_connectivity_cached(short_form: str, return_dataframe=True, limit: int = -1, min_weight: float = 0, direction: str = 'both', force_refresh: bool = False):
|
|
397
|
+
"""
|
|
398
|
+
Enhanced get_neuron_neuron_connectivity with SOLR caching.
|
|
399
|
+
|
|
400
|
+
Args:
|
|
401
|
+
short_form: Neuron short form
|
|
402
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
403
|
+
limit: Maximum number of results (-1 for all)
|
|
404
|
+
min_weight: Minimum connection weight
|
|
405
|
+
direction: Connection direction ('both', 'incoming', 'outgoing')
|
|
406
|
+
|
|
407
|
+
Returns:
|
|
408
|
+
Neuron-neuron connectivity data
|
|
409
|
+
"""
|
|
410
|
+
return _original_get_neuron_neuron_connectivity(short_form=short_form, return_dataframe=return_dataframe, limit=limit, min_weight=min_weight, direction=direction)
|
|
411
|
+
|
|
412
|
+
def get_neuron_region_connectivity_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
413
|
+
"""
|
|
414
|
+
Enhanced get_neuron_region_connectivity with SOLR caching.
|
|
415
|
+
|
|
416
|
+
Args:
|
|
417
|
+
short_form: Neuron short form
|
|
418
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
419
|
+
limit: Maximum number of results (-1 for all)
|
|
420
|
+
|
|
421
|
+
Returns:
|
|
422
|
+
Neuron-region connectivity data
|
|
423
|
+
"""
|
|
424
|
+
return _original_get_neuron_region_connectivity(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
425
|
+
|
|
426
|
+
def get_expression_overlaps_here_cached(anatomy_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
427
|
+
"""
|
|
428
|
+
Enhanced get_expression_overlaps_here with SOLR caching.
|
|
429
|
+
|
|
430
|
+
Args:
|
|
431
|
+
anatomy_short_form: Anatomy short form
|
|
432
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
433
|
+
limit: Maximum number of results (-1 for all)
|
|
434
|
+
|
|
435
|
+
Returns:
|
|
436
|
+
Expression overlaps data
|
|
437
|
+
"""
|
|
438
|
+
return _original_get_expression_overlaps_here(anatomy_short_form=anatomy_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
439
|
+
|
|
440
|
+
def get_anatomy_scrnaseq_cached(anatomy_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
441
|
+
"""
|
|
442
|
+
Enhanced get_anatomy_scrnaseq with SOLR caching.
|
|
443
|
+
|
|
444
|
+
Args:
|
|
445
|
+
anatomy_short_form: Anatomy short form
|
|
446
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
447
|
+
limit: Maximum number of results (-1 for all)
|
|
448
|
+
|
|
449
|
+
Returns:
|
|
450
|
+
Anatomy scRNAseq data
|
|
451
|
+
"""
|
|
452
|
+
return _original_get_anatomy_scrnaseq(anatomy_short_form=anatomy_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
453
|
+
|
|
454
|
+
def get_cluster_expression_cached(cluster_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
455
|
+
"""
|
|
456
|
+
Enhanced get_cluster_expression with SOLR caching.
|
|
457
|
+
|
|
458
|
+
Args:
|
|
459
|
+
cluster_short_form: Cluster short form
|
|
460
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
461
|
+
limit: Maximum number of results (-1 for all)
|
|
462
|
+
|
|
463
|
+
Returns:
|
|
464
|
+
Cluster expression data
|
|
465
|
+
"""
|
|
466
|
+
return _original_get_cluster_expression(cluster_short_form=cluster_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
467
|
+
|
|
468
|
+
def get_expression_cluster_cached(gene_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
469
|
+
"""
|
|
470
|
+
Enhanced get_expression_cluster with SOLR caching.
|
|
471
|
+
|
|
472
|
+
Args:
|
|
473
|
+
gene_short_form: Gene short form
|
|
474
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
475
|
+
limit: Maximum number of results (-1 for all)
|
|
476
|
+
|
|
477
|
+
Returns:
|
|
478
|
+
Expression cluster data
|
|
479
|
+
"""
|
|
480
|
+
return _original_get_expression_cluster(gene_short_form=gene_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
481
|
+
|
|
482
|
+
def get_scrnaseq_dataset_data_cached(dataset_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
483
|
+
"""
|
|
484
|
+
Enhanced get_scrnaseq_dataset_data with SOLR caching.
|
|
485
|
+
|
|
486
|
+
Args:
|
|
487
|
+
dataset_short_form: Dataset short form
|
|
488
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
489
|
+
limit: Maximum number of results (-1 for all)
|
|
490
|
+
|
|
491
|
+
Returns:
|
|
492
|
+
scRNAseq dataset data
|
|
493
|
+
"""
|
|
494
|
+
return _original_get_scrnaseq_dataset_data(dataset_short_form=dataset_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
495
|
+
|
|
496
|
+
def get_transgene_expression_here_cached(anatomy_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
497
|
+
"""
|
|
498
|
+
Enhanced get_transgene_expression_here with SOLR caching.
|
|
499
|
+
|
|
500
|
+
Args:
|
|
501
|
+
anatomy_short_form: Anatomy short form
|
|
502
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
503
|
+
limit: Maximum number of results (-1 for all)
|
|
504
|
+
|
|
505
|
+
Returns:
|
|
506
|
+
Transgene expression data
|
|
507
|
+
"""
|
|
508
|
+
return _original_get_transgene_expression_here(anatomy_short_form=anatomy_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
509
|
+
|
|
510
|
+
def get_components_of_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
511
|
+
"""
|
|
512
|
+
Enhanced get_components_of with SOLR caching.
|
|
513
|
+
|
|
514
|
+
Args:
|
|
515
|
+
short_form: Anatomical structure short form
|
|
516
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
517
|
+
limit: Maximum number of results (-1 for all)
|
|
518
|
+
|
|
519
|
+
Returns:
|
|
520
|
+
Components of the specified anatomical structure
|
|
521
|
+
"""
|
|
522
|
+
return _original_get_components_of(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
523
|
+
|
|
524
|
+
def get_parts_of_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
525
|
+
"""
|
|
526
|
+
Enhanced get_parts_of with SOLR caching.
|
|
527
|
+
|
|
528
|
+
Args:
|
|
529
|
+
short_form: Anatomical structure short form
|
|
530
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
531
|
+
limit: Maximum number of results (-1 for all)
|
|
532
|
+
|
|
533
|
+
Returns:
|
|
534
|
+
Parts of the specified anatomical structure
|
|
535
|
+
"""
|
|
536
|
+
return _original_get_parts_of(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
537
|
+
|
|
538
|
+
def get_subclasses_of_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
539
|
+
"""
|
|
540
|
+
Enhanced get_subclasses_of with SOLR caching.
|
|
541
|
+
|
|
542
|
+
Args:
|
|
543
|
+
short_form: Class short form
|
|
544
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
545
|
+
limit: Maximum number of results (-1 for all)
|
|
546
|
+
|
|
547
|
+
Returns:
|
|
548
|
+
Subclasses of the specified class
|
|
549
|
+
"""
|
|
550
|
+
return _original_get_subclasses_of(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
551
|
+
|
|
552
|
+
def get_neuron_classes_fasciculating_here_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
553
|
+
"""
|
|
554
|
+
Enhanced get_neuron_classes_fasciculating_here with SOLR caching.
|
|
555
|
+
|
|
556
|
+
Args:
|
|
557
|
+
short_form: Anatomical structure short form
|
|
558
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
559
|
+
limit: Maximum number of results (-1 for all)
|
|
560
|
+
|
|
561
|
+
Returns:
|
|
562
|
+
Neuron classes fasciculating in the specified anatomical structure
|
|
563
|
+
"""
|
|
564
|
+
return _original_get_neuron_classes_fasciculating_here(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
565
|
+
|
|
566
|
+
def get_tracts_nerves_innervating_here_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
567
|
+
"""
|
|
568
|
+
Enhanced get_tracts_nerves_innervating_here with SOLR caching.
|
|
569
|
+
|
|
570
|
+
Args:
|
|
571
|
+
short_form: Anatomical structure short form
|
|
572
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
573
|
+
limit: Maximum number of results (-1 for all)
|
|
574
|
+
|
|
575
|
+
Returns:
|
|
576
|
+
Tracts and nerves innervating the specified anatomical structure
|
|
577
|
+
"""
|
|
578
|
+
return _original_get_tracts_nerves_innervating_here(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
579
|
+
|
|
580
|
+
def get_lineage_clones_in_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
581
|
+
"""
|
|
582
|
+
Enhanced get_lineage_clones_in with SOLR caching.
|
|
583
|
+
|
|
584
|
+
Args:
|
|
585
|
+
short_form: Anatomical structure short form
|
|
586
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
587
|
+
limit: Maximum number of results (-1 for all)
|
|
588
|
+
|
|
589
|
+
Returns:
|
|
590
|
+
Lineage clones in the specified anatomical structure
|
|
591
|
+
"""
|
|
592
|
+
return _original_get_lineage_clones_in(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
593
|
+
|
|
594
|
+
def get_images_neurons_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
595
|
+
"""
|
|
596
|
+
Enhanced get_images_neurons with SOLR caching.
|
|
597
|
+
|
|
598
|
+
Args:
|
|
599
|
+
short_form: Neuron short form
|
|
600
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
601
|
+
limit: Maximum number of results (-1 for all)
|
|
602
|
+
|
|
603
|
+
Returns:
|
|
604
|
+
Images of the specified neuron
|
|
605
|
+
"""
|
|
606
|
+
return _original_get_images_neurons(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
607
|
+
|
|
608
|
+
def get_images_that_develop_from_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
609
|
+
"""
|
|
610
|
+
Enhanced get_images_that_develop_from with SOLR caching.
|
|
611
|
+
|
|
612
|
+
Args:
|
|
613
|
+
short_form: Anatomical structure short form
|
|
614
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
615
|
+
limit: Maximum number of results (-1 for all)
|
|
616
|
+
|
|
617
|
+
Returns:
|
|
618
|
+
Images that develop from the specified anatomical structure
|
|
619
|
+
"""
|
|
620
|
+
return _original_get_images_that_develop_from(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
621
|
+
|
|
622
|
+
def get_expression_pattern_fragments_cached(short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
623
|
+
"""
|
|
624
|
+
Enhanced get_expression_pattern_fragments with SOLR caching.
|
|
625
|
+
|
|
626
|
+
Args:
|
|
627
|
+
short_form: Expression pattern short form
|
|
628
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
629
|
+
limit: Maximum number of results (-1 for all)
|
|
630
|
+
|
|
631
|
+
Returns:
|
|
632
|
+
Expression pattern fragments data
|
|
633
|
+
"""
|
|
634
|
+
return _original_get_expression_pattern_fragments(short_form=short_form, return_dataframe=return_dataframe, limit=limit)
|
|
635
|
+
|
|
636
|
+
def get_terms_for_pub_cached(pub_short_form: str, return_dataframe=True, limit: int = -1, force_refresh: bool = False):
|
|
637
|
+
"""
|
|
638
|
+
Enhanced get_terms_for_pub with SOLR caching.
|
|
639
|
+
|
|
640
|
+
Args:
|
|
641
|
+
pub_short_form: Publication short form
|
|
642
|
+
return_dataframe: Whether to return DataFrame or list of dicts
|
|
643
|
+
limit: Maximum number of results (-1 for all)
|
|
644
|
+
|
|
645
|
+
Returns:
|
|
646
|
+
Terms associated with the specified publication
|
|
647
|
+
"""
|
|
648
|
+
return _original_get_terms_for_pub(pub_short_form=pub_short_form, return_dataframe=return_dataframe, limit=limit)
|
|
198
649
|
|
|
199
650
|
# Convenience function to replace original functions
|
|
200
651
|
def patch_vfbquery_with_caching():
|
|
@@ -204,14 +655,130 @@ def patch_vfbquery_with_caching():
|
|
|
204
655
|
This allows existing code to benefit from caching without changes.
|
|
205
656
|
"""
|
|
206
657
|
import vfbquery.vfb_queries as vfb_queries
|
|
658
|
+
import vfbquery
|
|
207
659
|
|
|
208
660
|
# Store original functions for fallback
|
|
209
661
|
setattr(vfb_queries, '_original_get_term_info', vfb_queries.get_term_info)
|
|
210
662
|
setattr(vfb_queries, '_original_get_instances', vfb_queries.get_instances)
|
|
663
|
+
setattr(vfb_queries, '_original_get_templates', vfb_queries.get_templates)
|
|
664
|
+
setattr(vfb_queries, '_original_get_related_anatomy', vfb_queries.get_related_anatomy)
|
|
665
|
+
setattr(vfb_queries, '_original_get_similar_neurons', vfb_queries.get_similar_neurons)
|
|
666
|
+
setattr(vfb_queries, '_original_get_individual_neuron_inputs', vfb_queries.get_individual_neuron_inputs)
|
|
667
|
+
setattr(vfb_queries, '_original_get_expression_overlaps_here', vfb_queries.get_expression_overlaps_here)
|
|
668
|
+
setattr(vfb_queries, '_original_get_neurons_with_part_in', vfb_queries.get_neurons_with_part_in)
|
|
669
|
+
setattr(vfb_queries, '_original_get_neurons_with_synapses_in', vfb_queries.get_neurons_with_synapses_in)
|
|
670
|
+
setattr(vfb_queries, '_original_get_neurons_with_presynaptic_terminals_in', vfb_queries.get_neurons_with_presynaptic_terminals_in)
|
|
671
|
+
setattr(vfb_queries, '_original_get_neurons_with_postsynaptic_terminals_in', vfb_queries.get_neurons_with_postsynaptic_terminals_in)
|
|
672
|
+
setattr(vfb_queries, '_original_get_components_of', vfb_queries.get_components_of)
|
|
673
|
+
setattr(vfb_queries, '_original_get_parts_of', vfb_queries.get_parts_of)
|
|
674
|
+
setattr(vfb_queries, '_original_get_subclasses_of', vfb_queries.get_subclasses_of)
|
|
675
|
+
setattr(vfb_queries, '_original_get_neuron_classes_fasciculating_here', vfb_queries.get_neuron_classes_fasciculating_here)
|
|
676
|
+
setattr(vfb_queries, '_original_get_tracts_nerves_innervating_here', vfb_queries.get_tracts_nerves_innervating_here)
|
|
677
|
+
setattr(vfb_queries, '_original_get_lineage_clones_in', vfb_queries.get_lineage_clones_in)
|
|
678
|
+
setattr(vfb_queries, '_original_get_neuron_neuron_connectivity', vfb_queries.get_neuron_neuron_connectivity)
|
|
679
|
+
setattr(vfb_queries, '_original_get_neuron_region_connectivity', vfb_queries.get_neuron_region_connectivity)
|
|
680
|
+
setattr(vfb_queries, '_original_get_images_neurons', vfb_queries.get_images_neurons)
|
|
681
|
+
setattr(vfb_queries, '_original_get_images_that_develop_from', vfb_queries.get_images_that_develop_from)
|
|
682
|
+
setattr(vfb_queries, '_original_get_expression_pattern_fragments', vfb_queries.get_expression_pattern_fragments)
|
|
683
|
+
setattr(vfb_queries, '_original_get_anatomy_scrnaseq', vfb_queries.get_anatomy_scrnaseq)
|
|
684
|
+
setattr(vfb_queries, '_original_get_cluster_expression', vfb_queries.get_cluster_expression)
|
|
685
|
+
setattr(vfb_queries, '_original_get_expression_cluster', vfb_queries.get_expression_cluster)
|
|
686
|
+
setattr(vfb_queries, '_original_get_scrnaseq_dataset_data', vfb_queries.get_scrnaseq_dataset_data)
|
|
687
|
+
setattr(vfb_queries, '_original_get_similar_morphology', vfb_queries.get_similar_morphology)
|
|
688
|
+
setattr(vfb_queries, '_original_get_similar_morphology_part_of', vfb_queries.get_similar_morphology_part_of)
|
|
689
|
+
setattr(vfb_queries, '_original_get_similar_morphology_part_of_exp', vfb_queries.get_similar_morphology_part_of_exp)
|
|
690
|
+
setattr(vfb_queries, '_original_get_similar_morphology_nb', vfb_queries.get_similar_morphology_nb)
|
|
691
|
+
setattr(vfb_queries, '_original_get_similar_morphology_nb_exp', vfb_queries.get_similar_morphology_nb_exp)
|
|
692
|
+
setattr(vfb_queries, '_original_get_similar_morphology_userdata', vfb_queries.get_similar_morphology_userdata)
|
|
693
|
+
setattr(vfb_queries, '_original_get_painted_domains', vfb_queries.get_painted_domains)
|
|
694
|
+
setattr(vfb_queries, '_original_get_dataset_images', vfb_queries.get_dataset_images)
|
|
695
|
+
setattr(vfb_queries, '_original_get_all_aligned_images', vfb_queries.get_all_aligned_images)
|
|
696
|
+
setattr(vfb_queries, '_original_get_aligned_datasets', vfb_queries.get_aligned_datasets)
|
|
697
|
+
setattr(vfb_queries, '_original_get_all_datasets', vfb_queries.get_all_datasets)
|
|
698
|
+
setattr(vfb_queries, '_original_get_terms_for_pub', vfb_queries.get_terms_for_pub)
|
|
699
|
+
setattr(vfb_queries, '_original_get_transgene_expression_here', vfb_queries.get_transgene_expression_here)
|
|
211
700
|
|
|
212
|
-
# Replace with cached versions
|
|
701
|
+
# Replace with cached versions in vfb_queries module
|
|
213
702
|
vfb_queries.get_term_info = get_term_info_cached
|
|
214
703
|
vfb_queries.get_instances = get_instances_cached
|
|
704
|
+
vfb_queries.get_templates = get_templates_cached
|
|
705
|
+
vfb_queries.get_related_anatomy = get_related_anatomy_cached
|
|
706
|
+
vfb_queries.get_similar_neurons = get_similar_neurons_cached
|
|
707
|
+
vfb_queries.get_individual_neuron_inputs = get_individual_neuron_inputs_cached
|
|
708
|
+
vfb_queries.get_expression_overlaps_here = get_expression_overlaps_here_cached
|
|
709
|
+
vfb_queries.get_neurons_with_part_in = get_neurons_with_part_in_cached
|
|
710
|
+
vfb_queries.get_neurons_with_synapses_in = get_neurons_with_synapses_in_cached
|
|
711
|
+
vfb_queries.get_neurons_with_presynaptic_terminals_in = get_neurons_with_presynaptic_terminals_in_cached
|
|
712
|
+
vfb_queries.get_neurons_with_postsynaptic_terminals_in = get_neurons_with_postsynaptic_terminals_in_cached
|
|
713
|
+
vfb_queries.get_components_of = get_components_of_cached
|
|
714
|
+
vfb_queries.get_parts_of = get_parts_of_cached
|
|
715
|
+
vfb_queries.get_subclasses_of = get_subclasses_of_cached
|
|
716
|
+
vfb_queries.get_neuron_classes_fasciculating_here = get_neuron_classes_fasciculating_here_cached
|
|
717
|
+
vfb_queries.get_tracts_nerves_innervating_here = get_tracts_nerves_innervating_here_cached
|
|
718
|
+
vfb_queries.get_lineage_clones_in = get_lineage_clones_in_cached
|
|
719
|
+
vfb_queries.get_neuron_neuron_connectivity = get_neuron_neuron_connectivity_cached
|
|
720
|
+
vfb_queries.get_neuron_region_connectivity = get_neuron_region_connectivity_cached
|
|
721
|
+
vfb_queries.get_images_neurons = get_images_neurons_cached
|
|
722
|
+
vfb_queries.get_images_that_develop_from = get_images_that_develop_from_cached
|
|
723
|
+
vfb_queries.get_expression_pattern_fragments = get_expression_pattern_fragments_cached
|
|
724
|
+
vfb_queries.get_anatomy_scrnaseq = get_anatomy_scrnaseq_cached
|
|
725
|
+
vfb_queries.get_cluster_expression = get_cluster_expression_cached
|
|
726
|
+
vfb_queries.get_expression_cluster = get_expression_cluster_cached
|
|
727
|
+
vfb_queries.get_scrnaseq_dataset_data = get_scrnaseq_dataset_data_cached
|
|
728
|
+
vfb_queries.get_similar_morphology = get_similar_morphology_cached
|
|
729
|
+
vfb_queries.get_similar_morphology_part_of = get_similar_morphology_part_of_cached
|
|
730
|
+
vfb_queries.get_similar_morphology_part_of_exp = get_similar_morphology_part_of_exp_cached
|
|
731
|
+
vfb_queries.get_similar_morphology_nb = get_similar_morphology_nb_cached
|
|
732
|
+
vfb_queries.get_similar_morphology_nb_exp = get_similar_morphology_nb_exp_cached
|
|
733
|
+
vfb_queries.get_similar_morphology_userdata = get_similar_morphology_userdata_cached
|
|
734
|
+
vfb_queries.get_painted_domains = get_painted_domains_cached
|
|
735
|
+
vfb_queries.get_dataset_images = get_dataset_images_cached
|
|
736
|
+
vfb_queries.get_all_aligned_images = get_all_aligned_images_cached
|
|
737
|
+
vfb_queries.get_aligned_datasets = get_aligned_datasets_cached
|
|
738
|
+
vfb_queries.get_all_datasets = get_all_datasets_cached
|
|
739
|
+
vfb_queries.get_terms_for_pub = get_terms_for_pub_cached
|
|
740
|
+
vfb_queries.get_transgene_expression_here = get_transgene_expression_here_cached
|
|
741
|
+
|
|
742
|
+
# Also replace in the main vfbquery module namespace (since functions were imported with 'from .vfb_queries import *')
|
|
743
|
+
vfbquery.get_term_info = get_term_info_cached
|
|
744
|
+
vfbquery.get_instances = get_instances_cached
|
|
745
|
+
vfbquery.get_templates = get_templates_cached
|
|
746
|
+
vfbquery.get_related_anatomy = get_related_anatomy_cached
|
|
747
|
+
vfbquery.get_similar_neurons = get_similar_neurons_cached
|
|
748
|
+
vfbquery.get_individual_neuron_inputs = get_individual_neuron_inputs_cached
|
|
749
|
+
vfbquery.get_expression_overlaps_here = get_expression_overlaps_here_cached
|
|
750
|
+
vfbquery.get_neurons_with_part_in = get_neurons_with_part_in_cached
|
|
751
|
+
vfbquery.get_neurons_with_synapses_in = get_neurons_with_synapses_in_cached
|
|
752
|
+
vfbquery.get_neurons_with_presynaptic_terminals_in = get_neurons_with_presynaptic_terminals_in_cached
|
|
753
|
+
vfbquery.get_neurons_with_postsynaptic_terminals_in = get_neurons_with_postsynaptic_terminals_in_cached
|
|
754
|
+
vfbquery.get_components_of = get_components_of_cached
|
|
755
|
+
vfbquery.get_parts_of = get_parts_of_cached
|
|
756
|
+
vfbquery.get_subclasses_of = get_subclasses_of_cached
|
|
757
|
+
vfbquery.get_neuron_classes_fasciculating_here = get_neuron_classes_fasciculating_here_cached
|
|
758
|
+
vfbquery.get_tracts_nerves_innervating_here = get_tracts_nerves_innervating_here_cached
|
|
759
|
+
vfbquery.get_lineage_clones_in = get_lineage_clones_in_cached
|
|
760
|
+
vfbquery.get_neuron_neuron_connectivity = get_neuron_neuron_connectivity_cached
|
|
761
|
+
vfbquery.get_neuron_region_connectivity = get_neuron_region_connectivity_cached
|
|
762
|
+
vfbquery.get_images_neurons = get_images_neurons_cached
|
|
763
|
+
vfbquery.get_images_that_develop_from = get_images_that_develop_from_cached
|
|
764
|
+
vfbquery.get_expression_pattern_fragments = get_expression_pattern_fragments_cached
|
|
765
|
+
vfbquery.get_anatomy_scrnaseq = get_anatomy_scrnaseq_cached
|
|
766
|
+
vfbquery.get_cluster_expression = get_cluster_expression_cached
|
|
767
|
+
vfbquery.get_expression_cluster = get_expression_cluster_cached
|
|
768
|
+
vfbquery.get_scrnaseq_dataset_data = get_scrnaseq_dataset_data_cached
|
|
769
|
+
vfbquery.get_similar_morphology = get_similar_morphology_cached
|
|
770
|
+
vfbquery.get_similar_morphology_part_of = get_similar_morphology_part_of_cached
|
|
771
|
+
vfbquery.get_similar_morphology_part_of_exp = get_similar_morphology_part_of_exp_cached
|
|
772
|
+
vfbquery.get_similar_morphology_nb = get_similar_morphology_nb_cached
|
|
773
|
+
vfbquery.get_similar_morphology_nb_exp = get_similar_morphology_nb_exp_cached
|
|
774
|
+
vfbquery.get_similar_morphology_userdata = get_similar_morphology_userdata_cached
|
|
775
|
+
vfbquery.get_painted_domains = get_painted_domains_cached
|
|
776
|
+
vfbquery.get_dataset_images = get_dataset_images_cached
|
|
777
|
+
vfbquery.get_all_aligned_images = get_all_aligned_images_cached
|
|
778
|
+
vfbquery.get_aligned_datasets = get_aligned_datasets_cached
|
|
779
|
+
vfbquery.get_all_datasets = get_all_datasets_cached
|
|
780
|
+
vfbquery.get_terms_for_pub = get_terms_for_pub_cached
|
|
781
|
+
vfbquery.get_transgene_expression_here = get_transgene_expression_here_cached
|
|
215
782
|
|
|
216
783
|
print("VFBquery functions patched with caching support")
|
|
217
784
|
|
|
@@ -223,5 +790,79 @@ def unpatch_vfbquery_caching():
|
|
|
223
790
|
vfb_queries.get_term_info = getattr(vfb_queries, '_original_get_term_info')
|
|
224
791
|
if hasattr(vfb_queries, '_original_get_instances'):
|
|
225
792
|
vfb_queries.get_instances = getattr(vfb_queries, '_original_get_instances')
|
|
793
|
+
if hasattr(vfb_queries, '_original_get_templates'):
|
|
794
|
+
vfb_queries.get_templates = getattr(vfb_queries, '_original_get_templates')
|
|
795
|
+
if hasattr(vfb_queries, '_original_get_related_anatomy'):
|
|
796
|
+
vfb_queries.get_related_anatomy = getattr(vfb_queries, '_original_get_related_anatomy')
|
|
797
|
+
if hasattr(vfb_queries, '_original_get_similar_neurons'):
|
|
798
|
+
vfb_queries.get_similar_neurons = getattr(vfb_queries, '_original_get_similar_neurons')
|
|
799
|
+
if hasattr(vfb_queries, '_original_get_individual_neuron_inputs'):
|
|
800
|
+
vfb_queries.get_individual_neuron_inputs = getattr(vfb_queries, '_original_get_individual_neuron_inputs')
|
|
801
|
+
if hasattr(vfb_queries, '_original_get_expression_overlaps_here'):
|
|
802
|
+
vfb_queries.get_expression_overlaps_here = getattr(vfb_queries, '_original_get_expression_overlaps_here')
|
|
803
|
+
if hasattr(vfb_queries, '_original_get_neurons_with_part_in'):
|
|
804
|
+
vfb_queries.get_neurons_with_part_in = getattr(vfb_queries, '_original_get_neurons_with_part_in')
|
|
805
|
+
if hasattr(vfb_queries, '_original_get_neurons_with_synapses_in'):
|
|
806
|
+
vfb_queries.get_neurons_with_synapses_in = getattr(vfb_queries, '_original_get_neurons_with_synapses_in')
|
|
807
|
+
if hasattr(vfb_queries, '_original_get_neurons_with_presynaptic_terminals_in'):
|
|
808
|
+
vfb_queries.get_neurons_with_presynaptic_terminals_in = getattr(vfb_queries, '_original_get_neurons_with_presynaptic_terminals_in')
|
|
809
|
+
if hasattr(vfb_queries, '_original_get_neurons_with_postsynaptic_terminals_in'):
|
|
810
|
+
vfb_queries.get_neurons_with_postsynaptic_terminals_in = getattr(vfb_queries, '_original_get_neurons_with_postsynaptic_terminals_in')
|
|
811
|
+
if hasattr(vfb_queries, '_original_get_components_of'):
|
|
812
|
+
vfb_queries.get_components_of = getattr(vfb_queries, '_original_get_components_of')
|
|
813
|
+
if hasattr(vfb_queries, '_original_get_parts_of'):
|
|
814
|
+
vfb_queries.get_parts_of = getattr(vfb_queries, '_original_get_parts_of')
|
|
815
|
+
if hasattr(vfb_queries, '_original_get_subclasses_of'):
|
|
816
|
+
vfb_queries.get_subclasses_of = getattr(vfb_queries, '_original_get_subclasses_of')
|
|
817
|
+
if hasattr(vfb_queries, '_original_get_neuron_classes_fasciculating_here'):
|
|
818
|
+
vfb_queries.get_neuron_classes_fasciculating_here = getattr(vfb_queries, '_original_get_neuron_classes_fasciculating_here')
|
|
819
|
+
if hasattr(vfb_queries, '_original_get_tracts_nerves_innervating_here'):
|
|
820
|
+
vfb_queries.get_tracts_nerves_innervating_here = getattr(vfb_queries, '_original_get_tracts_nerves_innervating_here')
|
|
821
|
+
if hasattr(vfb_queries, '_original_get_lineage_clones_in'):
|
|
822
|
+
vfb_queries.get_lineage_clones_in = getattr(vfb_queries, '_original_get_lineage_clones_in')
|
|
823
|
+
if hasattr(vfb_queries, '_original_get_neuron_neuron_connectivity'):
|
|
824
|
+
vfb_queries.get_neuron_neuron_connectivity = getattr(vfb_queries, '_original_get_neuron_neuron_connectivity')
|
|
825
|
+
if hasattr(vfb_queries, '_original_get_neuron_region_connectivity'):
|
|
826
|
+
vfb_queries.get_neuron_region_connectivity = getattr(vfb_queries, '_original_get_neuron_region_connectivity')
|
|
827
|
+
if hasattr(vfb_queries, '_original_get_images_neurons'):
|
|
828
|
+
vfb_queries.get_images_neurons = getattr(vfb_queries, '_original_get_images_neurons')
|
|
829
|
+
if hasattr(vfb_queries, '_original_get_images_that_develop_from'):
|
|
830
|
+
vfb_queries.get_images_that_develop_from = getattr(vfb_queries, '_original_get_images_that_develop_from')
|
|
831
|
+
if hasattr(vfb_queries, '_original_get_expression_pattern_fragments'):
|
|
832
|
+
vfb_queries.get_expression_pattern_fragments = getattr(vfb_queries, '_original_get_expression_pattern_fragments')
|
|
833
|
+
if hasattr(vfb_queries, '_original_get_anatomy_scrnaseq'):
|
|
834
|
+
vfb_queries.get_anatomy_scrnaseq = getattr(vfb_queries, '_original_get_anatomy_scrnaseq')
|
|
835
|
+
if hasattr(vfb_queries, '_original_get_cluster_expression'):
|
|
836
|
+
vfb_queries.get_cluster_expression = getattr(vfb_queries, '_original_get_cluster_expression')
|
|
837
|
+
if hasattr(vfb_queries, '_original_get_expression_cluster'):
|
|
838
|
+
vfb_queries.get_expression_cluster = getattr(vfb_queries, '_original_get_expression_cluster')
|
|
839
|
+
if hasattr(vfb_queries, '_original_get_scrnaseq_dataset_data'):
|
|
840
|
+
vfb_queries.get_scrnaseq_dataset_data = getattr(vfb_queries, '_original_get_scrnaseq_dataset_data')
|
|
841
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology'):
|
|
842
|
+
vfb_queries.get_similar_morphology = getattr(vfb_queries, '_original_get_similar_morphology')
|
|
843
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology_part_of'):
|
|
844
|
+
vfb_queries.get_similar_morphology_part_of = getattr(vfb_queries, '_original_get_similar_morphology_part_of')
|
|
845
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology_part_of_exp'):
|
|
846
|
+
vfb_queries.get_similar_morphology_part_of_exp = getattr(vfb_queries, '_original_get_similar_morphology_part_of_exp')
|
|
847
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology_nb'):
|
|
848
|
+
vfb_queries.get_similar_morphology_nb = getattr(vfb_queries, '_original_get_similar_morphology_nb')
|
|
849
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology_nb_exp'):
|
|
850
|
+
vfb_queries.get_similar_morphology_nb_exp = getattr(vfb_queries, '_original_get_similar_morphology_nb_exp')
|
|
851
|
+
if hasattr(vfb_queries, '_original_get_similar_morphology_userdata'):
|
|
852
|
+
vfb_queries.get_similar_morphology_userdata = getattr(vfb_queries, '_original_get_similar_morphology_userdata')
|
|
853
|
+
if hasattr(vfb_queries, '_original_get_painted_domains'):
|
|
854
|
+
vfb_queries.get_painted_domains = getattr(vfb_queries, '_original_get_painted_domains')
|
|
855
|
+
if hasattr(vfb_queries, '_original_get_dataset_images'):
|
|
856
|
+
vfb_queries.get_dataset_images = getattr(vfb_queries, '_original_get_dataset_images')
|
|
857
|
+
if hasattr(vfb_queries, '_original_get_all_aligned_images'):
|
|
858
|
+
vfb_queries.get_all_aligned_images = getattr(vfb_queries, '_original_get_all_aligned_images')
|
|
859
|
+
if hasattr(vfb_queries, '_original_get_aligned_datasets'):
|
|
860
|
+
vfb_queries.get_aligned_datasets = getattr(vfb_queries, '_original_get_aligned_datasets')
|
|
861
|
+
if hasattr(vfb_queries, '_original_get_all_datasets'):
|
|
862
|
+
vfb_queries.get_all_datasets = getattr(vfb_queries, '_original_get_all_datasets')
|
|
863
|
+
if hasattr(vfb_queries, '_original_get_terms_for_pub'):
|
|
864
|
+
vfb_queries.get_terms_for_pub = getattr(vfb_queries, '_original_get_terms_for_pub')
|
|
865
|
+
if hasattr(vfb_queries, '_original_get_transgene_expression_here'):
|
|
866
|
+
vfb_queries.get_transgene_expression_here = getattr(vfb_queries, '_original_get_transgene_expression_here')
|
|
226
867
|
|
|
227
868
|
print("VFBquery functions restored to original (non-cached) versions")
|