RgcFrequencySensitivityContrastScale

From VISTA LAB WIKI

Jump to: navigation, search
Frequency sensitivity curve, for two different receptive fields.

This function builds a frequency sensitivity curve using spike output, with the contrast sensitivity results outputted by rgcContrastSensitivityISET.





Contents

[edit] Use of the function

 [contrastAt80 contrast cpd pCorrect results] = rgcFrequencySensitivityContrastScale(rgcP,rfscoeffs,rfstd,contrast,cpd,accuracyValue,stimulusLength,mLum, spikeRateGain,logFile, saveDirectory, saveLinTS, saveSpikeData, alreadyComputedLinTS, alreadyComputedBlankLinTS, plotResContrast, uncoupled, dT

[edit] Input

  • rgcP  : object of the rgcParameters class, several layers accepted.
  • rfscoeffs : coefficients of the center and surround (default {[1 -0.8]})
  • rfstd  : RF standard deviation (default {{[5 0; 0 5] [10 0; 0 10]}})
  • contrast  : contrast values used to fit the Weibull curve (default [0.05 0.075 0.1 0.15 0.2 0.25 0.3])
  • cpd  : cycle per degree values at with you want to compute the sensitivity (default [0.5 1 2 4 8 16 32])
  • accuracyValue  : classification accuracy (in [0,1]) used to find the contrast threshold contrastAt80, for each cpd value. Default = 0.8
  • stimulusLength : stimulus length (ms) used for the classification (default 500)
  • mLum : mean luminosity of the scene. (default 300 cd/m2)
  • spikeRateGain : gain on the poisson spike rate. Higher gain => more spikes.
  • logFile : file to save the text output to. Useful for tracking down errors. (default = no saving)
  • saveDirectory : directory to save data to. (default = no saving)
  • saveLinTS : 1 if you want to save the linTS to file. (default = no saving)
  • saveSpikeData : 1 if you want to save the spikeData to file.(default = no saving)
  • alreadyComputedLinTS : This is not robust at all and will probably break with several layers. Precomputed linTS for grating images, if you don't want to recompute it. Only the spiking will be computed.

WARNING : awful format : alreadyComputedLinTS{cpdNumber}{contrastNumber,trainOrTest}{layerNumber} = double[nRGC x nTimeFrames]

  • alreadyComputedBlankLinTS : same for blank images.

WARNING : awful format : alreadyComputedBlankLinTS = cell(1,2) : computed twice (for training and test.)

  • plotResContrast : 1 if plot and save the results for each cpd (results of rgcContrastSensitivityISET + Weibull fit)
  • uncoupled : uncouple the layer. This leaves the feedback from fbTR, and disables the coupling form cpTR. Only works if you don't input an rgcP object.
  • dT : sampling time (=exposure time for each sensor sample, and sampling time for spiking computation.)

[edit] Output

  • contrastAt80 : computed sensitivity at the given cpds
  • pCorrect  : cell array, each cell corresponds to (the correctly classified fraction of the samples for every given contrast) for every cpd.
  • results  : fitted Weibul for every cpd (see rgcFitWeibull)

[edit] Remarks

  • If dT is too small, the contrast sensitivity curves are too noisy and the Weibull fit is useless. Using dT=4ms works fine.
  • The contrast values are in [0,1], NOT in percentage.
  • About the Weibull fit : Because the function that fits our curve is a scaled and translated Weibull function, there is ambiguity as to what contrast value corresponds to what accuracy threshold. When we say "contrast at 80% accuracy", we mean 80% accuracy on the sensitivity curve, which corresponds to 0.8*2 -1 = 0.6 on a normal Weibull.
  • Because contrasts are between 0 and 1, we should get contrast sensitivities between infinity(perfect) and 1(bad). In practice, we can get values below 1 because the contrast value is taken on the Weibull curve, which can be really bad when the data is really noisy. Usually, this is when the sensitivity would have been very low anyway, so it doesn't really matter.
Personal tools