File: DefaultPhotoreceptors.m

package info (click to toggle)
psychtoolbox-3 3.0.19.14.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,796 kB
  • sloc: ansic: 176,245; cpp: 20,103; objc: 5,393; sh: 2,753; python: 1,397; php: 384; makefile: 193; java: 113
file content (239 lines) | stat: -rw-r--r-- 11,592 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
function photoreceptors = DefaultPhotoreceptors(kind)
% photoreceptors = DefaultPhotoreceptors(kind)
% 
% Return a structure containing default sources 
% for photoreceptor complements of various kinds.
%
% Available kinds
%   LivingHumanFovea (Default) - Human foveal cones in the eye
%   CIE2Deg - Leads to CIE 2-Deg fundamentals
%   CIE10Deg - Leads to CIE 10-Deg fundamentals
%   LivingHumanMelanopsin - Most recent melanopsin spectral sensitivity in living eye.
%   LivingHumanMelanopsinTsujimura2010 - Older estimate of melanopsin gc spectral sensitivity in living eye
%   LivingDog - Canine
%   GuineaPig - Guinea pig in dish
%
% See also:  FillInPhotoreceptors, PrintPhotoreceptors, RetIrradianceToIsoRecSec
%  IsomerizationsInEyeDemo, IsomerizationsInDishDemo, ComputeCIEConeFundamentals,
%  RodFundamentalTest, MelanopsinFundamentalTest.
%
% 7/25/03  dhb  Wrote it.
% 12/04/07 dhb  Added dog parameters
% 8/14/11  dhb  Added fieldSizeDegrees and ageInYears fields to photoreceptors for LivingHumanFovea case.
%               These defaults match the CIE standard.
% 4/20/12  dhb  Add LivingHumanMelanopsin
% 5/10/12  dhb  Changed name for LivingHumanMelanopsin to postpend Tsujimura2010
% 8/12/13  dhb  Change field order to make printouts look nicer.
% 11/13/13 dhb  Add 'LivingHumanRod' and 'LivingHumanMelanopsin' options.
% 5/26/14  dhb  Add pupilDimater.value = [] to fix FillInPhotoreceptors.
% 1/11/21  dhb  Comment tuning.

% Default
if (nargin < 1 || isempty(kind))
	kind = 'LivingHumanFovea';
end

% Fill it in
switch (kind)
    % CIE 2-Deg fundamentals
    case 'CIE2Deg'
        photoreceptors.species = 'Human';
        photoreceptors.types = {'FovealLCone' 'FovealMCone' 'FovealSCone'};
        photoreceptors.nomogram.S = WlsToS((390:5:780)');
		photoreceptors.OSlength.source = 'None';
		photoreceptors.ISdiameter.source = 'Rodieck';
		photoreceptors.specificDensity.source = 'None';
        photoreceptors.axialDensity.source = 'CIE';
        photoreceptors.nomogram.source = 'None';
        photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.fieldSizeDegrees = 2;
        photoreceptors.ageInYears = 32;
        photoreceptors.pupilDiameter.value = 3;
		photoreceptors.eyeLengthMM.source = 'Rodieck';
        photoreceptors.absorbance = 'log10coneabsorbance_ss';
		photoreceptors.lensDensity.source = 'CIE';
        photoreceptors.macularPigmentDensity.source = 'CIE';
    
    % CIE 10-Deg fundamentals
    case 'CIE10Deg'
        photoreceptors.species = 'Human';
        photoreceptors.types = {'LCone' 'MCone' 'SCone'};
        photoreceptors.nomogram.S = WlsToS((390:5:780)');
		photoreceptors.OSlength.source = 'None';
		photoreceptors.ISdiameter.source = 'Webvision';
		photoreceptors.specificDensity.source = 'None';
        photoreceptors.axialDensity.source = 'CIE';
        photoreceptors.nomogram.source = 'None';
        photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.fieldSizeDegrees = 10;
        photoreceptors.ageInYears = 32;
        photoreceptors.pupilDiameter.value = 3;
		photoreceptors.eyeLengthMM.source = 'Rodieck';
        photoreceptors.absorbance = 'log10coneabsorbance_ss';
		photoreceptors.lensDensity.source = 'CIE';
        photoreceptors.macularPigmentDensity.source = 'CIE';
   
   % LivingHumanRod
   %
   % The choices of values here were chosen in the Brainard
   % lab (by Manuel Spitschan) to provide a pretty good fit to the CIE
   % 1924 scotopic sensitivity curve.  Many combinations of lambda max,
   % nomogram, and axial densitiy will provide a good fit.  We chose the ones
   % below because the lambda-max and axial density parameters seem
   % in accord with values in the literature and the fit is quite good.
   % Ref [1] gives lambda max of 491, and the average of the rod axial density values in
   % [2] and [3] is the value 0.334.
   %
   % See RodFundamentalTest to obtain a plot of the agreement with the tabulated 1924 function.
   %
   % Depending on what you are using this for, you may want to override the default 3 mm pupil.
   %
   % [1] Baylor DA, Nunn BJ, Schnapf JL. The photocurrent, noise, and spectral
   % sensitivity of rods of the monkey Macaca fascicularis. J Physiol. 1984; 357: 575?607.
   %
   % [2] Alpern, M. & Pugh, E.N. (1974). The density and photosensitivity of human rhodopsin in
   % the living retina. Journal of Physiology, London, 237, 341-370. [0.342 from densitometry]
   %
   % [3] Zwas, F. & Alpern, M. (1976). The density of human rhodopsin in the rods. Vision Research 16,
   % 121-127. [0.318 from brightness matching, 0.342 from dark adaptation curves]
   case 'LivingHumanRod'
        photoreceptors.species = 'Human';
        photoreceptors.types = {'Rod'};
        photoreceptors.nomogram.S = WlsToS((390:5:780)');
		photoreceptors.OSlength.source = 'None';
		photoreceptors.ISdiameter.source = 'Webvision';
		photoreceptors.specificDensity.source = 'None';
        photoreceptors.axialDensity.source = 'Value Provided Directly';
        photoreceptors.axialDensity.value = 0.334;
        photoreceptors.nomogram.source = 'Govardovskii';
        photoreceptors.nomogram.lambdaMax = 491;
        photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.fieldSizeDegrees = 10;
        photoreceptors.ageInYears = 32;
        photoreceptors.pupilDiameter.value = 3;
		photoreceptors.eyeLengthMM.source = 'Rodieck';
		photoreceptors.lensDensity.source = 'CIE';
        photoreceptors.macularPigmentDensity.source = 'CIE';
        
   % LivingHumanMelanopsin
   %
   % The choices of values here were chosen in the Brainard
   % lab to privde an estimate of a reasonable fundamental for
   % melanopin ipRGCs.  We follow work from the Lucas lab [1,2]
   % and use a very low (essentially zero) axial density and no
   % macular pigment (because the ipRGCs are in front of most of
   % the macular pigment, as we understand it [3].  We inherit the
   % CIE standard for lens density, and this can be adjusted via
   % the CIE formulae by overriding the default age and pupil size
   % parameters.
   %
   % [1] Enezi, J, Revell, V, Brown, T, Wynne, J, Schlangen, L. & Lucas, R. (2011).
   % A "melanopic" spectral efficiency function predicts the sensitivity of melanopsin
   % photoreceptors to polychromatic lights. J Biol Rhythms 26(4), 314-23.
   % doi: 10.1177/0748730411409719
   %
   % [2] Brown, T, Allen, A, Al-Enezi, J., Wynne, J., Schlangen, L., Hommes, V. & Lucas, R. (2013).
   % The Melanopic Sensitivity Function Accounts for Melanopsin-Driven Responses in Mice under
   % Diverse Lighting Conditions. PLoS One, 8(1), e53583. doi: 10.1371/journal.pone.0053583.
   %
   % [3] Vienot, F., Brettel, H., Dang, T.V., Le Rohellec, J. (2012). Domain of metamers exciting
   % intrinsically photosensitive retinal ganglion cells (ipRGCs) and rods. J Opt Soc Am A Opt
   % Image Sci Vis. 29(2): A366-76. doi: 10.1364/JOSAA.29.00A366.
    case 'LivingHumanMelanopsin'
        photoreceptors.species = 'Human';
        photoreceptors.types = {'Melanopsin'};
        photoreceptors.nomogram.S = WlsToS((390:5:780)');
        photoreceptors.axialDensity.source = 'Value provided directly';
        photoreceptors.axialDensity.value = 0.015;
        photoreceptors.nomogram.source = 'Govardovskii';
        photoreceptors.nomogram.lambdaMax = 480;
        photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.fieldSizeDegrees = 10;
        photoreceptors.ageInYears = 32;
        photoreceptors.pupilDiameter.value = 3;
        photoreceptors.lensDensity.source = 'CIE';
        photoreceptors.macularPigmentDensity.source = 'None';
        
	case 'LivingHumanFovea'
		photoreceptors.species = 'Human';
        photoreceptors.types = {'FovealLCone' 'FovealMCone' 'FovealSCone'};
        photoreceptors.nomogram.S = [380 1 401];
		photoreceptors.OSlength.source = 'Rodieck';
		photoreceptors.ISdiameter.source = 'Rodieck';
		photoreceptors.specificDensity.source = 'Rodieck';
		photoreceptors.nomogram.source = 'StockmanSharpe';
		photoreceptors.nomogram.lambdaMax = [558.9 530.3 420.7]';
		photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.fieldSizeDegrees = 2;
        photoreceptors.ageInYears = 32;
        photoreceptors.pupilDiameter.source = 'PokornySmith';
        photoreceptors.pupilDiameter.value = [];
		photoreceptors.eyeLengthMM.source = 'Rodieck';
        photoreceptors.lensDensity.source = 'StockmanSharpe';
		photoreceptors.macularPigmentDensity.source = 'Bone';

    % This creates Tsujiumura's (2010) estimate of the melanopsin gc
    % spectral sensitivity in the human eye. The quantal efficiency
    % is just made up, though, so that the code runs.
    %
    % Tsujimura has used different lambda-max in different papers.
    % The 482 value given here is from the 2010 paper.  His email
    % suggests he may have used 489 and 502 at different times.  Also
    % by email, he used Stockman-Sharpe not Govardovskii nomogram
    % for the 2010 paper, despite what the paper says.
    %
    % The value Tsujimura uses for axial density seems way too high,
    % given what the physiologists tell us about the fact that
    % the melanopsin receptors live in a very thin layer in the ganglion
    % cells.
    case 'LivingHumanMelanopsinTsujimura2010'
        photoreceptors.species = 'Human';
        photoreceptors.types = {'Melanopsin'};
        photoreceptors.nomogram.S = [380 1 401];
        photoreceptors.axialDensity.source = 'Tsujimura';
        photoreceptors.axialDensity.value = 0.5;
        photoreceptors.nomogram.source = 'StockmanSharpe';
		photoreceptors.nomogram.lambdaMax = [482]';
        photoreceptors.quantalEfficiency.source = 'None';
        photoreceptors.quantalEfficiency.value = 1;
        photoreceptors.fieldSizeDegrees = 10;
        photoreceptors.ageInYears = 32;
        photoreceptors.lensDensity.source = 'CIE';
		photoreceptors.macularPigmentDensity.source = 'CIE';

    case 'LivingDog'
        photoreceptors.species = 'Dog';
        photoreceptors.types = {'LCone' 'SCone' 'Rod'};
        photoreceptors.nomogram.S = [380 1 401];
        photoreceptors.OSlength.source = 'PennDog';
        photoreceptors.ISdiameter.source = 'PennDog';
		photoreceptors.specificDensity.source = 'Generic';
		photoreceptors.pupilDiameter.source = 'PennDog';
        photoreceptors.pupilDiameter.value = [];
		photoreceptors.eyeLengthMM.source = 'PennDog';
		photoreceptors.nomogram.source = 'Govardovskii';
		photoreceptors.nomogram.lambdaMax = [555 429 506]';
		photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.lensDensity.source = 'None';
		photoreceptors.macularPigmentDensity.source = 'None';
        
	case 'GuineaPig'
        photoreceptors.species = 'GuineaPig';
        photoreceptors.types = {'MCone' 'SCone' 'Rod'};
        photoreceptors.nomogram.S = [380 1 401];
        photoreceptors.OSlength.source = 'SterlingLab';
        photoreceptors.OSdiameter.source = 'SterlingLab';
		photoreceptors.ISdiameter.source = 'SterlingLab';
		photoreceptors.specificDensity.source = 'Bowmaker';
		photoreceptors.pupilDiameter.source = 'None';
        photoreceptors.pupilDiameter.value = [];
		photoreceptors.eyeLengthMM.source = 'None';
		photoreceptors.nomogram.source = 'Govardovskii';
		photoreceptors.nomogram.lambdaMax = [529 430 500]';
		photoreceptors.quantalEfficiency.source = 'Generic';
        photoreceptors.lensDensity.source = 'None';
		photoreceptors.macularPigmentDensity.source = 'None';
        
	otherwise
		error('Unknown photoreceptor kind specified');
end