<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<protocol VERSION="4">
<blocks>
<block ID="456976239" blockType="plugins.adufour.blocks.tools.input.Sequence" className="plugins.adufour.blocks.tools.input.Sequence" collapsed="false" definedName="Sequence" height="61" keepsResults="true" width="161" xLocation="24" yLocation="46">
<variables>
<input>
<variable ID="input sequence" name="sequence" runtime="false" value="No Sequence" visible="false"/>
</input>
<output/>
</variables>
</block>
<block ID="1127737749" blockType="plugins.tprovoost.sequenceblocks.extract.ExtractChannel" className="plugins.tprovoost.sequenceblocks.SequenceBlocks" collapsed="false" definedName="Extract channel" height="108" keepsResults="true" width="225" xLocation="24" yLocation="444">
<variables>
<input>
<variable ID="sequence" name="Sequence" runtime="false" visible="false"/>
<variable ID="channel" name="Channel" runtime="false" value="1" visible="false"/>
</input>
<output>
<variable ID="extracted" name="Extracted" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1373328057" blockType="plugins.adufour.thresholder.Thresholder" className="plugins.adufour.thresholder.Thresholder" collapsed="false" definedName="Thresholder" height="180" keepsResults="true" width="289" xLocation="321" yLocation="390">
<variables>
<input>
<variable ID="Input" name="Input" runtime="false" visible="false"/>
<variable ID="channel" name="channel" runtime="false" value="0" visible="true"/>
<variable ID="Manual thresholds" name="Manual thresholds" runtime="false" value="1000.0" visible="false"/>
<variable ID="Treat as percentiles" name="Treat as percentiles" runtime="false" value="false" visible="false"/>
</input>
<output>
<variable ID="output" name="Binary output" runtime="false" visible="false"/>
<variable ID="ROI" name="ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="669910261" blockType="plugins.tprovoost.sequenceblocks.extract.ExtractChannel" className="plugins.tprovoost.sequenceblocks.SequenceBlocks" collapsed="false" definedName="Extract channel" height="108" keepsResults="true" width="225" xLocation="24" yLocation="143">
<variables>
<input>
<variable ID="sequence" name="Sequence" runtime="false" visible="false"/>
<variable ID="channel" name="Channel" runtime="false" value="0" visible="false"/>
</input>
<output>
<variable ID="extracted" name="Extracted" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="745953412" blockType="plugins.adufour.hierarchicalkmeans.HierarchicalKMeans" className="plugins.adufour.hierarchicalkmeans.HierarchicalKMeans" collapsed="false" definedName="HK-Means" height="255" keepsResults="true" width="292" xLocation="321" yLocation="121">
<variables>
<input>
<variable ID="Input" name="Input" runtime="false" visible="false"/>
<variable ID="Gaussian pre-filter" name="Gaussian pre-filter" runtime="false" value="10.0" visible="false"/>
<variable ID="Frame" name="Frame" runtime="false" value="-1" visible="true"/>
<variable ID="Number of classes" name="Intensity classes" runtime="false" value="10" visible="false"/>
<variable ID="Min size (px)" name="Min object size (px)" runtime="false" value="2000" visible="false"/>
<variable ID="Max size (px)" name="Max object size (px)" runtime="false" value="15000" visible="false"/>
<variable ID="Final threshold" name="Min object intensity" runtime="false" value="0.0" visible="true"/>
</input>
<output>
<variable ID="binary sequence" name="binary sequence" runtime="false" visible="false"/>
<variable ID="output regions" name="list of ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="46680641" blockType="plugins.adufour.blocks.tools.Accumulator" className="plugins.adufour.blocks.tools.Accumulator" collapsed="false" definedName="Accumulator" height="125" keepsResults="true" width="181" xLocation="662" yLocation="290">
<variables>
<input>
<variable ID="Add variable" name="Add variable" runtime="false" value="2" visible="false"/>
<variable ID="1268599438" name="input" runtime="true" type="[Licy.roi.ROI;" visible="false"/>
<variable ID="314374993" name="input" runtime="true" type="[Licy.roi.ROI;" visible="false"/>
</input>
<output>
<variable ID="output" name="output" runtime="false" type="[Licy.roi.ROI;" visible="false"/>
</output>
</variables>
</block>
<block ID="2104436615" blockType="plugins.adufour.blocks.tools.roi.MergeROI" className="plugins.adufour.blocks.tools.roi.MergeROI" collapsed="false" definedName="Merge ROI" height="105" keepsResults="true" width="210" xLocation="898" yLocation="372">
<variables>
<input>
<variable ID="List of ROI" name="List of ROI" runtime="false" visible="false"/>
<variable ID="Merge operation" name="Merge operation" runtime="false" value="OR" visible="false"/>
</input>
<output>
<variable ID="Merged ROI" name="Merged ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1176751496" blockType="plugins.adufour.blocks.tools.roi.AddROIToSequence" className="plugins.adufour.blocks.tools.roi.AddROIToSequence" collapsed="false" definedName="Add ROI to sequence" height="108" keepsResults="true" width="233" xLocation="722" yLocation="487">
<variables>
<input>
<variable ID="target sequence" name="Source" runtime="false" visible="false"/>
<variable ID="input rois" name="ROI to add" runtime="false" visible="false"/>
<variable ID="replace existing" name="Overwrite" runtime="false" value="true" visible="false"/>
</input>
<output/>
</variables>
</block>
<block ID="854829039" blockType="plugins.adufour.morphology.FillHolesInROI" className="plugins.adufour.morphology.FillHolesInROI" collapsed="false" definedName="Fill holes in ROI" height="83" keepsResults="true" width="239" xLocation="896" yLocation="291">
<variables>
<input>
<variable ID="List of ROI" name="List of ROI" runtime="false" visible="false"/>
</input>
<output>
<variable ID="List of hole-filled ROI" name="List of hole-filled ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="2144372404" blockType="plugins.adufour.activecontours.ActiveContours" className="plugins.adufour.activecontours.ActiveContours" collapsed="false" definedName="Active Contours" height="568" keepsResults="true" width="314" xLocation="1178" yLocation="243">
<variables>
<input>
<variable ID="input sequence" name="Input" runtime="false" visible="false"/>
<variable ID="Input ROI" name="input ROI" runtime="false" visible="false"/>
<variable ID="regularization: weight" name="Contour smoothness" runtime="false" value="0.02" visible="false"/>
<variable ID="edge: weight" name="Edge weight" runtime="false" value="0.5" visible="false"/>
<variable ID="edge: channel" name="Find edges in channel" runtime="false" value="3" visible="false"/>
<variable ID="region: weight" name="Region weight" runtime="false" value="1.3877787807814457E-16" visible="false"/>
<variable ID="region: sensitivity" name="Region sensitivity" runtime="false" value="1.0" visible="false"/>
<variable ID="region: channel" name="Find regions in channel" runtime="false" value="3" visible="false"/>
<variable ID="balloon: weight" name="Contour inflation" runtime="false" value="0.01" visible="false"/>
<variable ID="contour resolution" name="Contour sampling" runtime="false" value="2.0" visible="false"/>
<variable ID="region bounds" name="Bound field to ROI of" runtime="false" visible="false"/>
<variable ID="time step" name="Evolution time step" runtime="false" value="2.0" visible="false"/>
<variable ID="convergence value" name="Convergence criterion" runtime="false" value="0.0010" visible="false"/>
<variable ID="max. iterations" name="Max. iterations" runtime="false" value="100000" visible="true"/>
<variable ID="type of ROI output" name="Type of ROI" runtime="false" value="AREA" visible="true"/>
<variable ID="tracking" name="Track objects over time" runtime="false" value="false" visible="false"/>
<variable ID="division sensitivity" name="Division sensitivity" runtime="false" value="0.0" visible="true"/>
<variable ID="volume constraint" name="Volume constraint" runtime="false" value="false" visible="true"/>
<variable ID="watch entering objects" name="Watch entering objects" runtime="false" value="false" visible="true"/>
</input>
<output>
<variable ID="Regions of interest" name="Regions of interest" runtime="false" visible="false"/>
<variable ID="Tracks" name="Tracks" runtime="false" visible="true"/>
<variable ID="Labels" name="Labels" runtime="false" visible="true"/>
</output>
</variables>
</block>
<block ID="336238915" blockType="plugins.tprovoost.sequenceblocks.extract.ExtractChannel" className="plugins.tprovoost.sequenceblocks.SequenceBlocks" collapsed="false" definedName="Extract channel" height="108" keepsResults="true" width="225" xLocation="24" yLocation="643">
<variables>
<input>
<variable ID="sequence" name="Sequence" runtime="false" visible="false"/>
<variable ID="channel" name="Channel" runtime="false" value="2" visible="false"/>
</input>
<output>
<variable ID="extracted" name="Extracted" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1712035973" blockType="plugins.fab.waveletspotdetectorblock.WaveletSpotDetectorBlock" className="plugins.fab.waveletspotdetectorblock.WaveletSpotDetectorBlock" collapsed="false" definedName="Wavelet Spot Detector Block" height="427" keepsResults="true" width="363" xLocation="318" yLocation="591">
<variables>
<input>
<variable ID="input Sequence" name="input Sequence" runtime="false" visible="false"/>
<variable ID="Spot to detect" name="Spot to detect" runtime="false" value="BRIGHT_SPOT" visible="false"/>
<variable ID="input Sequence ROIs" name="input Sequence ROIs" runtime="false" value="No Sequence" visible="false"/>
<variable ID="Compute WAT considering ROI" name="Compute WAT considering ROI" runtime="false" value="false" visible="false"/>
<variable ID="Scale 1" name="Scale 1" runtime="false" value="false" visible="false"/>
<variable ID="Scale 2" name="Scale 2" runtime="false" value="false" visible="false"/>
<variable ID="Scale 3" name="Scale 3" runtime="false" value="true" visible="false"/>
<variable ID="Scale 4" name="Scale 4" runtime="false" value="false" visible="false"/>
<variable ID="Scale 5" name="Scale 5" runtime="false" value="false" visible="false"/>
<variable ID="Th. scale 1:" name="Th. scale 1:" runtime="false" value="100" visible="false"/>
<variable ID="Th. scale 2:" name="Th. scale 2:" runtime="false" value="100" visible="false"/>
<variable ID="Th. scale 3:" name="Th. scale 3:" runtime="false" value="20" visible="false"/>
<variable ID="Th. scale 4:" name="Th. scale 4:" runtime="false" value="100" visible="false"/>
<variable ID="Th. scale 5:" name="Th. scale 5:" runtime="false" value="100" visible="false"/>
<variable ID="Force 2D Wavelets" name="Force 2D Wavelets" runtime="false" value="false" visible="true"/>
</input>
<output>
<variable ID="binary Spot Sequence" name="binary Spot Sequence" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1621764312" blockType="plugins.adufour.connectedcomponents.ConnectedComponents" className="plugins.adufour.connectedcomponents.ConnectedComponents" collapsed="false" definedName="Connected Components" height="371" keepsResults="true" width="378" xLocation="719" yLocation="612">
<variables>
<input>
<variable ID="input" name="Input" runtime="false" visible="false"/>
<variable ID="method" name="Extraction mode" runtime="false" value="BACKGROUND" visible="false"/>
<variable ID="value" name="Value" runtime="false" value="0" visible="false"/>
<variable ID="no edge (X)" name="Remove border objects (X)" runtime="false" value="true" visible="false"/>
<variable ID="no edge (Y)" name="Remove border objects (Y)" runtime="false" value="true" visible="false"/>
<variable ID="no edge (Z)" name="Remove border objects (Z)" runtime="false" value="false" visible="false"/>
<variable ID="size filter" name="Filter objects by size" runtime="false" value="false" visible="false"/>
<variable ID="min. size" name="Min. size" runtime="false" value="1" visible="false"/>
<variable ID="max. size" name="Max. size" runtime="false" value="10000" visible="false"/>
<variable ID="Export to Excel" name="Export to Excel" runtime="false" value="false" visible="false"/>
<variable ID="Excel file" name="Excel file" runtime="false" visible="false"/>
</input>
<output>
<variable ID="labeled sequence" name="output" runtime="false" visible="false"/>
<variable ID="objects" name="components" runtime="false" visible="false"/>
<variable ID="list of extracted ROI" name="list of ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1878167008" blockType="plugins.adufour.thresholder.KMeansThresholdBlock" className="plugins.adufour.thresholder.Thresholder" collapsed="false" definedName="K means threshold" height="133" keepsResults="true" width="221" xLocation="293" yLocation="1031">
<variables>
<input>
<variable ID="Input" name="Input" runtime="false" visible="false"/>
<variable ID="Channel" name="Channel" runtime="false" value="0" visible="false"/>
<variable ID="Classes" name="Classes" runtime="false" value="3" visible="false"/>
</input>
<output>
<variable ID="thresholds" name="thresholds" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="1908716521" blockType="plugins.adufour.thresholder.Thresholder" className="plugins.adufour.thresholder.Thresholder" collapsed="false" definedName="Thresholder" height="180" keepsResults="true" width="289" xLocation="672" yLocation="1031">
<variables>
<input>
<variable ID="Input" name="Input" runtime="false" visible="false"/>
<variable ID="channel" name="channel" runtime="false" value="0" visible="true"/>
<variable ID="Manual thresholds" name="Manual thresholds" runtime="false" visible="false"/>
<variable ID="Treat as percentiles" name="Treat as percentiles" runtime="false" value="false" visible="false"/>
</input>
<output>
<variable ID="output" name="Binary output" runtime="false" visible="false"/>
<variable ID="ROI" name="ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="2063846702" blockType="plugins.adufour.connectedcomponents.ConnectedComponents" className="plugins.adufour.connectedcomponents.ConnectedComponents" collapsed="false" definedName="Connected Components" height="371" keepsResults="true" width="378" xLocation="1151" yLocation="975">
<variables>
<input>
<variable ID="input" name="Input" runtime="false" visible="false"/>
<variable ID="method" name="Extraction mode" runtime="false" value="BACKGROUND" visible="false"/>
<variable ID="value" name="Value" runtime="false" value="0" visible="false"/>
<variable ID="no edge (X)" name="Remove border objects (X)" runtime="false" value="false" visible="false"/>
<variable ID="no edge (Y)" name="Remove border objects (Y)" runtime="false" value="false" visible="false"/>
<variable ID="no edge (Z)" name="Remove border objects (Z)" runtime="false" value="false" visible="false"/>
<variable ID="size filter" name="Filter objects by size" runtime="false" value="true" visible="false"/>
<variable ID="min. size" name="Min. size" runtime="false" value="10" visible="false"/>
<variable ID="max. size" name="Max. size" runtime="false" value="100" visible="false"/>
<variable ID="Export to Excel" name="Export to Excel" runtime="false" value="false" visible="false"/>
<variable ID="Excel file" name="Excel file" runtime="false" visible="false"/>
</input>
<output>
<variable ID="labeled sequence" name="output" runtime="false" visible="false"/>
<variable ID="objects" name="components" runtime="false" visible="false"/>
<variable ID="list of extracted ROI" name="list of ROI" runtime="false" visible="false"/>
</output>
</variables>
</block>
<block ID="173839153" blockType="plugins.adufour.blocks.tools.roi.AddROIToSequence" className="plugins.adufour.blocks.tools.roi.AddROIToSequence" collapsed="false" definedName="Add ROI to sequence" height="102" keepsResults="true" width="233" xLocation="1516" yLocation="353">
<variables>
<input>
<variable ID="target sequence" name="Source" runtime="false" visible="false"/>
<variable ID="input rois" name="ROI to add" runtime="false" visible="false"/>
<variable ID="replace existing" name="Overwrite" runtime="false" value="true" visible="false"/>
</input>
<output/>
</variables>
</block>
<block ID="1431740198" blockType="plugins.tprovoost.scripteditor.scriptblock.Javascript" className="plugins.tprovoost.scripteditor.scriptblock.Javascript" collapsed="false" definedName="Javascript" height="445" keepsResults="true" width="593" xLocation="1806" yLocation="76">
<variables>
<input>
<variable ID="Script" name="Script" runtime="false" value="importClass(Packages.icy.image.IntensityInfo)&#10;importClass(Packages.icy.roi.ROIUtil)&#10;importClass(Packages.java.io.FileOutputStream)&#10;importClass(Packages.org.apache.poi.hssf.usermodel.HSSFWorkbook)&#10;importClass(Packages.org.apache.poi.ss.usermodel.Row)&#10;importClass(Packages.org.apache.poi.ss.usermodel.Sheet)&#10;importClass(Packages.java.io.File)&#10;importClass(Packages.icy.file.FileUtil)&#10;importClass(Packages.icy.sequence.Sequence)&#10;importClass(Packages.icy.roi.BooleanMask2D)&#10;importClass(Packages.icy.roi.ROI)&#10;importClass(Packages.icy.roi.ROI2D)&#10;&#10;nCells = input0.length&#10;nGranules = input1.length&#10;nBacteria = input2.length&#10;&#10;out = new File(input3.getFilename() + &quot;_result.xls&quot;)&#10;&#10;println(&quot;Saving results to &quot; + out.getPath() + &quot;...&quot;)&#10;book = new HSSFWorkbook()&#10;book.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK)&#10;&#10;sizeSheet = book.createSheet(&quot;Size&quot;)&#10;header = sizeSheet.createRow(0)&#10;header.getCell(0).setCellValue(&quot;Cell ID&quot;)&#10;header.getCell(1).setCellValue(&quot;bacteria&quot;)&#10;header.getCell(2).setCellValue(&quot;granules&quot;)&#10;header.getCell(3).setCellValue(&quot;granule sizes...&quot;)&#10;&#10;meanFluoSheet = book.createSheet(&quot;Mean intensity&quot;)&#10;header = meanFluoSheet.createRow(0)&#10;header.getCell(0).setCellValue(&quot;Cell ID&quot;)&#10;header.getCell(1).setCellValue(&quot;bacteria&quot;)&#10;header.getCell(2).setCellValue(&quot;granules&quot;)&#10;header.getCell(3).setCellValue(&quot;granule mean intensities...&quot;)&#10;&#10;maxFluoSheet = book.createSheet(&quot;Max intensity&quot;)&#10;header = maxFluoSheet.createRow(0)&#10;header.getCell(0).setCellValue(&quot;Cell ID&quot;)&#10;header.getCell(1).setCellValue(&quot;bacteria&quot;)&#10;header.getCell(2).setCellValue(&quot;granules&quot;)&#10;header.getCell(3).setCellValue(&quot;granule max intensities...&quot;)&#10;&#10;for(i=0; i&lt;nCells; i++)&#10;{&#10;&#9;sizeRow = sizeSheet.createRow(i+1)&#10;&#9;meanRow = meanFluoSheet.createRow(i+1)&#10;&#9;maxRow = maxFluoSheet.createRow(i+1)&#10;&#9;&#10;&#9;cell = input0[i].getBooleanMask(true)&#10;&#10;&#9;granulesInCell = []&#10;&#9;&#10;&#9;for(j=0; j&lt;nGranules; j++)&#10;&#9;{&#10;&#9;&#9;granule = input1[j]&#10;&#9;&#9;intersection = BooleanMask2D.getIntersectBooleanMask(cell, granule.getBooleanMask(true))&#10;&#9;&#9;&#10;&#9;&#9;if (!intersection.isEmpty())&#10;&#9;&#9;{&#10;&#9;&#9;&#9;granulesInCell.push(granule);&#10;&#9;&#9;}&#10;&#9;}&#10;&#10;&#9;nbBacteriaInCell = 0&#10;&#9;&#10;&#9;for(j=0; j&lt;nBacteria; j++)&#10;&#9;{&#10;&#9;&#9;bacterium = input2[j].getBooleanMask(true)&#10;&#9;&#9;intersection = BooleanMask2D.getIntersectBooleanMask(cell, bacterium)&#10;&#9;&#9;&#10;&#9;&#9;if (!intersection.isEmpty()) nbBacteriaInCell++&#10;&#9;}&#10;&#10;&#9;sizeRow.getCell(0).setCellValue(i+1);&#10;&#9;meanRow.getCell(0).setCellValue(i+1);&#10;&#9;maxRow.getCell(0).setCellValue(i+1);&#10;&#10;&#9;sizeRow.getCell(1).setCellValue(nbBacteriaInCell);&#10;&#9;meanRow.getCell(1).setCellValue(nbBacteriaInCell);&#10;&#9;maxRow.getCell(1).setCellValue(nbBacteriaInCell);&#10;&#10;&#9;sizeRow.getCell(2).setCellValue(granulesInCell.length);&#10;&#9;meanRow.getCell(2).setCellValue(granulesInCell.length);&#10;&#9;maxRow.getCell(2).setCellValue(granulesInCell.length);&#10;&#10;&#9;maxGranules = granulesInCell.length&#10;&#10;&#9;if (granulesInCell.length &gt; 0)&#10;&#9;{&#10;&#9;&#9;if (maxGranules &gt; 250)&#10;&#9;&#9;{&#10;&#9;&#9;&#9;maxGranules = 250&#10;&#9;&#9;}&#10;&#9;&#9;&#10;&#9;&#9;for(j=0; j&lt;granulesInCell.length; j++)&#10;&#9;&#9;{&#10;&#9;&#9;&#9;sizeRow.getCell(3+j).setCellValue(granulesInCell[j].getBooleanMask(true).getPoints().length)&#10;&#9;&#9;&#9;info = ROIUtil.getIntensityInfo(input3, granulesInCell[j])&#10;&#9;&#9;&#9;mean = info.meanIntensity&#10;&#9;&#9;&#9;meanRow.getCell(3+j).setCellValue(mean)&#10;&#9;&#9;&#9;max = info.maxIntensity&#10;&#9;&#9;&#9;maxRow.getCell(3+j).setCellValue(max)&#10;&#9;&#9;}&#10;&#9;}&#10;}&#10;&#10;book.write(new FileOutputStream(out))&#10;println(&quot;... saved&quot;)" visible="false"/>
<variable ID="Add Input" name="Add Input" runtime="false" value="3" visible="false"/>
<variable ID="Add output" name="Add output" runtime="false" value="0" visible="false"/>
<variable ID="input0" name="input0" runtime="false" type="[Licy.roi.ROI;" visible="false"/>
<variable ID="969692826" name="input1" runtime="true" type="[Licy.roi.ROI;" visible="false"/>
<variable ID="1412605140" name="input2" runtime="true" type="[Licy.roi.ROI;" visible="false"/>
<variable ID="973761977" name="input3" runtime="true" type="icy.sequence.Sequence" visible="false"/>
</input>
<output>
<variable ID="output0" name="output0" runtime="false" type="java.lang.Object" visible="false"/>
</output>
</variables>
</block>
</blocks>
<links>
<link dstBlockID="2144372404" dstVarID="input sequence" srcBlockID="456976239" srcVarID="input sequence"/>
<link dstBlockID="669910261" dstVarID="sequence" srcBlockID="456976239" srcVarID="input sequence"/>
<link dstBlockID="1127737749" dstVarID="sequence" srcBlockID="456976239" srcVarID="input sequence"/>
<link dstBlockID="336238915" dstVarID="sequence" srcBlockID="456976239" srcVarID="input sequence"/>
<link dstBlockID="1373328057" dstVarID="Input" srcBlockID="1127737749" srcVarID="extracted"/>
<link dstBlockID="1176751496" dstVarID="target sequence" srcBlockID="1373328057" srcVarID="output"/>
<link dstBlockID="46680641" dstVarID="314374993" srcBlockID="1373328057" srcVarID="ROI"/>
<link dstBlockID="745953412" dstVarID="Input" srcBlockID="669910261" srcVarID="extracted"/>
<link dstBlockID="1878167008" dstVarID="Input" srcBlockID="669910261" srcVarID="extracted"/>
<link dstBlockID="46680641" dstVarID="1268599438" srcBlockID="745953412" srcVarID="output regions"/>
<link dstBlockID="2104436615" dstVarID="List of ROI" srcBlockID="46680641" srcVarID="output" srcVarType="[Licy.roi.ROI;"/>
<link dstBlockID="854829039" dstVarID="List of ROI" srcBlockID="46680641" srcVarID="1268599438" srcVarType="[Licy.roi.ROI;"/>
<link dstBlockID="1176751496" dstVarID="input rois" srcBlockID="2104436615" srcVarID="Merged ROI"/>
<link dstBlockID="2144372404" dstVarID="region bounds" srcBlockID="1176751496" srcVarID="target sequence"/>
<link dstBlockID="2144372404" dstVarID="Input ROI" srcBlockID="854829039" srcVarID="List of hole-filled ROI"/>
<link dstBlockID="173839153" dstVarID="input rois" srcBlockID="2144372404" srcVarID="Regions of interest"/>
<link dstBlockID="173839153" dstVarID="target sequence" srcBlockID="2144372404" srcVarID="input sequence"/>
<link dstBlockID="1712035973" dstVarID="input Sequence" srcBlockID="336238915" srcVarID="extracted"/>
<link dstBlockID="1621764312" dstVarID="input" srcBlockID="1712035973" srcVarID="binary Spot Sequence"/>
<link dstBlockID="1431740198" dstVarID="969692826" srcBlockID="1621764312" srcVarID="list of extracted ROI"/>
<link dstBlockID="1908716521" dstVarID="Input" srcBlockID="1878167008" srcVarID="Input"/>
<link dstBlockID="1908716521" dstVarID="Manual thresholds" srcBlockID="1878167008" srcVarID="thresholds"/>
<link dstBlockID="2063846702" dstVarID="input" srcBlockID="1908716521" srcVarID="output"/>
<link dstBlockID="1431740198" dstVarID="1412605140" srcBlockID="2063846702" srcVarID="list of extracted ROI"/>
<link dstBlockID="1431740198" dstVarID="973761977" srcBlockID="173839153" srcVarID="target sequence"/>
<link dstBlockID="1431740198" dstVarID="input0" srcBlockID="173839153" srcVarID="input rois"/>
</links>
</protocol>
