Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Werner Van Geit
@wvangeit
Welcome to the BlueBrain/eFEL chatroom
markovg
@markovg
eFEL has a chatroom? The wonders of modern technology ... !
Werner Van Geit
@wvangeit
Yeah, and it will even talk to us if its ci build fails :)
Derek
@derekhoward
Hi, I was wondering if anyone had some insight to help me in changing the dependency file to change versions used for feature extractions. I want to use the Spikecount using the newer (LibV4) peak_indices. I've tried altering the dependency file and setting the new file location, but the Spikecount function only seems to return NaNs.
Derek
@derekhoward
I'm not sure if I correctly altered the dependency file or if I've made some other mistake. From the documentation, I see LibV4 peak_indices has a min_spike_height as required parameter but I'm also unclear as to how to set that parameter.
Werner Van Geit
@wvangeit
Hi, yes you're probably right in your analysis
if min_spike_height is not set that feature will indeed return a NaN
and there is no function in the python api that enables you to set that variable
Werner Van Geit
@wvangeit
Ok, I've extended the API, so that a user can set these kind of variables
if you download/install the latest version of the eFEL, you should be able to do 'efel.setDoubleSetting("min_spike_height", 20.0)'
let me know if this helps.
otherwise it might be useful if you could share a small example that reproduces the problem, then I can debug further
@derekhoward, sorry, I forgot to mention your username in the previous messages. See above for my reply
Werner Van Geit
@wvangeit
for future reference: the issue above was in the end fixed using the 'Threshold' setting in Libv4:peak_indices instead of 'threshold'. A unit test was added for this specific case.
Russell Jarvis
@russelljjarvis
Hi,
I am wondering if it would be easy to modify the source code of eFEL such that the method
efel.getFeatureValues()
Returns a dictionary containing 0 dict values when the function is called with waveform features that don't exist (for example you call getFeatureValues with spikeCount, but the waveform contains no spikes)? Currently feel.getFeatureValues() returns a dictionary containing None type dict values if you call it with arguments pertaining to features that don't actually exist in waveforms. However the None dictionary values make the dictionary difficult to iterate over. Leading to code such as: result = efel.getFeatureValues(
traces, [
'voltage_base', 'Spikecount', 'min_voltage_between_spikes', 'AP_height', 'steady_state_voltage_stimend'])
assert (len(result)!=0)feature_list in result[0].items():
if feature_list is not None and len(feature_list) > 0:
feature_values[feature_name] = np.mean(feature_list)
I think eFEL would be easier to work with if SpikeCount returned zero instead of None, if the neuron doesn't spike. Which part of the source code should I modify?
Werner Van Geit
@wvangeit
@russelljjarvis I think there are slightly two different issues here. I agree that Spikecount should return 0 when there is no spike in the trace, and this is actually also the expect behavior. There is even a test in the eFEL that checks this feature on an empty trace, and makes sure 0 is returned. Could you share the trace you have problems with, so that I can see if I can fix Spikecount for that trace ?
@russelljjarvis however, I'm not in favour of returning 0 in general when a feature fails. '0' could have a specific meaning for a certain feature (which might be different from having the feature fail), the reason to return 'None' is distinguish these cases
Werner Van Geit
@wvangeit
@russelljjarvis btw, you maybe attach the trace by creating an issue for this
Russell Jarvis
@russelljjarvis
Hi Werner, I yes thats fine. I will get those traces for you and attach them to an issue in eFEL on github. I guess its also possible to have a dictionary that is full on None value items which is also easy to iterate over, thats probably your intention too. I will also send the error message when I attempt to iterate over the dict containing None items. Also unrelated is there an existing feature for removing spikes from a trace, and returning only a trace filled with subthreshold membrane potential deflections?
Werner Van Geit
@wvangeit
@russelljjarvis I don't think that the eFEL has features that return full traces. I think it might be possible, with possibly one issue. Normall the eFEL interpolates the traces before doing the feature extraction. So the resulting trace might have been interpolate. If you want such a feature, you can always create a request using a github issue. If you could provide a python 'pseudocode' implementation that would be great.
Russell Jarvis
@russelljjarvis
Hi Werner, I am also wondering what to do with the 'stim_start', and 'stim_end' dictionary keys if there is no stimulus in the period you are measuring spiking? For-instance I have a signal from an off type Retinal Ganglion cell which spikes spontaneously. A negative current injection has been applied to the signal, however the membrane potential recording has been broken down into 4 different time blocks, which are each analysed individually. The fourth time block has no stimulus, so how can I assign the keys 'stim_start', and 'stim_end' a zero value without causing an error?
Werner Van Geit
@wvangeit
hi @russelljjarvis, did you try to set the stim_start to 0, and stim_end to the max time in the trace ?
This should normally work, let me know if it generates errors for a certain feature
Russell Jarvis
@russelljjarvis
Okay sure. No I have not tried that yet.
Russell Jarvis
@russelljjarvis
I was just thinking that it would be cool if you were not forced to describe stim_on and stim_off keys if the recording is kind of stimulus agnostic.