Ultrasound neural interface enabling acute spinal cord monitoring and blood flow modulation
The 2 matches
- [1] § MATERIALS AND METHODS › Ultrasound imaging acquisition ↔ HEPIUS_MUSIC_imaging-main/matlab/SetUpL11_5vSpectralDoppler.m, lines 1 to 74 · score 0.83 · Vantage NXT, duplex mode, Doppler PRF, ultrasound system, spectral Doppler, Doppler image · Report a mismatch
- [2] § MATERIALS AND METHODS › Ultrasound imaging acquisition ↔ HEPIUS_MUSIC_imaging-main/matlab/SetupMusicSD_saveiq.m, lines 1 to 95 · score 0.75 · duplex mode, Doppler PRF, ultrasound system, Doppler image, spectral Doppler, pixel · Report a mismatch
Paper
Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 868 lines · 33 KB · no license · 1 match
- %
- % File name: SetUpL11_5vSpectralDoppler.m - Spectral doppler with plane wave transmit.
- %
- % Description:
- % Sequence programming file for L11-5v Linear array, using plane wave
- % transmits for 2D and doppler imaging.
- % - for the 2D image, a single plane wave transmit is used. All transmit
- % and receive channels are active for each acquisition.
- % - for the doppler ensemble, multiple pulses are transmitted at a
- % steering angle of dopAngle radians. 128 transmit and 64 receive
- % channels are active for each acquisition. The Doppler measurement
- % region is the region under the central 64 transducer elements.
- % - processing is asynchronous with respect to acquisition
- % - An acquisition 'frame' consists of the number of transmit/receive events
- % that equals 10msec of time. Doppler and 2D acquisitions are interleaved.
- % - Doppler PRF will be quantized such that the acquisition PRF (twice
- % the Doppler PRF) has a PRI of integer microseconds.
- % - For the Doppler measurement, the sample volume in the measurement
- % region is selected by clicking the left mouse button in the DisplayWindow.
- % The sample volume is selected as a single I,Q pixel whose location is
- % indicated by a red circle. This action also switches the processing mode
- % to Doppler only. Clicking the right mouse button cancels the Doppler
- % processing and returns to 2D only processing. While the processing
- % operates in duplex mode - either 2D or Doppler, acquisition is always
- % the same, allowing Doppler operation in RcvData Loop playback mode.
- %
- % Notice:
- % This file is provided by Verasonics to end users as a programming
- % example for the Verasonics Vantage NXT Research Ultrasound System.
- % Verasonics makes no claims as to the functionality or intended
- % application of this program and the user assumes all responsibility
- % for its use.
- %
- % Copyright © 2013-2023 Verasonics, Inc.
- clear all
- % - 2D P(1) structure
- P(1).startDepth = 2; % Acquisition depth in wavelengths
- P(1).endDepth = 128; % This should preferrably be a multiple of 128 samples.
- % - Doppler P(2) structure (This is the pixel region for possible Doppler reconstructions.)
- P(2).startDepth = 0; % Acquisition depth in wavelengths
- P(2).endDepth = 128; % This should preferrably equate to a multiple of 128 samples.
- nfrms = 10; % no. of frames to acquire in RcvBuffer (sets size of RF cineloop).
- dopPRFnominal = 2000;
- framePeriodnominal_uSec = 40000; % nominal frame period for collections of PRIs.
- [psched ] = spectralDoppler('restrictAcqPRF',framePeriodnominal_uSec,dopPRFnominal);
- [pschedAll ]= spectralDoppler('restrictAcqPRF',framePeriodnominal_uSec,[]);
- disp(' '),
- disp([mfilename,': Allowed PRF values: '])
- disp(sprintf('%4.4f Hz\n',pschedAll.PRFDop))
- framePeriod = psched.FrameTime_uSec*1e-6;
- dopPRF = psched.PRFDop;
- ttna_microsec = psched.PRIAcq_uSec;
- acqPRF = psched.PRFAcq;
- maxAcqPRF = psched.maxPRFAcq;
- maxDopPRF = psched.maxPRFDop;
- minAcqPRF = psched.minPRFAcq;
- minDopPRF = psched.minPRFDop;
- NWindow = round(dopPRF*0.014); %samples in FFT window (not including zero padding)
- SDDespeckle = 0.4;
- dopWFCutoffNorm = 0.025; %allfilter normalized cutoff frequency
- dopSweepTimeIndex = 2;%1-4 avail for 20msec frame time
- SDDynRangeDB = 13;% not including FFT processing gain
- sgp= spectralDoppler('spectrogramParameters',framePeriod,dopSweepTimeIndex);
- sweepTime = sgp.THist;
- baseLineShiftNorm = -0.375;
- nPRIs = psched.pulsesPerFrameAcq; % needs to start as even .default no. of acquisition PRIs in a 'frame'
- nDopPRIs = psched.pulsesPerFrameDop;
- dopAngle = 14 * pi/180; % angle for Doppler flash transmits.
- maxPRIs = psched.pulsesPerFrameAcqMax ; % max no. of acquisition PRIs in a frame .
- % - Specify system parameters
- Resource.Parameters.numTransmit = 244; % number of transmit channels.
- Resource.Parameters.numRcvChannels = 244; % number of receive channels.
- Resource.Parameters.speedOfSound = 1540;
- Resource.Parameters.speedCorrectionFactor = 1.0;
- Resource.Parameters.initializeOnly = 0;
- Resource.Parameters.simulateMode = 0;
- Resource.Parameters.Connector = [1,2];
- % Specify Trans structure array.
- %Trans.name = 'L11-5v';
- Trans.name = 'MUSIC3_Biobox';
- Trans.units = 'wavelengths'; % Explicit declaration avoids warning message when selected by default
- Trans = computeTrans2(Trans); % computeTrans is used for known transducers.
- Trans.maxHighVoltage = 30; % set a reasonable high voltage limit.
- % Specify PData structure arrays.
- % - 2D PData structure
- PData(1).PDelta = [1.0,0,0.5];
- PData(1).Size(1,1) = ceil(P(1).endDepth/PData(1).PDelta(3)); % rows
- PData(1).Size(1,2) = ceil((Trans.numelements*Trans.spacing)/PData(1).PDelta(1)); % cols
- PData(1).Size(1,3) = 1; % single image page
- PData(1).Origin = [-Trans.spacing*(Trans.numelements-1)/2,0,P(1).startDepth]; % x,y,z of upr lft crnr w respect to xducer origin.
- % - Doppler PData structure
- PData(2).PDelta = [1.0,0,1.0];
- PData(2).Size(1,1) = 4; % 4 IQ samples for Doppler
- PData(2).Size(1,2) = 1; % single column for Doppler
- PData(2).Size(1,3) = 1; % single image page
- PData(2).Origin = [0,0,ceil(P(2).endDepth/2)];
- % - Region Outline for Region Constrain of Doppler Processing
- DopRegionLim.x = [-32,32]; % in wavelength
- DopRegionLim.y = [4,128];
- PData(3) = PData(1);
- PData(3).Region = struct('Shape',struct('Name','Rectangle',...
- 'Position',[0,0,DopRegionLim.y(1)],...
- 'width',diff(DopRegionLim.x),...
- 'height',diff(DopRegionLim.y)));
- % Specify Media object.
- pt1;
- Media.function = 'movePoints';
- % - RcvBuffer(1) is for 2D, and Doppler steering angle.
- Resource.RcvBuffer(1).datatype = 'int16';
- Resource.RcvBuffer(1).rowsPerFrame = 2048*maxPRIs;
- Resource.RcvBuffer(1).colsPerFrame = Resource.Parameters.numRcvChannels;
- Resource.RcvBuffer(1).numFrames = nfrms;
- % - InterBuffer(1) is for 2D data.
- Resource.InterBuffer(1).datatype = 'complex';
- Resource.InterBuffer(1).numFrames = 1; % one intermediate frame needed for 2D.
- % - InterBuffer(2) is for Doppler data.
- Resource.InterBuffer(2).datatype = 'complex';
- Resource.InterBuffer(2).numFrames = 1; % two intermediate frames needed for color
- Resource.InterBuffer(2).pagesPerFrame = maxPRIs/2; % no. of pages set by maxPRIs
- % - ImageBuffer(1) is for 2D image.
- Resource.ImageBuffer(1).datatype = 'double';
- Resource.ImageBuffer(1).numFrames = 10;
- % - DisplayWindow for 2D image
- Resource.DisplayWindow(1).Title = 'L11-5vSpectralDoppler';
- Resource.DisplayWindow(1).pdelta = 0.4;
- ScrnSize = get(0,'ScreenSize');
- DwWidth = ceil(PData(1).Size(2)*PData(1).PDelta(1)/Resource.DisplayWindow(1).pdelta);
- DwHeight = ceil(PData(1).Size(1)*PData(1).PDelta(3)/Resource.DisplayWindow(1).pdelta);
- Resource.DisplayWindow(1).Position = [250,(ScrnSize(4)-(DwHeight+150))/2, ... % lower left corner position
- DwWidth, DwHeight];
- Resource.DisplayWindow(1).ReferencePt = [PData(1).Origin(1),0,PData(1).Origin(3)]; % 2D imaging is in the X,Z plane
- Resource.DisplayWindow(1).numFrames = 20;
- Resource.DisplayWindow(1).Type = 'Verasonics';
- Resource.DisplayWindow(1).AxesUnits = 'mm';
- Resource.DisplayWindow(1).Colormap = gray(256);
- % Specify Transmit waveform structure.
- % - 2D transmit waveform
- TW(1).type = 'parametric';
- TW(1).Parameters = [Trans.frequency,0.67,2,1];
- % - Doppler transmit waveform
- TW(2).type = 'parametric';
- TW(2).Parameters = [Trans.frequency,0.67,6,1];
- % Specify TX structure arrays.
- % We need 1 TX specification for 2D and 1 TX specification for Doppler (1 steering angle).
- TX = repmat(struct('waveform', 1, ...
- 'Origin', [0.0,0.0,0.0], ...
- 'focus', 0.0, ...
- 'Steer', [0.0,0.0], ...
- 'Apod', ones(1,Trans.numelements), ...
- 'Delay', zeros(1,Trans.numelements)), 1, 2); %
- % - Set event specific TX attributes.
- TX(1).Delay = computeTXDelays(TX(1));
- % -- Second TX struct needed for Doppler
- TX(2).waveform = 2;
- TX(2).Steer = [dopAngle,0.0];
- TX(2).Delay = computeTXDelays(TX(2));
- % Specify TGC Waveform structures.
- % 2D TGC waveform
- TGC(1).CntrlPts = [51,331,430,515,603,690,777,887];
- TGC(1).rangeMax = P(1).endDepth;
- TGC(1).Waveform = computeTGCWaveform(TGC(1));
- % Doppler TGC waveform
- TGC(2).CntrlPts = [400,500,640,710,770,830,890,950];
- TGC(2).rangeMax = P(1).endDepth;
- TGC(2).Waveform = computeTGCWaveform(TGC(2));
- % Specify Receive structure arrays -
- % Define enough Receives to handle the maxPRI case. For lower PRIs, some of the Receives will go
- % unused in the Event list.
- % endDepth - add additional acquisition depth to account for some channels
- % having longer path lengths.
- maxAcqLength = ceil(sqrt(P(1).endDepth^2 + ((Trans.numelements-1)*Trans.spacing)^2));
- Receive = repmat(struct('Apod', zeros(1,Trans.numelements), ...
- 'startDepth', P(1).startDepth, ...
- 'endDepth', maxAcqLength, ...
- 'TGC', 1, ...
- 'bufnum', 1, ...
- 'framenum', 1, ...
- 'acqNum', 1, ...
- 'sampleMode', 'BS100BW',...
- 'mode', 0, ...
- 'callMediaFunc', 0),1,maxPRIs*nfrms);
- % - Set event specific Receive attributes.
- for i = 1:nfrms
- k = maxPRIs*(i-1);
- for j = 1:2:maxPRIs
- % -- 2D acquisition.
- Receive(k+j).Apod(1:128) = 1.0;
- Receive(k+j).framenum = i;
- Receive(k+j).acqNum = j;
- if j==1, Receive(k+j).callMediaFunc = 1; end
- % -- Doppler.
- Receive(k+j+1).Apod(33:96) = 1.0; % start Dop aperture at element 33
- Receive(k+j+1).TGC = 2;
- Receive(k+j+1).framenum = i;
- Receive(k+j+1).acqNum = j+1;
- end
- end
- % Specify Recon structure arrays.
- % - We need a Recon structure for 2D and one for Doppler. The 2D frame will only use
- % the first two 2D acquisitions of the acquisition 'frame'.
- % - We only need one Recon structure for the Doppler line. The Doppler reconstruction will use
- % nPRIs/2 acquisitions from each 'frame' for reconstruction, with each Doppler PRI reconstructed
- % to a different page of the IQData buffer.
- Recon = repmat(struct('senscutoff', 0.6, ...
- 'pdatanum', 1, ...
- 'rcvBufFrame', -1, ... % use the most recent frame
- 'IntBufDest', [1,1], ...
- 'ImgBufDest', [1,-1], ...
- 'RINums', zeros(1,1)), 1, 2);
- % - Set Recon values for 2D frame.
- Recon(1).RINums(1,1:2) = (1:2); % 2 ReconInfos needed for 2-1 synthetic aperture
- k = 3;
- % - Set Recon values for first Doppler ensemble.
- Recon(2).pdatanum = 2;
- Recon(2).IntBufDest = [2,1];
- Recon(2).ImgBufDest = [];
- Recon(2).RINums(1,1:(nPRIs/2)) = (k:(k+(nPRIs/2)-1)); % nPRIs/2 ReconInfos needed for Doppler.
- Recon(2).senscutoff = 0.8; %reduce aperture to reduce angle spread
- % Define ReconInfo structures.
- % - For 2D, we need 2 ReconInfo structures.
- % - For Doppler, we only need nPRIs/2 ReconInfo structures for the default case, but we will
- % define maxPRIs/2 structures to allow handling the maxPRI case.
- ReconInfo = repmat(struct('mode', 'replaceIQ', ... % set replace IQ data as default.
- 'txnum', 1, ...
- 'rcvnum', 1, ...
- 'pagenum',1, ...
- 'regionnum', 1), 1, 2 + nPRIs/2);
- % - Set specific ReconInfo attributes.
- % - ReconInfos for 2D frame.
- ReconInfo(1).mode = 'replaceIQ'; % replace IQ data
- ReconInfo(1).txnum = 1;
- ReconInfo(1).rcvnum = 1;
- ReconInfo(2).mode = 'accumIQ_replaceIntensity'; % accum and detect
- ReconInfo(2).txnum = 1;
- ReconInfo(2).rcvnum = 3;
- k = 2;
- % - ReconInfos for Doppler ensemble.
- for j = 1:nPRIs/2
- ReconInfo(k+j).mode = 'replaceIQ';
- ReconInfo(k+j).txnum = 2;
- ReconInfo(k+j).rcvnum = 2*(j-1) + 2;
- ReconInfo(k+j).pagenum = j;
- ReconInfo(k+j).regionnum = 1; % only 1 col..
- end
- % Specify Process structure arrays.
- pers = 20;
- Process(1).classname = 'Image';
- Process(1).method = 'imageDisplay';
- Process(1).Parameters = {'imgbufnum',1,... % number of buffer to process.
- 'framenum',-1,... % (-1 => lastFrame)
- 'pdatanum',1,... % number of PData structure to use
- 'pgain',1.0,... % pgain is image processing gain
- 'reject',2,... % reject level
- 'persistMethod','simple',...
- 'persistLevel',pers,...
- 'interpMethod','4pt',...
- 'grainRemoval','none',...
- 'processMethod','none',...
- 'averageMethod','none',...
- 'compressMethod','power',...
- 'compressFactor',40,...
- 'mappingMethod','full',...
- 'display',1,... % display image after processing
- 'displayWindow',1};
- Process(2).classname = 'External';
- Process(2).method = 'spectralDoppler';
- Process(2).Parameters = {'srcbuffer','inter',... % name of buffer to process.
- 'srcbufnum',2,...
- 'srcframenum',1,...
- 'dstbuffer','none'};
- % EF2 is external function for ROI plot
- Process(3).classname = 'External';
- Process(3).method = 'ROIplot';
- Process(3).Parameters = {'srcbuffer','none'};
- % Specify SeqControl structure arrays. Missing fields are set to NULL.
- % - Jump back to start of acquisition.
- SeqControl(1).command = 'jump';
- SeqControl(1).argument = []; % will be modified later
- SeqControl(2).command = 'timeToNextAcq';
- SeqControl(2).argument = ttna_microsec ; % time in usec
- % loopCnt/loopTst are used to implement a conditional jump
- SeqControl(3).command = 'loopCnt'; % for 2D only
- SeqControl(3).argument = 0;
- SeqControl(4).command = 'loopCnt'; % for doppler
- SeqControl(4).argument = 1;
- nsc = 5; % nsc is count for next SeqControl object
- n = 1; % n is count for next Event
- Event(n).info = 'ROI plot';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 3;
- Event(n).seqControl = 0;
- n = n+1;
- Event(n).info = 'Start here for 2D only processing.';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 3;
- n = n+1;
- Event(n).info = 'Jump to start of acquisitions';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 1;
- n = n+1;
- Event(n).info = 'Start here for Doppler only processing.';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 4;
- n = n+1;
- nStartAcq = n;
- SeqControl(1).argument = nStartAcq;
- for i = 1:nfrms % Acquire frames
- k = maxPRIs*(i-1);
- for j = 1:2:nPRIs % acquisition repeats every 2 acquisitions
- Event(n).info = '2D acquisition.';
- Event(n).tx = 1;
- Event(n).rcv = k+j;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 2;
- n = n+1;
- Event(n).info = 'Doppler acquisition.';
- Event(n).tx = 2;
- Event(n).rcv = k+j+1;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 2;
- n = n+1;
- end
- Event(n).info = 'transfer acquired frame data to host';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = nsc;
- SeqControl(nsc).command = 'transferToHost';
- nsc = nsc+1;
- n = n+1;
- Event(n).info = 'test loopCnt';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = nsc;
- SeqControl(nsc).command = 'loopTst';
- SeqControl(nsc).argument = n+3; % jump to Doppler if nz
- nsc = nsc+1;
- n = n+1;
- Event(n).info = 'recon and process 2D';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 1;
- Event(n).process = 1;
- Event(n).seqControl = 0;
- n = n+1;
- Event(n).info = 'jump over Doppler';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = nsc;
- SeqControl(nsc).command = 'jump';
- SeqControl(nsc).argument = n+3;
- nsc = nsc+1;
- n = n+1;
- Event(n).info = 'recon and process Doppler';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 2;
- Event(n).process = 2;
- Event(n).seqControl = 0;
- n = n+1;
- Event(n).info = 'set loopCnt back to 1';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 4;
- n = n+1;
- Event(n).info = 'exit to Matlab';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 0;
- % Exit to Matlab every 3rd frame
- if floor(i/3) == i/3
- Event(n).seqControl = nsc;
- SeqControl(nsc).command = 'returnToMatlab';
- nsc = nsc+1;
- end
- n = n+1;
- end
- Event(n).info = 'Jump back to the start of aquisition';
- Event(n).tx = 0;
- Event(n).rcv = 0;
- Event(n).recon = 0;
- Event(n).process = 0;
- Event(n).seqControl = 1;
- % User specified UI Control Elements
- import vsv.seq.uicontrol.VsSliderControl;
- % - Sensitivity Cutoff
- UI(1).Control = VsSliderControl( 'LocationCode', 'UserB7', ...
- 'Label', 'Sens. Cutoff', ...
- 'SliderMinMaxVal', [ 0,1.0,Recon(1).senscutoff], ...
- 'SliderStep', [0.025,0.1], ...
- 'ValueFormat', '%1.3f', ...
- 'Callback', @sensitivityCutoffCallback );
- % - Range Change
- MinMaxVal = [64,300,P(1).endDepth ]; % default unit is wavelength
- AxesUnit = 'wls';
- if isfield(Resource.DisplayWindow(1),'AxesUnits')&&~isempty(Resource.DisplayWindow(1).AxesUnits)
- if strcmp(Resource.DisplayWindow(1).AxesUnits,'mm')
- AxesUnit = 'mm';
- MinMaxVal = MinMaxVal * (Resource.Parameters.speedOfSound/1000/Trans.frequency);
- end
- end
- UI(2).Control = VsSliderControl( 'LocationCode', 'UserA1','Label',['Range (',AxesUnit,')'],...
- 'SliderMinMaxVal',MinMaxVal,'SliderStep',[0.1,0.2],'ValueFormat','%3.0f', ...
- 'Callback', @rangeChangeCallback);
- % - PRF control
- UI(3).Control = VsSliderControl( 'LocationCode', 'UserB4','Label','Doppler PRF',...
- 'SliderMinMaxVal',[minDopPRF,maxDopPRF,dopPRF],...
- 'SliderStep',[100/ (maxDopPRF-minDopPRF),200/ (maxDopPRF-minDopPRF)],'ValueFormat','%4.0f Hz', ...
- 'Callback', @dopplerPRFCallback);
- % - Wall Filter control
- UI(4).Control = VsSliderControl( 'LocationCode','UserB3','Label','Doppler WF',...
- 'SliderMinMaxVal',[8,0.1*maxDopPRF,dopWFCutoffNorm*dopPRF],...
- 'SliderStep',[0.02,0.2],'ValueFormat','%4.0f Hz', ...
- 'Callback', @dopplerWallFilterCallback);
- % - Sweep Time control
- UI(5).Control = VsSliderControl('LocationCode', 'UserB2','Label','Sweep Time',...
- 'SliderMinMaxVal',[min(sgp.THistAllow),max(sgp.THistAllow),sweepTime],...
- 'SliderStep',[0.25,0.25],'ValueFormat','%1.0f s', ...
- 'Callback', @sweepTimeCallback);
- % - Baseline control
- UI(6).Control = VsSliderControl('LocationCode', 'UserB1','Label','Baseline',...
- 'SliderMinMaxVal',[-0.5,0.5,baseLineShiftNorm],...
- 'SliderStep',[0.05,0.1],'ValueFormat','%1.2f', ...
- 'Callback', @baselineCallback );
- % - Window ButtonDown callback for setting sample volume position.
- UI(7).Callback = @wbdCallback;
- UI(7).Statement = @()setCallback(Resource.DisplayWindow(1).Type);
- % external functions
- import vsv.seq.function.ExFunctionDef;
- EF(1).Function = ExFunctionDef('setCallback', @setCallback);
- EF(2).Function = ExFunctionDef('ROIplot', @ROIplot );
- % Specify factor for converting sequenceRate to frameRate.
- frameRateFactor = 3;
- % Save all the structures to a .mat file.
- filename = 'MatFiles/L11-5vSpectralDoppler';
- % Save all the structures to a .mat file.
- save(filename);
- %% **** Callback routines used by External function definition (EF) ****
- function sensitivityCutoffCallback(~, ~, UIValue)
- ReconL = evalin('base', 'Recon');
- for i = 1:size(ReconL,2)
- ReconL(i).senscutoff = UIValue;
- end
- assignin('base','Recon',ReconL);
- Control = evalin('base','Control');
- Control.Command = 'update&Run';
- Control.Parameters = {'Recon'};
- assignin('base','Control', Control);
- return
- end
- function rangeChangeCallback(hObject, ~, UIValue )
- simMode = evalin('base','Resource.Parameters.simulateMode');
- % No range change if in simulate mode 2.
- if simMode == 2
- set(hObject,'Value',evalin('base','P.endDepth'));
- return
- end
- Trans = evalin('base','Trans');
- Resource = evalin('base','Resource');
- scaleToWvl = Trans.frequency/(Resource.Parameters.speedOfSound/1000);
- P = evalin('base','P');
- P(1).endDepth = UIValue;
- if isfield(Resource.DisplayWindow(1),'AxesUnits')&&~isempty(Resource.DisplayWindow(1).AxesUnits)
- if strcmp(Resource.DisplayWindow(1).AxesUnits,'mm')
- P(1).endDepth = UIValue*scaleToWvl;
- end
- end
- assignin('base','P',P);
- evalin('base','PData(1).Size(1) = ceil((P(1).endDepth-P(1).startDepth)/PData(1).PDelta(3));');
- evalin('base','PData(1).Region = computeRegions(PData(1));');
- evalin('base','Resource.DisplayWindow(1).Position(4) = ceil(PData(1).Size(1)*PData(1).PDelta(3)/Resource.DisplayWindow(1).pdelta);');
- Receive = evalin('base', 'Receive');
- maxAcqLength = ceil(sqrt(P(1).endDepth^2 + ((Trans.numelements-1)*Trans.spacing)^2));
- for i = 1:size(Receive,2)
- Receive(i).endDepth = maxAcqLength;
- end
- assignin('base','Receive',Receive);
- evalin('base','TGC(1).rangeMax = P(1).endDepth;');
- evalin('base','TGC(1).Waveform = computeTGCWaveform(TGC(1));');
- Control = evalin('base','Control');
- Control.Command = 'update&Run';
- Control.Parameters = {'PData','InterBuffer','ImageBuffer','Receive','TGC','Recon','DisplayWindow'};
- assignin('base','Control', Control);
- assignin('base', 'action', 'displayChange');
- return
- end
- function dopplerPRFCallback( hObject, ~, UIValue)
- dopPRFnom = UIValue;
- framePeriod = evalin('base','framePeriod');
- psched = spectralDoppler('restrictAcqPRF',round(framePeriod*1e6),dopPRFnom);
- acqPRF = psched.PRFAcq ;
- dopPRF = psched.PRFDop ;
- ttna_microsec = psched.PRIAcq_uSec ;
- % ttnaNom_microsec = psched.PRIAcq_uSec ;
- framePeriod = psched.FrameTime_uSec*1e-6 ;
- nPRIs= psched.pulsesPerFrameAcq ;
- nDopPRIs = psched.pulsesPerFrameDop ;
- % maxPRIs = psched.pulsesPerFrameAcqMax ;
- set(hObject,'Value',dopPRF);
- assignin('base', 'dopPRF', dopPRF);
- assignin('base', 'acqPRF', acqPRF);
- assignin('base', 'framePeriod', framePeriod);
- nfrms = evalin('base','nfrms');
- maxPRIs = evalin('base','maxPRIs');
- assignin('base','nDopPRIs',nDopPRIs);
- assignin('base','nPRIs',nPRIs);
- % Update the Doppler Recon to specify nDopPRIs ReconInfo structures.
- Recon = evalin('base','Recon');
- Recon(2).RINums(1,1:nDopPRIs) = (3:(3+(nDopPRIs)-1));
- assignin('base', 'Recon', Recon);
- ReconInfo = evalin('base','ReconInfo');
- % - ReconInfos for Doppler ensemble.
- k = 2;
- for j = 1:nPRIs/2
- ReconInfo(k+j).mode = 'replaceIQ';
- ReconInfo(k+j).txnum = 2;
- ReconInfo(k+j).rcvnum = 2*(j-1) + 2;
- ReconInfo(k+j).pagenum = j;
- ReconInfo(k+j).regionnum = 1; % only 1 col..
- end
- assignin('base','ReconInfo',ReconInfo);
- % Re-compute Event structures.
- Event = evalin('base','Event');
- nStartAcq = evalin('base','nStartAcq');
- n = nStartAcq;
- Event = Event(1:n-1); % throw out all but preamble
- SeqControl = evalin('base','SeqControl');
- nsc =5;
- SeqControl = SeqControl(1:nsc-1); % throw out all but those prior to nsc
- SeqControl(2).argument = ttna_microsec;
- % Re-build the Event list.
- for i = 1:nfrms % Acquire frames
- k = maxPRIs*(i-1);
- for j = 1:2:nPRIs % acquisition repeats every 2 acquisitions
- Event(n)=struct('info','2D acquisition.',...
- 'tx',1,'rcv',k+j,'recon',0,'process',0,'seqControl',2);
- n = n+1;
- Event(n)=struct('info','Doppler acquisition.',...
- 'tx',2,'rcv',k+j+1,'recon',0,'process',0,'seqControl',2);
- n = n+1;
- end
- Event(n)=struct('info','transfer acquired frame data to host',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',nsc);
- SeqControl(nsc).command = 'transferToHost';
- nsc = nsc+1;
- n = n+1;
- Event(n)=struct('info','test loopCnt',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',nsc);
- SeqControl(nsc).command = 'loopTst';
- SeqControl(nsc).argument = n+3; % jump to Doppler if nz
- nsc = nsc+1;
- n = n+1;
- Event(n)=struct('info','recon and process 2D',...
- 'tx',0,'rcv',0,'recon',1,'process',1,'seqControl',0);
- n = n+1;
- Event(n)=struct('info','jump over Doppler',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',nsc);
- SeqControl(nsc).command = 'jump';
- SeqControl(nsc).argument = n+3;
- nsc = nsc+1;
- n = n+1;
- Event(n)=struct('info','recon and process Doppler',...
- 'tx',0,'rcv',0,'recon',2,'process',2,'seqControl',0);
- n = n+1;
- Event(n)=struct('info','set loopCnt back to 1',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',4);
- n = n+1;
- Event(n)=struct('info','exit to Matlab',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',0);
- % Exit to Matlab every 3rd frame
- if floor(i/3) == i/3
- Event(n).seqControl = nsc;
- SeqControl(nsc).command = 'returnToMatlab';
- nsc = nsc+1;
- end
- n = n+1;
- end
- Event(n)=struct('info','Jump back to first event',...
- 'tx',0,'rcv',0,'recon',0,'process',0,'seqControl',1);
- assignin('base', 'Event', Event);
- assignin('base', 'SeqControl', SeqControl);
- % Update VDAS parameters for Receive objects
- evalin('base','VsUpdate(''Receive'')');
- % Set Control.Command to update changed structures in runAcq.
- Control = evalin('base','Control');
- Control.Command = 'update&Run';
- Control.Parameters = {'Recon','Event','SeqControl'};
- assignin('base','Control', Control);
- % Update the WF control:
- hwf = findobj('tag','UserB3Slider');
- dopWFCutoffNorm = evalin('base' ,'dopWFCutoffNorm');
- set(hwf,'Value',dopPRF*dopWFCutoffNorm);
- hwf = findobj('tag','UserB3Edit');
- set(hwf,'String',num2str(dopPRF*dopWFCutoffNorm,'%4.0f Hz'));
- return
- end
- function dopplerWallFilterCallback(~, ~, UIValue)
- dopPRF = evalin('base','dopPRF');
- dopWFCutoffNorm = UIValue/dopPRF;
- assignin('base', 'dopWFCutoffNorm', dopWFCutoffNorm);
- return
- end
- function sweepTimeCallback( hObject, ~, UIValue)
- %-UI#5Callback - Sweep Time
- sweepTime = round(UIValue);
- TFrame=evalin('base','framePeriod');
- sgp=spectralDoppler('spectrogramParameters',TFrame,1);
- [~,swInd] = min(abs(sgp.THistAllow-sweepTime));
- %sweepTimeAllowed = sgp.THistAllow(swInd);
- dopSweepTimeIndex = swInd;
- assignin('base', 'dopSweepTimeIndex', dopSweepTimeIndex);
- set(hObject,'Value',sweepTime);
- assignin('base', 'sweepTime', sweepTime);
- return
- end
- function baselineCallback( hObject, ~, UIValue)
- %-UI#6Callback - Baseline
- baseLineShiftNorm = UIValue;
- baseLineShiftNorm = round(baseLineShiftNorm*20)/20;
- set(hObject,'Value',baseLineShiftNorm);
- assignin('base', 'baseLineShiftNorm', baseLineShiftNorm);
- return
- end
- function wbdCallback(varargin)
- % Window ButtonDown callback for sample volume positioning.
- persistent init wbFig wbAxes elypHndl
- Trans = evalin('base','Trans');
- Resource = evalin('base','Resource');
- DopRegionLim = evalin('base','DopRegionLim');
- if isempty(init)
- init = 1;
- elypHndl = 0;
- end
- % Get pos ofmouse click and ensure the unit is wavelength for spectral doppler
- VsType = Resource.DisplayWindow(1).Type;
- if strcmp(VsType,'Matlab')
- hObject = varargin{1};
- wbFig = evalin('base','Resource.DisplayWindow(1).figureHandle');
- wbAxes = get(wbFig,'CurrentAxes');
- cp = get(wbAxes,'CurrentPoint');
- if isfield(Resource.DisplayWindow(1),'AxesUnits')&&~isempty(Resource.DisplayWindow(1).AxesUnits)
- if strcmp(Resource.DisplayWindow(1).AxesUnits,'mm')
- scaleToWvl = Trans.frequency/(Resource.Parameters.speedOfSound/1000);
- % wl2mm = (Resource.Parameters.speedOfSound/1000)/Trans.frequency;
- cp = cp*scaleToWvl;
- unitMm = 1;
- end
- else
- unitMm = 0;
- end
- % Check for sample volume outside of measurement region.
- x = min(max(cp(1,1),DopRegionLim.x(1)),DopRegionLim.x(2));
- z = min(max(cp(1,2),DopRegionLim.y(1)),DopRegionLim.y(2));
- else
- mct = evalin('base','mct');
- mouseButton = mct.buttonName;
- switch string(mouseButton)
- case 'Start'
- return
- case 'Left'
- hObject.SelectionType = 'normal';
- imageViewer = evalin('base','imageViewer');
- imageCanvas = imageViewer(1).getImageCanvas();
- srcImage = imageCanvas.getSrcImage;
- x = mct.xImgPos/srcImage.pixelUnitScaling;
- z = mct.yImgPos/srcImage.pixelUnitScaling;
- case 'Right'
- hObject.SelectionType = 'alt';
- end
- end
- % Change Event Sequence if left mouse button is pressed
- if strcmp(hObject.SelectionType,'normal')
- if elypHndl == 0
- % set startEvent for Doppler only.
- Control = evalin('base','Control');
- Control(2).Command = 'set&Run';
- Control(2).Parameters = {'Parameters',1,'startEvent',4};
- evalin('base','Resource.Parameters.startEvent = 4;');
- else
- delete(elypHndl); % delete previous annotation circle
- end
- if strcmp(VsType,'Matlab')
- % set annotation in the Matlab Viewer (Verasonics Viewer is done in MouseClickTool)
- abox = [x-1,z-1,2,2];
- axun = get(wbAxes,'Units'); % save axis units
- set(wbAxes,'Units','normalized'); % make axes units normalized
- axpos = get(wbAxes,'Position'); % get axes position
- axlim = axis(wbAxes); % get the axis limits [xlim ylim (zlim)]
- if unitMm, axlim = axlim*scaleToWvl; end
- axwidth = diff(axlim(1:2));
- axheight = diff(axlim(3:4));
- % Transform from data space coordinates to normalized figure coordinates
- bbox(1) = (abox(1)-axlim(1))/axwidth * axpos(3) + axpos(1);
- bbox(2) = (axlim(4)-abox(2))/axheight * axpos(4) + axpos(2);
- bbox(3) = abox(3) * axpos(3)/axwidth;
- bbox(4) = abox(4) * axpos(4)/axheight;
- set(wbAxes,'Units',axun); % restore axis units
- elypHndl = annotation('ellipse',bbox,'EdgeColor',[1 .2 .2],'LineWidth',1.0);
- end
- assignin('base','SVPos',[x,z-2])
- %Modify structures for new SV position.
- evalin('base','PData(2).Origin = [SVPos(1),0,SVPos(2)];');
- evalin('base','PData(2).Region=computeRegions(PData(2));');
- Control(1).Command = 'update&Run';
- Control(1).Parameters = {'PData'};
- assignin('base','Control', Control);
- % if right mouse button ...
- elseif strcmp(hObject.SelectionType,'alt')
- % delete annotation circle
- if elypHndl ~= 0
- delete(elypHndl);
- elypHndl = 0;
- end
- % set startEvent for 2D only
- Control.Command = 'set&Run';
- Control.Parameters = {'Parameters',1,'startEvent',1};
- evalin('base','Resource.Parameters.startEvent = 1;');
- assignin('base','Control',Control);
- end
- return
- end
- %% **** Callback routines used by External function definition (EF) ****
- function setCallback(VsType)
- switch VsType
- case 'Verasonics'
- vantageWindow = evalin('base','vantageWindow');
- imageViewer = evalin('base','imageViewer');
- DopRegionLim = evalin('base','DopRegionLim');
- mct = javaObjectEDT( 'com.verasonics.viewer.tools.mouseclicktool.MouseClickTool', vantageWindow, imageViewer(1));
- mcth = javaObjectEDT( handle(mct, 'callbackproperties' ) );
- mct.setToolEnabled(true);
- mct.lowerLimitX = DopRegionLim.x(1);
- mct.upperLimitX = DopRegionLim.x(2);
- mct.lowerLimitY = DopRegionLim.y(1);
- mct.upperLimitY = DopRegionLim.y(2);
- mcth.ClickedEventCallback = @wbdCallback;
- assignin('base','mct',mct);
- case 'Matlab'
- evalin('base','set(Resource.DisplayWindow(1).figureHandle,''WindowButtonDownFcn'',@wbdCallback);');
- end
- return
- end
- function ROIplot(varargin)
- %ROIplot
- persistent drawROI
- % drawRegionOutline(WinNum,PDataNum,RegionNum) creates an outline from
- % PData(PDataNum).Region(RegionNum) on displayWindow(WinNum) with default color - white.
- if isempty(drawROI)
- drawROI = 1;
- evalin('base','hROI = drawRegionOutline(1,3,1);')
- else
- evalin('base','drawRegionOutline(hROI,1,3,1);')
- end
- return
- end
SetUpL11_5vSpectralDoppler.m, no license · at the source
Overview
and 22 other authors
Andrew M Hersh2,3, Haley G Abramson1,2,7, Ali Mohammadabadi2,3, John N Theodore1,5, Osamah M Zmily1,5, Ritvik Jillala2,3, Vikas Vattipally2,3, David Kopala1,2, Siavash S Barough8, Mohammad Hossein Amini9, Jonathan Maltz10, Francisco Chavez11, Kyle Morrison11, Laura Roy12, Ian Suk3, Ryan P Lee3, Betty Tyler3, Mark Luciano3, Nitish V Thakor1,2,4, Joshua C Doloff1,5,13, Nicholas Theodore1,2,3,14,15, Amir Manbachi1,2,3,4,6,1616 affiliations
- Department of Biomedical Engineering, Johns Hopkins University, Baltimore, MD, USA
- HEPIUS Innovation Laboratory, School of Medicine, Johns Hopkins University, Baltimore, MD, USA
- Department of Neurosurgery, Johns Hopkins University, Baltimore, MD, USA
- Department of Electrical & Computer Engineering, Johns Hopkins University, Baltimore, MD, USA
- Translational Therapeutics & Regenerative Engineering Center, Johns Hopkins University, Baltimore, MD, USA
- Department of Mechanical Engineering, Johns Hopkins University, Baltimore, MD, USA
- Advanced Patient Monitoring, Becton, Dickinson, and Company, Irvine, CA, USA
- Department of Neurology, Johns Hopkins University, Baltimore, MD, USA
- Fujifilm Visualsonics Inc., Toronto, ON, Canada
- Molecular Biophysics and Integrated Bioimaging, Berkeley Lab, University of California, Berkeley, CA, USA
- Sonic Concepts Inc., Bothell, WA, USA
- Roy Illustration, New York, NY, USA
- Department of Materials Science and Engineering, Institute for NanoBioTechnology, Johns Hopkins University, Baltimore, MD, USA
- Department of Orthopaedic Surgery, School of Medicine, Johns Hopkins University, Baltimore, MD, USA
- Department of Pediatrics, School of Medicine, Johns Hopkins University, Baltimore, MD, USA
- Department of Anesthesiology and Critical Care, School of Medicine, Johns Hopkins University, Baltimore, MD, USA
Abstract
The days following decompression surgery for acute spinal cord injury (SCI) are a critical period for postoperative monitoring. After wound closure, clinicians lack on-demand access to local spinal cord morphology and hemodynamics, and care therefore remains guided largely by systemic surrogates rather than direct postoperative insight into the injured cord. We present the Multimodal Ultrasound System for Injury Care (MUSIC), a temporary epidural ultrasound neural interface placed during standard decompression surgery to enable postoperative brightness-mode imaging, Doppler-derived hemodynamic monitoring, and future device-integrated ultrasound actuation. Across simulations, benchtop, human cadaveric, and porcine studies, MUSIC enabled on-demand visualization of cord structure, hematoma tracking, detection and longitudinal tracking of localized Doppler flow signatures attributable to the sulcal artery region, and, in healthy pigs, proof-of-concept focused ultrasound modulation of blood-flow velocity. MUSIC establishes a temporary postoperative acoustic interface that provides spinal cord information to inform monitoring, future management, and localized intervention strategies after SCI.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 2 matches between paragraphs and lines of code.
Zenodo 22908234
Availability: 1 check, the latest on 7 November 2026: the link answers (HTTP 200)
- 7 November 2026: the link answers (HTTP 200)
267 files
- HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,188 linesmatlab/ PlaneWaveBmodeFocusedDop pler.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,085 linesmatlab/ PlaneWaveBmode_FocusedDo ppler.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,132 linesmatlab/ PlaneWaveBmode_FocusedDo ppler_20231215.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,239 linesmatlab/ PlaneWaveBmode_PlaneDopp ler_Spectral20231215.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,200 linesmatlab/ PlaneWaveBmode_PlaneDopp ler_Spectral20240110.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,099 linesmatlab/ PlaneWaveBmode_PlaneWave Doppler.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,068 linesmatlab/ PlaneWaveBmode_PlaneWave Doppler20231215.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,162 linesmatlab/ PlaneWaveBmode_PlaneWave Doppler20231229.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,212 linesmatlab/ PlaneWaveBmode_PlaneWave Doppler_16MHz.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 315 linesmatlab/ RunSetUpL11_5vFlashHFR_r econAll.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 868 lines, 1 matchmatlab/ SetUpL11_5vSpectralDoppl er.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 871 linesmatlab/ SetUpL22_14vXWideBeamSC_ 5angle_sf_disp.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,598 linesmatlab/ SetUp_MUSIC_Colorflow_JN H.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,473 linesmatlab/ SetUp_MUSIC_Colorflow_JS H.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 722 linesmatlab/ SetUp_MUSIC_WideBeamSC_m b.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 919 linesmatlab/ SetupMusicSD.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 910 linesmatlab/ SetupMusicSD_gel8.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,110 lines, 1 matchmatlab/ SetupMusicSD_saveiq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,139 linesmatlab/ SetupMusicSD_saveiq_2024 0407_ctrlissue.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 16 linesmatlab/ activatevv.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 4 linesmatlab/ axbound2centre.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 281 linesmatlab/ bflow.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 177 linesmatlab/ bflow_20200223_1845.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 65 linesmatlab/ bflowextfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 627 linesmatlab/ bflowmusicl818.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 11 linesmatlab/ blinemovie.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 75 linesmatlab/ calcsonofn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 161 linesmatlab/ cdiprocessing_jon.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 107 linesmatlab/ cdiprocessing_nxtv1p0p4. m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 104 linesmatlab/ cdiprocoffline.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 163 linesmatlab/ cdisdlprocessing_jon.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1 linematlab/ cdmusicvsx.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 251 linesmatlab/ changeprffn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 24 linesmatlab/ checkbnspaths.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 85 linesmatlab/ collectiqsono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,279 linesmatlab/ computeTrans2.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,079 linesmatlab/ computeTrans2_mbc.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,247 linesmatlab/ computeTrans2_pig.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,064 linesmatlab/ computeTrans3.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,069 linesmatlab/ computeTrans_jon.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,866 linesmatlab/ computeTrans_jon_4p0.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,002 linesmatlab/ computeTrans_nicpseq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 102 linesmatlab/ demodfreqcheckfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 73 linesmatlab/ depthoffsetslider.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 99 linesmatlab/ dispExtern.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 9 linesmatlab/ dispdiv.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 21 linesmatlab/ drawgatemarkerfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 43 linesmatlab/ drawsdoverlayroifn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 58 linesmatlab/ drawsquare.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 15 linesmatlab/ ellipsemaskcostfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 54 linesmatlab/ examinemusicrfiq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 10 linesmatlab/ existbasefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 84 linesmatlab/ figpositionfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 24 linesmatlab/ figsizefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ filesize.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 31 linesmatlab/ findcentraln.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 15 linesmatlab/ findclosestinvec.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 26 linesmatlab/ findelementsrflinefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 69 linesmatlab/ findguihandlefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 6 linesmatlab/ findnextmultiplefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 4 linesmatlab/ gel18exec.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 489 linesmatlab/ gel18rylns.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 436 linesmatlab/ gel18rylns256.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 474 linesmatlab/ gel18rylns256_old.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 576 linesmatlab/ gel18rylns256bf.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 455 linesmatlab/ gel18rylns256bf_1ppl.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 509 linesmatlab/ gel18rylns256bf_20200223 .m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 576 linesmatlab/ gel18rylns256bf_gdrive_2 0200429.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 579 linesmatlab/ gel18rylns256v2.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 626 linesmatlab/ gel18wbscdm.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,822 linesmatlab/ gel8swe.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,588 linesmatlab/ gel8swe_20200124.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,774 linesmatlab/ gel8swe_20200410.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,656 linesmatlab/ gel8swe_getshot_20200229 .m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,626 linesmatlab/ gel8swe_revert.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 24 linesmatlab/ getbbox.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 16 linesmatlab/ getfileminusext.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 10 linesmatlab/ gethostnamefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 56 linesmatlab/ getmusiciqsets.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 38 linesmatlab/ getrecordinginfofn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 5 linesmatlab/ getscreensizefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 5 linesmatlab/ hannfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 256 linesmatlab/ icp-algorithm-3/ SplitVec.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 15 linesmatlab/ icp-algorithm-3/ SplitVecSimple.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 116 linesmatlab/ icp-algorithm-3/ TVL1denoise.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 62 linesmatlab/ icp-algorithm-3/ accumulateBalanceFactors .m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 396 linesmatlab/ icp-algorithm-3/ analyzeMultiDepth.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 451 linesmatlab/ icp-algorithm-3/ balanceFactors.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 95 linesmatlab/ icp-algorithm-3/ batchGetVd1.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 208 linesmatlab/ icp-algorithm-3/ batchRunSono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ icp-algorithm-3/ compareICP1.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 78 linesmatlab/ icp-algorithm-3/ compareSono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 23 linesmatlab/ icp-algorithm-3/ convertToAnovaN.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 96 linesmatlab/ icp-algorithm-3/ crossValTree.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 98 linesmatlab/ icp-algorithm-3/ cycleSonos.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 30 linesmatlab/ icp-algorithm-3/ extractICP.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 65 linesmatlab/ icp-algorithm-3/ findMinBalance.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ icp-algorithm-3/ getAmplitude.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 59 linesmatlab/ icp-algorithm-3/ getHarmonicIndices.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ icp-algorithm-3/ getSNR.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ icp-algorithm-3/ icpAve.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 55 linesmatlab/ icp-algorithm-3/ icpIndices.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 16 linesmatlab/ icp-algorithm-3/ imStretch.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 93 linesmatlab/ icp-algorithm-3/ kldiv.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 182 linesmatlab/ icp-algorithm-3/ matchFactors.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 28 linesmatlab/ icp-algorithm-3/ matchSono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 66 linesmatlab/ icp-algorithm-3/ mergeCycles.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 129 linesmatlab/ icp-algorithm-3/ organizeMultiDepth.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 88 linesmatlab/ icp-algorithm-3/ parseXML.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 37 linesmatlab/ icp-algorithm-3/ peakDetect.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 35 linesmatlab/ icp-algorithm-3/ plotIcps.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 219 linesmatlab/ icp-algorithm-3/ processVdStats.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,096 linesmatlab/ icp-algorithm-3/ runICP1.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 30 linesmatlab/ icp-algorithm-3/ scoreVdStats.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,077 linesmatlab/ icp-algorithm-3/ sono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 122 linesmatlab/ icp-algorithm-3/ startSono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 48 linesmatlab/ icp-algorithm-3/ structofarrays2arrayofst ructs.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 96 linesmatlab/ icp-algorithm-3/ testBal1.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 206 linesmatlab/ icp-algorithm-3/ testICPvar.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 37 linesmatlab/ icp-algorithm-3/ trimSono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 24 linesmatlab/ icp-algorithm-3/ zeropad.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3 linesmatlab/ ij2ind.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 43 linesmatlab/ imagecdisavefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 50 linesmatlab/ imagesavefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 4 linesmatlab/ ind2ij.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 17 linesmatlab/ inithvfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 135 linesmatlab/ iq2sono - Copy.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 175 linesmatlab/ iq2sono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 46 linesmatlab/ iq2sono_getmusiciqsets_2 0240903.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 160 linesmatlab/ iq2sono_getmusiciqsets_2 0241216.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 97 linesmatlab/ iq2sono_nonstandalone.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 99 linesmatlab/ iqblocks2sd.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 334 linesmatlab/ iqimmf2sd.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 11 linesmatlab/ isnxtfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ linept2pt.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ linept2ptfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 61 linesmatlab/ loadbh5.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 134 linesmatlab/ loadmusicsavedata.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ lslrt.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 233 linesmatlab/ makecfipdatatxfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 25 linesmatlab/ makedftaxis.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 12 linesmatlab/ makeimaxisfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 469 linesmatlab/ makenicpseqfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3 linesmatlab/ maxall.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3 linesmatlab/ meanall.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 11 linesmatlab/ mexsemaphore.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3 linesmatlab/ minall.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 148 linesmatlab/ music_dataset_comments_2 0241228.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3,107 linesmatlab/ musicseqwt.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,936 linesmatlab/ musicseqwt_prel8adapt202 31203.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,717 linesmatlab/ nicpseq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 187 linesmatlab/ nicpseq_wdbCallback.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,904 linesmatlab/ nicpseqwt.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 220 linesmatlab/ nicpseqwt_roiplot.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 241 linesmatlab/ nicpseqwt_wbdCallback.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 237 linesmatlab/ nicpseqwt_wdbCallback.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 231 linesmatlab/ offlinesd.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 127 linesmatlab/ offlinesd20240113.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 175 linesmatlab/ offlinesd4p9p2fn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 69 linesmatlab/ offlinesdfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 68 linesmatlab/ offlinesdfn20240113.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 359 linesmatlab/ offlinesdlarge.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 314 linesmatlab/ offlinesdlarge_20241214_ fullcatversion.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 226 linesmatlab/ offlinesdlargecine.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 34 linesmatlab/ offlinesdmusic.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 5 linesmatlab/ pausede.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ pdata2roifn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 13 linesmatlab/ pendingcontrolprocfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 112 linesmatlab/ pinmap_ge408.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 199 linesmatlab/ pinmap_l818i.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 43 linesmatlab/ pinmap_l8_18d.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 192 linesmatlab/ pinmap_m5scd.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 34 linesmatlab/ plotsdgatefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 37 linesmatlab/ process_getmusiciqsets_2 0240903.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 270 linesmatlab/ process_getmusiciqsets_2 0241213.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 27 linesmatlab/ prociq2sono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 487 linesmatlab/ procrflinefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 513 linesmatlab/ procwtoffline.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 177 linesmatlab/ productionsettings.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 139 linesmatlab/ productionsettings_20231 203.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 67 linesmatlab/ randomscript.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 125 linesmatlab/ readimfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 180 linesmatlab/ readiqv2fn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 123 linesmatlab/ readmmodever1.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 46 linesmatlab/ readoldsdiq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 91 linesmatlab/ readrfbwtfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 14 linesmatlab/ readsemaphoremat.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 25 linesmatlab/ recvbufferlengthcalcfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 92 linesmatlab/ renamemusic_fixsets.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ replacechar.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 13 linesmatlab/ rot2d.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 26 linesmatlab/ saveDopData.m - HEPIUS_MUSIC_imaging-mai
n/ , C, 331 linesmatlab/ saveim.c - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 98 linesmatlab/ saveimfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 223 linesmatlab/ saveimwithtimestampfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 28 linesmatlab/ saveimwrapfn.m - HEPIUS_MUSIC_imaging-mai
n/ , C, 399 linesmatlab/ saveiq.c - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 78 linesmatlab/ saveiqfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 689 linesmatlab/ sdcalleventfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 246 linesmatlab/ sdcallreceivefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 418 linesmatlab/ sdcprocfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 175 linesmatlab/ sdcreconfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 244 linesmatlab/ sdcreconinfofn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,428 linesmatlab/ sdfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 2,403 linesmatlab/ sdfn20240113.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 142 linesmatlab/ sdlargefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 44 linesmatlab/ sdlargeoutfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 4 linesmatlab/ sdlargeoutzerofn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 199 linesmatlab/ sdlargesaveiqfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 55 linesmatlab/ sdlargesaveiqfn_20240303 .m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 33 linesmatlab/ sdwrapfn.m - HEPIUS_MUSIC_imaging-mai
n/ , C, 234 linesmatlab/ semaphore.c - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 54 linesmatlab/ semaphore.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 53 linesmatlab/ semaphoreclientstandalon e.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 30 linesmatlab/ semaphoreconfigstandalon e.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 49 linesmatlab/ semaphoretest.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 8 linesmatlab/ setfigposrelfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 114 linesmatlab/ setlist_iq2sono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 283 linesmatlab/ setlist_offlinesdlarge.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 3 linesmatlab/ setmusichomewin.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 64 linesmatlab/ setoverlaysdpriorityfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 312 linesmatlab/ setpdatasdfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 136 linesmatlab/ setpdatawtfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 35 linesmatlab/ setprisfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 36 linesmatlab/ setprocparmfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 15 linesmatlab/ setrecordingstatefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 8 linesmatlab/ setsemaoff.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 12 linesmatlab/ setsemaon.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1 linematlab/ setsystemid64.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 10 linesmatlab/ setwindowbnsiconfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 28 linesmatlab/ sonodiff.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,717 linesmatlab/ spectralDoppler_4p9p2.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,818 linesmatlab/ spectralDoppler_4p9p2_sa veiq.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,757 linesmatlab/ spectralDoppler_4p9p2_sa veiq_20240522.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,790 linesmatlab/ spectralDoppler_4p9p2_sa veiq_20240531.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,818 linesmatlab/ spectralDoppler_4p9p2_sa veiq_20241002.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 115 linesmatlab/ spectralDoppler_JP.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 118 linesmatlab/ spectralDoppler_JP202312 15.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 118 linesmatlab/ spectralDoppler_JP202401 10.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 65 linesmatlab/ startup.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 31 linesmatlab/ stopfileoverwritefn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 18 linesmatlab/ subframeInd100fn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 7 linesmatlab/ sumall.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ testreadimfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 23 linesmatlab/ testsimmode2.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 34 linesmatlab/ titstrfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 12 linesmatlab/ usattenfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 6 linesmatlab/ uscmsg.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 28 linesmatlab/ uta260s.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 33 linesmatlab/ vec2commadelim.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 7 linesmatlab/ versionfn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 203 linesmatlab/ viewbh5.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 346 linesmatlab/ viewcdih5.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 214 linesmatlab/ viewimpostvsx.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 70 linesmatlab/ wav2sono.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 20 linesmatlab/ wbdl8_roiplot.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,014 linesmatlab/ widebeamdoppler_gel8.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 1,131 linesmatlab/ widebeamdoppler_l8.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 59 linesmatlab/ writebmodeh5fxffn.m - HEPIUS_MUSIC_imaging-mai
n/ , MATLAB, 22 linesmatlab/ writeh5vlstringfn.m - HEPIUS_MUSIC_imaging-mai
n/ , Python, 33 linespython_saver_helper/ fontmgr.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 22 linespython_saver_helper/ readsemaphore.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 145 linespython_saver_helper/ recordmusic.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 35 linespython_saver_helper/ semaphore.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 37 linespython_saver_helper/ setsemaoff.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 45 linespython_saver_helper/ setsemaon.py - HEPIUS_MUSIC_imaging-mai
n/ , Python, 35 linespython_saver_helper/ styleed.py
Zenodo 22907737
Availability: 1 check, the latest on 7 November 2026: the link answers (HTTP 200)
- 7 November 2026: the link answers (HTTP 200)
8 files
- MUSIC_FUS_Analysis-main/
Notebooks/ , Jupyter, 33 linesMUSIC_pub_resvis_clean.i pynb - MUSIC_FUS_Analysis-main/
Notebooks/ , Jupyter, 129 linesMUSIC_pub_supres.ipynb - MUSIC_FUS_Analysis-main/
Notebooks/ , Jupyter, 314 linesShow_pressure_fromVeraSc an.ipynb - MUSIC_FUS_Analysis-main/
Notebooks/ , Jupyter, 75 lineshr_extract_clean.ipynb - MUSIC_FUS_Analysis-main/
src/ , Python, 882 linesMUSIC_TUS_DataAnalyzer.p y - MUSIC_FUS_Analysis-main/
src/ , Python, 755 linesMUSIC_TUS_DataAnalyzer_n .py - MUSIC_FUS_Analysis-main/
src/ , Python, 1 line__init__.py - MUSIC_FUS_Analysis-main/
src/ , Python, 354 linesabp.py
Zenodo 22908477
Availability: 1 check, the latest on 7 November 2026: the link answers (HTTP 200)
- 7 November 2026: the link answers (HTTP 200)
7 files
- MUSIC_APP-main/
App.js , JavaScript, 27 lines - MUSIC_APP-main/
firebaseConfig.js , JavaScript, 19 lines - MUSIC_APP-main/
index.js , JavaScript, 8 lines - MUSIC_APP-main/
index.ts , TypeScript, 8 lines - MUSIC_APP-main/
screens/ , JavaScript, 34 linesDemoScreen.js - MUSIC_APP-main/
screens/ , JavaScript, 48 linesHomeScreen.js - MUSIC_APP-main/
screens/ , JavaScript, 198 linesLiveScreen.js
The paper's code and data availability statement is in the Data section.
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:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 282 scripts, each with its path and the digest of its content;
- 2 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
Datasets cited
- doi:10.5061/
dryad.nk98sf891 , at Dryad; found in “Data, code, and materials availability:”
Data, code, and materials availability
All data and code needed to evaluate and reproduce the results in the paper are present in the paper and/
Reproduced under the paper's license (CC BY), from the paper cited above.
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, 7 November 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 42 authors, 74 references.
Cite
This paper
Kerensky, M. J., Krishnan, S., Liang, R., Kempski Leadingham, K. M., Quiroz, V. M., Punnoose, J., Smit, C., Routkevitch, D., Kumar, A., Davidar, A. D., Steger, L., Weber-Levine, C., Jiang, K., Bhimreddy, M., Bauer, S. J., Lopez, A. F., Kramer, P., Robinson, K., Menta, A. K., . . . Manbachi, A. (2026). Ultrasound neural interface enabling acute spinal cord monitoring and blood flow modulation. Science advances, 12(45), eaeg2342.
BibTeX
@article{kerensky2026ult
author = {Kerensky, Max J and Krishnan, Siddharth and Liang, Ruixing and Kempski Leadingham, Kelley M and Quiroz, Victor M and Punnoose, Joshua and Smit, Constantin and Routkevitch, Denis and Kumar, Avisha and Davidar, A Daniel and Steger, Leonard and Weber-Levine, Carly and Jiang, Kelly and Bhimreddy, Meghana and Bauer, Stuart J and Lopez, Angelica F and Kramer, Patrick and Robinson, Kayla and Menta, Arjun K and Ghaith, Abdul Karim and Hersh, Andrew M and Abramson, Haley G and Mohammadabadi, Ali and Theodore, John N and Zmily, Osamah M and Jillala, Ritvik and Vattipally, Vikas and Kopala, David and Barough, Siavash S and Amini, Mohammad Hossein and Maltz, Jonathan and Chavez, Francisco and Morrison, Kyle and Roy, Laura and Suk, Ian and Lee, Ryan P and Tyler, Betty and Luciano, Mark and Thakor, Nitish V and Doloff, Joshua C and Theodore, Nicholas and Manbachi, Amir},
title = {{Ultrasound neural interface enabling acute spinal cord monitoring and blood flow modulation}},
journal = {Science advances},
year = {2026},
month = nov,
volume = {12},
number = {45},
pages = {eaeg2342},
publisher = {American Association for the Advancement of Science},
issn = {2375-2548},
pmcid = {PMC13733905}
}
RIS
TY - JOUR
AU - Kerensky, Max J
AU - Krishnan, Siddharth
AU - Liang, Ruixing
AU - Kempski Leadingham, Kelley M
AU - Quiroz, Victor M
AU - Punnoose, Joshua
AU - Smit, Constantin
AU - Routkevitch, Denis
AU - Kumar, Avisha
AU - Davidar, A Daniel
AU - Steger, Leonard
AU - Weber-Levine, Carly
AU - Jiang, Kelly
AU - Bhimreddy, Meghana
AU - Bauer, Stuart J
AU - Lopez, Angelica F
AU - Kramer, Patrick
AU - Robinson, Kayla
AU - Menta, Arjun K
AU - Ghaith, Abdul Karim
AU - Hersh, Andrew M
AU - Abramson, Haley G
AU - Mohammadabadi, Ali
AU - Theodore, John N
AU - Zmily, Osamah M
AU - Jillala, Ritvik
AU - Vattipally, Vikas
AU - Kopala, David
AU - Barough, Siavash S
AU - Amini, Mohammad Hossein
AU - Maltz, Jonathan
AU - Chavez, Francisco
AU - Morrison, Kyle
AU - Roy, Laura
AU - Suk, Ian
AU - Lee, Ryan P
AU - Tyler, Betty
AU - Luciano, Mark
AU - Thakor, Nitish V
AU - Doloff, Joshua C
AU - Theodore, Nicholas
AU - Manbachi, Amir
TI - Ultrasound neural interface enabling acute spinal cord monitoring and blood flow modulation
T2 - Science advances
J2 - Sci Adv
PY - 2026
DA - 2026/
VL - 12
IS - 45
SP - eaeg2342
SN - 2375-2548
PB - American Association for the Advancement of Science
LA - en
ER -
CSL-JSON
{
"id": "pmcid:PMC13733905",
"type": "article-journal",
"title": "Ultrasound neural interface enabling acute spinal cord monitoring and blood flow modulation",
"container-title": "Science advances",
"author": [
{
"family": "Kerensky",
"given": "Max J"
},
{
"family": "Krishnan",
"given": "Siddharth"
},
{
"family": "Liang",
"given": "Ruixing"
},
{
"family": "Kempski Leadingham",
"given": "Kelley M"
},
{
"family": "Quiroz",
"given": "Victor M"
},
{
"family": "Punnoose",
"given": "Joshua"
},
{
"family": "Smit",
"given": "Constantin"
},
{
"family": "Routkevitch",
"given": "Denis"
},
{
"family": "Kumar",
"given": "Avisha"
},
{
"family": "Davidar",
"given": "A Daniel"
},
{
"family": "Steger",
"given": "Leonard"
},
{
"family": "Weber-Levine",
"given": "Carly"
},
{
"family": "Jiang",
"given": "Kelly"
},
{
"family": "Bhimreddy",
"given": "Meghana"
},
{
"family": "Bauer",
"given": "Stuart J"
},
{
"family": "Lopez",
"given": "Angelica F"
},
{
"family": "Kramer",
"given": "Patrick"
},
{
"family": "Robinson",
"given": "Kayla"
},
{
"family": "Menta",
"given": "Arjun K"
},
{
"family": "Ghaith",
"given": "Abdul Karim"
},
{
"family": "Hersh",
"given": "Andrew M"
},
{
"family": "Abramson",
"given": "Haley G"
},
{
"family": "Mohammadabadi",
"given": "Ali"
},
{
"family": "Theodore",
"given": "John N"
},
{
"family": "Zmily",
"given": "Osamah M"
},
{
"family": "Jillala",
"given": "Ritvik"
},
{
"family": "Vattipally",
"given": "Vikas"
},
{
"family": "Kopala",
"given": "David"
},
{
"family": "Barough",
"given": "Siavash S"
},
{
"family": "Amini",
"given": "Mohammad Hossein"
},
{
"family": "Maltz",
"given": "Jonathan"
},
{
"family": "Chavez",
"given": "Francisco"
},
{
"family": "Morrison",
"given": "Kyle"
},
{
"family": "Roy",
"given": "Laura"
},
{
"family": "Suk",
"given": "Ian"
},
{
"family": "Lee",
"given": "Ryan P"
},
{
"family": "Tyler",
"given": "Betty"
},
{
"family": "Luciano",
"given": "Mark"
},
{
"family": "Thakor",
"given": "Nitish V"
},
{
"family": "Doloff",
"given": "Joshua C"
},
{
"family": "Theodore",
"given": "Nicholas"
},
{
"family": "Manbachi",
"given": "Amir"
}
],
"container-title-short":
"volume": "12",
"issue": "45",
"page": "eaeg2342",
"PMCID": "PMC13733905",
"ISSN": "2375-2548",
"publisher": "American Association for the Advancement of Science",
"language": "en",
"issued": {
"date-parts": [
[
2026,
11,
6
]
]
}
}
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/s41598-025-25330-8 [code]
- Spinal cord neuromodulation for blood pressure control using low-intensity focused ultrasound.Journal: Scientific reportsIn common: other, 8 references
- [2] doi:10.1038/s41467-023-36643-5 [code]
- Sleep cycle-dependent vascular dynamics in male mice and the predicted effects on perivascular cerebrospinal fluid flow and solute transport.Journal: Nature communicationsIn common: Wavelet Toolbox, statannotations, Signal Processing Toolbox, 8 other tools
- [3] doi:10.1016/j.crmeth.2026.101371 [code]
- Electrophysiological development and functional plasticity in dissociated human cerebral organoids across multiple cell lines.Journal: Cell reports methodsIn common: Wavelet Toolbox, statsmodels, Signal Processing Toolbox, 8 other tools
- [4] doi:10.64898/2025.12.17.694950 [code]
- Mecp2 deficiency impairs microscale cortical network topology and dynamics in a Rett syndrome mouse modelJournal: bioRxiv (preprint)In common: Wavelet Toolbox, statsmodels, Signal Processing Toolbox, 8 other tools
- [5] doi:10.1038/s41586-025-08969-1 [code]
- Striatum supports fast learning but not memory recall.Journal: NatureIn common: Wavelet Toolbox, statsmodels, Signal Processing Toolbox, 8 other tools
- [6] doi:10.1016/j.crmeth.2024.100901 [code]
- MEA-NAP: A flexible network analysis pipeline for neuronal 2D and 3D organoid multielectrode recordings.Journal: Cell reports methodsIn common: Wavelet Toolbox, statsmodels, Signal Processing Toolbox, 8 other tools
- [7] doi:10.1038/s41597-023-02214-y [code]
- Responses of pyramidal cell somata and apical dendrites in mouse visual cortex over multiple days.Journal: Scientific dataIn common: Wavelet Toolbox, statsmodels, Signal Processing Toolbox, 8 other tools
- [8] doi:10.1038/s41598-022-23902-6 [code]
- Unsupervised EEG preictal interval identification in patients with drug-resistant epilepsy.Journal: Scientific reportsIn common: Wavelet Toolbox, Plotly, Signal Processing Toolbox, 7 other tools, clinical / translational
- [9] doi:10.1038/s41467-025-66562-6 [code]
- Spatiotemporal patterns differentiate hippocampal sharp-wave ripples from interictal epileptiform discharges in mice and humans.Journal: Nature communicationsIn common: Wavelet Toolbox, Plotly, Signal Processing Toolbox, 7 other tools
- [10] doi:10.1016/j.neuron.2023.01.017 [code]
- Brief synaptic inhibition persistently interrupts firing of fast-spiking interneurons.Journal: NeuronIn common: Wavelet Toolbox, Plotly, Signal Processing Toolbox, 7 other tools
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: 3 repositories of the authors' code, each at its verified commit and with its license, 282 scripts, and 2 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:43dc390b491861ca…
Add the badge to the code's README
If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.
Markdown
<!-- oscr-badge:start -->
[](https://openscicode.org/badge/repo/zenodo:22908234)
<!-- oscr-badge:end -->reStructuredText
.. oscr-badge:start
.. image:: https://openscicode.org/badge/repo/zenodo:22908234.svg
:target: https://openscicode.org/badge/repo/zenodo:22908234
:alt: OSCR
.. oscr-badge:endHTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/repo/zenodo:22908234"><img src="https://openscicode.org/badge/repo/zenodo:22908234.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge page.
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: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.
Report a mismatch between the code and the paper · Report a code error (signed in)
Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.
Report a reproduction failure (signed in)
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
