Files
ThirdParty-6/ParaView-5.0.1/Applications/ParaView/Testing/Python/CinemaTest.py

144 lines
5.8 KiB
Python

import os, json
from paraview import simple
from paraview import smtesting
from paraview import data_exploration as cinema
smtesting.ProcessCommandLineArguments()
work_directory = os.path.join(smtesting.TempDir, 'cinema')
has_rgbz_view = True
try:
simple.LoadDistributedPlugin('RGBZView', ns=globals())
except:
has_rgbz_view = False
# === Data to explore and configuration =======================================
data_to_explore = simple.Wavelet()
min = 63.96153259277344
max = 250.22056579589844
center_of_rotation = [0.0, 0.0, 0.0]
rotation_axis = [0.0, 0.0, 1.0]
angle_steps = (72, 60)
distance = 60
lut = simple.GetLookupTableForArray(
"RTData", 1,
RGBPoints=[min, 0.23, 0.299, 0.754, (min+max)*0.5, 0.865, 0.865, 0.865, max, 0.706, 0.016, 0.15],
ColorSpace='Diverging',
ScalarRangeInitialized=1.0 )
iso_values = [ ((float(x) * (max-min) * 0.1) + min) for x in range(10)]
# === Create analysis =========================================================
analysis = cinema.AnalysisManager( work_directory, "Cinema Test", "Test various cinema explorers.")
analysis.begin()
# === SliceExplorer ===========================================================
analysis.register_analysis(
"slice", # id
"Slice exploration", # title
"Perform 10 slice along X", # description
"{sliceColor}_{slicePosition}.jpg", # data structure
cinema.SliceExplorer.get_data_type())
nb_slices = 5
colorByArray = { "RTData": { "lut": lut , "type": 'POINT_DATA'} }
view = simple.CreateRenderView()
fng = analysis.get_file_name_generator("slice")
exporter = cinema.SliceExplorer(fng, view, data_to_explore, colorByArray, nb_slices)
exporter.set_analysis(analysis)
# Explore
exporter.UpdatePipeline()
# === ContourExplorer + ThreeSixtyImageStackExporter ==========================
analysis.register_analysis(
"contour-360", # id
"Contour", # title
"Perform 15 contour", # description
"{contourBy}/{contourValue}/{theta}_{phi}.jpg", # data structure
cinema.ThreeSixtyImageStackExporter.get_data_type())
fng = analysis.get_file_name_generator("contour-360")
arrayName = ('POINT_DATA', 'RTData')
view2 = simple.CreateRenderView()
cExplorer = cinema.ContourExplorer(fng, data_to_explore, arrayName, [min,max], 15)
proxy = cExplorer.getContour()
rep = simple.Show(proxy, view2)
rep.LookupTable = lut
rep.ColorArrayName = arrayName
exp = cinema.ThreeSixtyImageStackExporter(fng, view2, center_of_rotation, distance, rotation_axis, angle_steps)
for progress in cExplorer:
exp.UpdatePipeline()
# === ImageResampler ==========================================================
analysis.register_analysis(
"interactive-prober", # id
"Interactive prober", # title
"Sample data in image stack for line probing", # description
"{field}/{slice}.{format}", # data structure
cinema.ImageResampler.get_data_type())
fng = analysis.get_file_name_generator("interactive-prober")
arrays = { "RTData" : lut }
exp = cinema.ImageResampler(fng, data_to_explore, [21,21,21], arrays)
exp.UpdatePipeline()
# === CompositeImageExporter ==================================================
# CompositeImageExporter(file_name_generator, data_list, colorBy_list, luts, camera_handler, view_size, data_list_pipeline, axisVisibility=1, orientationVisibility=1, format='jpg')
if has_rgbz_view:
analysis.register_analysis(
"composite",
"Composite rendering",
"Performing composite on contour",
'{theta}/{phi}/{filename}', cinema.CompositeImageExporter.get_data_type())
fng = analysis.get_file_name_generator("composite")
# Create pipeline to compose
contour_values = [ 64.0, 90.6, 117.2, 143.8, 170.4, 197.0, 223.6, 250.2]
color_type = [('POINT_DATA', "RTData")]
luts = { "RTData": lut }
filters = [ data_to_explore ]
filters_description = [ {'name': 'Wavelet'} ]
color_by = [ color_type ]
for iso_value in contour_values:
filters.append( simple.Contour( Input=data_to_explore, PointMergeMethod="Uniform Binning", ContourBy = ['POINTS', 'RTData'], Isosurfaces = [iso_value], ComputeScalars = 1 ) )
color_by.append( color_type )
filters_description.append({'name': 'iso=%s' % str(iso_value)})
# Data exploration ------------------------------------------------------------
camera_handler = cinema.ThreeSixtyCameraHandler(fng, None, [ float(r) for r in range(0, 360, 72)], [ float(r) for r in range(-60, 61, 45)], center_of_rotation, rotation_axis, distance)
exporter = cinema.CompositeImageExporter(fng, filters, color_by, luts, camera_handler, [400,400], filters_description, 0, 0)
exporter.set_analysis(analysis)
exporter.UpdatePipeline()
# === TODO ====================================================================
# ThreeSixtyImageStackExporter(file_name_generator, view_proxy, focal_point=[0.0,0.0,0.0], distance=100.0, rotation_axis=[0,0,1], angular_steps=[10,15])
# LineProber(file_name_generator, data_to_probe, points_series, number_of_points)
# DataProber(file_name_generator, data_to_probe, points_series, fields)
# TimeSerieDataProber(file_name_generator, data_to_probe, point_series, fields, time_to_write)
# === TODO ====================================================================
analysis.end()
# Print analysis info.json
analysisInfo = None
with open(os.path.join(work_directory, 'info.json'), 'r') as json_file:
analysisInfo = json.load(json_file)
print json.dumps(analysisInfo, sort_keys=True, indent=4, separators=(',', ': '))
# === Execute embedded test functions =========================================
test_dir = os.path.join(smtesting.TempDir, 'cinema-test')
cinema.test(test_dir)
cinema.test2(test_dir)
cinema.test3(test_dir)