Hippocampome.org Query Language
Researchers use different criteria to select the neuron type they want to study. For example, a researcher might want to study all the interneurons in the stratum pyramidale of CA1. To manually map the potential neuron types being studied in this example to Hippocampome.org neuron types, one should go to the Morphology page of Hippocampome.org and look under CA1:SP column and choose all the interneurons having soma in this layer. We want to facilitate this task with the search engine. We have designed a query language to easily translate experimental criteria to a machine-readable syntax. We have also designed a search engine to get a query and return neuron types or potential connection among them. The criteria for fetching the presynaptic or postsynaptic neurons are morphology, electrophysiology, markers, firing patterns, and firing pattern parameters. Also, the neuron name, ID, and type can be included in criteria.
The syntax is inspired by Google’s search operators and we have tried to make queries easy to read in as much as possible. All queries should start with either “Neuron:(…)” or “Connection:(Presynaptic:(…), Postsynaptic:(…))” clause, which means we are searching for neuron types or potential connections, respectively. “…” is the place holder for neuronal properties.
The syntax for describing the neuronal morphology, biomarkers, membrane electrophysiology, firing patterns, firing properties, neurotransmitter, and name are “Morphology:(…),” “Markers:(…),” “Electrophysiology:(…),” “FiringPattern:(…),” “FiringPatternParameter:(…),” “Neurotransmitter:(…),” and “Name:(…),” respectively. Here, … is specific to the neuronal property. Different neuronal properties can be linked with “AND,” “OR,” or “NOT” logical operators. To include and exclude specific neuronal types we allow “Include:(…)” and “Exclude:(…)” clauses.
To search for neurons the following format can be used.
Neuron:(
Morphology:(…)
AND/OR/NOT
Electrophysiology:(…)
AND/OR/NOT
Markers:(…)
AND/OR/NOT
FiringPattern:(…)
AND/OR/NOT
FiringPatternParameters:(…)
AND/OR/NOT
Name:(…)
AND/OR/NOT
Neurotransmitter:(…),
Include:(…),
Exclude:(…)
)
To search for potential connections the following format can be used.
Connection:(
Presynaptic:(
Morphology:(…)
AND/OR/NOT
Electrophysiology:(…)
AND/OR/NOT
Markers:(…)
AND/OR/NOT
FiringPattern:(…)
AND/OR/NOT
FiringPatternParameters:(…)
AND/OR/NOT
Name:(…)
AND/OR/NOT
Neurotransmitter:(…),
Include:(…),
Exclude:(…)
),
Postsynaptic:(
Morphology:(…)
AND/OR/NOT
Electrophysiology:(…)
AND/OR/NOT
Markers:(…)
AND/OR/NOT
FiringPattern:(…)
AND/OR/NOT
FiringPatternParameters:(…)
AND/OR/NOT
Name:(…)
AND/OR/NOT
Neurotransmitter:(…),
Include:(…),
Exclude:(…)
)
)
Note:
· Although the formats presented in this document are indented and cross multiple lines for legibility, the search engine only accepts query strings presented in a single continuous line.
· Multiple instances of each clause are allowed except Include and Exclude clauses, for which only one instance is allowed. For example, Neuron:(Morphology:(…) AND Morphology:(…)) is a valid clause.
· You should avoid using the Include and Exclude clauses as much as possible, which contrast with the objective of the search engine.
· On the result page, “source” means presynaptic neuron, whereas “destination” means postsynaptic neuron.
Information about the presence “1” or the absence “0” of dendrites, axons and soma of neurons in a hippocampal layer can be explained with “Dendrites:(…),” “Axons:(…),” and “Soma:(…)” clauses. Any number of these clauses can be joined with AND/OR/NOT. Here, … are morphological criteria, which should include subregion and layer-values joined by a colon, i.e. Subregion:LayerValues.
Subregion can be either “DG,” “CA3,” “CA2,” “CA1,” “SUB,” or “EC.”
LayerValues is a list of “1”s, “0”s, or “?”s.
1 = present,
0 = absent, and
“?” = present or absent.
LayerValues length should be equal to the number of layers present within the given subregion in the order present in the Hippocampome.org morphology page.
In other words, DG, CA2, and CA1 need four layer-values, CA3 needs five, SUB needs three, and EC needs six, in the order presented in the following table.
Subregion |
: |
Layer |
|||||
DG |
: |
SMo |
SMi |
SG |
H |
|
|
CA3 |
: |
SLM |
SR |
SL |
SP |
SO |
|
CA2 |
: |
SLM |
SR |
SP |
SO |
|
|
CA1 |
: |
SLM |
SR |
SP |
SO |
|
|
SUB |
: |
SM |
SP |
PL |
|
|
|
EC |
: |
I |
II |
III |
IV |
V |
VI |
A colon is necessary but parentheses are not if only one morphological criterion is present. For example,
· “Morphology:Axons:DG:???1” means axons were present in DG Hilus.
· “Morphology:Dendrites:DG:11?0” means dendrites were present in DG outer Stratum Moleculare (SMo: at 1st index of layer values) and in DG inner Stratum Moleculare (SMi: 2nd index) but not in DG Hilus (H: 4th index), while presence or absence of dendrites in DG Stratum Granulosum (SG: 3rd index) is unknown.
· “Morphology:Soma:CA3:00000” means soma were not present in any layer of CA3.
· “Morphology:(Axons:DG:0??? AND (Dendrites:DG:1111 OR Soma:CA3:10001))” is an example that combines different criteria.
Layer values greater than one are allowed and, like one itself, they indicate presence.
· Dendrites:DG:2222 is equivalent to Dendrites:DG:1111.
A neuron can either express a marker “+,” not express it “-,” or have a mixed profile “±.” The information we have for the presence or absence of markers can be either based on direct “D” or inferential “I” evidence.
· “Markers:D+:CCK” finds all neuron types that have a positive direct inference for CCK.
· “Markers:(I+:CCK OR I±:CB)” finds all neuron types that have positive inference for CCK or mixed inference for CB.
· “Markers:(D+:CCK OR (D-:CB AND D-:PV))” is an example for multiple marker criteria.
The syntax is similar to markers, except that here we have only direct inferences.
· “FiringPattern:D+:ASP.” finds all neuron types that have the firing pattern “ASP.”
· “FiringPattern:(D+:ASP. AND D+:FASP.)” finds all neuron types that have the firing patterns “ASP.” and “FASP.”
· “FiringPattern:(D-:PSWB AND (D+:ASP. OR D-:FASP.))” is an example for multiple firing-pattern criteria.
These are numerical parameters for which we want to set a cutoff point.
· “Electrophysiology:Rin:<100” finds neurons having an input-resistance of less than 100 MΩ.
· “Electrophysiology:max_fr:>100” or “Electrophysiology:max_fr>100” find all neuron types that have a maximum firing rate greater than 100 Hz.
· “Electrophysiology:(max_fr:>50 OR Vrest:>=-65)” finds all neuron types that have a maximum firing rate greater than 50 Hz or a resting potential greater than or equal to -65 mV.
· “Electrophysiology:((max_fr:>29.89 OR Vrest:>=4.3) AND Rin:147)” is an example of multiple criteria.
· “FiringPatternParameter:delay_ms:>2” finds all neuron types that have a delayed firing greater than 2 ms.
· “FiringPatternParameter:(delay_ms:>2 OR istim_pa:<=4.3)” is an example of multiple criteria.
Note: For equal either use “:” or “=,” but not both at the same time. For example, “Electrophysiology:Rin:=147” is Invalid.
Search based on the formal neuron names. Multiple criteria are allowed. Space, ' or " characters are not allowed instead you can use the AND condition.
· Name:(Interneuron AND Specific) finds any neuron named “Interneuron Specific.”
· Name:((Interneuron AND Specific) OR Basket OR Axo-Axonic) is an example of multiple criteria.
A neuron can be either “Excitatory” or “Inhibitory.” We also recognize the “Both” flag.
· “Connection:(Presynaptic:(Neurotransmitter:Both), Postsynaptic:(Neurotransmitter:Both))” returns all the potential connections in the Hippocampome.org
Whenever search by neuronal properties needs to be trimmed, these commands are used. You need to know the numerical neuron IDs to use these commands.
· “Include:1000” adds DG Granule cell to the list of presynaptic or postsynaptic neuron types.
· “Include:(1000,1002,1005)” adds DG Granule, Mossy, and MOLAX cells to the list of presynaptic or postsynaptic neuron types.
Note: The search engine returns the neuron IDs. If you go to the neuron page of each neuron, you can find the neuron ID in the URL.
Morphology |
Markers |
Electrophysiology |
FiringPattern |
FiringPatternParameters |
axons |
CB |
Vrest |
ASP. |
istim_pa |
dendrites |
CR |
Rin |
ASP.ASP. |
tstim_pa |
soma |
PV |
tm |
ASP.NASP |
delay_ms |
|
CB1 |
Vthresh |
ASP.SLN |
pfs_ms |
|
Mus2R |
fast_AHP |
D. |
swa_mv |
|
Sub P Rec |
AP_ampl |
D.ASP. |
nisi |
|
5HT-3 |
AP_width |
D.FASP.NASP |
isiav_ms |
|
Gaba-a-alpha |
max_fr |
D.NASP |
sd_ms |
|
mGluR1a |
slow_AHP |
D.PSTUT |
max_isi_ms |
|
vGluT3 |
sag_ratio |
D.TSWB.NASP |
min_isi_ms |
|
CCK |
|
FASP. |
first_isi_ms |
|
ENK |
|
FASP.ASP. |
isiav1_2_ms |
|
NPY |
|
FASP.NASP |
isiav1_3_ms |
|
SOM |
|
FASP.SLN |
isiav1_4_ms |
|
VIP |
|
NASP |
last_isi_ms |
|
NG |
|
PSTUT |
isiavn_n_1_ms |
|
alpha-actinin-2 |
|
PSWB |
isiavn_n_2_ms |
|
CoupTF II |
|
TSTUT. |
isiavn_n_3_ms |
|
nNOS |
|
TSTUT.ASP. |
maxisi_minisi |
|
RLN |
|
TSTUT.NASP |
maxisin_isin_m1 |
|
DYN |
|
TSTUT.SLN |
maxisin_isin_p1 |
|
NKB |
|
TSWB.NASP |
ai |
|
PPTA |
|
TSWB.SLN |
rdmax |
|
vGluT2 |
|
|
df |
|
GAT-1 |
|
|
sf |
|
CGRP |
|
|
tmax_scaled |
|
mGluR2/3 |
|
|
isimax_scaled |
|
mGluR5 |
|
|
isiav_scaled |
|
Prox1 |
|
|
sd_scaled |
|
GABAa \delta |
|
|
slope |
|
VILIP |
|
|
intercept |
|
Mus1R |
|
|
slope1 |
|
Mus3R |
|
|
intercept1 |
|
Mus4R |
|
|
css_yc1 |
|
ErbB4 |
|
|
xc1 |
|
CaM |
|
|
slope2 |
|
Y1 |
|
|
intercept2 |
|
Man1a |
|
|
slope3 |
|
Bok |
|
|
intercept3 |
|
PCP4 |
|
|
xc2 |
|
AMIGO2 |
|
|
yc2 |
|
AMPAR 2/3 |
|
|
f1_2 |
|
Disc1 |
|
|
f1_2crit |
|
PSA-NCAM |
|
|
f2_3 |
|
BDNF |
|
|
f2_3crit |
|
p-CREB |
|
|
f3_4 |
|
SCIP |
|
|
f3_4crit |
|
Math-2 |
|
|
p1_2 |
|
Neuropilin2 |
|
|
p2_3 |
|
vGAT |
|
|
p3_4 |
|
mGluR1 |
|
|
p1_2uv |
|
Caln |
|
|
p2_3uv |
|
vGlut1 |
|
|
p3_4uv |
|
mGluR2 |
|
|
isii_isii_m1 |
|
mGluR3 |
|
|
i |
|
SPO |
|
|
isiav_i_n_isi1_i_m1 |
|
GABAa\alpha 2 |
|
|
maxisij_isij_m1 |
|
GABAa\alpha 3 |
|
|
maxisij_isij_p1 |
|
GABAa\alpha 4 |
|
|
nisi_c |
|
GABAa\alpha 5 |
|
|
isiav_ms_c |
|
GABAa\alpha 6 |
|
|
maxisi_ms_c |
|
GABAa\beta 1 |
|
|
minisi_ms_c |
|
GABAa\beta 2 |
|
|
first_isi_ms_c |
|
GABAa\beta 3 |
|
|
tmax_scaled_c |
|
GABAa\gamma 1 |
|
|
isimax_scaled_c |
|
GABAa\gamma 2 |
|
|
isiav_scaled_c |
|
mGluR5a |
|
|
sd_scaled_c |
|
GAT-3 |
|
|
slope_c |
|
ChAT |
|
|
intercept_c |
|
EAAT3 |
|
|
slope1_c |
|
GlyT2 |
|
|
intercept1_c |
|
mGluR7a |
|
|
css_yc1_c |
|
mGluR8a |
|
|
xc1_c |
|
MOR |
|
|
slope2_c |
|
vAChT |
|
|
intercept2_c |
|
AChE |
|
|
slope3_c |
|
Kv3.1 |
|
|
intercept3_c |
|
Cx36 |
|
|
xc2_c |
|
Sub P |
|
|
yc2_c |
|
Id-2 |
|
|
f1_2_c |
|
AR-beta1 |
|
|
f1_2crit_c |
|
AR-beta2 |
|
|
f2_3_c |
|
SATB1 |
|
|
f2_3crit_c |
|
TH |
|
|
f3_4_c |
|
NECAB1 |
|
|
f3_4crit_c |
|
mGluR4 |
|
|
p1_2_c |
|
Chrna2 |
|
|
p2_3_c |
|
SATB2 |
|
|
p3_4_c |
|
Ctip2 |
|
|
p1_2uv_c |
|
CXCR4 |
|
|
p2_3uv_c |
|
GABA-B1 |
|
|
p3_4uv_c |
|
GluA2 |
|
|
m_2p |
|
GluA1 |
|
|
c_2p |
|
GluA3 |
|
|
m_3p |
|
GluA4 |
|
|
c1_3p |
|
PPE |
|
|
c2_3p |
|
CRF |
|
|
m1_4p |
|
|
|
|
c1_4p |
|
|
|
|
m2_4p |
|
|
|
|
c2_4p |
|
|
|
|
n_isi_cut_3p |
|
|
|
|
n_isi_cut_4p |
|
|
|
|
f_12 |
|
|
|
|
f_crit_12 |
|
|
|
|
f_23 |
|
|
|
|
f_crit_23 |
|
|
|
|
f_34 |
|
|
|
|
f_crit_34 |
|
|
|
|
p_12 |
|
|
|
|
p_12_uv |
|
|
|
|
p_23 |
|
|
|
|
p_23_uv |
|
|
|
|
p_34 |
|
|
|
|
p_34_uv |
|
|
|
|
m_fasp |
|
|
|
|
c_fasp |
|
|
|
|
n_isi_cut_fasp |
You can find hundreds of examples on the Evidence tab of our Synaptome spreadsheet.
Connection:(Presynaptic:(Morphology:Soma:DG:0??? AND Neurotransmitter:Inhibitory), Postsynaptic:(FiringPatternParameter:delay_ms:>0 AND Markers:D-:CCK AND Electrophysiology:vrest<0))
The link http://hippocampome.org/csv2db/search_engine_json.php?query_str= behaves like an API. You need to put your query after “=” sign. For example, the URL
http://hippocampome.org/csv2db/search_engine_json.php?query_str=Connection:(Presynaptic:(Neurotransmitter:Inhibitory AND Morphology:(Axons:CA3:??1?? OR Soma:CA3:??1??)), Postsynaptic:(Morphology:(Soma:DG:??1?) AND Name:Granule)) |
After URL encoding and resolving, you get a stringified JSON. Parsing the results, you can access a JSON database of potential connections.
{ "1":{ "source_id":"1026", "destination_id":"1000" }, "2":{ "source_id":"2019", "destination_id":"1000" } } |
If there was an error, you may want to detect it with regex /\s*<pre>\s*?<\/pre>/ before parsing the results.