class PVGeoSplitTableOnArray(SplitTableOnArray): def __init__(self): SplitTableOnArray.__init__(self) @smproperty.xml(_helpers.getInputArrayXml(nInputPorts=1, numArrays=1)) def SetInputArrayToProcess(self, idx, port, connection, field, name): return SplitTableOnArray.SetInputArrayToProcess( self, idx, port, connection, field, name)
class PVGeoVoxelizePointsFromArrays(VoxelizePoints): def __init__(self): VoxelizePoints.__init__(self) self.__dx_id = [None, None] self.__dy_id = [None, None] self.__dz_id = [None, None] self.SetEstimateGrid(False) # CRUCIAL def _CopyArrays(self, pdi, pdo): """Override to not pass spacing arrays to output""" exclude = [self.__dx_id[1], self.__dy_id[1], self.__dz_id[1]] for i in range(pdi.GetPointData().GetNumberOfArrays()): arr = pdi.GetPointData().GetArray(i) if arr.GetName() not in exclude: _helpers.addArray(pdo, 1, arr) # adds to CELL data return pdo def RequestData(self, request, inInfoVec, outInfoVec): # Handle input arrays pdi = self.GetInputData(inInfoVec, 0, 0) wpdi = dsa.WrapDataObject(pdi) dx = _helpers.getNumPyArray(wpdi, self.__dx_id[0], self.__dx_id[1]) dy = _helpers.getNumPyArray(wpdi, self.__dy_id[0], self.__dy_id[1]) dz = _helpers.getNumPyArray(wpdi, self.__dz_id[0], self.__dz_id[1]) VoxelizePoints.SetDeltas(self, dx, dy, dz) # call parent and make sure EstimateGrid is set to False return VoxelizePoints.RequestData(self, request, inInfoVec, outInfoVec) #### Seters and Geters #### #(int idx, int port, int connection, int fieldAssociation, const char *name) @smproperty.xml( _helpers.getInputArrayXml(labels=['dx', 'dy', 'dz'], nInputPorts=1, numArrays=3)) def SetInputArrayToProcess(self, idx, port, connection, field, name): if idx == 0: self.__dx_id = [field, name] elif idx == 1: self.__dy_id = [field, name] elif idx == 2: self.__dz_id = [field, name] else: raise RuntimeError('Bad input array index.') return 1
class PVGeoNormalizeArray(NormalizeArray): def __init__(self): NormalizeArray.__init__(self) #### SETTERS AND GETTERS #### @smproperty.xml(_helpers.getInputArrayXml(nInputPorts=1, numArrays=1)) def SetInputArrayToProcess(self, idx, port, connection, field, name): return NormalizeArray.SetInputArrayToProcess(self, idx, port, connection, field, name) @smproperty.doublevector(name="Multiplier", default_values=1.0) def SetMultiplier(self, val): NormalizeArray.SetMultiplier(self, val) @smproperty.stringvector(name="New Array Name", default_values="Normalized") def SetNewArrayName(self, name): NormalizeArray.SetNewArrayName(self, name) @smproperty.xml( _helpers.getDropDownXml( name='Normalization', command='SetNormalization', labels=NormalizeArray.GetNormalizationNames(), help= 'This is the type of normalization to apply to the input array.')) def SetNormalization(self, norm): NormalizeArray.SetNormalization(self, norm) @smproperty.xml( _helpers.getPropertyXml( name='Absolute Value', command='SetTakeAbsoluteValue', default_values=False, help= 'This will take the absolute value of the array before normalization.' )) def SetTakeAbsoluteValue(self, flag): NormalizeArray.SetTakeAbsoluteValue(self, flag) @smproperty.doublevector(name="Shifter", default_values=0.0) def SetShift(self, sft): NormalizeArray.SetShift(self, sft)
class PVGeoWriteImageDataToSurfer(WriteImageDataToSurfer): def __init__(self): WriteImageDataToSurfer.__init__(self) @smproperty.stringvector(name="FileName", panel_visibility="never") @smdomain.filelist() def SetFileName(self, fname): """Specify filename for the file to write.""" WriteImageDataToSurfer.SetFileName(self, fname) @smproperty.xml(_helpers.getInputArrayXml(nInputPorts=1, numArrays=1)) def SetInputArrayToProcess(self, idx, port, connection, field, name): return WriteImageDataToSurfer.SetInputArrayToProcess( self, idx, port, connection, field, name) @smproperty.stringvector(name="Format", default_values='%.9e') def SetFormat(self, fmt): """Use to set the ASCII format for the writer default is ``'%.9e'``""" WriteImageDataToSurfer.SetFormat(self, fmt)