{"action":"created","issue":{"url":"https://api.github.com/repos/isetbio/isetbio/issues/92","labels_url":"https://api.github.com/repos/isetbio/isetbio/issues/92/labels{/name}","comments_url":"https://api.github.com/repos/isetbio/isetbio/issues/92/comments","events_url":"https://api.github.com/repos/isetbio/isetbio/issues/92/events","html_url":"https://github.com/isetbio/isetbio/issues/92","id":121097521,"number":92,"title":"OuterSegment: linear cone filters","user":{"login":"npcottaris","id":3444212,"avatar_url":"https://avatars.githubusercontent.com/u/3444212?v=3","gravatar_id":"","url":"https://api.github.com/users/npcottaris","html_url":"https://github.com/npcottaris","followers_url":"https://api.github.com/users/npcottaris/followers","following_url":"https://api.github.com/users/npcottaris/following{/other_user}","gists_url":"https://api.github.com/users/npcottaris/gists{/gist_id}","starred_url":"https://api.github.com/users/npcottaris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/npcottaris/subscriptions","organizations_url":"https://api.github.com/users/npcottaris/orgs","repos_url":"https://api.github.com/users/npcottaris/repos","events_url":"https://api.github.com/users/npcottaris/events{/privacy}","received_events_url":"https://api.github.com/users/npcottaris/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/isetbio/isetbio/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-12-08T20:57:55Z","updated_at":"2015-12-10T16:50:28Z","closed_at":null,"body":"Dear ISETBIO-ers,\r\n\r\nI am starting to dig deeper into the (linear) outer segment object, `@osLinear`, as it exists in the `master` branch of isetbio. My intent is to see how to employ `@osLinear` in a simulation where the input is constantly changing due to eye movements scanning different natural scenes.  Below are some initial questions regarding `filterConesLinear.m`, the @osLinear method that constructs the Impulse Response (IR) functions for  L-,M-, and S-cones.\r\n\r\n1.  The method computes the LMS IR's using a 5-parameter function (just like Equation 6 in `Angueyra & Rieke (2013)`).  I wanted to cross-check the values of these 5 parameters with the `Angueyra & Rieke (2013)` paper, but I was not able to find that information. Is this information available somewhere else? Moreover,  the exponents associated with the `T_rise` parameter (one of the 5 parameters) are set to *3* in the method but to *4* in the paper. Why this discrepancy?\r\n\r\n2.  The computed IRs for different cones only differ in the gain of this function, which depends on each cone's adaptation state (`Ib` and `Io` parameters).  In the code, the L-,M-, and S- cone `Ib` values are fixed to [7131 6017 1973] R*/cone/sec. This presumably corresponds to the L-,M-, and S-cone isomerizations for the background field used in the `Angueyra & Rieke (2013)` paper, but I was not able to cross-check these numbers against the paper as I could not find that information in the paper. Is there a different source where this information is available?\r\n\r\n3.  For dynamic scene simulations, the IR gain would need to be constantly changing depending on the recent input history. This then introduces the question of how to compute `Ib` over the previous stimulation history. One option is to convolve the cone's photoisomerization with some kernel and use the output of that kernel at time (`t-1`), to compute the value of `Ib` at time `t`. But what should the memory of that kernel be? Another idea would be to compute `Ib` based on the history of the cone's own outer-segment output (feedback). Suggestions anyone?\r\n\r\n4.  It would be nice to have an experimental validation script which reproduces the outer segment responses shown in `Fig 6A` using  `@osLinear` -based computations.\r\n\r\nApologies if any of these issues were discussed earlier. \r\n\r\nBest,\r\nNicolas"},"comment":{"url":"https://api.github.com/repos/isetbio/isetbio/issues/comments/163684881","html_url":"https://github.com/isetbio/isetbio/issues/92#issuecomment-163684881","issue_url":"https://api.github.com/repos/isetbio/isetbio/issues/92","id":163684881,"user":{"login":"npcottaris","id":3444212,"avatar_url":"https://avatars.githubusercontent.com/u/3444212?v=3","gravatar_id":"","url":"https://api.github.com/users/npcottaris","html_url":"https://github.com/npcottaris","followers_url":"https://api.github.com/users/npcottaris/followers","following_url":"https://api.github.com/users/npcottaris/following{/other_user}","gists_url":"https://api.github.com/users/npcottaris/gists{/gist_id}","starred_url":"https://api.github.com/users/npcottaris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/npcottaris/subscriptions","organizations_url":"https://api.github.com/users/npcottaris/orgs","repos_url":"https://api.github.com/users/npcottaris/repos","events_url":"https://api.github.com/users/npcottaris/events{/privacy}","received_events_url":"https://api.github.com/users/npcottaris/received_events","type":"User","site_admin":false},"created_at":"2015-12-10T16:50:28Z","updated_at":"2015-12-10T16:50:28Z","body":"Hello,\r\n\r\nHere is another little thing I just discovered.  In the existing os tutorials (t_OuterSegmentClasses, s_coneModelValidate), the human sensor is set as follows:\r\n```MATLAB\r\n    % Create human sensor.\r\n    timeStep = 1e-4; \r\n    sensor = sensorCreate('human');\r\n    sensor = sensorSet(sensor, 'size', [1 1]); % only 1 cone\r\n    sensor = sensorSet(sensor, 'time interval', timeStep);\r\n```\r\nThen we can set a single photon pulse as:\r\n```MATLAB\r\n   % set stimulus to sensor\r\n    spatioTemporalStimulus(1,1,1) = 1\r\n    sensor = sensorSet(sensor, 'photons', spatioTemporalStimulus);\r\n```\r\n\r\nReading the sensor state:\r\n```MATLAB\r\n    photons = sensorGet(sensor, 'photons')\r\n    photonRate = sensorGet(sensor, 'photon rate')\r\n```\r\nwe get:\r\n``` MATLAB\r\nphotons = 1\r\nphotonRate = 20\r\n```\r\n\r\nOne would have expected that since we set the 'time step' to 1/10,000 seconds, the returned 'photonRate' should be 10,000 R* / sec, not 20.\r\nThis discrepancy occurs because in `sensorGet`, the `photon rate` in computed as  `photons` / `exposure time`. \r\n\r\nSo to obtain the expected photon rate, we would need to have the `exposure time` match the  `time step` as follows:\r\n```MATLAB\r\n   % Create a human sensor with just one cone\r\n    sensor = sensorCreate('human');\r\n    sensor = sensorSet(sensor, 'size', [1 1]);  % a [1x1] cone mosaic\r\n    sensor = sensorSet(sensor, 'time interval', timeStep);\r\n    sensor = sensorSet(sensor, 'exposure time', timeStep);\r\n```\r\n\r\nN."}}