<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="blue" vlink="purple">
<div class="Section1">
<p class="MsoNormal">I am developing a python script to visualise point data (unstructured grid) with a large number of scalar values for each point.<o:p></o:p></p>
<p class="MsoNormal">My problem is some of the scalar data is a bit noisy, i.e. a histogram of the values has a long tail at one or both ends, which effectively reduces the useful range of color in the visualisation. I would like to determine the 5 and 95 percentiles
 for each data array and use these as the range for the LUT. And I would like to do this from my python script. I can't figure out how to get at the underlying point data, as it would then be very easily to calculate a restricted range.<o:p></o:p></p>
<p class="MsoNormal">See my current script below.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Thanks in advance for any help, Dave<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">####################################################<o:p></o:p></p>
<p class="MsoNormal">from paraview.simple import *<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">sm = servermanager<o:p></o:p></p>
<p class="MsoNormal">sm.Connect()<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">INPUTFILES = (&quot;Esk all trees v2.txt_1.vtk&quot;, &quot;Esk all trees v2.txt_2.vtk&quot;, &quot;Esk all trees v2.txt_3.vtk&quot;)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"># create reader for legacy VTK files<o:p></o:p></p>
<p class="MsoNormal">reader = LegacyVTKReader(FileNames=INPUTFILES[2])<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">#create and configure view window<o:p></o:p></p>
<p class="MsoNormal">Show()<o:p></o:p></p>
<p class="MsoNormal">view = GetActiveView()<o:p></o:p></p>
<p class="MsoNormal">#set the background color<o:p></o:p></p>
<p class="MsoNormal">#view.Background = [1,1,1]&nbsp; #white<o:p></o:p></p>
<p class="MsoNormal">#set window size<o:p></o:p></p>
<p class="MsoNormal">view.ViewSize = [800, 600] <o:p></o:p></p>
<p class="MsoNormal">view.UseOffscreenRenderingForScreenshots = True<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"># set basic display properties<o:p></o:p></p>
<p class="MsoNormal">dp = GetDisplayProperties()<o:p></o:p></p>
<p class="MsoNormal">#set representation<o:p></o:p></p>
<p class="MsoNormal">dp.Representation = &quot;Points&quot;<o:p></o:p></p>
<p class="MsoNormal">#dp.Representation = &quot;Surface&quot;<o:p></o:p></p>
<p class="MsoNormal">#set point size<o:p></o:p></p>
<p class="MsoNormal">dp.PointSize = 2<o:p></o:p></p>
<p class="MsoNormal">dp.MapScalars = True<o:p></o:p></p>
<p class="MsoNormal">dp.InterpolateScalarsBeforeMapping = True<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"># create a legend<o:p></o:p></p>
<p class="MsoNormal">bar = servermanager.rendering.ScalarBarWidgetRepresentation(registrationGroup='scalar_bars', registrationName=&quot;ScalarBarWidgetRepresentation1&quot;)
<o:p></o:p></p>
<p class="MsoNormal">#bar.LabelColor = [1.0, 1.0, 1.0]<o:p></o:p></p>
<p class="MsoNormal">#bar.TitleColor = [1.0, 1.0, 1.0]<o:p></o:p></p>
<p class="MsoNormal">bar.TitleFontSize = 10<o:p></o:p></p>
<p class="MsoNormal">bar.LabelFontSize = 10<o:p></o:p></p>
<p class="MsoNormal">view.Representations.append(bar)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"># render and save image for each scalar array in the point data<o:p></o:p></p>
<p class="MsoNormal">for a in reader.PointData :<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print a.GetName()<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = a.GetRange()<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp.LookupTable = MakeBlueToRedLT(r[0], r[1])<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp.ColorAttributeType = 'POINT_DATA'<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp.ColorArrayName = a.GetName()<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar.Title = a.GetName()<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar.LookupTable = dp.LookupTable<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Render()<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #save screenshot<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteImage( &quot;v%s.jpg&quot; % (a.GetName()) )<o:p></o:p></p>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1">Disclaimer: This e-mail and any attachments may contain information which is confidential or subject to copyright. If you receive this e-mail in error, please delete it.<br>
Scion does not accept responsibility for anything in this e-mail which is not provided in the course of Scion&#8217;s usual business or for any computer virus, data corruption, interference or delay arising from this e-mail.<br>
</font>
</body>
</html>