Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children.
The 9 matches
- [1] § Materials and Methods › MRI Sequence ↔ mripy/dicom.py, lines 80–155 · score 0.96 · phase encoding direction, gradient recalled, echo planar, GE EPI, distortion correction, FOV
- [2] § Materials and Methods › MRI Sequence ↔ mripy/dicom_report.py, lines 23–80 · score 0.79 · distortion correction, MPRAGE, TE, FA, FOV, Siemens
- [3] § Materials and Methods › fMRI Data Analysis › Preprocessing ↔ mripy/preprocess.py, lines 1888–2011 · score 0.70 · rigid body, AFNI, lpc, preprocessed, EPI, transformations
- [4] § Materials and Methods › Visual Stimuli for Cortical Activation ↔ stimuli/gratingStimulus.m, lines 1–121 · score 0.63 · square wave, temporal frequency, sinusoidally, modulated, deg, SF
- [5] § Materials and Methods › Visual Stimuli for Cortical Activation ↔ stimuli/colourGratingStimulus.m, lines 1–133 · score 0.61 · square wave, temporal frequency, sinusoidally, deg, SF, angle
- [6] § Materials and Methods › Apparatus ↔ calibration/calibrateLuminance.m, lines 1–81 · score 0.56 · SpectroCal, instructed, monitored, Linux, luminance, asked
- [7] § Materials and Methods › Apparatus ↔ calibration/calibrateLuminanceNew.m, lines 1–81 · score 0.56 · SpectroCal, instructed, monitored, Linux, luminance, asked
- [8] § Materials and Methods › Retinotopic Mapping ↔ stimuli/colourGratingStimulus.m, lines 1–133 · score 0.56 · square wave, phase reversed, ratio, background, setup
- [9] § Materials and Methods › Retinotopic Mapping ↔ stimuli/polarGratingStimulus.m, lines 1–144 · score 0.56 · square wave, phase reversed, ratio, background, setup
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 605 lines · 21 KB · LGPL-3.0 · 2 matches
- % ========================================================================
- %> @brief colour grating stimulus, inherits from baseStimulus
- %> COLOURGRATINGSTIMULUS colour grating stimulus, inherits from baseStimulus
- %> The basic properties are:
- %> type = 'sinusoid' or 'square', if square you should set sigma which
- %> smoothes the interface and stops pixel motion artifacts that normally
- %> inflict square wave gratings, set sigma to 0 to remove smoothing.
- %> colour = first grating colour
- %> colour2 = second grating colour
- %> baseColour = the midpoint between the two from where contrast works,
- %> defult just inherits the background colour from screenManager
- %> correctBaseColour = automatically generate baseColour as the average
- %> of colour and colour2
- %> contrast = contrast from 0 - 1
- %> sf = spatial frequency in degrees
- %> tf = temporal frequency in degs/s
- %> angle = angle in degrees
- %> rotateTexture = do we rotate the grating texture (true) or the patch itself (false)
- %> phase = phase of grating
- %> mask = use circular mask (true) or not (false)
- %>
- %> See docs for more property details.
- %>
- %> @todo phase appears different to gratingStimulus, work out why
- %>
- %> Copyright ©2014-2022 Ian Max Andolina — released: LGPL3, see LICENCE.md
- % ========================================================================
- classdef colourGratingStimulus < baseStimulus
- properties %--------------------PUBLIC PROPERTIES----------%
- %> family type, can be 'sinusoid' or 'square'
- type char = 'sinusoid'
- %> spatial frequency of the grating
- sf(1,1) double = 1
- %> temporal frequency of the grating
- tf(1,1) double = 1
- %> second colour of a colour grating stimulus
- colour2(1,:) double = [0 1 0 1]
- %> base colour from which colour and colour2 are blended via contrast value
- %> if empty [default], uses the background colour from screenManager
- baseColour(1,:) double = []
- %> rotate the grating patch (false) or the grating texture within the patch (default = true)?
- rotateTexture logical = true
- %> phase of grating
- phase(1,1) double = 0
- %> contrast of grating (technically the contrast from the baseColour)
- contrast(1,1) double = 0.5
- %> use a circular mask for the grating (default = true).
- mask logical = true
- %> direction of the drift; default = false means drift left>right when angle is 0deg.
- %This switch can be accomplished simply setting angle, but this control enables
- %simple reverse direction protocols.
- reverseDirection logical = false
- %> the direction of the grating object if moving.
- direction double = 0
- %> Do we need to correct the phase to be relative to center not edge? This enables
- %> centre surround stimuli are phase matched, and if we enlarge a grating object its
- %> phase stays identical at the centre of the object (where we would imagine our RF)
- correctPhase logical = false
- %> In certain cases the base colour should be calculated
- %> dynamically from colour and colour2, and this enables this to
- %> occur blend
- correctBaseColour logical = false
- %> Reverse phase of grating X times per second? Useful with a static grating for linearity testing
- phaseReverseTime(1,1) double = 0
- %> What phase to use for reverse?
- phaseOfReverse(1,1) double = 180
- %> sigma of square wave smoothing, use -1 for sinusoidal gratings
- sigma(1,1) double = -1
- %> aspect ratio of the grating
- aspectRatio(1,1) double = 1;
- %> turn stimulus on/off at X hz, [] diables this
- visibleRate = []
- end
- properties (SetAccess = protected, GetAccess = public)
- %stimulus family
- family char = 'grating'
- %> scale is used when changing size as an independent variable to keep sf accurate
- scale double = 1
- %> the phase amount we need to add for each frame of animation
- phaseIncrement double = 0
- end
- properties (Constant)
- typeList cell = {'sinusoid';'square'}
- end
- properties (SetAccess = protected, GetAccess = {?baseStimulus})
- %> properties to not show in the UI panel
- ignorePropertiesUI = 'alpha';
- end
- properties (SetAccess = protected, GetAccess = protected)
- %> as get methods are slow, we cache sf, then recalculate sf whenever
- %> changeScale event is called
- sfCache = []
- %>to stop a loop between set method and an event
- sfRecurse = false
- %> allowed properties passed to object upon construction
- allowedProperties = {'type','colour2', 'sf', 'tf', 'angle', 'direction', 'phase', 'rotateTexture', ...
- 'contrast', 'mask', 'reverseDirection', 'speed', 'startPosition', 'aspectRatio', ...
- 'sigma', 'correctPhase', 'phaseReverseTime', 'phaseOfReverse','visibleRate',...
- 'correctBaseColour'}
- %> properties to not create transient copies of during setup phase
- ignoreProperties = {'type', 'scale', 'phaseIncrement', 'correctPhase', 'contrastMult', 'mask', 'typeList'}
- %> how many frames between phase reverses
- phaseCounter = 0
- %> mask value (radius for the procedural shader)
- maskValue
- %> the raw shader, we can try to change colours.
- shader
- %> these store the current colour so we can check if update needs
- %to regenerate the shader
- colourCache
- colour2Cache
- visibleTick = 0
- visibleFlip = Inf
- end
- %=======================================================================
- methods %------------------PUBLIC METHODS
- %=======================================================================
- % ===================================================================
- %> @brief Class constructor
- %>
- %> More detailed description of what the constructor does.
- %>
- %> @param args are passed as a structure of properties which is
- %> parsed.
- %> @return instance of class.
- % ===================================================================
- function me = colourGratingStimulus(varargin)
- args = optickaCore.addDefaults(varargin,...
- struct('name','colour-grating','colour',[1 0 0 1],'colour2',[0 1 0 1]));
- me=me@baseStimulus(args); %we call the superclass constructor first
- me.parseArgs(args, me.allowedProperties);
- me.isRect = true; %uses a rect for drawing
- me.ignoreProperties = [me.ignorePropertiesBase me.ignoreProperties];
- me.salutation('constructor method','Stimulus initialisation complete');
- end
- % ===================================================================
- %> @brief Setup this object in preparation for use
- %> When displaying a stimulus object, the main properties that are to be
- %> modified are copied into cache copies of the property, both to convert from
- %> visual description (c/d, Hz, degrees) to
- %> computer metrics, and to be animated and modified as independant
- %> variables. So xPosition is copied to xPositionOut and converted from
- %> degrees to pixels. The animation and drawing functions use these modified
- %> properties, and when they are updated, for example to change to a new
- %> xPosition, internal methods ensure reconversion and update any dependent
- %> properties. This method initialises the object with all the cache properties
- %> for display.
- %>
- %> @param sM screenManager object to use
- % ===================================================================
- function setup(me,sM)
- reset(me); %reset object back to its initial state
- me.inSetup = true; me.isSetup = false;
- if isempty(me.isVisible); show(me); end
- me.sM = sM;
- if ~sM.isOpen; error('Screen needs to be Open!'); end
- me.ppd=sM.ppd;
- me.screenVals = sM.screenVals;
- me.texture = []; %we need to reset this
- fn = sort(properties(me));
- for j=1:length(fn)
- if ~matches(fn{j}, me.ignoreProperties)
- p=me.addprop([fn{j} 'Out']);
- if strcmp(fn{j}, 'sf'); p.SetMethod = @set_sfOut; end
- if strcmp(fn{j}, 'tf')
- p.SetMethod = @set_tfOut; p.SetObservable = true;
- addlistener(me, [fn{j} 'Out'], 'PostSet', @me.calculatePhaseIncrement);
- end
- if strcmp(fn{j}, 'reverseDirection')
- p.SetMethod = @set_reverseDirectionOut; p.SetObservable = true;
- addlistener(me, [fn{j} 'Out'], 'PostSet', @me.calculatePhaseIncrement);
- end
- if strcmp(fn{j}, 'size')
- p.SetMethod = @set_sizeOut; p.SetObservable = true;
- addlistener(me, [fn{j} 'Out'], 'PostSet', @me.calculateScale);
- end
- if strcmp(fn{j}, 'xPosition'); p.SetMethod = @set_xPositionOut; end
- if strcmp(fn{j}, 'yPosition'); p.SetMethod = @set_yPositionOut; end
- if strcmp(fn{j}, 'colour')
- p.SetMethod = @set_cOut; p.SetObservable = true;
- addlistener(me, [fn{j} 'Out'], 'PostSet', @me.fixBaseColour);
- end
- if strcmp(fn{j}, 'colour2')
- p.SetMethod = @set_c2Out; p.SetObservable = true;
- addlistener(me, [fn{j} 'Out'], 'PostSet', @me.fixBaseColour);
- end
- me.([fn{j} 'Out']) = me.(fn{j}); %copy our property value to our temporary copy
- end
- end
- addRuntimeProperties(me);
- if ~isprop(me,'rotateMode'); addprop(me,'rotateMode'); end
- if me.rotateTexture
- me.rotateMode = kPsychUseTextureMatrixForRotation;
- else
- me.rotateMode = [];
- end
- if ~isprop(me,'gratingSize'); addprop(me,'gratingSize'); end
- me.gratingSize = round(me.ppd*me.size); %virtual support larger than initial size
- if ~isprop(me,'driftPhase'); addprop(me,'driftPhase'); end
- if me.correctPhase
- ps = me.calculatePhase;
- me.driftPhase = me.phaseOut-ps;
- else
- me.driftPhase = me.phaseOut;
- end
- if ~isprop(me,'res'); addprop(me,'res'); end
- switch length(me.aspectRatio)
- case 1
- me.res = round([me.gratingSize*me.aspectRatio me.gratingSize]);
- case 2
- me.res = round([me.gratingSize*me.aspectRatio(1) me.gratingSize*me.aspectRatio(2)]);
- end
- if max(me.res) > me.sM.screenVals.width %scale to be no larger than screen width
- me.res = floor( me.res / (max(me.res) / me.sM.screenVals.width));
- end
- if me.mask == true
- me.maskValue = floor((me.ppd*me.size))/2;
- else
- me.maskValue = [];
- end
- if me.phaseReverseTime > 0
- me.phaseCounter = round(me.phaseReverseTime / me.sM.screenVals.ifi);
- end
- if isempty(me.baseColour)
- if me.correctBaseColour
- me.baseColourOut = (me.colourOut(1:3) + me.colour2Out(1:3)) / 2;
- me.baseColourOut(4) = me.alpha;
- else
- me.baseColourOut = me.sM.backgroundColour;
- me.baseColourOut(4) = me.alpha;
- end
- end
- if strcmpi(me.type,'square')
- if me.sigma < 0; me.sigma = 0.05; me.sigmaOut = me.sigma; end
- else
- me.salutation('SETUP', 'Reset sigma to -1 as type=squarewave', true)
- me.sigmaOut = -1; %just make sure type overrides sigma if conflict
- end
- % this is a two color grating, passing in colorA and colorB.
- [me.texture, ~, me.shader] = CreateProceduralColorGrating(me.sM.win, me.res(1),...
- me.res(2), me.colourOut, me.colour2Out, me.maskValue);
- me.colourCache = me.colourOut; me.colour2Cache = me.colour2Out;
- if ~isempty(me.visibleRateOut) && isnumeric(me.visibleRateOut)
- me.visibleTick = 0;
- me.visibleFlip = round((me.screenVals.fps/2) / me.visibleRateOut);
- else
- me.visibleFlip = Inf; me.visibleTick = 0;
- end
- me.inSetup = false; me.isSetup = true;
- computePosition(me);
- setRect(me);
- function set_cOut(me, value)
- len=length(value);
- switch len
- case {4,3}
- c = [value(1:3) me.alpha]; %force our alpha to override
- case 1
- c = [value value value me.alpha]; %construct RGBA
- otherwise
- c = [1 1 1 me.alpha]; %return white for everything else
- end
- c(c<0)=0; c(c>1)=1;
- me.colourOut = c;
- end
- function set_c2Out(me, value) %#ok<*MCSGP>
- len=length(value);
- switch len
- case {4,3}
- c = [value(1:3) me.alpha]; %force our alpha to override
- case 1
- c = [value value value me.alpha]; %construct RGBA
- otherwise
- c = [1 1 1 me.alpha]; %return white for everything else
- end
- c(c<0)=0; c(c>1)=1;
- me.colour2Out = c;
- end
- function set_sfOut(me,value)
- if me.sfRecurse == false
- me.sfCache = (value / me.ppd);
- me.sfOut = me.sfCache * me.scale;
- else
- me.sfOut = value;
- me.sfRecurse = false;
- end
- %fprintf('\nSET SFOut: %d | cache: %d | in: %d\n', me.sfOut, me.sfCache, value);
- end
- function set_tfOut(me,value)
- me.tfOut = value;
- end
- function set_reverseDirectionOut(me,value)
- me.reverseDirectionOut = value;
- end
- function set_sizeOut(me,value)
- me.sizeOut = value*me.ppd;
- me.szPx = me.sizeOut;
- end
- function set_xPositionOut(me, value)
- me.xPositionOut = value * me.ppd;
- end
- function set_yPositionOut(me,value)
- me.yPositionOut = value*me.ppd;
- end
- end
- % ===================================================================
- %> @brief Update this stimulus object for display
- %>
- % ===================================================================
- function update(me)
- resetTicks(me);
- if me.correctPhase
- ps=me.calculatePhase;
- me.driftPhase=me.phaseOut-ps;
- else
- me.driftPhase=me.phaseOut;
- end
- if ~all(me.colourCache(1:3) == me.colourOut(1:3)) || ...
- ~all(me.colour2Cache(1:3) == me.colour2Out(1:3))
- glUseProgram(me.shader);
- glUniform4f(glGetUniformLocation(me.shader, 'color1'),...
- me.colourOut(1),me.colourOut(2),me.colourOut(3),me.alphaOut);
- glUniform4f(glGetUniformLocation(me.shader, 'color2'),...
- me.colour2Out(1),me.colour2Out(2),me.colour2Out(3),me.alphaOut);
- if me.mask == true
- me.maskValue = me.sizeOut/2;
- else
- me.maskValue = 0;
- end
- glUniform1f(glGetUniformLocation(me.shader, 'radius'), me.maskValue);
- glUseProgram(0);
- me.colourCache = me.colourOut; me.colour2Cache = me.colour2Out;
- end
- if ~isempty(me.visibleRateOut) && isnumeric(me.visibleRateOut)
- me.isVisible = true;
- me.visibleTick = 0;
- me.visibleFlip = round((me.screenVals.fps/2) / me.visibleRateOut);
- else
- me.visibleFlip = Inf; me.visibleTick = 0;
- end
- computePosition(me);
- setRect(me);
- end
- % ===================================================================
- %> @brief Draw this stimulus object for display
- %>
- %>
- % ===================================================================
- function draw(me)
- if me.isVisible && me.tick >= me.delayTicks && me.tick < me.offTicks
- Screen('DrawTexture', me.sM.win, me.texture, [], me.mvRect,...
- me.angleOut, [], [], me.baseColourOut, [], me.rotateMode,...
- [me.driftPhase, me.sfOut, me.contrastOut, me.sigmaOut]);
- me.drawTick = me.drawTick + 1;
- end
- if me.isVisible; me.tick = me.tick + 1; end
- end
- % ===================================================================
- %> @brief Animate this object for runExperiment
- %>
- % ===================================================================
- function animate(me)
- if (me.isVisible || ~isempty(me.visibleRate)) && me.tick >= me.delayTicks
- if me.mouseOverride
- getMousePosition(me);
- if me.mouseValid
- me.mvRect = CenterRectOnPointd(me.mvRect, me.mouseX, me.mouseY);
- end
- end
- if me.doMotion
- me.mvRect=OffsetRect(me.mvRect,me.dX_,me.dY_);
- end
- if me.doDrift
- me.driftPhase = me.driftPhase + me.phaseIncrement;
- end
- if mod(me.tick,me.phaseCounter) == 0
- me.driftPhase = me.driftPhase + me.phaseOfReverse;
- end
- me.visibleTick = me.visibleTick + 1;
- if me.visibleTick == me.visibleFlip
- me.isVisible = ~me.isVisible;
- me.visibleTick = 0;
- end
- end
- end
- % ===================================================================
- %> @brief Reset an structure for runExperiment
- %>
- %> @param rE runExperiment object for reference
- %> @return stimulus structure.
- % ===================================================================
- function reset(me)
- resetTicks(me);
- me.inSetup = false; me.isSetup = false;
- if ~isempty(me.texture) && Screen(me.texture,'WindowKind') == -1
- try Screen('Close',me.texture); end %#ok<*TRYNC>
- end
- me.visibleFlip = Inf; me.visibleTick = 0;
- me.texture=[];
- me.shader=[];
- if me.mask > 0
- me.mask = true;
- end
- me.maskValue = [];
- me.removeTmpProperties;
- list = {'res','gratingSize','driftPhase','rotateMode'};
- for l = list; if isprop(me,l{1});delete(me.findprop(l{1}));end;end
- end
- % ===================================================================
- %> @brief calculate phase offset
- %>
- % ===================================================================
- function phase = calculatePhase(me)
- phase = 0;
- if me.correctPhase > 0
- ppd = me.ppd;
- size = (me.sizeOut / 2); %divide by 2 to get the 0 point
- sfTmp = (me.sfOut / me.scale) * ppd;
- md = size / (ppd / sfTmp);
- md = md - floor(md);
- % note for some reason colourgratings are 180° different to
- % gratings, so we compensate here so they should align if
- % correctPhase is true
- phase = (360 * md) + 180;
- end
- end
- % ===================================================================
- %> @brief sf Set method
- %>
- % ===================================================================
- function set.sf(me,value)
- if value <= 0
- value = 0.05;
- end
- me.sf = value;
- me.salutation(['set sf: ' num2str(value)],'Custom set method')
- end
- % ===================================================================
- %> @brief SET Colour2 method
- %> Allow 1 (R=G=B) 3 (RGB) or 4 (RGBA) value colour
- % ===================================================================
- function set.colour2(me,value)
- len=length(value);
- switch len
- case 4
- c = value;
- case 3
- c = [value(1:3) me.alpha]; %force our alpha to override
- case 1
- c = [value value value me.alpha]; %construct RGBA
- otherwise
- c = [1 1 1 me.alpha]; %return white for everything else
- end
- c(c<0)=0; c(c>1)=1;
- me.colour2 = c;
- if isprop(me, 'baseColour') && me.correctBaseColour %#ok<*MCSUP>
- me.baseColour = (me.colour(1:3) + me.colour2(1:3))/2;
- end
- end
- % ===================================================================
- %> @brief SET baseColour method
- %> Allow 1 (R=G=B) 3 (RGB) or 4 (RGBA) value colour
- % ===================================================================
- function set.baseColour(me,value)
- len=length(value);
- switch len
- case 4
- c = value;
- case 3
- c = [value(1:3) me.alpha]; %force our alpha to override
- case 1
- c = [value value value me.alpha]; %construct RGBA
- otherwise
- c = [1 1 1 me.alpha]; %return white for everything else
- end
- c(c<0)=0; c(c>1)=1;
- me.baseColour = c;
- end
- % ===================================================================
- %> @brief sfOut Pseudo Get method
- %>
- % ===================================================================
- function sf = getsfOut(me)
- sf = 0;
- if ~isempty(me.sfCache)
- sf = me.sfCache * me.ppd;
- end
- end
- end %---END PUBLIC METHODS---%
- %=======================================================================
- methods ( Access = protected ) %-------PROTECTED METHODS-----%
- %=======================================================================
- % ===================================================================
- %> @brief setRect
- %> setRect makes the PsychRect based on the texture and screen values
- %> this is modified over parent method as gratings have slightly different
- %> requirements.
- % ===================================================================
- function setRect(me)
- %me.dstRect=Screen('Rect',me.texture);
- me.dstRect=ScaleRect([0 0 me.res(1) me.res(2)],me.scale,me.scale);
- if me.mouseOverride && me.mouseValid
- me.dstRect = CenterRectOnPointd(me.dstRect, me.mouseX, me.mouseY);
- else
- if isprop(me, 'directionOut')
- [sx, sy]=pol2cart(me.d2r(me.directionOut),me.startPosition);
- else
- [sx, sy]=pol2cart(me.d2r(me.direction),me.startPosition);
- end
- me.dstRect=CenterRectOnPointd(me.dstRect,me.sM.xCenter,me.sM.yCenter);
- if isprop(me, 'xPositionOut')
- me.dstRect=OffsetRect(me.dstRect,me.xPositionOut+(sx*me.ppd),me.yPositionOut+(sy*me.ppd));
- else
- me.dstRect=OffsetRect(me.dstRect,(me.xPosition)*me.ppd,(me.yPosition)*me.ppd);
- end
- end
- me.mvRect=me.dstRect;
- me.szPx = RectWidth(me.dstRect);
- setAnimationDelta(me);
- end
- % ===================================================================
- %> @brief calculateScale
- %> Use an event to recalculate scale as get method is slower (called
- %> many more times), than an event which is only called on update
- % ===================================================================
- function calculateScale(me,~,~)
- me.scale = me.sizeOut/(me.size*me.ppd);
- me.maskValue = me.sizeOut / 2;
- me.sfRecurse = true;
- me.sfOut = me.sfCache * me.scale;
- %fprintf('\nCalculate SFOut: %d | in: %d | scale: %d\n', me.sfOut, me.sfCache, me.scale);
- end
- % ===================================================================
- %> @brief calculatePhaseIncrement
- %> Use an event to recalculate as get method is slower (called
- %> many more times), than an event which is only called on update
- % ===================================================================
- function calculatePhaseIncrement(me,~,~)
- if isprop(me,'tfOut')
- me.phaseIncrement = (me.tfOut * 360) * me.sM.screenVals.ifi;
- if isprop(me,'reverseDirectionOut')
- if me.reverseDirectionOut == false
- me.phaseIncrement = -me.phaseIncrement;
- end
- end
- end
- end
- % ===================================================================
- %> @brief fixBaseColour POST SET
- %>
- % ===================================================================
- function fixBaseColour(me,varargin)
- if me.correctBaseColour %#ok<*MCSUP>
- if isprop(me, 'baseColourOut')
- me.baseColourOut = (me.getP('colour',[1:3]) + me.getP('colour2',[1:3])) / 2;
- else
- me.baseColour = (me.getP('colour',[1:3]) + me.getP('colour2',[1:3])) / 2;
- end
- end
- end
- end
- end
colourGratingStimulus.m at commit dd582c8, under LGPL-3.0 · at the source
Overview
- Department of Ophthalmology, Shanghai Children’s Medical Center, School of Medicine, Shanghai Jiao Tong University, Shanghai, People’s Republic of China
- State Key Laboratory of Brain and Cognitive Science, Institute of Biophysics, Chinese Academy of Sciences, Beijing, People’s Republic of China
- School of Biomedical Engineering, Shanghai Jiao Tong University, Shanghai, 200030, People’s Republic of China
- Department of Ophthalmology and Visual Science, Eye and ENT Hospital, Shanghai Medical College, Fudan University, Shanghai, People’s Republic of China
- Center for Excellence in Brain Science and Intelligence Technology, State Key Laboratory of Brain Cognition and Brain-inspired Intelligence Technology, Institute of Neuroscience, Chinese Academy of Sciences, Shanghai, People’s Republic of China
- College of Clinical Medicine for Obstetrics and Gynecology and Pediatrics, Fujian Medical University, Fuzhou, Fujian, People’s Republic of China
Abstract
Purpose: To investigate the changes in neural activity in V1, V2, and V3 visual cortical areas of control participants and amblyopic patients during visual stimulation under four differing visual inputs.
Patients and Methods: A total of 14 children with monocular amblyopia and 11 age-matched healthy controls were recruited for the study. A fast meridional retinotopic mapping paradigm was employed to efficiently localize regions of interest (ROIs) within the visual cortex. Four types of visual stimulation were achieved using a spatiotemporally modulating checkerboard paired with anaglyph red-blue glasses: amblyopic or non-dominant eye only (AE), fellow or dominant eye only (FE), balanced dichoptic (BE), and imbalanced-dichoptic stimulation (DE).
Results: Amblyopic patients exhibit significantly reduced neural activity across V1, V2, and V3 compared to control participants. DE resulted in the most significant reductions in cortical responses for amblyopes. In the control group, significant differences were observed between AE and BE, FE and BE, and BE and DE, while no significant differences were found between AE and DE. In the amblyopic group, significant differences were identified between AE and DE, FE and DE, AE and BE, FE and BE, as well as between BE and DE.
Conclusion: Imbalanced dichoptic stimulation produced the largest and most significant reductions in cortical responses, observed exclusively in the patient group, indicating a suppressive influence from the fellow eye. These exploratory data support the view that imbalanced dichoptic stimulation may offer greater potential for neural response recovery compared to monocular approaches. The experimental protocols and findings reported here provide a comparative framework to inform the development of more effective rehabilitation strategies for children with amblyopia.
Reproduced under the paper's license (CC BY-NC), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 9 matches between paragraphs and lines of code.
CogPlatform/binocularMRI
3e1faabdf18ee50cf6eaeac658aa77dba468e387, 8 May 2026Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
3 files
- binocularStimulation.m, MATLAB, 537 lines
- LICENSE, License, 21 lines
- README.md, Text, 27 lines
herrlich10/mripy
db1324a1a712c1948cc10ea3c629e74e7d2ea430, 17 April 2025Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
70 files
- docs/
source/ , Python, 102 linesconf.py - examples/
demo.py , Python, 1 line - management/
release.py , Python, 70 lines - mripy/
__init__.py , Python, 11 lines - mripy/
_with_pylab.py , Python, 12 lines - mripy/
afni.py , Python, 860 lines - mripy/
data/ , Python, 14 lines__init__.py - mripy/
dcm.py , Python, 333 lines - mripy/
decoding.py , Python, 330 lines - mripy/
dependency.py , Python, 19 lines - mripy/
dicom.py , Python, 349 lines, 1 match - mripy/
dicom_report.py , Python, 124 lines, 1 match - mripy/
encoding.py , Python, 578 lines - mripy/
evaluation.py , Python, 97 lines - mripy/
headmotion.py , Python, 130 lines - mripy/
io/ , Python, 1,696 lines__init__.py - mripy/
io/ , Python, 242 linesfreesurfer.py - mripy/
io/ , Python, 29 linesgifti.py - mripy/
io/ , Python, 247 linesniml.py - mripy/
math.py , Python, 273 lines - mripy/
matlab/ , MATLAB, 461 linesinpolyhedron.m - mripy/
matlab/ , MATLAB, 18 linesmripy_align_asc.m - mripy/
matlab/ , MATLAB, 17 linesmripy_average_asc.m - mripy/
matlab/ , MATLAB, 37 linesmripy_create_hpf_X0.m - mripy/
matlab/ , MATLAB, 12 linesmripy_dataset2json.m - mripy/
matlab/ , MATLAB, 22 linesmripy_diagnose_DCM.m - mripy/
matlab/ , MATLAB, 47 linesmripy_est_from_GCM.m - mripy/
matlab/ , MATLAB, 32 linesmripy_est_from_PEB.m - mripy/
matlab/ , MATLAB, 43 linesmripy_est_from_PEB_BMA.m - mripy/
matlab/ , MATLAB, 6 linesmripy_infer_suma_subject .m - mripy/
matlab/ , MATLAB, 28 linesmripy_merge_asc.m - mripy/
matlab/ , MATLAB, 18 linesmripy_normalize_weight.m - mripy/
matlab/ , MATLAB, 436 linesmripy_plot_DCM.m - mripy/
matlab/ , MATLAB, 6 linesmripy_range.m - mripy/
matlab/ , MATLAB, 10 linesmripy_read_asc.m - mripy/
matlab/ , MATLAB, 9 linesmripy_read_transform.m - mripy/
matlab/ , MATLAB, 13 linesmripy_trim_init_resp.m - mripy/
matlab/ , MATLAB, 12 linesmripy_write_asc.m - mripy/
matlab/ , MATLAB, 19 linesmripy_write_geometry.m - mripy/
paraproc.py , Python, 621 lines - mripy/
preprocess.py , Python, 2,488 lines, 1 match - mripy/
scripts/ , Python, 31 lines__init__.py - mripy/
scripts/ , Python, 219 linesafni_viewer.py - mripy/
scripts/ , Python, 135 linesextract_physio.py - mripy/
scripts/ , Python, 43 linesmripy_1dplot.py - mripy/
scripts/ , Python, 114 linesmripy_run_iglesias18.py - mripy/
scripts/ , Python, 103 linesmripy_run_wang15.py - mripy/
scripts/ , Python, 26 linesreport_parameters.py - mripy/
scripts/ , Python, 44 linesscript_utils.py - mripy/
scripts/ , Python, 111 linessort_dicom.py - mripy/
six.py , Python, 886 lines - mripy/
slicetiming.py , Python, 214 lines - mripy/
stats.py , Python, 167 lines - mripy/
surface/ , Python, 4 lines__init__.py - mripy/
surface/ , Python, 230 linessmooth.py - mripy/
surface/ , Python, 838 linessurface.py - mripy/
tests/ , Python, 5 lines__init__.py - mripy/
tests/ , Python, 11 linescontext.py - mripy/
tests/ , Python, 50 linestest_afni.py - mripy/
tests/ , Shell, 19 linestest_extract_physio.sh - mripy/
tests/ , Python, 45 linestest_io.py - mripy/
tests/ , Python, 60 linestest_timecourse.py - mripy/
tests/ , Python, 17 linestest_utils.py - mripy/
tests/ , Python, 72 linestest_utils_slow.py - mripy/
timecourse.py , Python, 1,018 lines - mripy/
utils.py , Python, 507 lines - mripy/
vis.py , Python, 88 lines - setup.py, Python, 34 lines
- LICENSE.txt, License, 19 lines
- README.rst, Text, 64 lines
Zenodo 592253
Availability: 1 check, the latest on 29 September 2026: the link answers (HTTP 200)
- 29 September 2026: the link answers (HTTP 200)
231 files
- CoreProtocols/
AreaSummationStateInfo.m , MATLAB, 383 lines - CoreProtocols/
Back_PropagationStateInf , MATLAB, 452 lineso.m - CoreProtocols/
ColourGratingStateInfo.m , MATLAB, 383 lines - CoreProtocols/
DotColourStateInfo.m , MATLAB, 368 lines - CoreProtocols/
DotDirectionStateInfo.m , MATLAB, 354 lines - CoreProtocols/
FastRFMapperStateInfo.m , MATLAB, 281 lines - CoreProtocols/
FigureGroundStateInfo.m , MATLAB, 426 lines - CoreProtocols/
FixationOnly.m , MATLAB, 338 lines - CoreProtocols/
FixationTrainingAnimated , MATLAB, 375 linesStateInfo.m - CoreProtocols/
FixationTrainingDistract , MATLAB, 391 linesorStateInfo.m - CoreProtocols/
FixationTrainingStateInf , MATLAB, 364 lineso.m - CoreProtocols/
Isoluminant_Colours_Stat , MATLAB, 496 lineseInfo.m - CoreProtocols/
OrientationTuningStateIn , MATLAB, 471 linesfo.m - CoreProtocols/
PupillaryReflex.m , MATLAB, 440 lines - CoreProtocols/
RFLocaliserStateInfo.m , MATLAB, 407 lines - CoreProtocols/
RevCorStateInfo.m , MATLAB, 492 lines - CoreProtocols/
SFTFStateInfo.m , MATLAB, 241 lines - CoreProtocols/
SaccadePhospheneStateInf , MATLAB, 525 lineso.m - CoreProtocols/
Saccade_AntiSaccade.m , MATLAB, 561 lines - CoreProtocols/
Saccade_AntiSaccade_TRAI , MATLAB, 547 linesN_1.m - CoreProtocols/
Saccadic_Countermanding. , MATLAB, 492 linesm - CoreProtocols/
Saccadic_DoubleStep.m , MATLAB, 457 lines - CoreProtocols/
Saccadic_DoubleStep_TRAI , MATLAB, 471 linesN_1.m - CoreProtocols/
TwoFigureGroundStateInfo , MATLAB, 273 lines.m - CoreProtocols/
Two_Images.m , MATLAB, 445 lines - CoreProtocols/
fNIRS.m , MATLAB, 336 lines - DefaultStateInfo.m, MATLAB, 515 lines
- addOptickaToPath.m, MATLAB, 47 lines
- analysis/
LFPAnalysis.m , MATLAB, 3,106 lines - analysis/
LFPMeta.m , MATLAB, 897 lines - analysis/
analysisCore.m , MATLAB, 1,373 lines - analysis/
eyelinkAnalysis.m , MATLAB, 2,279 lines - analysis/
iRecAnalysis.m , MATLAB, 2,031 lines - analysis/
spikeAnalysis.m , MATLAB, 1,503 lines - analysis/
tobiiAnalysis.m , MATLAB, 2,232 lines - calibration/
I1Demo.m , MATLAB, 45 lines - calibration/
calibrateLuminance.m , MATLAB, 1,468 lines - calibration/
calibrateSize.m , MATLAB, 187 lines - calibration/
ccal.m , MATLAB, 391 lines - calibration/
colourManager.m , MATLAB, 361 lines - communication/
alyxManager.m , MATLAB, 1,573 lines - communication/
arduinoIOPort.m , MATLAB, 620 lines - communication/
arduinoManager.m , MATLAB, 448 lines - communication/
arduinoSerial.m , MATLAB, 2,366 lines - communication/
arduinoSerialPort.m , MATLAB, 2,153 lines - communication/
awsManager.m , MATLAB, 84 lines - communication/
dPixxManager.m , MATLAB, 311 lines - communication/
dataConnection.m , MATLAB, 1,188 lines - communication/
dumpmsgpack.m , MATLAB, 268 lines - communication/
eyeOccluder.m , MATLAB, 90 lines - communication/
ioManager.m , MATLAB, 269 lines - communication/
joystickManager.m , MATLAB, 126 lines - communication/
jzmqConnection.m , MATLAB, 741 lines - communication/
labJack.m , MATLAB, 913 lines - communication/
labJackT.m , MATLAB, 914 lines - communication/
magstimManager.m , MATLAB, 130 lines - communication/
nirSmartManager.m , MATLAB, 284 lines - communication/
parsemsgpack.m , MATLAB, 196 lines - communication/
plusplusManager.m , MATLAB, 453 lines - communication/
rewardManager.m , MATLAB, 17 lines - communication/
runServer.m , MATLAB, 1 line - communication/
sendSerialIOPort.m , MATLAB, 149 lines - communication/
touchManager.m , MATLAB, 896 lines - communication/
zmqConnection.m , MATLAB, 599 lines - eyetracker/
edfmex.m , MATLAB, 84 lines - eyetracker/
eyelinkCustomCallback.m , MATLAB, 581 lines - eyetracker/
eyelinkManager.m , MATLAB, 989 lines - eyetracker/
eyetrackerCore.m , MATLAB, 1,299 lines - eyetracker/
eyetrackerSmooth.m , MATLAB, 145 lines - eyetracker/
iRecManager.m , MATLAB, 1,094 lines - eyetracker/
iView_checkfix_demo.m , MATLAB, 159 lines - eyetracker/
pupilCoreManager.m , MATLAB, 1,087 lines - eyetracker/
pupilCoreStimulus.m , MATLAB, 199 lines - eyetracker/
tittaAdvCalTest.m , MATLAB, 388 lines - eyetracker/
tittaAdvImageStimulus.m , MATLAB, 133 lines - eyetracker/
tittaAdvMovieStimulus.m , MATLAB, 153 lines - eyetracker/
tittaAdvancedController. , MATLAB, 1,140 linesm - eyetracker/
tittaCalCallback.m , MATLAB, 25 lines - eyetracker/
tittaCalStimulus.m , MATLAB, 214 lines - eyetracker/
tittaRewardProvider.m , MATLAB, 78 lines - eyetracker/
tobiiManager.m , MATLAB, 1,221 lines - omniplex/
ReadPLX/ , MATLAB, 34 linesPL2Ad.m - omniplex/
ReadPLX/ , MATLAB, 45 linesPL2AdBySource.m - omniplex/
ReadPLX/ , MATLAB, 30 linesPL2AdSpan.m - omniplex/
ReadPLX/ , MATLAB, 39 linesPL2AdSpanBySource.m - omniplex/
ReadPLX/ , MATLAB, 37 linesPL2AdTimeSpan.m - omniplex/
ReadPLX/ , MATLAB, 48 linesPL2AdTimeSpanBySource.m - omniplex/
ReadPLX/ , MATLAB, 24 linesPL2EventTs.m - omniplex/
ReadPLX/ , MATLAB, 33 linesPL2EventTsBySource.m - omniplex/
ReadPLX/ , MATLAB, 69 linesPL2GetFileIndex.m - omniplex/
ReadPLX/ , MATLAB, 52 linesPL2Print.m - omniplex/
ReadPLX/ , MATLAB, 154 linesPL2ReadFileIndex.m - omniplex/
ReadPLX/ , MATLAB, 49 linesPL2ReadFirstDataBlock.m - omniplex/
ReadPLX/ , MATLAB, 50 linesPL2ReadNextDataBlock.m - omniplex/
ReadPLX/ , MATLAB, 16 linesPL2StartStopTs.m - omniplex/
ReadPLX/ , MATLAB, 25 linesPL2Ts.m - omniplex/
ReadPLX/ , MATLAB, 34 linesPL2TsBySource.m - omniplex/
ReadPLX/ , MATLAB, 28 linesPL2Waves.m - omniplex/
ReadPLX/ , MATLAB, 38 linesPL2WavesBySource.m - omniplex/
ReadPLX/ , MATLAB, 52 linesbuild_and_verify_mexPlex .m - omniplex/
ReadPLX/ , MATLAB, 26 linesddt.m - omniplex/
ReadPLX/ , MATLAB, 26 linesddt_v.m - omniplex/
ReadPLX/ , MATLAB, 27 linesddt_write_v.m - omniplex/
ReadPLX/ , MATLAB, 66 linesplx_ad.m - omniplex/
ReadPLX/ , MATLAB, 44 linesplx_ad_chanmap.m - omniplex/
ReadPLX/ , MATLAB, 56 linesplx_ad_gap_info.m - omniplex/
ReadPLX/ , MATLAB, 41 linesplx_ad_info.m - omniplex/
ReadPLX/ , MATLAB, 36 linesplx_ad_resolve_channel.m - omniplex/
ReadPLX/ , MATLAB, 55 linesplx_ad_span.m - omniplex/
ReadPLX/ , MATLAB, 52 linesplx_ad_span_v.m - omniplex/
ReadPLX/ , MATLAB, 63 linesplx_ad_v.m - omniplex/
ReadPLX/ , MATLAB, 32 linesplx_adchan_freqs.m - omniplex/
ReadPLX/ , MATLAB, 30 linesplx_adchan_gains.m - omniplex/
ReadPLX/ , MATLAB, 34 linesplx_adchan_names.m - omniplex/
ReadPLX/ , MATLAB, 30 linesplx_adchan_samplecounts. m - omniplex/
ReadPLX/ , MATLAB, 29 linesplx_chan_filters.m - omniplex/
ReadPLX/ , MATLAB, 32 linesplx_chan_gains.m - omniplex/
ReadPLX/ , MATLAB, 36 linesplx_chan_names.m - omniplex/
ReadPLX/ , MATLAB, 32 linesplx_chan_thresholds.m - omniplex/
ReadPLX/ , MATLAB, 40 linesplx_chanmap.m - omniplex/
ReadPLX/ , MATLAB, 12 linesplx_close.m - omniplex/
ReadPLX/ , MATLAB, 41 linesplx_event_chanmap.m - omniplex/
ReadPLX/ , MATLAB, 39 linesplx_event_names.m - omniplex/
ReadPLX/ , MATLAB, 38 linesplx_event_resolve_channe l.m - omniplex/
ReadPLX/ , MATLAB, 72 linesplx_event_ts.m - omniplex/
ReadPLX/ , MATLAB, 73 linesplx_info.m - omniplex/
ReadPLX/ , MATLAB, 91 linesplx_information.m - omniplex/
ReadPLX/ , MATLAB, 12 linesplx_mexplex_version.m - omniplex/
ReadPLX/ , MATLAB, 38 linesplx_resolve_channel.m - omniplex/
ReadPLX/ , MATLAB, 48 linesplx_spike_info.m - omniplex/
ReadPLX/ , MATLAB, 41 linesplx_ts.m - omniplex/
ReadPLX/ , MATLAB, 42 linesplx_vt_interpret.m - omniplex/
ReadPLX/ , MATLAB, 63 linesplx_waves.m - omniplex/
ReadPLX/ , MATLAB, 59 linesplx_waves_v.m - omniplex/
ReadPLX/ , MATLAB, 127 linesreadall.m - omniplex/
ft_read_plxheader.m , MATLAB, 756 lines - omniplex/
kbhit.m , MATLAB, 87 lines - omniplex/
nex/ , MATLAB, 64 linesexampleSaveDataInNexFile .m - omniplex/
nex/ , MATLAB, 35 linesnexAddContinuous.m - omniplex/
nex/ , MATLAB, 26 linesnexAddEvent.m - omniplex/
nex/ , MATLAB, 32 linesnexAddInterval.m - omniplex/
nex/ , MATLAB, 30 linesnexAddNeuron.m - omniplex/
nex/ , MATLAB, 42 linesnexAddWaveform.m - omniplex/
nex/ , MATLAB, 14 linesnexCreateFileData.m - omniplex/
nex/ , MATLAB, 246 linesreadNexFile.m - omniplex/
nex/ , MATLAB, 505 lineswriteNexFile.m - omniplex/
opxOnline.m , MATLAB, 1,392 lines - omniplex/
opxRunMaster.m , MATLAB, 2 lines - omniplex/
opxRunSlave.m , MATLAB, 2 lines - omniplex/
opx_opt_ui.m , MATLAB, 100 lines - omniplex/
opx_ui.m , MATLAB, 246 lines - omniplex/
parseOpxSpikes.m , MATLAB, 319 lines - omniplex/
plxReader.m , MATLAB, 1,364 lines - opticka.m, MATLAB, 2,206 lines
- optickaBehaviourTest.m, MATLAB, 174 lines
- optickaCore.m, MATLAB, 1,068 lines
- optickaRoot.m, MATLAB, 3 lines
- optickaTest.m, MATLAB, 278 lines
- runExperiment.m, MATLAB, 3,381 lines
- runOpticka.m, MATLAB, 8 lines
- screenManager.m, MATLAB, 2,242 lines
- stateMachine.m, MATLAB, 944 lines
- stimuli/
CreateProceduralCheckerb , MATLAB, 50 linesoard.m - stimuli/
CreateProceduralPolarBoa , MATLAB, 79 linesrd.m - stimuli/
CreateProceduralPolarGra , MATLAB, 124 linesting.m - stimuli/
CreateProceduralPseudoYe , MATLAB, 82 linesllowGrating.m - stimuli/
CreateProceduralSineSmoo , MATLAB, 148 linesthedGrating.m - stimuli/
CreateProceduralSineSqua , MATLAB, 125 linesreGrating.m - stimuli/
CreateProceduralSmoothDi , MATLAB, 122 linessc.m - stimuli/
ProceduralPolarGratingDe , MATLAB, 181 linesmo.m - stimuli/
animationManager.m , MATLAB, 1,050 lines - stimuli/
annulusStimulus.m , MATLAB, 59 lines - stimuli/
apparentMotionStimulus.m , MATLAB, 400 lines - stimuli/
audioManager.m , MATLAB, 306 lines - stimuli/
barStimulus.m , MATLAB, 591 lines - stimuli/
baseStimulus.m , MATLAB, 1,239 lines - stimuli/
checkerboardStimulus.m , MATLAB, 472 lines - stimuli/
colourGratingStimulus.m , MATLAB, 604 lines - stimuli/
colourTest.m , MATLAB, 371 lines - stimuli/
discStimulus.m , MATLAB, 437 lines - stimuli/
doLogGabor.m , MATLAB, 85 lines - stimuli/
dotlineStimulus.m , MATLAB, 376 lines - stimuli/
dotsStimulus.m , MATLAB, 459 lines - stimuli/
exampleStimulus.m , MATLAB, 144 lines - stimuli/
fixationCrossStimulus.m , MATLAB, 395 lines - stimuli/
gaborStimulus.m , MATLAB, 420 lines - stimuli/
gratingStimulus.m , MATLAB, 499 lines - stimuli/
imageStimulus.m , MATLAB, 539 lines - stimuli/
logGaborStimulus.m , MATLAB, 532 lines - stimuli/
metaStimulus.m , MATLAB, 791 lines - stimuli/
movieStimulus.m , MATLAB, 623 lines - stimuli/
ndotsStimulus.m , MATLAB, 479 lines - stimuli/
perlin.m , MATLAB, 13 lines - stimuli/
plaidStimulus.m , MATLAB, 151 lines - stimuli/
polarBoardStimulus.m , MATLAB, 613 lines - stimuli/
polarGratingStimulus.m , MATLAB, 675 lines - stimuli/
revCor.m , MATLAB, 187 lines - stimuli/
revcorStimulus.m , MATLAB, 343 lines - stimuli/
rfMapper.m , MATLAB, 685 lines - stimuli/
spotStimulus.m , MATLAB, 357 lines - stimuli/
targetInducerStimulus.m , MATLAB, 433 lines - stimuli/
timeTest.m , MATLAB, 626 lines - taskSequence.m, MATLAB, 1,093 lines
- tools/
HEDTagger.m , MATLAB, 61 lines - tools/
HEDTags.m , MATLAB, 237 lines - tools/
SplashScreen.m , MATLAB, 493 lines - tools/
afterimagetest.m , MATLAB, 198 lines - tools/
assessCounterbalancing.m , MATLAB, 29 lines - tools/
behaviouralRecord.m , MATLAB, 520 lines - tools/
carryoverCounterbalance. , MATLAB, 416 linesm - tools/
dirPlus.m , MATLAB, 318 lines - tools/
getDensity.m , MATLAB, 2,033 lines - tools/
lfpCursor.m , MATLAB, 22 lines - tools/
m2cpp.pl , Perl, 267 lines - tools/
motiontest.m , MATLAB, 125 lines - tools/
passwordUI.m , MATLAB, 220 lines - tools/
runDeployed.m , MATLAB, 34 lines - tools/
staircaseManager.m , MATLAB, 109 lines - tools/
stimulusSequence.m , MATLAB, 825 lines - tools/
testptb.m , MATLAB, 63 lines - tools/
timeLogger.m , MATLAB, 507 lines - tools/
touchData.m , MATLAB, 88 lines - tools/
uiinspect.m , MATLAB, 3,002 lines - ui/
figpos.m , MATLAB, 82 lines - ui/
menuN.m , MATLAB, 1,031 lines - ui/
panel.m , MATLAB, 5,201 lines - ui/
seditor.m , MATLAB, 222 lines - ui/
textprogressbar.m , MATLAB, 301 lines - userFunctions.m, MATLAB, 105 lines
- LICENCE.md, License, 157 lines
- README.md, Text, 103 lines
iandol/opticka
dd582c8c3fd22468856fd54a836051a42478c62a, 24 August 2026Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
291 files
- CoreProtocols/
AreaSummationStateInfo.m , MATLAB, 383 lines - CoreProtocols/
Back_PropagationStateInf , MATLAB, 452 lineso.m - CoreProtocols/
ColourGratingStateInfo.m , MATLAB, 383 lines - CoreProtocols/
DMTSFunctions.m , MATLAB, 175 lines - CoreProtocols/
DMTSStateInfo.m , MATLAB, 487 lines - CoreProtocols/
DotColourStateInfo.m , MATLAB, 368 lines - CoreProtocols/
DotDirectionStateInfo.m , MATLAB, 354 lines - CoreProtocols/
FastRFMapperStateInfo.m , MATLAB, 281 lines - CoreProtocols/
FigureGroundStateInfo.m , MATLAB, 426 lines - CoreProtocols/
FixationOnly.m , MATLAB, 338 lines - CoreProtocols/
FixationTrainingAnimated , MATLAB, 379 linesStateInfo.m - CoreProtocols/
FixationTrainingDistract , MATLAB, 391 linesorStateInfo.m - CoreProtocols/
FixationTrainingStateInf , MATLAB, 364 lineso.m - CoreProtocols/
HSMTestStateInfo.m , MATLAB, 222 lines - CoreProtocols/
Isoluminant_Colours_Stat , MATLAB, 496 lineseInfo.m - CoreProtocols/
OrientationTuningStateIn , MATLAB, 471 linesfo.m - CoreProtocols/
PupillaryReflex.m , MATLAB, 440 lines - CoreProtocols/
RFLocaliserStateInfo.m , MATLAB, 407 lines - CoreProtocols/
RevCorStateInfo.m , MATLAB, 492 lines - CoreProtocols/
SFTFStateInfo.m , MATLAB, 241 lines - CoreProtocols/
SaccadePhospheneStateInf , MATLAB, 525 lineso.m - CoreProtocols/
Saccade_AntiSaccade.m , MATLAB, 561 lines - CoreProtocols/
Saccade_AntiSaccade_TRAI , MATLAB, 547 linesN_1.m - CoreProtocols/
Saccade_AntiSaccade_touc , MATLAB, 482 linesh.m - CoreProtocols/
Saccadic_Countermanding. , MATLAB, 492 linesm - CoreProtocols/
Saccadic_DoubleStep.m , MATLAB, 455 lines - CoreProtocols/
Saccadic_DoubleStep_TRAI , MATLAB, 471 linesN_1.m - CoreProtocols/
Saccadic_DoubleStep_touc , MATLAB, 424 linesh.m - CoreProtocols/
TwoFigureGroundStateInfo , MATLAB, 273 lines.m - CoreProtocols/
Two_Images.m , MATLAB, 445 lines - CoreProtocols/
VEPTest.m , MATLAB, 328 lines - CoreProtocols/
fNIRS.m , MATLAB, 336 lines - CoreProtocols/
myUserFunctions.m , MATLAB, 50 lines - addOptickaToPath.m, MATLAB, 63 lines
- analysis/
LFPAnalysis.m , MATLAB, 3,106 lines - analysis/
LFPMeta.m , MATLAB, 897 lines - analysis/
analysisCore.m , MATLAB, 1,373 lines - analysis/
eyelinkAnalysis.m , MATLAB, 2,453 lines - analysis/
iRecAnalysis.m , MATLAB, 2,031 lines - analysis/
spikeAnalysis.m , MATLAB, 1,503 lines - analysis/
tobiiAnalysis.m , MATLAB, 2,273 lines - calibration/
I1Demo.m , MATLAB, 45 lines - calibration/
calibrateLuminance.m , MATLAB, 1,468 lines, 1 match - calibration/
calibrateLuminanceNew.m , MATLAB, 1,472 lines, 1 match - calibration/
calibrateSize.m , MATLAB, 187 lines - calibration/
ccal.m , MATLAB, 391 lines - calibration/
colourManager.m , MATLAB, 361 lines - communication/
alyxManager.m , MATLAB, 1,863 lines - communication/
arduinoIOPort.m , MATLAB, 620 lines - communication/
arduinoManager.m , MATLAB, 448 lines - communication/
arduinoSerial.m , MATLAB, 2,366 lines - communication/
arduinoSerialPort.m , MATLAB, 2,153 lines - communication/
awsManager.m , MATLAB, 114 lines - communication/
dPixxManager.m , MATLAB, 311 lines - communication/
dataConnection.m , MATLAB, 1,188 lines - communication/
dumpmsgpack.m , MATLAB, 268 lines - communication/
eyeOccluder.m , MATLAB, 90 lines - communication/
ioManager.m , MATLAB, 269 lines - communication/
joystickManager.m , MATLAB, 128 lines - communication/
jzmqConnection.m , MATLAB, 753 lines - communication/
labJack.m , MATLAB, 913 lines - communication/
labJackT.m , MATLAB, 914 lines - communication/
magstimManager.m , MATLAB, 130 lines - communication/
mentalabManager.m , MATLAB, 282 lines - communication/
minioManager.m , MATLAB, 339 lines - communication/
nirSmartManager.m , MATLAB, 284 lines - communication/
omniplex/ , MATLAB, 34 linesReadPLX/ PL2Ad.m - communication/
omniplex/ , MATLAB, 45 linesReadPLX/ PL2AdBySource.m - communication/
omniplex/ , MATLAB, 30 linesReadPLX/ PL2AdSpan.m - communication/
omniplex/ , MATLAB, 39 linesReadPLX/ PL2AdSpanBySource.m - communication/
omniplex/ , MATLAB, 37 linesReadPLX/ PL2AdTimeSpan.m - communication/
omniplex/ , MATLAB, 48 linesReadPLX/ PL2AdTimeSpanBySource.m - communication/
omniplex/ , MATLAB, 24 linesReadPLX/ PL2EventTs.m - communication/
omniplex/ , MATLAB, 33 linesReadPLX/ PL2EventTsBySource.m - communication/
omniplex/ , MATLAB, 69 linesReadPLX/ PL2GetFileIndex.m - communication/
omniplex/ , MATLAB, 52 linesReadPLX/ PL2Print.m - communication/
omniplex/ , MATLAB, 154 linesReadPLX/ PL2ReadFileIndex.m - communication/
omniplex/ , MATLAB, 49 linesReadPLX/ PL2ReadFirstDataBlock.m - communication/
omniplex/ , MATLAB, 50 linesReadPLX/ PL2ReadNextDataBlock.m - communication/
omniplex/ , MATLAB, 16 linesReadPLX/ PL2StartStopTs.m - communication/
omniplex/ , MATLAB, 25 linesReadPLX/ PL2Ts.m - communication/
omniplex/ , MATLAB, 34 linesReadPLX/ PL2TsBySource.m - communication/
omniplex/ , MATLAB, 28 linesReadPLX/ PL2Waves.m - communication/
omniplex/ , MATLAB, 38 linesReadPLX/ PL2WavesBySource.m - communication/
omniplex/ , MATLAB, 52 linesReadPLX/ build_and_verify_mexPlex .m - communication/
omniplex/ , MATLAB, 26 linesReadPLX/ ddt.m - communication/
omniplex/ , MATLAB, 26 linesReadPLX/ ddt_v.m - communication/
omniplex/ , MATLAB, 27 linesReadPLX/ ddt_write_v.m - communication/
omniplex/ , MATLAB, 66 linesReadPLX/ plx_ad.m - communication/
omniplex/ , MATLAB, 44 linesReadPLX/ plx_ad_chanmap.m - communication/
omniplex/ , MATLAB, 56 linesReadPLX/ plx_ad_gap_info.m - communication/
omniplex/ , MATLAB, 41 linesReadPLX/ plx_ad_info.m - communication/
omniplex/ , MATLAB, 36 linesReadPLX/ plx_ad_resolve_channel.m - communication/
omniplex/ , MATLAB, 55 linesReadPLX/ plx_ad_span.m - communication/
omniplex/ , MATLAB, 52 linesReadPLX/ plx_ad_span_v.m - communication/
omniplex/ , MATLAB, 63 linesReadPLX/ plx_ad_v.m - communication/
omniplex/ , MATLAB, 32 linesReadPLX/ plx_adchan_freqs.m - communication/
omniplex/ , MATLAB, 30 linesReadPLX/ plx_adchan_gains.m - communication/
omniplex/ , MATLAB, 34 linesReadPLX/ plx_adchan_names.m - communication/
omniplex/ , MATLAB, 30 linesReadPLX/ plx_adchan_samplecounts. m - communication/
omniplex/ , MATLAB, 29 linesReadPLX/ plx_chan_filters.m - communication/
omniplex/ , MATLAB, 32 linesReadPLX/ plx_chan_gains.m - communication/
omniplex/ , MATLAB, 36 linesReadPLX/ plx_chan_names.m - communication/
omniplex/ , MATLAB, 32 linesReadPLX/ plx_chan_thresholds.m - communication/
omniplex/ , MATLAB, 40 linesReadPLX/ plx_chanmap.m - communication/
omniplex/ , MATLAB, 12 linesReadPLX/ plx_close.m - communication/
omniplex/ , MATLAB, 41 linesReadPLX/ plx_event_chanmap.m - communication/
omniplex/ , MATLAB, 39 linesReadPLX/ plx_event_names.m - communication/
omniplex/ , MATLAB, 38 linesReadPLX/ plx_event_resolve_channe l.m - communication/
omniplex/ , MATLAB, 72 linesReadPLX/ plx_event_ts.m - communication/
omniplex/ , MATLAB, 73 linesReadPLX/ plx_info.m - communication/
omniplex/ , MATLAB, 91 linesReadPLX/ plx_information.m - communication/
omniplex/ , MATLAB, 12 linesReadPLX/ plx_mexplex_version.m - communication/
omniplex/ , MATLAB, 38 linesReadPLX/ plx_resolve_channel.m - communication/
omniplex/ , MATLAB, 48 linesReadPLX/ plx_spike_info.m - communication/
omniplex/ , MATLAB, 41 linesReadPLX/ plx_ts.m - communication/
omniplex/ , MATLAB, 42 linesReadPLX/ plx_vt_interpret.m - communication/
omniplex/ , MATLAB, 63 linesReadPLX/ plx_waves.m - communication/
omniplex/ , MATLAB, 59 linesReadPLX/ plx_waves_v.m - communication/
omniplex/ , MATLAB, 127 linesReadPLX/ readall.m - communication/
omniplex/ , MATLAB, 756 linesft_read_plxheader.m - communication/
omniplex/ , MATLAB, 87 lineskbhit.m - communication/
omniplex/ , MATLAB, 64 linesnex/ exampleSaveDataInNexFile .m - communication/
omniplex/ , MATLAB, 35 linesnex/ nexAddContinuous.m - communication/
omniplex/ , MATLAB, 26 linesnex/ nexAddEvent.m - communication/
omniplex/ , MATLAB, 32 linesnex/ nexAddInterval.m - communication/
omniplex/ , MATLAB, 30 linesnex/ nexAddNeuron.m - communication/
omniplex/ , MATLAB, 42 linesnex/ nexAddWaveform.m - communication/
omniplex/ , MATLAB, 14 linesnex/ nexCreateFileData.m - communication/
omniplex/ , MATLAB, 246 linesnex/ readNexFile.m - communication/
omniplex/ , MATLAB, 505 linesnex/ writeNexFile.m - communication/
omniplex/ , MATLAB, 1,392 linesopxOnline.m - communication/
omniplex/ , MATLAB, 2 linesopxRunMaster.m - communication/
omniplex/ , MATLAB, 2 linesopxRunSlave.m - communication/
omniplex/ , MATLAB, 100 linesopx_opt_ui.m - communication/
omniplex/ , MATLAB, 246 linesopx_ui.m - communication/
omniplex/ , MATLAB, 319 linesparseOpxSpikes.m - communication/
omniplex/ , MATLAB, 1,364 linesplxReader.m - communication/
parsemsgpack.m , MATLAB, 196 lines - communication/
plusplusManager.m , MATLAB, 453 lines - communication/
rewardManager.m , MATLAB, 17 lines - communication/
runServer.m , MATLAB, 1 line - communication/
sendSerialIOPort.m , MATLAB, 149 lines - communication/
touchManager.m , MATLAB, 1,334 lines - communication/
zmqConnection.m , MATLAB, 606 lines - core/
DefaultStateInfo.m , MATLAB, 518 lines - core/
optickaCore.m , MATLAB, 1,167 lines - core/
runExperiment.m , MATLAB, 3,528 lines - core/
runOpticka.m , MATLAB, 8 lines - core/
screenManager.m , MATLAB, 2,534 lines - core/
stateMachine.m , MATLAB, 1,039 lines - core/
stateMachineTree.m , MATLAB, 577 lines - core/
stateNode.m , MATLAB, 227 lines - core/
taskSequence.m , MATLAB, 1,302 lines - core/
userFunctions.m , MATLAB, 152 lines - data/
DataHash.m , MATLAB, 534 lines - data/
HEDTagger.m , MATLAB, 61 lines - data/
HEDTags.m , MATLAB, 1,139 lines - data/
behaviouralRecord.m , MATLAB, 521 lines - data/
getDensity.m , MATLAB, 2,033 lines - data/
timeLogger.m , MATLAB, 599 lines - data/
touchData.m , MATLAB, 169 lines - eyetracker/
edfmex.m , MATLAB, 84 lines - eyetracker/
eyelinkCustomCallback.m , MATLAB, 581 lines - eyetracker/
eyelinkManager.m , MATLAB, 990 lines - eyetracker/
eyetrackerCore.m , MATLAB, 1,308 lines - eyetracker/
eyetrackerSmooth.m , MATLAB, 145 lines - eyetracker/
iRecManager.m , MATLAB, 1,095 lines - eyetracker/
iView_checkfix_demo.m , MATLAB, 159 lines - eyetracker/
pupilCoreManager.m , MATLAB, 1,087 lines - eyetracker/
pupilCoreStimulus.m , MATLAB, 199 lines - eyetracker/
tittaAdvCalTest.m , MATLAB, 388 lines - eyetracker/
tittaAdvImageStimulus.m , MATLAB, 133 lines - eyetracker/
tittaAdvMovieStimulus.m , MATLAB, 153 lines - eyetracker/
tittaAdvancedController. , MATLAB, 1,140 linesm - eyetracker/
tittaCalCallback.m , MATLAB, 25 lines - eyetracker/
tittaCalStimulus.m , MATLAB, 214 lines - eyetracker/
tittaRewardProvider.m , MATLAB, 78 lines - eyetracker/
tobiiManager.m , MATLAB, 1,222 lines - optickaBehaviourTest.m, MATLAB, 178 lines
- optickaRoot.m, MATLAB, 3 lines
- optickaTest.m, MATLAB, 279 lines
- setupOptickaCI.m, MATLAB, 74 lines
- stimuli/
CreateProceduralCheckerb , MATLAB, 50 linesoard.m - stimuli/
CreateProceduralPolarBoa , MATLAB, 79 linesrd.m - stimuli/
CreateProceduralPolarGra , MATLAB, 124 linesting.m - stimuli/
CreateProceduralPseudoYe , MATLAB, 82 linesllowGrating.m - stimuli/
CreateProceduralSineSmoo , MATLAB, 148 linesthedGrating.m - stimuli/
CreateProceduralSineSqua , MATLAB, 125 linesreGrating.m - stimuli/
CreateProceduralSmoothDi , MATLAB, 122 linessc.m - stimuli/
ProceduralPolarGratingDe , MATLAB, 181 linesmo.m - stimuli/
animationManager.m , MATLAB, 1,066 lines - stimuli/
apparentMotionStimulus.m , MATLAB, 400 lines - stimuli/
aprilTagStimulus.m , MATLAB, 422 lines - stimuli/
audioManager.m , MATLAB, 480 lines - stimuli/
barStimulus.m , MATLAB, 591 lines - stimuli/
baseStimulus.m , MATLAB, 1,280 lines - stimuli/
checkerboardStimulus.m , MATLAB, 472 lines - stimuli/
colourGratingStimulus.m , MATLAB, 605 lines, 2 matches - stimuli/
colourTest.m , MATLAB, 371 lines - stimuli/
discStimulus.m , MATLAB, 440 lines - stimuli/
doLogGabor.m , MATLAB, 85 lines - stimuli/
dotlineStimulus.m , MATLAB, 376 lines - stimuli/
dotsStimulus.m , MATLAB, 459 lines - stimuli/
exampleStimulus.m , MATLAB, 144 lines - stimuli/
fixationCrossStimulus.m , MATLAB, 395 lines - stimuli/
gaborStimulus.m , MATLAB, 420 lines - stimuli/
gratingStimulus.m , MATLAB, 499 lines, 1 match - stimuli/
imageStimulus.m , MATLAB, 574 lines - stimuli/
logGaborStimulus.m , MATLAB, 532 lines - stimuli/
metaStimulus.m , MATLAB, 797 lines - stimuli/
movieStimulus.m , MATLAB, 625 lines - stimuli/
ndotsStimulus.m , MATLAB, 479 lines - stimuli/
perlin.m , MATLAB, 13 lines - stimuli/
plaidStimulus.m , MATLAB, 151 lines - stimuli/
polarBoardStimulus.m , MATLAB, 613 lines - stimuli/
polarGratingStimulus.m , MATLAB, 675 lines, 1 match - stimuli/
revCor.m , MATLAB, 187 lines - stimuli/
revcorStimulus.m , MATLAB, 343 lines - stimuli/
rfMapper.m , MATLAB, 685 lines - stimuli/
spotStimulus.m , MATLAB, 357 lines - stimuli/
targetInducerStimulus.m , MATLAB, 433 lines - stimuli/
timeTest.m , MATLAB, 626 lines - tests/
AlyxManagerTest.m , MATLAB, 290 lines - tests/
AnimationManagerTest.m , MATLAB, 249 lines - tests/
AprilTagStimulusTest.m , MATLAB, 397 lines - tests/
AudioManagerTest.m , MATLAB, 174 lines - tests/
BarStimulusTest.m , MATLAB, 183 lines - tests/
BaseStimulusTest.m , MATLAB, 262 lines - tests/
CheckerboardStimulusTest , MATLAB, 300 lines.m - tests/
ColourGratingStimulusTes , MATLAB, 315 linest.m - tests/
DiscStimulusTest.m , MATLAB, 190 lines - tests/
DotlineStimulusTest.m , MATLAB, 318 lines - tests/
DotsStimulusTest.m , MATLAB, 310 lines - tests/
EyetrackerCoreTest.m , MATLAB, 594 lines - tests/
FixationCrossStimulusTes , MATLAB, 305 linest.m - tests/
GaborStimulusTest.m , MATLAB, 307 lines - tests/
GratingStimulusTest.m , MATLAB, 217 lines - tests/
HSMBenchmarkTest.m , MATLAB, 277 lines - tests/
HSMCompareTest.m , MATLAB, 215 lines - tests/
HSMOption1Test.m , MATLAB, 232 lines - tests/
HSMOption2Test.m , MATLAB, 273 lines - tests/
ImageStimulusTest.m , MATLAB, 446 lines - tests/
JzmqConnectionTest.m , MATLAB, 635 lines - tests/
JzmqCrossProcessTest.m , MATLAB, 251 lines - tests/
LogGaborStimulusTest.m , MATLAB, 300 lines - tests/
MetaStimulusTest.m , MATLAB, 237 lines - tests/
MovieStimulusTest.m , MATLAB, 410 lines - tests/
NDotsStimulusTest.m , MATLAB, 291 lines - tests/
OptickaGUITest.m , MATLAB, 165 lines - tests/
PolarBoardStimulusTest.m , MATLAB, 315 lines - tests/
PolarGratingStimulusTest , MATLAB, 324 lines.m - tests/
RevcorStimulusTest.m , MATLAB, 264 lines - tests/
RunExperimentTest.m , MATLAB, 491 lines - tests/
ScreenManagerTest.m , MATLAB, 924 lines - tests/
SpotStimulusTest.m , MATLAB, 282 lines - tests/
StateNodeTest.m , MATLAB, 428 lines - tests/
TaskSequenceTest.m , MATLAB, 408 lines - tests/
TimeLoggerTest.m , MATLAB, 305 lines - tests/
TouchManagerTest.m , MATLAB, 621 lines - tests/
alyxManagerHarness.m , MATLAB, 85 lines - tests/
jzmqBatchServer.m , MATLAB, 107 lines - tests/
runOptickaTests.m , MATLAB, 83 lines - tests/
runOptickaTestsXvfb.sh , Shell, 16 lines - tests/
stateMachineHSM.m , MATLAB, 549 lines - tools/
SplashScreen.m , MATLAB, 493 lines - tools/
afterimagetest.m , MATLAB, 198 lines - tools/
alyxUploader.m , MATLAB, 1,094 lines - tools/
assessCounterbalancing.m , MATLAB, 8 lines - tools/
carryoverCounterbalance. , MATLAB, 15 linesm - tools/
dirPlus.m , MATLAB, 318 lines - tools/
lfpCursor.m , MATLAB, 22 lines - tools/
m2cpp.pl , Perl, 267 lines - tools/
motiontest.m , MATLAB, 125 lines - tools/
passwordUI.m , MATLAB, 220 lines - tools/
runDeployed.m , MATLAB, 34 lines - tools/
staircaseManager.m , MATLAB, 109 lines - tools/
stimulusSequence.m , MATLAB, 825 lines - tools/
testptb.m , MATLAB, 63 lines - tools/
uiinspect.m , MATLAB, 3,002 lines - ui/
CompactEditableComboBox. , MATLAB, 659 linesm - ui/
CompactEditableComboBoxE , MATLAB, 39 linesventData.m - ui/
demoCompactEditableCombo , MATLAB, 46 linesBox.m - ui/
figpos.m , MATLAB, 82 lines - ui/
menuN.m , MATLAB, 688 lines - ui/
opticka.m , MATLAB, 2,105 lines - ui/
panel.m , MATLAB, 5,201 lines - ui/
seditor.m , MATLAB, 222 lines - ui/
textprogressbar.m , MATLAB, 301 lines - LICENCE.md, License, 157 lines
- README.md, Text, 119 lines
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 4 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 587 scripts, each with its path and the digest of its content;
- 9 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 29 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 10 authors, 4 keywords, 2 funders, 81 references.
Cite
This paper
Huang, Y., Wang, S., Qian, Y., Kong, L., Zhao, P., Liu, Y., Zarei, S. A., Zhang, P., Andolina, I. M., & Liu, H. (2026). Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children. Clinical ophthalmology (Auckland, N.Z.), 20, 590186. https://
BibTeX
@article{huang2026differ
author = {Huang, Yuanyang and Wang, Shu and Qian, Yazhu and Kong, Linghan and Zhao, Peijun and Liu, Yan and Zarei, Shahab Aldin and Zhang, Peng and Andolina, Ian Max and Liu, Hong},
title = {{Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children}},
journal = {Clinical ophthalmology (Auckland, N.Z.)},
year = {2026},
month = apr,
volume = {20},
pages = {590186},
publisher = {Dove Press},
issn = {1177-5467},
doi = {10.2147/
url = {https://
pmid = {42052216},
pmcid = {PMC13117856}
}
RIS
TY - JOUR
AU - Huang, Yuanyang
AU - Wang, Shu
AU - Qian, Yazhu
AU - Kong, Linghan
AU - Zhao, Peijun
AU - Liu, Yan
AU - Zarei, Shahab Aldin
AU - Zhang, Peng
AU - Andolina, Ian Max
AU - Liu, Hong
TI - Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children
T2 - Clinical ophthalmology (Auckland, N.Z.)
J2 - Clin Ophthalmol
PY - 2026
DA - 2026/
VL - 20
SP - 590186
SN - 1177-5467
PB - Dove Press
DO - 10.2147/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.2147/
"type": "article-journal",
"title": "Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children",
"container-title": "Clinical ophthalmology (Auckland, N.Z.)",
"author": [
{
"family": "Huang",
"given": "Yuanyang"
},
{
"family": "Wang",
"given": "Shu"
},
{
"family": "Qian",
"given": "Yazhu"
},
{
"family": "Kong",
"given": "Linghan"
},
{
"family": "Zhao",
"given": "Peijun"
},
{
"family": "Liu",
"given": "Yan"
},
{
"family": "Zarei",
"given": "Shahab Aldin"
},
{
"family": "Zhang",
"given": "Peng"
},
{
"family": "Andolina",
"given": "Ian Max"
},
{
"family": "Liu",
"given": "Hong"
}
],
"container-title-short":
"volume": "20",
"page": "590186",
"DOI": "10.2147/
"PMID": "42052216",
"PMCID": "PMC13117856",
"ISSN": "1177-5467",
"publisher": "Dove Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
23
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41586-026-10631-3 [code]
- A prognostic human brain network for diffuse midline glioma.Journal: NatureIn common: Psychtoolbox, Curve Fitting Toolbox, Parallel Computing Toolbox, 13 other tools, other condition
- [2] doi:10.1038/s41467-026-71151-2 [code]
- Common and distinct neural correlates of social interaction processing and theory of mind in narratives.Journal: Nature communicationsIn common: Psychtoolbox, AFNI, Parallel Computing Toolbox, 13 other tools
- [3] doi:10.1002/hbm.70602 [code]
- Neuroimaging Correlates of Post-Stroke Pain After Ischemic Stroke: Secondary Analysis of the INSPiRE-TMS Trial.Journal: Human brain mappingIn common: Psychtoolbox, Curve Fitting Toolbox, Parallel Computing Toolbox, 12 other tools, other condition
- [4] doi:10.1111/ene.70678 [code]
- Who Falls After a Stroke? Evidence From a Prospective Stroke Cohort.Journal: European journal of neurologyIn common: Psychtoolbox, Curve Fitting Toolbox, Parallel Computing Toolbox, 12 other tools
- [5] doi:10.1016/j.celrep.2026.117404 [code]
- Action and rest tremor map to distinct networks within the primary motor cortex.Journal: Cell reportsIn common: Psychtoolbox, Curve Fitting Toolbox, Parallel Computing Toolbox, 12 other tools
- [6] doi:10.1002/ana.78206 [code]
- Multimodal Image Guidance in Subthalamic Deep Brain Stimulation for Parkinson's Disease.Journal: Annals of neurologyIn common: Psychtoolbox, Curve Fitting Toolbox, Parallel Computing Toolbox, 12 other tools
- [7] doi:10.1016/j.neuron.2026.04.011 [code]
- Precision fMRI reveals densely interdigitated network patches with conserved motifs in the lateral prefrontal cortex.Journal: NeuronIn common: AFNI, Parallel Computing Toolbox, FieldTrip, 9 other tools, fMRI, 2 references
- [8] doi:10.1038/s41467-026-73668-y [code]
- Convergent and divergent brain-cognition development in early adolescence.Journal: Nature communicationsIn common: AFNI, FieldTrip, FreeSurfer, 11 other tools, fMRI
- [9] doi:10.1038/s42003-026-10276-y [code]
- The cellular correlates and adolescent reorganisation of cortical myelination networks in the common marmoset.Journal: Communications biologyIn common: AFNI, Parallel Computing Toolbox, FreeSurfer, 11 other tools
- [10] doi:10.1162/imag.a.1262 [code]
- Frame-wise multi-echo distortion correction for superior functional MRI.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Parallel Computing Toolbox, FieldTrip, FreeSurfer, 9 other tools, fMRI, 2 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 4 repositories of the authors' code, each at its verified commit and with its license, 587 scripts, and 9 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:fb344b0c3b62742d…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
