[Paraview] Python Script: "Rescale to Data Range"

Andy Bauer andy.bauer at kitware.com
Fri Feb 8 09:56:48 EST 2013


If you have the source code, you can look at the <pv
source>/Plugins/CoProcessingScriptGenerator/cp_export.py. It might be a bit
confusing but the section you'll want to look at is below. I think you're
problem is that you don't have any slice object to get the data information
from.

Andy

=========
    if %s : # rescale data range
        import math
        for view in cp_views:
            if timestep %% view.cpFrequency == 0 or
datadescription.GetForceOutput() == True:
                reps = view.Representations
                for rep in reps:
                    if hasattr(rep, 'Visibility') and rep.Visibility == 1
and hasattr(rep, 'MapScalars') and rep.MapScalars != '':
                        input = rep.Input
                        input.UpdatePipeline() #make sure range is
up-to-date
                        lut = rep.LookupTable
                        if lut == None:
                            continue
                        if rep.ColorAttributeType == 'POINT_DATA':
                            datainformation =
input.GetPointDataInformation()
                        elif rep.ColorAttributeType == 'CELL_DATA':
                            datainformation = input.GetCellDataInformation()
                        else:
                            print 'something strange with color attribute
type', rep.ColorAttributeType

                        if lut.VectorMode != 'Magnitude' or \

datainformation.GetArray(rep.ColorArrayName).GetNumberOfComponents() == 1:
                            datarange =
datainformation.GetArray(rep.ColorArrayName).GetRange(lut.VectorComponent)
                        else:
                            datarange = [0,0]
                            for i in
range(datainformation.GetArray(rep.ColorArrayName).GetNumberOfComponents()):
                                for j in range(2):
                                    datarange[j] +=
datainformation.GetArray(rep.ColorArrayName).GetRange(i)[j]*datainformation.GetArray(rep.ColorArrayName).GetRange(i)[j]
                            datarange[0] = math.sqrt(datarange[0])
                            datarange[1] = math.sqrt(datarange[1])

                        rgbpoints = lut.RGBPoints.GetData()
                        numpts = len(rgbpoints)/4
                        minvalue = min(datarange[0], rgbpoints[0])
                        maxvalue = max(datarange[1],
rgbpoints[(numpts-1)*4])
                        if minvalue != rgbpoints[0] or maxvalue !=
rgbpoints[(numpts-1)*4]:
                            # rescale all of the points
                            oldrange = rgbpoints[(numpts-1)*4] -
rgbpoints[0]
                            newrange = maxvalue - minvalue
                            newrgbpoints = list(rgbpoints)
                            for v in range(numpts):
                                newrgbpoints[v*4] =
minvalue+(rgbpoints[v*4] - rgbpoints[0])*newrange/oldrange

                            lut.RGBPoints.SetData(newrgbpoints)


On Fri, Feb 8, 2013 at 6:35 AM, Kisler <Roman.Kisler at tnt.tu-berlin.de>wrote:

> Hi everyone,
>
> I write a python script (Paraview 3.14.1 64-bit) in which a loop loads
> files,
> makes slices etc., prints an image and deletes all variables within each
> iteration step. Therefore I need a python code which rescales the colorbar
> in
> each step.
>
> So far I found this code in another mailing conversation (see
>
> http://www.paraview.org/pipermail/paraview/2009-January/010809.html).Unfortunately
> the command
>
>
> range=slice.GetDataInformation().GetPointDataInformation().GetArrayInformation(0).GetComponentRange(0)
>
> doesn't work in my script and delivers the following error message:
>
> " AttributeError: 'NoneType' object has no attribute 'GetDataInformation' "
>
> and refers to the line written above (range=...).
>
> I would appreciate any help, be it a more detailed explanation of the
> script
> which can be found in the link posted above or another possibility of
> implementing it.
>
> Kindest regards,
> Roman
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20130208/aae2fee7/attachment.htm>


More information about the ParaView mailing list