catalystneuro / roiextractors

Python-based module for extracting from, converting between, and handling optical imaging data from several file formats. Inspired by SpikeInterface.
https://roiextractors.readthedocs.io/en/latest/index.html
BSD 3-Clause "New" or "Revised" License
11 stars 7 forks source link

[Bug]: Incorrect`_frames_per_slice` attribute in `ScanImageTiffSinglePlaneImagingExtractor` results in incorrect video indexing #293

Closed weiglszonja closed 6 months ago

weiglszonja commented 6 months ago

What happened?

I'm using the ScanImageTiffSinglePlaneImagingExtractor read the TIFF files that we received from Dombeck lab. I have noticed an issue where the _frames_per_slice attribute does not correctly reflect the actual number of frames in a TIF file. I have 8 TIF files, each have 4000 frames with single channel and single plane. The _frames_per_slice attribute indicates 32000 frames which leads to incorrect indexing when accessing the video in .get_video().

I'm not sure how the example files look like that these changes were based on, but in this case, adding

self._frames_per_slice = min(self._frames_per_slice, self._total_num_frames)

would solve this discrepancy. I'm happy to discuss this and open PR to fix, @alessandratrapani @pauladkisson

The legacy ScanImageTiffImagingExtractor works fine with these files.

Steps to Reproduce

from roiextractors import ScanImageTiffSinglePlaneImagingExtractor

# an example TIF file from Dombeck
file_path = ".../230817_00001_00006.tif"
extractor = ScanImageTiffSinglePlaneImagingExtractor(file_path=file_path, channel_name="Channel 1", plane_name="0")
video = extractor.get_video()

Traceback

Traceback (most recent call last):
  File "/Users/weian/catalystneuro/roiextractors/read_scanimage.py", line 6, in <module>
    video = extractor.get_video()
  File "/Users/weian/catalystneuro/roiextractors/src/roiextractors/extractors/tiffimagingextractors/scanimagetiffimagingextractor.py", line 260, in get_video
    video = raw_video[index]
IndexError: index 4000 is out of bounds for axis 0 with size 4000

Operating System

macOS

Python Executable

Python

Python Version

3.11

Package Versions

No response

Code of Conduct

Yes

Duplicated Issue Check

Yes

pauladkisson commented 6 months ago

Thanks @weiglszonja, can you send the metadata as its extracted, so we can take a look to see if there are any fields we can use to catch this?

weiglszonja commented 6 months ago

Sure, thank you @pauladkisson. Now that I'm also looking at it, there is a field "SI.hScan2D.logFramesPerFile": "4000" that could be probably used to catch this. What do you think?

{
    "frameNumbers": "20001",
    "acquisitionNumbers": "1",
    "frameNumberAcquisition": "20001",
    "frameTimestamps_sec": "665.775557685",
    "acqTriggerTimestamps_sec": "-0.000039190",
    "nextFileMarkerTimestamps_sec": "-1.000000000",
    "endOfAcquisition": "0",
    "endOfAcquisitionMode": "0",
    "dcOverVoltage": "0",
    "epoch": "[2023  8 17 11  4 40.786]",
    "auxTrigger0": "[]",
    "auxTrigger1": "[]",
    "auxTrigger2": "[]",
    "auxTrigger3": "[]",
    "I2CData": "{}",
    "SI.LINE_FORMAT_VERSION": "1",
    "SI.PREMIUM": "true",
    "SI.TIFF_FORMAT_VERSION": "4",
    "SI.VERSION_COMMIT": "'3baa4b74bec9938bfd4c7403bddbe78f2a0ccd93'",
    "SI.VERSION_MAJOR": "2021",
    "SI.VERSION_MINOR": "0",
    "SI.VERSION_UPDATE": "0",
    "SI.acqState": "'grab'",
    "SI.acqsPerLoop": "1",
    "SI.errorMsg": "''",
    "SI.extTrigEnable": "false",
    "SI.fieldCurvatureRxs": "[]",
    "SI.fieldCurvatureRys": "[]",
    "SI.fieldCurvatureTilt": "0",
    "SI.fieldCurvatureTip": "0",
    "SI.fieldCurvatureZs": "[]",
    "SI.hBeams.enablePowerBox": "false",
    "SI.hBeams.errorMsg": "''",
    "SI.hBeams.flybackBlanking": "true",
    "SI.hBeams.interlaceDecimation": "1",
    "SI.hBeams.interlaceOffset": "0",
    "SI.hBeams.lengthConstants": "Inf",
    "SI.hBeams.name": "'SI Beams'",
    "SI.hBeams.powerBoxEndFrame": "Inf",
    "SI.hBeams.powerBoxStartFrame": "1",
    "SI.hBeams.powerBoxes.rect": "[0.25 0.25 0.5 0.5]",
    "SI.hBeams.powerBoxes.powers": "NaN",
    "SI.hBeams.powerBoxes.name": "''",
    "SI.hBeams.powerBoxes.oddLines": "true",
    "SI.hBeams.powerBoxes.evenLines": "true",
    "SI.hBeams.powerBoxes.mask": "[]",
    "SI.hBeams.powerFractionLimits": "1",
    "SI.hBeams.powerFractions": "1",
    "SI.hBeams.powers": "100",
    "SI.hBeams.pzAdjust": "scanimage.types.BeamAdjustTypes.None",
    "SI.hBeams.pzFunction": "{'@scanimage.util.defaultPowerFunction'}",
    "SI.hBeams.pzLUTSource": "{''}",
    "SI.hBeams.reserverInfo": "''",
    "SI.hBeams.totalNumBeams": "1",
    "SI.hBeams.userInfo": "''",
    "SI.hBeams.warnMsg": "''",
    "SI.hCameraManager.errorMsg": "''",
    "SI.hCameraManager.name": "'SI CameraManager'",
    "SI.hCameraManager.reserverInfo": "''",
    "SI.hCameraManager.userInfo": "''",
    "SI.hCameraManager.warnMsg": "''",
    "SI.hChannels.channelAdcResolution": "{14 14 14 14}",
    "SI.hChannels.channelDisplay": "1",
    "SI.hChannels.channelInputRange": "{[-1 1] [-1 1]}",
    "SI.hChannels.channelLUT": "{[-12 1043] [0 1001] [0 100] [0 100]}",
    "SI.hChannels.channelMergeColor": "{'gray' 'red' 'red' 'red'}",
    "SI.hChannels.channelName": "{'Channel 1' 'Channel 2' 'Channel 3' 'Channel 4'}",
    "SI.hChannels.channelOffset": "[1 1]",
    "SI.hChannels.channelSave": "1",
    "SI.hChannels.channelSubtractOffset": "[false false]",
    "SI.hChannels.channelType": "{'stripe' 'stripe' 'stripe' 'stripe'}",
    "SI.hChannels.channelsActive": "1",
    "SI.hChannels.channelsAvailable": "2",
    "SI.hChannels.errorMsg": "''",
    "SI.hChannels.loggingEnable": "1",
    "SI.hChannels.name": "'SI Channels'",
    "SI.hChannels.reserverInfo": "''",
    "SI.hChannels.userInfo": "''",
    "SI.hChannels.warnMsg": "''",
    "SI.hConfigurationSaver.cfgFilename": "'F:\\Shiva\\shiva_config.cfg'",
    "SI.hConfigurationSaver.errorMsg": "''",
    "SI.hConfigurationSaver.name": "'SI ConfigurationSaver'",
    "SI.hConfigurationSaver.reserverInfo": "''",
    "SI.hConfigurationSaver.userInfo": "''",
    "SI.hConfigurationSaver.usrFilename": "'F:\\Shiva\\shiva_settings.usr'",
    "SI.hConfigurationSaver.warnMsg": "''",
    "SI.hCoordinateSystems.errorMsg": "''",
    "SI.hCoordinateSystems.name": "'SI CoordinateSystems'",
    "SI.hCoordinateSystems.reserverInfo": "''",
    "SI.hCoordinateSystems.userInfo": "''",
    "SI.hCoordinateSystems.warnMsg": "''",
    "SI.hCycleManager.cycleIterIdxTotal": "0",
    "SI.hCycleManager.cyclesCompleted": "0",
    "SI.hCycleManager.enabled": "false",
    "SI.hCycleManager.errorMsg": "''",
    "SI.hCycleManager.itersCompleted": "0",
    "SI.hCycleManager.name": "'SI CycleManager'",
    "SI.hCycleManager.reserverInfo": "''",
    "SI.hCycleManager.totalCycles": "1",
    "SI.hCycleManager.userInfo": "''",
    "SI.hCycleManager.warnMsg": "''",
    "SI.hDisplay.autoScaleSaturationFraction": "[0.1 0.01]",
    "SI.hDisplay.channelsMergeEnable": "false",
    "SI.hDisplay.channelsMergeFocusOnly": "false",
    "SI.hDisplay.displayRollingAverageFactor": "5",
    "SI.hDisplay.displayRollingAverageFactorLock": "false",
    "SI.hDisplay.enableScanfieldDisplays": "false",
    "SI.hDisplay.errorMsg": "''",
    "SI.hDisplay.lineScanHistoryLength": "1000",
    "SI.hDisplay.name": "'SI Display'",
    "SI.hDisplay.renderer": "'auto'",
    "SI.hDisplay.reserverInfo": "''",
    "SI.hDisplay.scanfieldDisplayColumns": "5",
    "SI.hDisplay.scanfieldDisplayRows": "5",
    "SI.hDisplay.scanfieldDisplayTilingMode": "'Auto'",
    "SI.hDisplay.scanfieldDisplays.enable": "false",
    "SI.hDisplay.scanfieldDisplays.name": "'Display 1'",
    "SI.hDisplay.scanfieldDisplays.channel": "1",
    "SI.hDisplay.scanfieldDisplays.roi": "1",
    "SI.hDisplay.scanfieldDisplays.z": "0",
    "SI.hDisplay.selectedZs": "[]",
    "SI.hDisplay.showScanfieldDisplayNames": "true",
    "SI.hDisplay.userInfo": "''",
    "SI.hDisplay.volumeDisplayStyle": "'3D'",
    "SI.hDisplay.warnMsg": "''",
    "SI.hFastZ.actuatorLag": "0",
    "SI.hFastZ.discardFlybackFrames": "false",
    "SI.hFastZ.enable": "false",
    "SI.hFastZ.enableFieldCurveCorr": "false",
    "SI.hFastZ.errorMsg": "''",
    "SI.hFastZ.flybackTime": "0",
    "SI.hFastZ.hasFastZ": "false",
    "SI.hFastZ.name": "'SI FastZ'",
    "SI.hFastZ.numDiscardFlybackFrames": "0",
    "SI.hFastZ.position": "0",
    "SI.hFastZ.reserverInfo": "''",
    "SI.hFastZ.userInfo": "''",
    "SI.hFastZ.volumePeriodAdjustment": "-0.0006",
    "SI.hFastZ.warnMsg": "''",
    "SI.hFastZ.waveformType": "'sawtooth'",
    "SI.hIntegrationRoiManager.enable": "false",
    "SI.hIntegrationRoiManager.enableDisplay": "true",
    "SI.hIntegrationRoiManager.errorMsg": "''",
    "SI.hIntegrationRoiManager.integrationHistoryLength": "1000",
    "SI.hIntegrationRoiManager.name": "'SI IntegrationRoiManager'",
    "SI.hIntegrationRoiManager.outputChannelsEnabled": "[]",
    "SI.hIntegrationRoiManager.outputChannelsFunctions": "{}",
    "SI.hIntegrationRoiManager.outputChannelsNames": "{}",
    "SI.hIntegrationRoiManager.outputChannelsPhysicalNames": "{}",
    "SI.hIntegrationRoiManager.outputChannelsRoiNames": "{}",
    "SI.hIntegrationRoiManager.postProcessFcn": "'@scanimage.components.integrationRois.integrationPostProcessingFcn'",
    "SI.hIntegrationRoiManager.reserverInfo": "''",
    "SI.hIntegrationRoiManager.userInfo": "''",
    "SI.hIntegrationRoiManager.warnMsg": "''",
    "SI.hMotionManager.correctionBoundsXY": "[-5 5]",
    "SI.hMotionManager.correctionBoundsZ": "[-50 50]",
    "SI.hMotionManager.correctionDeviceXY": "'galvos'",
    "SI.hMotionManager.correctionDeviceZ": "'fastz'",
    "SI.hMotionManager.correctionEnableXY": "false",
    "SI.hMotionManager.correctionEnableZ": "false",
    "SI.hMotionManager.correctorClassName": "'scanimage.components.motionCorrectors.SimpleMotionCorrector'",
    "SI.hMotionManager.enable": "false",
    "SI.hMotionManager.errorMsg": "''",
    "SI.hMotionManager.estimatorClassName": "'scanimage.components.motionEstimators.SimpleMotionEstimator'",
    "SI.hMotionManager.motionHistoryLength": "100",
    "SI.hMotionManager.motionMarkersXY": "zeros(0,2)",
    "SI.hMotionManager.name": "'SI MotionManager'",
    "SI.hMotionManager.reserverInfo": "''",
    "SI.hMotionManager.resetCorrectionAfterAcq": "true",
    "SI.hMotionManager.userInfo": "''",
    "SI.hMotionManager.warnMsg": "''",
    "SI.hMotionManager.zStackAlignmentFcn": "'@scanimage.components.motionEstimators.util.alignZRoiData'",
    "SI.hMotors.axesPosition": "[0 0 0]",
    "SI.hMotors.azimuth": "0",
    "SI.hMotors.elevation": "0",
    "SI.hMotors.errorMsg": "''",
    "SI.hMotors.errorTf": "true",
    "SI.hMotors.isAligned": "false",
    "SI.hMotors.isHomed": "true",
    "SI.hMotors.isRelativeZeroSet": "false",
    "SI.hMotors.maxZStep": "Inf",
    "SI.hMotors.minPositionQueryInterval_s": "0.001",
    "SI.hMotors.motorErrorMsg": "{'Sutter XYZ: initialization error: AsyncSerial.mex read failed'}",
    "SI.hMotors.moveInProgress": "false",
    "SI.hMotors.moveTimeout_s": "10",
    "SI.hMotors.name": "'SI Motors'",
    "SI.hMotors.reserverInfo": "''",
    "SI.hMotors.samplePosition": "[0 0 0]",
    "SI.hMotors.simulatedAxes": "[false false false]",
    "SI.hMotors.userDefinedPositions": "[]",
    "SI.hMotors.userInfo": "''",
    "SI.hMotors.warnMsg": "''",
    "SI.hPhotostim.allowMultipleOutputs": "false",
    "SI.hPhotostim.autoTriggerPeriod": "0",
    "SI.hPhotostim.compensateMotionEnabled": "true",
    "SI.hPhotostim.completedSequences": "0",
    "SI.hPhotostim.errorMsg": "''",
    "SI.hPhotostim.laserActiveSignalAdvance": "0.001",
    "SI.hPhotostim.lastMotion": "[0 0]",
    "SI.hPhotostim.logging": "false",
    "SI.hPhotostim.monitoring": "false",
    "SI.hPhotostim.monitoringSampleRate": "9000",
    "SI.hPhotostim.name": "'SI Photostim'",
    "SI.hPhotostim.nextStimulus": "1",
    "SI.hPhotostim.numOutputs": "0",
    "SI.hPhotostim.numSequences": "Inf",
    "SI.hPhotostim.reserverInfo": "''",
    "SI.hPhotostim.sequencePosition": "1",
    "SI.hPhotostim.sequenceSelectedStimuli": "[]",
    "SI.hPhotostim.status": "'Offline'",
    "SI.hPhotostim.stimImmediately": "false",
    "SI.hPhotostim.stimSelectionAssignment": "[]",
    "SI.hPhotostim.stimSelectionDevice": "''",
    "SI.hPhotostim.stimSelectionTerms": "[]",
    "SI.hPhotostim.stimSelectionTriggerTerm": "[]",
    "SI.hPhotostim.stimTriggerTerm": "1",
    "SI.hPhotostim.stimulusMode": "'onDemand'",
    "SI.hPhotostim.syncTriggerTerm": "[]",
    "SI.hPhotostim.userInfo": "''",
    "SI.hPhotostim.warnMsg": "''",
    "SI.hPhotostim.zMode": "'2D'",
    "SI.hPmts.autoPower": "zeros(1,0)",
    "SI.hPmts.autoPowerOnWaitTime_s": "0.3",
    "SI.hPmts.bandwidths": "zeros(1,0)",
    "SI.hPmts.errorMsg": "''",
    "SI.hPmts.gains": "zeros(1,0)",
    "SI.hPmts.name": "'SI Pmts'",
    "SI.hPmts.names": "{}",
    "SI.hPmts.offsets": "zeros(1,0)",
    "SI.hPmts.powersOn": "zeros(1,0)",
    "SI.hPmts.reserverInfo": "''",
    "SI.hPmts.tripped": "zeros(1,0)",
    "SI.hPmts.userInfo": "''",
    "SI.hPmts.warnMsg": "''",
    "SI.hRoiManager.errorMsg": "''",
    "SI.hRoiManager.forceSquarePixelation": "true",
    "SI.hRoiManager.forceSquarePixels": "0",
    "SI.hRoiManager.imagingFovDeg": "[-2.5875 -2.25;2.5875 -2.25;2.5875 2.25;-2.5875 2.25]",
    "SI.hRoiManager.imagingFovUm": "[-38.8125 -33.75;38.8125 -33.75;38.8125 33.75;-38.8125 33.75]",
    "SI.hRoiManager.linePeriod": "6.30325e-05",
    "SI.hRoiManager.linesPerFrame": "512",
    "SI.hRoiManager.mroiEnable": "false",
    "SI.hRoiManager.name": "'SI RoiManager'",
    "SI.hRoiManager.pixelsPerLine": "512",
    "SI.hRoiManager.reserverInfo": "''",
    "SI.hRoiManager.scanAngleMultiplierFast": "1.15",
    "SI.hRoiManager.scanAngleMultiplierSlow": "1",
    "SI.hRoiManager.scanAngleShiftFast": "0",
    "SI.hRoiManager.scanAngleShiftSlow": "0",
    "SI.hRoiManager.scanFramePeriod": "0.0332812",
    "SI.hRoiManager.scanFrameRate": "30.047",
    "SI.hRoiManager.scanRotation": "0",
    "SI.hRoiManager.scanType": "'frame'",
    "SI.hRoiManager.scanVolumeRate": "30.047",
    "SI.hRoiManager.scanZoomFactor": "2",
    "SI.hRoiManager.userInfo": "''",
    "SI.hRoiManager.warnMsg": "''",
    "SI.hScan2D.auxTriggersEnable": "true",
    "SI.hScan2D.beamClockDelay": "1.5e-06",
    "SI.hScan2D.beamClockExtend": "0",
    "SI.hScan2D.bidirectional": "true",
    "SI.hScan2D.channelOffsets": "[1 1]",
    "SI.hScan2D.channels": "{}",
    "SI.hScan2D.channelsAdcResolution": "14",
    "SI.hScan2D.channelsAutoReadOffsets": "true",
    "SI.hScan2D.channelsAvailable": "2",
    "SI.hScan2D.channelsDataType": "'int16'",
    "SI.hScan2D.channelsFilter": "'Bessel'",
    "SI.hScan2D.channelsInputRanges": "{[-1 1] [-1 1]}",
    "SI.hScan2D.channelsInvert": "[true true]",
    "SI.hScan2D.channelsSubtractOffsets": "[false false]",
    "SI.hScan2D.errorMsg": "''",
    "SI.hScan2D.externalSampleClock": "false",
    "SI.hScan2D.externalSampleClockRate": "8e+07",
    "SI.hScan2D.fillFractionSpatial": "0.9",
    "SI.hScan2D.fillFractionTemporal": "0.712867",
    "SI.hScan2D.flybackTimePerFrame": "0.001",
    "SI.hScan2D.flytoTimePerScanfield": "0.001",
    "SI.hScan2D.fovCornerPoints": "[-13 -5;13 -5;13 5;-13 5]",
    "SI.hScan2D.hasResonantMirror": "true",
    "SI.hScan2D.hasXGalvo": "false",
    "SI.hScan2D.keepResonantScannerOn": "true",
    "SI.hScan2D.laserTriggerDebounceTicks": "0",
    "SI.hScan2D.laserTriggerPort": "''",
    "SI.hScan2D.laserTriggerSampleMaskEnable": "false",
    "SI.hScan2D.laserTriggerSampleWindow": "[0 1]",
    "SI.hScan2D.linePhase": "-2.875e-07",
    "SI.hScan2D.linePhaseMode": "'Nearest Neighbor'",
    "SI.hScan2D.logAverageFactor": "1",
    "SI.hScan2D.logFramesPerFile": "4000",
    "SI.hScan2D.logFramesPerFileLock": "false",
    "SI.hScan2D.logOverwriteWarn": "false",
    "SI.hScan2D.mask": "[12;13;13;12;12;12;12;11;12;11;11;11;11;11;11;10;11;10;10;10;10;10;10;10;10;9;10;9;10;9;9;10;9;9;9;9;9;8;9;9;8;9;9;8;9;8;8;9;8;8;8;8;8;8;8;8;8;8;8;8;8;7;8;8;7;8;7;8;8;7;7;8;7;8;7;7;7;8;7;7;7;7;8;7;7;7;7;7;7;7;7;7;7;6;7;7;7;7;6;7;7;7;6;7;7;6;7;7;6;7;6;7;6;7;7;6;6;7;6;7;6;7;6;6;7;6;6;7;6;6;7;6;6;6;7;6;6;6;7;6;6;6;6;6;7;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;5;6;6;6;6;6;6;5;6;6;6;6;6;5;6;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;5;6;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;6;5;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;6;5;6;6;6;6;6;5;6;6;6;6;6;6;5;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;7;6;6;6;6;6;7;6;6;6;7;6;6;6;7;6;6;7;6;6;7;6;6;7;6;7;6;7;6;6;7;7;6;7;6;7;6;7;7;6;7;7;6;7;7;7;6;7;7;7;7;6;7;7;7;7;7;7;7;7;7;7;8;7;7;7;7;8;7;7;7;8;7;8;7;7;8;8;7;8;7;8;8;7;8;8;8;8;8;8;8;8;8;8;8;8;8;9;8;8;9;8;9;9;8;9;9;8;9;9;9;9;9;10;9;9;10;9;10;9;10;10;10;10;10;10;10;10;11;10;11;11;11;11;11;11;12;11;12;12;12;12;13;13;12]",
    "SI.hScan2D.maskDisableAveraging": "[false false]",
    "SI.hScan2D.maxSampleRate": "8e+07",
    "SI.hScan2D.name": "'ImagingScanner'",
    "SI.hScan2D.nominalFovCornerPoints": "[-13 -5;13 -5;13 5;-13 5]",
    "SI.hScan2D.parkSlmForAcquisition": "true",
    "SI.hScan2D.physicalChannelsAvailable": "2",
    "SI.hScan2D.pixelBinFactor": "1",
    "SI.hScan2D.reserverInfo": "''",
    "SI.hScan2D.sampleRate": "8e+07",
    "SI.hScan2D.scanMode": "'resonant'",
    "SI.hScan2D.scanPixelTimeMaxMinRatio": "2.6",
    "SI.hScan2D.scanPixelTimeMean": "8.77441e-08",
    "SI.hScan2D.scannerFrequency": "7932.41",
    "SI.hScan2D.scannerToRefTransform": "[1 0 0;0 1 0;0 0 1]",
    "SI.hScan2D.scannerType": "'RG'",
    "SI.hScan2D.settleTimeFraction": "0",
    "SI.hScan2D.simulated": "false",
    "SI.hScan2D.stripingEnable": "false",
    "SI.hScan2D.trigAcqEdge": "'rising'",
    "SI.hScan2D.trigAcqInTerm": "''",
    "SI.hScan2D.trigNextEdge": "'rising'",
    "SI.hScan2D.trigNextInTerm": "''",
    "SI.hScan2D.trigNextStopEnable": "true",
    "SI.hScan2D.trigStopEdge": "'rising'",
    "SI.hScan2D.trigStopInTerm": "''",
    "SI.hScan2D.uniformSampling": "false",
    "SI.hScan2D.userInfo": "''",
    "SI.hScan2D.warnMsg": "''",
    "SI.hShutters.errorMsg": "''",
    "SI.hShutters.name": "'SI Shutters'",
    "SI.hShutters.reserverInfo": "''",
    "SI.hShutters.userInfo": "''",
    "SI.hShutters.warnMsg": "''",
    "SI.hStackManager.actualNumSlices": "1",
    "SI.hStackManager.actualNumVolumes": "1",
    "SI.hStackManager.actualStackZStepSize": "[]",
    "SI.hStackManager.arbitraryZs": "[0;1]",
    "SI.hStackManager.boundedStackDefinition": "'numSlices'",
    "SI.hStackManager.centeredStack": "false",
    "SI.hStackManager.closeShutterBetweenSlices": "false",
    "SI.hStackManager.enable": "false",
    "SI.hStackManager.errorMsg": "''",
    "SI.hStackManager.framesPerSlice": "32000",
    "SI.hStackManager.name": "'SI StackManager'",
    "SI.hStackManager.numFastZActuators": "0",
    "SI.hStackManager.numFramesPerVolume": "1",
    "SI.hStackManager.numFramesPerVolumeWithFlyback": "1",
    "SI.hStackManager.numSlices": "1",
    "SI.hStackManager.numVolumes": "1",
    "SI.hStackManager.reserverInfo": "''",
    "SI.hStackManager.stackActuator": "'motor'",
    "SI.hStackManager.stackDefinition": "'uniform'",
    "SI.hStackManager.stackEndPowerFraction": "[]",
    "SI.hStackManager.stackFastWaveformType": "'sawtooth'",
    "SI.hStackManager.stackMode": "'slow'",
    "SI.hStackManager.stackReturnHome": "true",
    "SI.hStackManager.stackStartPowerFraction": "[]",
    "SI.hStackManager.stackZEndPos": "[]",
    "SI.hStackManager.stackZStartPos": "[]",
    "SI.hStackManager.stackZStepSize": "1",
    "SI.hStackManager.useStartEndPowers": "true",
    "SI.hStackManager.userInfo": "''",
    "SI.hStackManager.warnMsg": "''",
    "SI.hStackManager.zPowerReference": "0",
    "SI.hStackManager.zs": "0",
    "SI.hStackManager.zsAllActuators": "0",
    "SI.hStackManager.zsRelative": "zeros(1,0)",
    "SI.hTileManager.acqDoneFlag": "false",
    "SI.hTileManager.errorMsg": "''",
    "SI.hTileManager.isFastZ": "false",
    "SI.hTileManager.loopedAcquisition": "false",
    "SI.hTileManager.name": "'SI TileManager'",
    "SI.hTileManager.reserverInfo": "''",
    "SI.hTileManager.scanAbortFlag": "false",
    "SI.hTileManager.scanFramesPerTile": "1",
    "SI.hTileManager.scanStageSettleTime": "0.1",
    "SI.hTileManager.scanTileSortFcn": "'scanimage.components.tileTools.tileSortingFcns.naiveNearest'",
    "SI.hTileManager.tileScanIndices": "[]",
    "SI.hTileManager.tileScanningInProgress": "false",
    "SI.hTileManager.tilesDone": "[]",
    "SI.hTileManager.userInfo": "''",
    "SI.hTileManager.warnMsg": "''",
    "SI.hUserFunctions.errorMsg": "''",
    "SI.hUserFunctions.name": "'SI UserFunctions'",
    "SI.hUserFunctions.reserverInfo": "''",
    "SI.hUserFunctions.userFunctionsCfg": "[]",
    "SI.hUserFunctions.userFunctionsUsr": "[]",
    "SI.hUserFunctions.userInfo": "''",
    "SI.hUserFunctions.warnMsg": "''",
    "SI.hWSConnector.communicationTimeout": "5",
    "SI.hWSConnector.enable": "false",
    "SI.hWSConnector.errorMsg": "''",
    "SI.hWSConnector.name": "'SI WSConnector'",
    "SI.hWSConnector.reserverInfo": "''",
    "SI.hWSConnector.userInfo": "''",
    "SI.hWSConnector.warnMsg": "''",
    "SI.hWaveformManager.errorMsg": "''",
    "SI.hWaveformManager.name": "'SI WaveformManager'",
    "SI.hWaveformManager.optimizedScanners": "{}",
    "SI.hWaveformManager.reserverInfo": "''",
    "SI.hWaveformManager.userInfo": "''",
    "SI.hWaveformManager.warnMsg": "''",
    "SI.imagingSystem": "'ImagingScanner'",
    "SI.loopAcqInterval": "10",
    "SI.name": "'ScanImage'",
    "SI.objectiveResolution": "15",
    "SI.reserverInfo": "''",
    "SI.shutDownScript": "''",
    "SI.startUpScript": "''",
    "SI.userInfo": "''",
    "SI.warnMsg": "''",
    "RoiGroups": {
        "imagingRoiGroup": {
            "ver": 1,
            "classname": "scanimage.mroi.RoiGroup",
            "name": "Default Imaging ROI Group",
            "UserData": null,
            "roiUuid": "29A0EC35A7B480B7",
            "roiUuiduint64": 2.999657067e+18,
            "rois": {
                "ver": 1,
                "classname": "scanimage.mroi.Roi",
                "name": "Default Imaging Roi",
                "UserData": {
                    "imagingSystem": "ImagingScanner",
                    "fillFractionSpatial": 0.9,
                    "forceSquarePixelation": 1,
                    "forceSquarePixels": 0,
                    "scanZoomFactor": 2,
                    "scanAngleShiftFast": 0,
                    "scanAngleMultiplierSlow": 1,
                    "scanAngleShiftSlow": 0,
                    "scanRotation": 0,
                    "pixelsPerLine": 512,
                    "linesPerFrame": 512
                },
                "roiUuid": "414DE9DBC05309BA",
                "roiUuiduint64": 4.705674316e+18,
                "zs": 0,
                "scanfields": {
                    "ver": 1,
                    "classname": "scanimage.mroi.scanfield.fields.RotatedRectangle",
                    "name": "Default Imaging Scanfield",
                    "UserData": null,
                    "roiUuid": "F5B1C7B27F94C959",
                    "roiUuiduint64": 1.770415118e+19,
                    "centerXY": [
                        0,
                        0
                    ],
                    "sizeXY": [
                        5.175,
                        4.5
                    ],
                    "rotationDegrees": 0,
                    "enable": 1,
                    "pixelResolutionXY": [
                        512,
                        512
                    ],
                    "pixelToRefTransform": [
                        [
                            0.01010742188,
                            0,
                            -2.592553711
                        ],
                        [
                            0,
                            0.0087890625,
                            -2.254394531
                        ],
                        [
                            0,
                            0,
                            1
                        ]
                    ],
                    "affine": [
                        [
                            5.175,
                            0,
                            -2.5875
                        ],
                        [
                            0,
                            4.5,
                            -2.25
                        ],
                        [
                            0,
                            0,
                            1
                        ]
                    ]
                },
                "discretePlaneMode": 0,
                "powers": null,
                "pzAdjust": [],
                "Lzs": null,
                "interlaceDecimation": null,
                "interlaceOffset": null,
                "enable": 1
            }
        },
        "photostimRoiGroups": null,
        "integrationRoiGroup": {
            "ver": 1,
            "classname": "scanimage.mroi.RoiGroup",
            "name": "",
            "UserData": null,
            "roiUuid": "7211EFF07D61330F",
            "roiUuiduint64": 8.219614611e+18,
            "rois": {
                "_ArrayType_": "double",
                "_ArraySize_": [
                    1,
                    0
                ],
                "_ArrayData_": null
            }
        }
    }
}
{
    "frameNumbers": "20001",
    "acquisitionNumbers": "1",
    "frameNumberAcquisition": "20001",
    "frameTimestamps_sec": "665.775557685",
    "acqTriggerTimestamps_sec": "-0.000039190",
    "nextFileMarkerTimestamps_sec": "-1.000000000",
    "endOfAcquisition": "0",
    "endOfAcquisitionMode": "0",
    "dcOverVoltage": "0",
    "epoch": "[2023  8 17 11  4 40.786]",
    "auxTrigger0": "[]",
    "auxTrigger1": "[]",
    "auxTrigger2": "[]",
    "auxTrigger3": "[]",
    "I2CData": "{}",
    "SI.LINE_FORMAT_VERSION": "1",
    "SI.PREMIUM": "true",
    "SI.TIFF_FORMAT_VERSION": "4",
    "SI.VERSION_COMMIT": "'3baa4b74bec9938bfd4c7403bddbe78f2a0ccd93'",
    "SI.VERSION_MAJOR": "2021",
    "SI.VERSION_MINOR": "0",
    "SI.VERSION_UPDATE": "0",
    "SI.acqState": "'grab'",
    "SI.acqsPerLoop": "1",
    "SI.errorMsg": "''",
    "SI.extTrigEnable": "false",
    "SI.fieldCurvatureRxs": "[]",
    "SI.fieldCurvatureRys": "[]",
    "SI.fieldCurvatureTilt": "0",
    "SI.fieldCurvatureTip": "0",
    "SI.fieldCurvatureZs": "[]",
    "SI.hBeams.enablePowerBox": "false",
    "SI.hBeams.errorMsg": "''",
    "SI.hBeams.flybackBlanking": "true",
    "SI.hBeams.interlaceDecimation": "1",
    "SI.hBeams.interlaceOffset": "0",
    "SI.hBeams.lengthConstants": "Inf",
    "SI.hBeams.name": "'SI Beams'",
    "SI.hBeams.powerBoxEndFrame": "Inf",
    "SI.hBeams.powerBoxStartFrame": "1",
    "SI.hBeams.powerBoxes.rect": "[0.25 0.25 0.5 0.5]",
    "SI.hBeams.powerBoxes.powers": "NaN",
    "SI.hBeams.powerBoxes.name": "''",
    "SI.hBeams.powerBoxes.oddLines": "true",
    "SI.hBeams.powerBoxes.evenLines": "true",
    "SI.hBeams.powerBoxes.mask": "[]",
    "SI.hBeams.powerFractionLimits": "1",
    "SI.hBeams.powerFractions": "1",
    "SI.hBeams.powers": "100",
    "SI.hBeams.pzAdjust": "scanimage.types.BeamAdjustTypes.None",
    "SI.hBeams.pzFunction": "{'@scanimage.util.defaultPowerFunction'}",
    "SI.hBeams.pzLUTSource": "{''}",
    "SI.hBeams.reserverInfo": "''",
    "SI.hBeams.totalNumBeams": "1",
    "SI.hBeams.userInfo": "''",
    "SI.hBeams.warnMsg": "''",
    "SI.hCameraManager.errorMsg": "''",
    "SI.hCameraManager.name": "'SI CameraManager'",
    "SI.hCameraManager.reserverInfo": "''",
    "SI.hCameraManager.userInfo": "''",
    "SI.hCameraManager.warnMsg": "''",
    "SI.hChannels.channelAdcResolution": "{14 14 14 14}",
    "SI.hChannels.channelDisplay": "1",
    "SI.hChannels.channelInputRange": "{[-1 1] [-1 1]}",
    "SI.hChannels.channelLUT": "{[-12 1043] [0 1001] [0 100] [0 100]}",
    "SI.hChannels.channelMergeColor": "{'gray' 'red' 'red' 'red'}",
    "SI.hChannels.channelName": "{'Channel 1' 'Channel 2' 'Channel 3' 'Channel 4'}",
    "SI.hChannels.channelOffset": "[1 1]",
    "SI.hChannels.channelSave": "1",
    "SI.hChannels.channelSubtractOffset": "[false false]",
    "SI.hChannels.channelType": "{'stripe' 'stripe' 'stripe' 'stripe'}",
    "SI.hChannels.channelsActive": "1",
    "SI.hChannels.channelsAvailable": "2",
    "SI.hChannels.errorMsg": "''",
    "SI.hChannels.loggingEnable": "1",
    "SI.hChannels.name": "'SI Channels'",
    "SI.hChannels.reserverInfo": "''",
    "SI.hChannels.userInfo": "''",
    "SI.hChannels.warnMsg": "''",
    "SI.hConfigurationSaver.cfgFilename": "'F:\\Shiva\\shiva_config.cfg'",
    "SI.hConfigurationSaver.errorMsg": "''",
    "SI.hConfigurationSaver.name": "'SI ConfigurationSaver'",
    "SI.hConfigurationSaver.reserverInfo": "''",
    "SI.hConfigurationSaver.userInfo": "''",
    "SI.hConfigurationSaver.usrFilename": "'F:\\Shiva\\shiva_settings.usr'",
    "SI.hConfigurationSaver.warnMsg": "''",
    "SI.hCoordinateSystems.errorMsg": "''",
    "SI.hCoordinateSystems.name": "'SI CoordinateSystems'",
    "SI.hCoordinateSystems.reserverInfo": "''",
    "SI.hCoordinateSystems.userInfo": "''",
    "SI.hCoordinateSystems.warnMsg": "''",
    "SI.hCycleManager.cycleIterIdxTotal": "0",
    "SI.hCycleManager.cyclesCompleted": "0",
    "SI.hCycleManager.enabled": "false",
    "SI.hCycleManager.errorMsg": "''",
    "SI.hCycleManager.itersCompleted": "0",
    "SI.hCycleManager.name": "'SI CycleManager'",
    "SI.hCycleManager.reserverInfo": "''",
    "SI.hCycleManager.totalCycles": "1",
    "SI.hCycleManager.userInfo": "''",
    "SI.hCycleManager.warnMsg": "''",
    "SI.hDisplay.autoScaleSaturationFraction": "[0.1 0.01]",
    "SI.hDisplay.channelsMergeEnable": "false",
    "SI.hDisplay.channelsMergeFocusOnly": "false",
    "SI.hDisplay.displayRollingAverageFactor": "5",
    "SI.hDisplay.displayRollingAverageFactorLock": "false",
    "SI.hDisplay.enableScanfieldDisplays": "false",
    "SI.hDisplay.errorMsg": "''",
    "SI.hDisplay.lineScanHistoryLength": "1000",
    "SI.hDisplay.name": "'SI Display'",
    "SI.hDisplay.renderer": "'auto'",
    "SI.hDisplay.reserverInfo": "''",
    "SI.hDisplay.scanfieldDisplayColumns": "5",
    "SI.hDisplay.scanfieldDisplayRows": "5",
    "SI.hDisplay.scanfieldDisplayTilingMode": "'Auto'",
    "SI.hDisplay.scanfieldDisplays.enable": "false",
    "SI.hDisplay.scanfieldDisplays.name": "'Display 1'",
    "SI.hDisplay.scanfieldDisplays.channel": "1",
    "SI.hDisplay.scanfieldDisplays.roi": "1",
    "SI.hDisplay.scanfieldDisplays.z": "0",
    "SI.hDisplay.selectedZs": "[]",
    "SI.hDisplay.showScanfieldDisplayNames": "true",
    "SI.hDisplay.userInfo": "''",
    "SI.hDisplay.volumeDisplayStyle": "'3D'",
    "SI.hDisplay.warnMsg": "''",
    "SI.hFastZ.actuatorLag": "0",
    "SI.hFastZ.discardFlybackFrames": "false",
    "SI.hFastZ.enable": "false",
    "SI.hFastZ.enableFieldCurveCorr": "false",
    "SI.hFastZ.errorMsg": "''",
    "SI.hFastZ.flybackTime": "0",
    "SI.hFastZ.hasFastZ": "false",
    "SI.hFastZ.name": "'SI FastZ'",
    "SI.hFastZ.numDiscardFlybackFrames": "0",
    "SI.hFastZ.position": "0",
    "SI.hFastZ.reserverInfo": "''",
    "SI.hFastZ.userInfo": "''",
    "SI.hFastZ.volumePeriodAdjustment": "-0.0006",
    "SI.hFastZ.warnMsg": "''",
    "SI.hFastZ.waveformType": "'sawtooth'",
    "SI.hIntegrationRoiManager.enable": "false",
    "SI.hIntegrationRoiManager.enableDisplay": "true",
    "SI.hIntegrationRoiManager.errorMsg": "''",
    "SI.hIntegrationRoiManager.integrationHistoryLength": "1000",
    "SI.hIntegrationRoiManager.name": "'SI IntegrationRoiManager'",
    "SI.hIntegrationRoiManager.outputChannelsEnabled": "[]",
    "SI.hIntegrationRoiManager.outputChannelsFunctions": "{}",
    "SI.hIntegrationRoiManager.outputChannelsNames": "{}",
    "SI.hIntegrationRoiManager.outputChannelsPhysicalNames": "{}",
    "SI.hIntegrationRoiManager.outputChannelsRoiNames": "{}",
    "SI.hIntegrationRoiManager.postProcessFcn": "'@scanimage.components.integrationRois.integrationPostProcessingFcn'",
    "SI.hIntegrationRoiManager.reserverInfo": "''",
    "SI.hIntegrationRoiManager.userInfo": "''",
    "SI.hIntegrationRoiManager.warnMsg": "''",
    "SI.hMotionManager.correctionBoundsXY": "[-5 5]",
    "SI.hMotionManager.correctionBoundsZ": "[-50 50]",
    "SI.hMotionManager.correctionDeviceXY": "'galvos'",
    "SI.hMotionManager.correctionDeviceZ": "'fastz'",
    "SI.hMotionManager.correctionEnableXY": "false",
    "SI.hMotionManager.correctionEnableZ": "false",
    "SI.hMotionManager.correctorClassName": "'scanimage.components.motionCorrectors.SimpleMotionCorrector'",
    "SI.hMotionManager.enable": "false",
    "SI.hMotionManager.errorMsg": "''",
    "SI.hMotionManager.estimatorClassName": "'scanimage.components.motionEstimators.SimpleMotionEstimator'",
    "SI.hMotionManager.motionHistoryLength": "100",
    "SI.hMotionManager.motionMarkersXY": "zeros(0,2)",
    "SI.hMotionManager.name": "'SI MotionManager'",
    "SI.hMotionManager.reserverInfo": "''",
    "SI.hMotionManager.resetCorrectionAfterAcq": "true",
    "SI.hMotionManager.userInfo": "''",
    "SI.hMotionManager.warnMsg": "''",
    "SI.hMotionManager.zStackAlignmentFcn": "'@scanimage.components.motionEstimators.util.alignZRoiData'",
    "SI.hMotors.axesPosition": "[0 0 0]",
    "SI.hMotors.azimuth": "0",
    "SI.hMotors.elevation": "0",
    "SI.hMotors.errorMsg": "''",
    "SI.hMotors.errorTf": "true",
    "SI.hMotors.isAligned": "false",
    "SI.hMotors.isHomed": "true",
    "SI.hMotors.isRelativeZeroSet": "false",
    "SI.hMotors.maxZStep": "Inf",
    "SI.hMotors.minPositionQueryInterval_s": "0.001",
    "SI.hMotors.motorErrorMsg": "{'Sutter XYZ: initialization error: AsyncSerial.mex read failed'}",
    "SI.hMotors.moveInProgress": "false",
    "SI.hMotors.moveTimeout_s": "10",
    "SI.hMotors.name": "'SI Motors'",
    "SI.hMotors.reserverInfo": "''",
    "SI.hMotors.samplePosition": "[0 0 0]",
    "SI.hMotors.simulatedAxes": "[false false false]",
    "SI.hMotors.userDefinedPositions": "[]",
    "SI.hMotors.userInfo": "''",
    "SI.hMotors.warnMsg": "''",
    "SI.hPhotostim.allowMultipleOutputs": "false",
    "SI.hPhotostim.autoTriggerPeriod": "0",
    "SI.hPhotostim.compensateMotionEnabled": "true",
    "SI.hPhotostim.completedSequences": "0",
    "SI.hPhotostim.errorMsg": "''",
    "SI.hPhotostim.laserActiveSignalAdvance": "0.001",
    "SI.hPhotostim.lastMotion": "[0 0]",
    "SI.hPhotostim.logging": "false",
    "SI.hPhotostim.monitoring": "false",
    "SI.hPhotostim.monitoringSampleRate": "9000",
    "SI.hPhotostim.name": "'SI Photostim'",
    "SI.hPhotostim.nextStimulus": "1",
    "SI.hPhotostim.numOutputs": "0",
    "SI.hPhotostim.numSequences": "Inf",
    "SI.hPhotostim.reserverInfo": "''",
    "SI.hPhotostim.sequencePosition": "1",
    "SI.hPhotostim.sequenceSelectedStimuli": "[]",
    "SI.hPhotostim.status": "'Offline'",
    "SI.hPhotostim.stimImmediately": "false",
    "SI.hPhotostim.stimSelectionAssignment": "[]",
    "SI.hPhotostim.stimSelectionDevice": "''",
    "SI.hPhotostim.stimSelectionTerms": "[]",
    "SI.hPhotostim.stimSelectionTriggerTerm": "[]",
    "SI.hPhotostim.stimTriggerTerm": "1",
    "SI.hPhotostim.stimulusMode": "'onDemand'",
    "SI.hPhotostim.syncTriggerTerm": "[]",
    "SI.hPhotostim.userInfo": "''",
    "SI.hPhotostim.warnMsg": "''",
    "SI.hPhotostim.zMode": "'2D'",
    "SI.hPmts.autoPower": "zeros(1,0)",
    "SI.hPmts.autoPowerOnWaitTime_s": "0.3",
    "SI.hPmts.bandwidths": "zeros(1,0)",
    "SI.hPmts.errorMsg": "''",
    "SI.hPmts.gains": "zeros(1,0)",
    "SI.hPmts.name": "'SI Pmts'",
    "SI.hPmts.names": "{}",
    "SI.hPmts.offsets": "zeros(1,0)",
    "SI.hPmts.powersOn": "zeros(1,0)",
    "SI.hPmts.reserverInfo": "''",
    "SI.hPmts.tripped": "zeros(1,0)",
    "SI.hPmts.userInfo": "''",
    "SI.hPmts.warnMsg": "''",
    "SI.hRoiManager.errorMsg": "''",
    "SI.hRoiManager.forceSquarePixelation": "true",
    "SI.hRoiManager.forceSquarePixels": "0",
    "SI.hRoiManager.imagingFovDeg": "[-2.5875 -2.25;2.5875 -2.25;2.5875 2.25;-2.5875 2.25]",
    "SI.hRoiManager.imagingFovUm": "[-38.8125 -33.75;38.8125 -33.75;38.8125 33.75;-38.8125 33.75]",
    "SI.hRoiManager.linePeriod": "6.30325e-05",
    "SI.hRoiManager.linesPerFrame": "512",
    "SI.hRoiManager.mroiEnable": "false",
    "SI.hRoiManager.name": "'SI RoiManager'",
    "SI.hRoiManager.pixelsPerLine": "512",
    "SI.hRoiManager.reserverInfo": "''",
    "SI.hRoiManager.scanAngleMultiplierFast": "1.15",
    "SI.hRoiManager.scanAngleMultiplierSlow": "1",
    "SI.hRoiManager.scanAngleShiftFast": "0",
    "SI.hRoiManager.scanAngleShiftSlow": "0",
    "SI.hRoiManager.scanFramePeriod": "0.0332812",
    "SI.hRoiManager.scanFrameRate": "30.047",
    "SI.hRoiManager.scanRotation": "0",
    "SI.hRoiManager.scanType": "'frame'",
    "SI.hRoiManager.scanVolumeRate": "30.047",
    "SI.hRoiManager.scanZoomFactor": "2",
    "SI.hRoiManager.userInfo": "''",
    "SI.hRoiManager.warnMsg": "''",
    "SI.hScan2D.auxTriggersEnable": "true",
    "SI.hScan2D.beamClockDelay": "1.5e-06",
    "SI.hScan2D.beamClockExtend": "0",
    "SI.hScan2D.bidirectional": "true",
    "SI.hScan2D.channelOffsets": "[1 1]",
    "SI.hScan2D.channels": "{}",
    "SI.hScan2D.channelsAdcResolution": "14",
    "SI.hScan2D.channelsAutoReadOffsets": "true",
    "SI.hScan2D.channelsAvailable": "2",
    "SI.hScan2D.channelsDataType": "'int16'",
    "SI.hScan2D.channelsFilter": "'Bessel'",
    "SI.hScan2D.channelsInputRanges": "{[-1 1] [-1 1]}",
    "SI.hScan2D.channelsInvert": "[true true]",
    "SI.hScan2D.channelsSubtractOffsets": "[false false]",
    "SI.hScan2D.errorMsg": "''",
    "SI.hScan2D.externalSampleClock": "false",
    "SI.hScan2D.externalSampleClockRate": "8e+07",
    "SI.hScan2D.fillFractionSpatial": "0.9",
    "SI.hScan2D.fillFractionTemporal": "0.712867",
    "SI.hScan2D.flybackTimePerFrame": "0.001",
    "SI.hScan2D.flytoTimePerScanfield": "0.001",
    "SI.hScan2D.fovCornerPoints": "[-13 -5;13 -5;13 5;-13 5]",
    "SI.hScan2D.hasResonantMirror": "true",
    "SI.hScan2D.hasXGalvo": "false",
    "SI.hScan2D.keepResonantScannerOn": "true",
    "SI.hScan2D.laserTriggerDebounceTicks": "0",
    "SI.hScan2D.laserTriggerPort": "''",
    "SI.hScan2D.laserTriggerSampleMaskEnable": "false",
    "SI.hScan2D.laserTriggerSampleWindow": "[0 1]",
    "SI.hScan2D.linePhase": "-2.875e-07",
    "SI.hScan2D.linePhaseMode": "'Nearest Neighbor'",
    "SI.hScan2D.logAverageFactor": "1",
    "SI.hScan2D.logFramesPerFile": "4000",
    "SI.hScan2D.logFramesPerFileLock": "false",
    "SI.hScan2D.logOverwriteWarn": "false",
    "SI.hScan2D.mask": "[12;13;13;12;12;12;12;11;12;11;11;11;11;11;11;10;11;10;10;10;10;10;10;10;10;9;10;9;10;9;9;10;9;9;9;9;9;8;9;9;8;9;9;8;9;8;8;9;8;8;8;8;8;8;8;8;8;8;8;8;8;7;8;8;7;8;7;8;8;7;7;8;7;8;7;7;7;8;7;7;7;7;8;7;7;7;7;7;7;7;7;7;7;6;7;7;7;7;6;7;7;7;6;7;7;6;7;7;6;7;6;7;6;7;7;6;6;7;6;7;6;7;6;6;7;6;6;7;6;6;7;6;6;6;7;6;6;6;7;6;6;6;6;6;7;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;5;6;6;6;6;6;6;5;6;6;6;6;6;5;6;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;5;6;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;5;6;6;6;5;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;5;6;6;6;6;5;6;6;6;6;6;5;6;6;6;6;6;6;5;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;7;6;6;6;6;6;7;6;6;6;7;6;6;6;7;6;6;7;6;6;7;6;6;7;6;7;6;7;6;6;7;7;6;7;6;7;6;7;7;6;7;7;6;7;7;7;6;7;7;7;7;6;7;7;7;7;7;7;7;7;7;7;8;7;7;7;7;8;7;7;7;8;7;8;7;7;8;8;7;8;7;8;8;7;8;8;8;8;8;8;8;8;8;8;8;8;8;9;8;8;9;8;9;9;8;9;9;8;9;9;9;9;9;10;9;9;10;9;10;9;10;10;10;10;10;10;10;10;11;10;11;11;11;11;11;11;12;11;12;12;12;12;13;13;12]",
    "SI.hScan2D.maskDisableAveraging": "[false false]",
    "SI.hScan2D.maxSampleRate": "8e+07",
    "SI.hScan2D.name": "'ImagingScanner'",
    "SI.hScan2D.nominalFovCornerPoints": "[-13 -5;13 -5;13 5;-13 5]",
    "SI.hScan2D.parkSlmForAcquisition": "true",
    "SI.hScan2D.physicalChannelsAvailable": "2",
    "SI.hScan2D.pixelBinFactor": "1",
    "SI.hScan2D.reserverInfo": "''",
    "SI.hScan2D.sampleRate": "8e+07",
    "SI.hScan2D.scanMode": "'resonant'",
    "SI.hScan2D.scanPixelTimeMaxMinRatio": "2.6",
    "SI.hScan2D.scanPixelTimeMean": "8.77441e-08",
    "SI.hScan2D.scannerFrequency": "7932.41",
    "SI.hScan2D.scannerToRefTransform": "[1 0 0;0 1 0;0 0 1]",
    "SI.hScan2D.scannerType": "'RG'",
    "SI.hScan2D.settleTimeFraction": "0",
    "SI.hScan2D.simulated": "false",
    "SI.hScan2D.stripingEnable": "false",
    "SI.hScan2D.trigAcqEdge": "'rising'",
    "SI.hScan2D.trigAcqInTerm": "''",
    "SI.hScan2D.trigNextEdge": "'rising'",
    "SI.hScan2D.trigNextInTerm": "''",
    "SI.hScan2D.trigNextStopEnable": "true",
    "SI.hScan2D.trigStopEdge": "'rising'",
    "SI.hScan2D.trigStopInTerm": "''",
    "SI.hScan2D.uniformSampling": "false",
    "SI.hScan2D.userInfo": "''",
    "SI.hScan2D.warnMsg": "''",
    "SI.hShutters.errorMsg": "''",
    "SI.hShutters.name": "'SI Shutters'",
    "SI.hShutters.reserverInfo": "''",
    "SI.hShutters.userInfo": "''",
    "SI.hShutters.warnMsg": "''",
    "SI.hStackManager.actualNumSlices": "1",
    "SI.hStackManager.actualNumVolumes": "1",
    "SI.hStackManager.actualStackZStepSize": "[]",
    "SI.hStackManager.arbitraryZs": "[0;1]",
    "SI.hStackManager.boundedStackDefinition": "'numSlices'",
    "SI.hStackManager.centeredStack": "false",
    "SI.hStackManager.closeShutterBetweenSlices": "false",
    "SI.hStackManager.enable": "false",
    "SI.hStackManager.errorMsg": "''",
    "SI.hStackManager.framesPerSlice": "32000",
    "SI.hStackManager.name": "'SI StackManager'",
    "SI.hStackManager.numFastZActuators": "0",
    "SI.hStackManager.numFramesPerVolume": "1",
    "SI.hStackManager.numFramesPerVolumeWithFlyback": "1",
    "SI.hStackManager.numSlices": "1",
    "SI.hStackManager.numVolumes": "1",
    "SI.hStackManager.reserverInfo": "''",
    "SI.hStackManager.stackActuator": "'motor'",
    "SI.hStackManager.stackDefinition": "'uniform'",
    "SI.hStackManager.stackEndPowerFraction": "[]",
    "SI.hStackManager.stackFastWaveformType": "'sawtooth'",
    "SI.hStackManager.stackMode": "'slow'",
    "SI.hStackManager.stackReturnHome": "true",
    "SI.hStackManager.stackStartPowerFraction": "[]",
    "SI.hStackManager.stackZEndPos": "[]",
    "SI.hStackManager.stackZStartPos": "[]",
    "SI.hStackManager.stackZStepSize": "1",
    "SI.hStackManager.useStartEndPowers": "true",
    "SI.hStackManager.userInfo": "''",
    "SI.hStackManager.warnMsg": "''",
    "SI.hStackManager.zPowerReference": "0",
    "SI.hStackManager.zs": "0",
    "SI.hStackManager.zsAllActuators": "0",
    "SI.hStackManager.zsRelative": "zeros(1,0)",
    "SI.hTileManager.acqDoneFlag": "false",
    "SI.hTileManager.errorMsg": "''",
    "SI.hTileManager.isFastZ": "false",
    "SI.hTileManager.loopedAcquisition": "false",
    "SI.hTileManager.name": "'SI TileManager'",
    "SI.hTileManager.reserverInfo": "''",
    "SI.hTileManager.scanAbortFlag": "false",
    "SI.hTileManager.scanFramesPerTile": "1",
    "SI.hTileManager.scanStageSettleTime": "0.1",
    "SI.hTileManager.scanTileSortFcn": "'scanimage.components.tileTools.tileSortingFcns.naiveNearest'",
    "SI.hTileManager.tileScanIndices": "[]",
    "SI.hTileManager.tileScanningInProgress": "false",
    "SI.hTileManager.tilesDone": "[]",
    "SI.hTileManager.userInfo": "''",
    "SI.hTileManager.warnMsg": "''",
    "SI.hUserFunctions.errorMsg": "''",
    "SI.hUserFunctions.name": "'SI UserFunctions'",
    "SI.hUserFunctions.reserverInfo": "''",
    "SI.hUserFunctions.userFunctionsCfg": "[]",
    "SI.hUserFunctions.userFunctionsUsr": "[]",
    "SI.hUserFunctions.userInfo": "''",
    "SI.hUserFunctions.warnMsg": "''",
    "SI.hWSConnector.communicationTimeout": "5",
    "SI.hWSConnector.enable": "false",
    "SI.hWSConnector.errorMsg": "''",
    "SI.hWSConnector.name": "'SI WSConnector'",
    "SI.hWSConnector.reserverInfo": "''",
    "SI.hWSConnector.userInfo": "''",
    "SI.hWSConnector.warnMsg": "''",
    "SI.hWaveformManager.errorMsg": "''",
    "SI.hWaveformManager.name": "'SI WaveformManager'",
    "SI.hWaveformManager.optimizedScanners": "{}",
    "SI.hWaveformManager.reserverInfo": "''",
    "SI.hWaveformManager.userInfo": "''",
    "SI.hWaveformManager.warnMsg": "''",
    "SI.imagingSystem": "'ImagingScanner'",
    "SI.loopAcqInterval": "10",
    "SI.name": "'ScanImage'",
    "SI.objectiveResolution": "15",
    "SI.reserverInfo": "''",
    "SI.shutDownScript": "''",
    "SI.startUpScript": "''",
    "SI.userInfo": "''",
    "SI.warnMsg": "''",
    "RoiGroups": {
        "imagingRoiGroup": {
            "ver": 1,
            "classname": "scanimage.mroi.RoiGroup",
            "name": "Default Imaging ROI Group",
            "UserData": null,
            "roiUuid": "29A0EC35A7B480B7",
            "roiUuiduint64": 2.999657067e+18,
            "rois": {
                "ver": 1,
                "classname": "scanimage.mroi.Roi",
                "name": "Default Imaging Roi",
                "UserData": {
                    "imagingSystem": "ImagingScanner",
                    "fillFractionSpatial": 0.9,
                    "forceSquarePixelation": 1,
                    "forceSquarePixels": 0,
                    "scanZoomFactor": 2,
                    "scanAngleShiftFast": 0,
                    "scanAngleMultiplierSlow": 1,
                    "scanAngleShiftSlow": 0,
                    "scanRotation": 0,
                    "pixelsPerLine": 512,
                    "linesPerFrame": 512
                },
                "roiUuid": "414DE9DBC05309BA",
                "roiUuiduint64": 4.705674316e+18,
                "zs": 0,
                "scanfields": {
                    "ver": 1,
                    "classname": "scanimage.mroi.scanfield.fields.RotatedRectangle",
                    "name": "Default Imaging Scanfield",
                    "UserData": null,
                    "roiUuid": "F5B1C7B27F94C959",
                    "roiUuiduint64": 1.770415118e+19,
                    "centerXY": [
                        0,
                        0
                    ],
                    "sizeXY": [
                        5.175,
                        4.5
                    ],
                    "rotationDegrees": 0,
                    "enable": 1,
                    "pixelResolutionXY": [
                        512,
                        512
                    ],
                    "pixelToRefTransform": [
                        [
                            0.01010742188,
                            0,
                            -2.592553711
                        ],
                        [
                            0,
                            0.0087890625,
                            -2.254394531
                        ],
                        [
                            0,
                            0,
                            1
                        ]
                    ],
                    "affine": [
                        [
                            5.175,
                            0,
                            -2.5875
                        ],
                        [
                            0,
                            4.5,
                            -2.25
                        ],
                        [
                            0,
                            0,
                            1
                        ]
                    ]
                },
                "discretePlaneMode": 0,
                "powers": null,
                "pzAdjust": [],
                "Lzs": null,
                "interlaceDecimation": null,
                "interlaceOffset": null,
                "enable": 1
            }
        },
        "photostimRoiGroups": null,
        "integrationRoiGroup": {
            "ver": 1,
            "classname": "scanimage.mroi.RoiGroup",
            "name": "",
            "UserData": null,
            "roiUuid": "7211EFF07D61330F",
            "roiUuiduint64": 8.219614611e+18,
            "rois": {
                "_ArrayType_": "double",
                "_ArraySize_": [
                    1,
                    0
                ],
                "_ArrayData_": null
            }
        }
    }
}