Open russelljjarvis opened 6 years ago
This approach works on the neuron, but only for preestablished neuronunit tests.
from neuronunit import tests as nu_tests, neuroelectro
from neuronunit.tests import passive, waveform, fi
cholinergic = {'neuron':'115'}
import neuronunit
from neuronunit.tests import dynamics# import ISITest, LocalVariationTest
from neuronunit.tests.dynamics import ISITest, LocalVariationTest
cholinergic = {'neuron':115}
test_class_params = [(fi.RheobaseTest,None),
(passive.InputResistanceTest,None),
(passive.TimeConstantTest,None),
(passive.CapacitanceTest,None),
(passive.RestingPotentialTest,None),
(waveform.InjectedCurrentAPWidthTest,None),
(waveform.InjectedCurrentAPAmplitudeTest,None),
(waveform.InjectedCurrentAPThresholdTest,None),
(dynamics.ISITest,None),
(dynamics.LocalVariationTest,None)
]
chol_observations = []
for cls,params in test_class_params:
neuron_ = neuroelectro.NeuroElectroData.set_neuron('115')
print(dir(neuroelectro.NeuroElectroData))
#['n']=115
print(dir(cls.neuroelectro_summary_observation))
print(dir(cls))
print(cls.neuroelectro_pooled_observation(neuron_))
chol_observations.append(cls.neuroelectro_summary_observation(neuron_))
#print(chol_observations)
Getting more to the root of NE API problem, I have found that neuronunit.tests.base VmTest
has the neuroelectro methods:
@classmethod
def neuroelectro_pooled_observation(cls, neuron, cached=False, quiet=True):
reference_data = neuroelectro.NeuroElectroPooledSummary(
neuron = neuron, # Neuron type lookup using the NeuroLex ID.
ephysprop = {'name': cls.ephysprop_name}, # Ephys property name in
# NeuroElectro ontology.
cached = cached
)
reference_data.get_values(quiet=quiet) # Get and verify summary data
# from neuroelectro.org.
observation = {'mean': reference_data.mean*cls.units,
'std': reference_data.std*cls.units,
'n': reference_data.n}
return observation
It looks like ephys_prop can be any name from the ontology. https://neuroelectro.org/ephys_prop/ontology/
However CV is not included in the ontology, even though it is in this data table:
https://neuroelectro.org/data_table/3099/
Firing rate (Hz)Concept: firing frequency | Coefficient of variation (CV)
I am unsure if thats a problem. A work around might involve just hardcoding in:
$ 0.19 ± 0.10 $
For spontaneous firing rate (Ephys property 18 in the neuroelectro ontology) you can do https://neuroelectro.org/api/1/nes/?n=115&e=18
x = NeuroElectroSummary()
x.set_neuron(id=115)
x.set_ephysprop(id=18)
x.get_values()
or x = NeuroElectroSummary(neuron=115,ephysprop=18).get_values()
Notedd.
@rgerkin Right syntax to query neuroelectro API to get pooled summary observations on neuron number 115
In this notebook I use I want to interrogate subject high CV2 ISIs to neuronunit testing of CV2 and local variation.
I want to use neuroelectro pooled summary observations of CV2 and firing rates where they exist. https://neuroelectro.org/neuron/115/ https://neuroelectro.org/data_table/3099
The following code snippet outlines my attempt to get neuroelectro data for neuron 115: https://github.com/russelljjarvis/DAnalysisCNeuro/blob/master/Spike_Analysis.ipynb#L110-L160
{'neuron': 115}