def DumpPipeline(export_rendering, simulation_input_map, screenshot_info, cinema_tracks, cinema_arrays, enable_live_viz, live_viz_frequency): """Method that will dump the current pipeline and return it as a string trace. export_rendering boolean telling if we want to export rendering simulation_input_map string->string map with key being the proxyname while value being the simulation input name. screenshot_info map with information about screenshots * key -> view proxy name * value -> [filename, writefreq, fitToScreen, magnification, width, height, cinemacamera options] cinema_tracks map with information about cinema tracks to record * key -> proxy name * value -> argument ranges cinema_arrays map with information about value arrays to be exported * key -> proxy name * value -> list of array names enable_live_viz boolean telling if we want to enable Catalyst Live connection live_viz_frequency integer telling how often to update Live connection. only used if enable_live_viz is True """ # reset the global variables. reset_cpstate_globals() cpstate_globals.export_rendering = export_rendering cpstate_globals.simulation_input_map = simulation_input_map cpstate_globals.screenshot_info = screenshot_info cpstate_globals.cinema_tracks = cinema_tracks cpstate_globals.cinema_arrays = cinema_arrays cpstate_globals.enable_live_viz = enable_live_viz cpstate_globals.live_viz_frequency = live_viz_frequency # Initialize the write frequency map for key in cpstate_globals.simulation_input_map.values(): cpstate_globals.write_frequencies[key] = [] # Start trace filter = cpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(cp_hook) state = smstate.get_state(filter=filter, raw=True) smtrace.RealProxyAccessor.unregister_create_callback(cp_hook) # add in the new style writer proxies state = state + NewStyleWriters().make_trace() # iterate over all views that were saved in state and update write requencies if export_rendering: pxm = servermanager.ProxyManager() for key, vtuple in screenshot_info.items(): view = pxm.GetProxy("views", key) if not view: continue image_write_frequency = int(vtuple[1]) # Locate which simulation input this write is connected to, if any. If so, # we update the write_frequencies datastructure accordingly. sim_inputs = locate_simulation_inputs_for_view(view) for sim_input_name in sim_inputs: if not image_write_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append( image_write_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() if not sim_input_name in cpstate_globals.channels_needed: cpstate_globals.channels_needed.append(sim_input_name) if enable_live_viz: for key in simulation_input_map: sim_input_name = simulation_input_map[key] if not live_viz_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append( live_viz_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() if not sim_input_name in cpstate_globals.channels_needed: cpstate_globals.channels_needed.append(sim_input_name) pxm = servermanager.ProxyManager() arrays = {} for channel_name in cpstate_globals.channels_needed: arrays[channel_name] = [] p = pxm.GetProxy("sources", channel_name) if p: for i in range(p.GetPointDataInformation().GetNumberOfArrays()): arrays[channel_name].append( [p.GetPointDataInformation().GetArray(i).GetName(), 0]) for i in range(p.GetCellDataInformation().GetNumberOfArrays()): arrays[channel_name].append( [p.GetCellDataInformation().GetArray(i).GetName(), 1]) # Create global fields values pipelineClassDef = "\n" pipelineClassDef += "# ----------------------- CoProcessor definition -----------------------\n\n" # Create the resulting string that will contains the pipeline definition pipelineClassDef += "def CreateCoProcessor():\n" pipelineClassDef += " def _CreatePipeline(coprocessor, datadescription):\n" pipelineClassDef += " class Pipeline:\n" # add the traced code. for original_line in state: for line in original_line.split("\n"): if line.find("import *") != -1 or \ line.find("#### import the simple") != -1: continue if line: pipelineClassDef += " " + line + "\n" else: pipelineClassDef += "\n" pipelineClassDef += " return Pipeline()\n" pipelineClassDef += "\n" pipelineClassDef += " class CoProcessor(coprocessing.CoProcessor):\n" pipelineClassDef += " def CreatePipeline(self, datadescription):\n" pipelineClassDef += " self.Pipeline = _CreatePipeline(self, datadescription)\n" pipelineClassDef += "\n" pipelineClassDef += " coprocessor = CoProcessor()\n" pipelineClassDef += " # these are the frequencies at which the coprocessor updates.\n" pipelineClassDef += " freqs = " + str( cpstate_globals.write_frequencies) + "\n" pipelineClassDef += " coprocessor.SetUpdateFrequencies(freqs)\n" if arrays: pipelineClassDef += " if requestSpecificArrays:\n" for channel_name in arrays: pipelineClassDef += " arrays = " + str( arrays[channel_name]) + "\n" pipelineClassDef += " coprocessor.SetRequestedArrays('" + channel_name + "', arrays)\n" pipelineClassDef += " coprocessor.SetInitialOutputOptions(timeStepToStartOutputAt,forceOutputAtFirstCall)\n" pipelineClassDef += "\n" pipelineClassDef += " if rootDirectory:\n" pipelineClassDef += " coprocessor.SetRootDirectory(rootDirectory)\n" pipelineClassDef += "\n" pipelineClassDef += " if make_cinema_table:\n" pipelineClassDef += " coprocessor.EnableCinemaDTable()\n" pipelineClassDef += "\n" pipelineClassDef += " return coprocessor\n" return pipelineClassDef
def DumpPipeline(export_rendering, simulation_input_map, screenshot_info): """ Method that will dump the current pipeline and return it as a string trace - export_rendering : boolean telling if we want to export rendering - simulation_input_map: string->string map with key being the proxyname while value being the simulation input name. - screenshot_info : map with information about screenshots key -> view proxy name value -> [filename, writefreq, fitToScreen, magnification, width, height] """ # reset the global variables. reset_cpstate_globals() cpstate_globals.export_rendering = export_rendering cpstate_globals.simulation_input_map = simulation_input_map cpstate_globals.screenshot_info = screenshot_info # Initialize the write frequency map for key in cpstate_globals.simulation_input_map.values(): cpstate_globals.write_frequencies[key] = [] # Start trace filter = cpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(cp_hook) state = smstate.get_state(filter=filter, raw=True) smtrace.RealProxyAccessor.unregister_create_callback(cp_hook) # iterate over all views that were saved in state and update write requencies if export_rendering: pxm = servermanager.ProxyManager() for key, vtuple in screenshot_info.iteritems(): view = pxm.GetProxy("views", key) if not view: continue image_write_frequency = int(vtuple[1]) # Locate which simulation input this write is connected to, if any. If so, # we update the write_frequencies datastructure accordingly. sim_inputs = locate_simulation_inputs_for_view(view) for sim_input_name in sim_inputs: if not image_write_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append( image_write_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() # Create global fields values pipelineClassDef = "\n" pipelineClassDef += "# ----------------------- CoProcessor definition -----------------------\n\n" # Create the resulting string that will contains the pipeline definition pipelineClassDef += "def CreateCoProcessor():\n" pipelineClassDef += " def _CreatePipeline(coprocessor, datadescription):\n" pipelineClassDef += " class Pipeline:\n" # add the traced code. for original_line in state: for line in original_line.split("\n"): if line.find("import *") != -1 or \ line.find("#### import the simple") != -1: continue if line: pipelineClassDef += " " + line + "\n" else: pipelineClassDef += "\n" pipelineClassDef += " return Pipeline()\n" pipelineClassDef += "\n" pipelineClassDef += " class CoProcessor(coprocessing.CoProcessor):\n" pipelineClassDef += " def CreatePipeline(self, datadescription):\n" pipelineClassDef += " self.Pipeline = _CreatePipeline(self, datadescription)\n" pipelineClassDef += "\n" pipelineClassDef += " coprocessor = CoProcessor()\n" pipelineClassDef += " # these are the frequencies at which the coprocessor updates.\n" pipelineClassDef += " freqs = " + str( cpstate_globals.write_frequencies) + "\n" pipelineClassDef += " coprocessor.SetUpdateFrequencies(freqs)\n" pipelineClassDef += " return coprocessor\n" return pipelineClassDef
def DumpPipeline(export_rendering, simulation_input_map, screenshot_info, cinema_tracks): """ Method that will dump the current pipeline and return it as a string trace - export_rendering : boolean telling if we want to export rendering - simulation_input_map: string->string map with key being the proxyname while value being the simulation input name. - screenshot_info : map with information about screenshots key -> view proxy name value -> [filename, writefreq, fitToScreen, magnification, width, height, cinemacamera options] - cinema_tracks : map with information about cinema tracks to record key -> proxy name value -> argument ranges """ # reset the global variables. reset_cpstate_globals() cpstate_globals.export_rendering = export_rendering cpstate_globals.simulation_input_map = simulation_input_map cpstate_globals.screenshot_info = screenshot_info cpstate_globals.cinema_tracks = cinema_tracks # Initialize the write frequency map for key in cpstate_globals.simulation_input_map.values(): cpstate_globals.write_frequencies[key] = [] # Start trace filter = cpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(cp_hook) state = smstate.get_state(filter=filter, raw=True) smtrace.RealProxyAccessor.unregister_create_callback(cp_hook) # iterate over all views that were saved in state and update write requencies if export_rendering: pxm = servermanager.ProxyManager() for key, vtuple in screenshot_info.iteritems(): view = pxm.GetProxy("views", key) if not view: continue image_write_frequency = int(vtuple[1]) # Locate which simulation input this write is connected to, if any. If so, # we update the write_frequencies datastructure accordingly. sim_inputs = locate_simulation_inputs_for_view(view) for sim_input_name in sim_inputs: if not image_write_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append(image_write_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() # Create global fields values pipelineClassDef = "\n" pipelineClassDef += "# ----------------------- CoProcessor definition -----------------------\n\n" # Create the resulting string that will contains the pipeline definition pipelineClassDef += "def CreateCoProcessor():\n" pipelineClassDef += " def _CreatePipeline(coprocessor, datadescription):\n" pipelineClassDef += " class Pipeline:\n"; # add the traced code. for original_line in state: for line in original_line.split("\n"): if line.find("import *") != -1 or \ line.find("#### import the simple") != -1: continue if line: pipelineClassDef += " " + line + "\n" else: pipelineClassDef += "\n" pipelineClassDef += " return Pipeline()\n"; pipelineClassDef += "\n" pipelineClassDef += " class CoProcessor(coprocessing.CoProcessor):\n" pipelineClassDef += " def CreatePipeline(self, datadescription):\n" pipelineClassDef += " self.Pipeline = _CreatePipeline(self, datadescription)\n" pipelineClassDef += "\n" pipelineClassDef += " coprocessor = CoProcessor()\n"; pipelineClassDef += " # these are the frequencies at which the coprocessor updates.\n" pipelineClassDef += " freqs = " + str(cpstate_globals.write_frequencies) + "\n" pipelineClassDef += " coprocessor.SetUpdateFrequencies(freqs)\n" pipelineClassDef += " return coprocessor\n" return pipelineClassDef
glyph.GlyphType.Resolution = 15 clip = Clip(guiName="my clip") Show() clip.ClipType = "Sphere" clip.ClipType.Radius = 0.25 group = GroupDatasets(Input=[sphere, clip], guiName="my group") Show() GetDisplayProperties().Representation = "Surface With Edges" Render() create_pipeline() # End build pipeline ######################################################## # Trace state and grab the trace output string state = smstate.get_state() print state # Clear all the proxies clear_proxies() # Confirm that all the representations have been removed from the view if len(GetRepresentations()) or len(GetRenderViews()) or len(GetSources()): fail("Not all proxies were cleaned up.") # Compile the trace code and run it code = compile(state, "<string>", "exec") exec(code) # Get the recreated proxies view = FindView("RenderView1")
# this is a reader. return ReaderAccessor(varname, proxy, reader_input_map[pname]) if pname and proxy.GetHints() and proxy.GetHints().FindNestedElementByName("WriterProxy"): return WriterAccessor(varname, proxy) if smtrace.Trace.get_registered_name(proxy, "views"): # since view is being accessed, ensure that we were indeed saving # rendering components. assert export_rendering return ViewAccessor(varname, proxy, screenshot_info[pname]) raise NotImplementedError # Start trace filter = tpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(tp_hook) state = smstate.get_state(filter=filter) smtrace.RealProxyAccessor.unregister_create_callback(tp_hook) output_contents = """ from paraview.simple import * from paraview import spatiotemporalparallelism as STP tp_writers = [] tp_views = [] timeCompartmentSize = %s globalController, temporalController, timeCompartmentSize = STP.CreateControllers(timeCompartmentSize) %s STP.IterateOverTimeSteps(globalController, timeCompartmentSize, timeSteps, tp_writers, tp_views)
return ReaderAccessor(varname, proxy, reader_input_map[pname]) if pname and proxy.GetHints() and proxy.GetHints().FindNestedElementByName("WriterProxy"): return WriterAccessor(varname, proxy) pname = smtrace.Trace.get_registered_name(proxy, "views") if pname: # since view is being accessed, ensure that we were indeed saving # rendering components. assert export_rendering return ViewAccessor(varname, proxy, screenshot_info[pname]) raise NotImplementedError # Start trace filter = tpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(tp_hook) state = smstate.get_state(filter=filter) smtrace.RealProxyAccessor.unregister_create_callback(tp_hook) output_contents = """ from paraview.simple import * from paraview import spatiotemporalparallelism as STP tp_writers = [] tp_views = [] timeCompartmentSize = %s globalController, temporalController, timeCompartmentSize = STP.CreateControllers(timeCompartmentSize) %s STP.IterateOverTimeSteps(globalController, timeCompartmentSize, timeSteps, tp_writers, tp_views)
def DumpPipeline(export_rendering, simulation_input_map, screenshot_info, cinema_tracks, cinema_arrays, enable_live_viz, live_viz_frequency): """Method that will dump the current pipeline and return it as a string trace. export_rendering boolean telling if we want to export rendering simulation_input_map string->string map with key being the proxyname while value being the simulation input name. screenshot_info map with information about screenshots * key -> view proxy name * value -> [filename, writefreq, fitToScreen, magnification, width, height, cinemacamera options] cinema_tracks map with information about cinema tracks to record * key -> proxy name * value -> argument ranges cinema_arrays map with information about value arrays to be exported * key -> proxy name * value -> list of array names enable_live_viz boolean telling if we want to enable Catalyst Live connection live_viz_frequency integer telling how often to update Live connection. only used if enable_live_viz is True """ # reset the global variables. reset_cpstate_globals() cpstate_globals.export_rendering = export_rendering cpstate_globals.simulation_input_map = simulation_input_map cpstate_globals.screenshot_info = screenshot_info cpstate_globals.cinema_tracks = cinema_tracks cpstate_globals.cinema_arrays = cinema_arrays cpstate_globals.enable_live_viz = enable_live_viz cpstate_globals.live_viz_frequency = live_viz_frequency # Initialize the write frequency map for key in cpstate_globals.simulation_input_map.values(): cpstate_globals.write_frequencies[key] = [] # Start trace filter = cpstate_filter_proxies_to_serialize() smtrace.RealProxyAccessor.register_create_callback(cp_hook) state = smstate.get_state(filter=filter, raw=True) smtrace.RealProxyAccessor.unregister_create_callback(cp_hook) # add in the new style writer proxies state = state + NewStyleWriters().make_trace() # iterate over all views that were saved in state and update write requencies if export_rendering: pxm = servermanager.ProxyManager() for key, vtuple in screenshot_info.items(): view = pxm.GetProxy("views", key) if not view: continue image_write_frequency = int(vtuple[1]) # Locate which simulation input this write is connected to, if any. If so, # we update the write_frequencies datastructure accordingly. sim_inputs = locate_simulation_inputs_for_view(view) for sim_input_name in sim_inputs: if not image_write_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append(image_write_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() if not sim_input_name in cpstate_globals.channels_needed: cpstate_globals.channels_needed.append(sim_input_name) if enable_live_viz: for key in simulation_input_map: sim_input_name = simulation_input_map[key] if not live_viz_frequency in cpstate_globals.write_frequencies: cpstate_globals.write_frequencies[sim_input_name].append(live_viz_frequency) cpstate_globals.write_frequencies[sim_input_name].sort() if not sim_input_name in cpstate_globals.channels_needed: cpstate_globals.channels_needed.append(sim_input_name) pxm = servermanager.ProxyManager() arrays = {} for channel_name in cpstate_globals.channels_needed: arrays[channel_name] = [] p = pxm.GetProxy("sources", channel_name) if p: for i in range(p.GetPointDataInformation().GetNumberOfArrays()): arrays[channel_name].append([p.GetPointDataInformation().GetArray(i).GetName(), 0]) for i in range(p.GetCellDataInformation().GetNumberOfArrays()): arrays[channel_name].append([p.GetCellDataInformation().GetArray(i).GetName(), 1]) # Create global fields values pipelineClassDef = "\n" pipelineClassDef += "# ----------------------- CoProcessor definition -----------------------\n\n" # Create the resulting string that will contains the pipeline definition pipelineClassDef += "def CreateCoProcessor():\n" pipelineClassDef += " def _CreatePipeline(coprocessor, datadescription):\n" pipelineClassDef += " class Pipeline:\n"; # add the traced code. for original_line in state: for line in original_line.split("\n"): if line.find("import *") != -1 or \ line.find("#### import the simple") != -1: continue if line: pipelineClassDef += " " + line + "\n" else: pipelineClassDef += "\n" pipelineClassDef += " return Pipeline()\n"; pipelineClassDef += "\n" pipelineClassDef += " class CoProcessor(coprocessing.CoProcessor):\n" pipelineClassDef += " def CreatePipeline(self, datadescription):\n" pipelineClassDef += " self.Pipeline = _CreatePipeline(self, datadescription)\n" pipelineClassDef += "\n" pipelineClassDef += " coprocessor = CoProcessor()\n"; pipelineClassDef += " # these are the frequencies at which the coprocessor updates.\n" pipelineClassDef += " freqs = " + str(cpstate_globals.write_frequencies) + "\n" pipelineClassDef += " coprocessor.SetUpdateFrequencies(freqs)\n" if arrays: pipelineClassDef += " if requestSpecificArrays:\n" for channel_name in arrays: pipelineClassDef += " arrays = " + str(arrays[channel_name]) + "\n" pipelineClassDef += " coprocessor.SetRequestedArrays('" + channel_name + "', arrays)\n" pipelineClassDef += " coprocessor.SetInitialOutputOptions(timeStepToStartOutputAt,forceOutputAtFirstCall)\n" pipelineClassDef += "\n" pipelineClassDef += " if rootDirectory:\n" pipelineClassDef += " coprocessor.SetRootDirectory(rootDirectory)\n" pipelineClassDef += "\n" pipelineClassDef += " if make_cinema_table:\n" pipelineClassDef += " coprocessor.EnableCinemaDTable()\n" pipelineClassDef += "\n" pipelineClassDef += " return coprocessor\n" return pipelineClassDef