First pass of this has now been merged in master
.
Finally got around to reading this. Feels like reading a Michener book. +1. Well done.
sorry! this thread got long very quickly!
I think what we need next is a set of short tutorials to get folks started with these extract generators and catalyst python script changes.
I like these changes a lot! This looks like a complete redo that’s probably been overdue for some time. Some ways to possibly improve:
- Would it be possible to add in a hover to the Extracts Generators->Data->* ? I know what many of them are but not sure what things like VTPD is. I see that it’s greyed out for my specific output so maybe it doesn’t matter though.
- Also, for the Extracts Generators->Data->* it seems like it’s a bit inconsistent to me that, for example, it lists VTI, but is actually a pvti output.
- For the example it would be nice to have something written to disk as well. I added a dataset writer manually and probably didn’t do it the proper new way but others may have trouble doing that.
- When using the
-c
to change the registrationName for the channel, it keeps that name throughout and when writing out a file to disk it uses that name for__CatalystChannel__
. Is that a bug? - If there are more than one channels, is there something to handle this for the
-c
option? - It would be great to have something available like
gridwriter.py
andallinputsgridwriter.py
that could write out the full grid if the defaultinput
channel is used and for any number of channels are used, respectively. I think a number of people have used these in the past to help them get going in the Catalyst workflow. - What is
Frequency
for in theGenerate Catalyst Script Options
window under Global Options?
I very briefly skimmed the user guide updates so apologies if I missed something in there. The example did work nicely for me.
Firstly, thanks for trying it out, Andy! Very much appreciated!
Would it be possible to add in a hover to the Extracts Generators->Data->* ?
Indeed. Reported here
Also, for the Extracts Generators->Data->* it seems like it’s a bit inconsistent to me that, for example, it lists VTI, but is actually a pvti output.
Good point. I wonder if we should really not burden the user with which flavor of writer to use, instead have single entry for VTK-XML (or something more readable) and then create the *.vt???
variant based on the input dataset type. Thoughts?
For the example it would be nice to have something written to disk as well.
Sure thing. I’m assuming you’re referring to the examples here. Reported here.
When using the
-c
to change the registrationName for the channel, it keeps that name throughout and when writing out a file to disk it uses that name for__CatalystChannel__
. Is that a bug?
I do not follow. Can you elaborate please?
If there are more than one channels, is there something to handle this for the
-c
option?
-c
option is for the wavelet_driver, which only produced 1 channel. Are you suggesting we extend that miniapp to produce multiple channels for demostration purposes? Sure, I don’t have any objections there. Shouldn’t be too hard.
It would be great to have something available like
gridwriter.py
andallinputsgridwriter.py
Makes sense. Reported here.
What is
Frequency
for in theGenerate Catalyst Script Options
window under Global Options?
It is same as every “n-th”. Global options are checked before each extract generator specific trigger options (or live specific trigger options) are checked. Frequency is probably not the right term, but that’s what we’ve used previously so for the lack of a clearer alternative, I left that unchanged.
Thanks!
In that case, your writer will be activated when timestep_index % 5 == 0 && timestep_index % 3 == 0
, thus for the 0th, 15th, 30th, … timestep (or cycle).
I guess this adds another question – should the Trigger option be Time or Time Step/Cycle?
Currently, we only have timestep/cycle based triggers. However, the trigger infrastructure is extensible. We should be able to support other types of triggers in the future, even Python-based ones.
I’m just thinking that the Trigger option should be named Time Step
instead of Time
to be more accurate. In the future I think the first one I’d like to see added is where it’s actually based on simulation time instead of simulation time step. As an example, as close to every half a second in simulation time so if you’re trying to make an animation from images that are dumped in situ that it’s doable, especially for simulations that have variable time step lengths.
I’ve been playing around with this a bit more and there’s no way that I can see to output the old style Catalyst Python scripts. Is that correct or am I missing something? It seems like using Catalyst 5.9 will not be backwards compatible.
The other thing is that the screenshot output for Catalyst doesn’t quite fit in the pipeline browser thinking that we’ve presented to the user in the past, at least the way it’s presented right now:
I wonder if instead it should be a connection on the right side with all of the visible filter outputs being connected to it. Something like the following:
That is correct. We no longer support outputting old style scripts.
That is not correct. ParaView 5.9 still supports loading old style co-processing scripts. There are tests prefixed with Catalyst::Legacy::
that test loading old Catalyst scripts in the new version.
ParaView has never supported generating state files or scripts that can be loaded in older versions of ParaView and that indeed is the case with 5.9.
See this issue. One proposal is to add an icon where the eyeball is next to image extract generator to give an indication of which view is being saved out by that image extract generator.
Note the image extract generators are not really connected to filter outputs, but more directly to the view. Thus providing a clear indication of which Image Extract Generator is associated with which view, or at least associated with the active view, should be a good place to start.
My point that Catalyst 5.9 will not be backwards compatible is that if we link a simulation code that used to work with Catalyst 5.8, without changes, to Catalyst 5.9 there is a decent chance that things will not work. The reason I say that is if we have a Catalyst Python script that script may need to be updated from the 5.8 Python API to the 5.9 Python API (if it only has data extracts probably not but if it has screenshot/image output it probably will). That new script that we generate in ParaView 5.9 won’t work with our existing vtkCPPythonScriptPipeline
class.
As for the the screenshot output, yeah, I meant to indicate that it’s not really the filter output but the open eyeball of the filter output. And still, this is just for the active view. Basically I’m just trying to make the point that we’re really trying hard to provide a new type of gui functionality in the pipeline browser that we haven’t in the past. That’s not my skill set on how to do that properly but wanted to point it out so that people much, much better than me at HCI can look into a good way of doing it.
Yes, if you want an adaptor to use the new style Python scripts exported in ParaView 5.9, you will need to update your adaptor code.
Another question on this – is there the Cinema functionality to iterate over Slice offsets and/or Contour iso-surface values? I can’t seem to find how to set that in the GUI. I can see the camera model and moving that around still.
This would be very useful functionality, especially in Catalyst. Working with ECP applications, this is a common in situ request – a slice or contour every n timesteps.
This has been removed for this version. ParaView 5.9 sacrifices some Cinema capabilities with the goal to make it easier, usable and consistent in various modes of operations.
This version does not support composable images since Cinema project is working on coming up with a new spec for the Cinema composable image set (CIS). Once CIS file format is finalized and a writer API is available from the Cinema Science project, ParaView will use that to add a new Image Extract Generator of type CIS and support “layers” allowing users to toggle various props in the view. It’s unclear if we’ll support various slice offsets, or iso-values as it’s too custom a use-case. We might just rely on users to create multiple contour or slice filters for same effect – but that can be figured out when we get closer to implementing it.
More details here.