.. meta:: :description: Code snippets pad ROI Numpy array How to pad a ROI ================ In this example, we copy a slice of a source ROI into different slices of a destination ROI, in order to pad a few slices at the lower Z and at the higher Z. The source ROI is named ``sourceROI``:: # Creating the destination ROI destinationROI = sourceROI.copy() # Adapting the shape of the destination ROI to contain the padding slices countPaddingSlicesOnEachSide = 10 originalZSize = sourceROI.getZSize() destinationROIZSize = originalZSize + 2*countPaddingSlicesOnEachSide destinationROI.setZSize(destinationROIZSize) destinationROIBox = destinationROI.getBox() destinationROIDirection2 = destinationROIBox.getDirection2() destinationROISpacingDirection2 = destinationROIBox.getDirection2Spacing() destinationROIOrigin = destinationROIBox.getOrigin() destinationROINewOrigin = destinationROIOrigin - countPaddingSlicesOnEachSide*destinationROISpacingDirection2*destinationROIDirection2 destinationROIBox.setOrigin(destinationROINewOrigin) destinationROI.setBox(destinationROIBox) destinationROI.clear() timeStep = 0 # Copying common region data # The method addROI uses a projection when the shape of the destination is not the same as the source destinationROI.addROI(sourceROI) # Padding at lower Z # Getting the source data tempROILowerZ = sourceROI.getSubset(0, 0, 0, timeStep, sourceROI.getXSize()-1, sourceROI.getYSize()-1, 0, timeStep, None, None) # Copying the source data in all the padding slices from ORSModel import Vector3 for zIndex in range(countPaddingSlicesOnEachSide): # Getting the coordinates of the origin to set in tempROILowerZ, to align tempROILowerZ with the padding slice to write originToSet = destinationROI.getVoxelToWorldCoordinates(Vector3(0, 0, zIndex)) tempROILowerZ.setOrigin(originToSet) destinationROI.addROI(tempROILowerZ) tempROILowerZ.deleteObject() # Padding at higher Z tempROIHigherZ = sourceROI.getSubset(0, 0, originalZSize-1, timeStep, sourceROI.getXSize()-1, sourceROI.getYSize()-1, originalZSize-1, timeStep, None, None) for zIndex in range(countPaddingSlicesOnEachSide): originToSet = destinationROI.getVoxelToWorldCoordinates(Vector3(0, 0, destinationROIZSize-1-zIndex)) tempROIHigherZ.setOrigin(originToSet) destinationROI.addROI(tempROIHigherZ) tempROIHigherZ.deleteObject() # Setting the properties of the new ROI destinationROI.setTitle(sourceROI.getTitle() + ' (Padded)') # Publishing the new object destinationROI.publish()