[Paraview] Use case Paraview-Selection

Christian Werner christian.werner at rwth-aachen.de
Wed Apr 21 08:55:56 EDT 2010


Hi!

I made a new topic about that selection thing. Here is my use-case:

Overview: We have volumetric data of metal components. These components 
contain unwanted defects (holes that appear during the casting process). 
These holes are visible as dark regions (objects) in the data. 
Unfortunately, there are other structures in the metal that are also 
dark (graphite). After a few image processing steps many of those 
objects (defects and graphite) are segmented out of the originial volume 
data. A contouring (and connectivity filtering) yields a nice 
visualization of those objects.

Use Case: Select defects
Goal: The user selects the defects out of the many presented objects.

Details: Due to the extremely cool features of Paraview, the user is 
able to mix the views of all extracted objects and the original volume 
data (see image) to easily verify which object is a defect and which one 
is graphite. When the user identifies an object as a defect, he marks it 
by a simple click. The object will highlight so the user can always see 
which objects have already been selected. When the user is done 
selecting all defects, he clicks on the "Measure Defects" button. A 
database containing all necessary information on the defects (centroid, 
total volume, volume percentage,...) will automatically be created and 
saved in a secret place.

Remark:
The "Measure Defects Button" will call a Python macro that desperately 
tries to extract the selected objects (points). These points are needed 
for correspondance to the original volume data that is actually being 
analyzed (the mean grey value of a defect and such are important 
quantities). Certainly, one single point per object suffices for this 
correspondance.


Best regards,
Christian


Utkarsh Ayachit schrieb:
> Christian,
>
> O-oh! We can't have our users going mad now can we :). Guess we are
> looking at this the wrong way, instead of working from the solution,
> let's start with the problem/use-case. Can you describe your use-case
> as simply as possibly. What's the goal here? What is the user doing?
>
> Utkarsh
>
> On Mon, Apr 19, 2010 at 11:20 AM, Christian Werner
> <christian.werner at rwth-aachen.de> wrote:
>   
>> Does that mean that I have to create a selection with explicitly defining
>> the points? Oh man... Then I can forget the whole thing anyway.
>>
>> Everything is so nice about Paraview, but this selection thing is driving me
>> mad.
>>
>> It's still all about making it as easy as possible for the user to select
>> objects out of Polydata and let a plugin analyze these objects. As it seems
>> now, the user has to:
>>
>> 1) Ctrl+Click matching objects one after another (already dangerours,
>> because you might forget to hold down Ctrl when selecting)
>> 2) go to Filter->Recent->ExtractSelection
>> 3) wait at least 3 seconds
>> 4) call a plugin that writes the extracted points' coordinates and their ID
>> to a file
>> 5) call the analyzing plugin that reads out the file (to get the RegionID
>> and coordinates) and does the analysing stuff (in ITK)
>>
>> I have found a way to do that "wait 3 seconds" in Python using a thread(!)
>> which checks the time and joins after some seconds. Using sleep(5) simply
>> froze everything and postponed the segmentation fault (which clearly comes
>> from my writer that doesn't have input). Another possibility would be to
>> modify vtkExtractSelection to suite my needs, but I won't do that, since I
>> don't have time for that anymore. This workaround has to do.
>>
>> Anyway, Paraview, VTK and ITK are really nice, I am glad I found these
>> open-source tools.
>>
>> Best regards,
>> Christian
>>
>>
>>
>> Utkarsh Ayachit schrieb:
>>     
>>> Does your data have time? If not, you don't need to specify the
>>> time=10000 attribute at all. So SelectionWriter is the thing that's
>>> coming from your plugin? Does it support writing empty datasets?  Can
>>> you attach a debugger and see where is crashes? Are you sure it's not
>>> crashing in the writer? I dont' see why UpdatePipeline() on extract
>>> selection would crash. Instead of using a macro, try manually typing
>>> the text in the python shell to see exactly what line causes the
>>> segfault.
>>>
>>> BTW, ExtractSelection needs two inputs: 'Input" and "Selection" where
>>> Selection is set to the SelectionQuerySource proxy.
>>>
>>> Utkarsh
>>>
>>> On Mon, Apr 19, 2010 at 10:34 AM, Christian Werner
>>> <christian.werner at rwth-aachen.de> wrote:
>>>
>>>       
>>>> I am afraid UpdatePipeline doesn't help, even if I set the time to some
>>>> high
>>>> value. Paraview crashes right in the moment where I start this macro:
>>>>
>>>> extract=ExtractSelection(Input=ConnectivityFilter)
>>>>
>>>> UpdatePipeline(time= 10000, proxy=extract)
>>>>
>>>> mFilename = destPath + str( time() )
>>>>
>>>> swriter=SelectionWriter(Input=extract)
>>>>
>>>> swriter.FileName=mFilename
>>>>
>>>> swriter.UpdatePipeline()
>>>>
>>>>
>>>> When I manually select Fiters->ExtractSelection and then do:
>>>>
>>>> mFilename = destPath + str( time() )
>>>>
>>>> swriter=SelectionWriter()
>>>>
>>>> swriter.FileName=mFilename
>>>>
>>>> swriter.UpdatePipeline()
>>>>
>>>>
>>>> everything works fine.
>>>>
>>>>
>>>>
>>>> Utkarsh Ayachit schrieb:
>>>>
>>>>         
>>>>> You can simply call UpdatePipeline() as follows:
>>>>>
>>>>> from paraview.simple import *
>>>>> ....
>>>>> UpdatePipeline(proxy=extractSelectionSource)
>>>>>
>>>>> This will update the extract selection filter explicitly. Look at
>>>>> help(UpdatePipeline) for details.
>>>>>
>>>>> Utkarsh
>>>>>
>>>>>
>>>>> On Sun, Apr 18, 2010 at 3:38 PM, Christian Werner
>>>>> <christian.werner at rwth-aachen.de> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> Hi Utkarsh,
>>>>>>
>>>>>> these are great news. I tried the python trace but not in combination
>>>>>> with
>>>>>> the extraction (what I acutally do need anyway....)
>>>>>>
>>>>>> As you might remember I am working around the "lack" of possibilty to
>>>>>> select
>>>>>> whole objects (cells with same RegionID). With the given
>>>>>> SelectionQuerySource this workaround is complete.
>>>>>>
>>>>>> There remains one issue: At some point I call an ExtractSelection() in
>>>>>> Python that is followed by a call to a vtk-Plugin (which writes the
>>>>>> point
>>>>>> data of the selected points to disk). The resulting file is empty,
>>>>>> because
>>>>>> the Extraction takes a few seconds and obviously the plugin has no
>>>>>> valid
>>>>>> input when being executed. Paraview also crashes as a consequence. When
>>>>>> I
>>>>>> am
>>>>>> doing this manually (trigger ExtractSelection, wait until it's done,
>>>>>> call
>>>>>> the vtk Plugin to write the point data) everything works fine. I could
>>>>>> just
>>>>>> go ahead and do a dull time.sleep(3) between the extraction and the
>>>>>> call
>>>>>> to
>>>>>> the plugin, but this certainly isn't good programming style.
>>>>>>
>>>>>> What can I do instead?
>>>>>>
>>>>>>
>>>>>> Best regards,
>>>>>> Christian
>>>>>>
>>>>>>
>>>>>> Utkarsh Ayachit wrote:
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Yes, you can use the "SelectionQuerySource" to construct your query as
>>>>>>> follows:
>>>>>>>
>>>>>>> selection_source_540 = SelectionQuerySource( InsideOut=0,
>>>>>>> ArrayName='', HierarchicalLevel=-1, ProcessID=-1, ContainingCells=0,
>>>>>>> DoubleValues=None, HierarchicalIndex=-1, FieldType='CELL',
>>>>>>> ArrayComponent=0, Operator='IS_ONE_OF', TermMode='ID',
>>>>>>> CompositeIndex=-1, IdTypeValues=0 )
>>>>>>>
>>>>>>> You can use the python trace recorder functionality to determine how
>>>>>>> to create the query. You will, however have to "Extract Selection"
>>>>>>> from the query (and hit apply) before the selection_source object will
>>>>>>> appear in the trace.
>>>>>>>
>>>>>>> Utkarsh
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Apr 17, 2010 at 9:32 AM, Christian Werner
>>>>>>> <christian.werner at rwth-aachen.de> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> Hello!
>>>>>>>>
>>>>>>>> Is there any chance that the new Edit->Find Data functionality is
>>>>>>>> available
>>>>>>>> in Python-Scripting?
>>>>>>>>
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Christian
>>>>>>>> _______________________________________________
>>>>>>>> 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
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>             
>>>>         
>> _______________________________________________
>> 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 --------------
A non-text attachment was scrubbed...
Name: Paraview-Selection01.jpg
Type: image/jpeg
Size: 64793 bytes
Desc: not available
URL: <http://www.paraview.org/pipermail/paraview/attachments/20100421/e2e0da67/attachment-0001.jpg>


More information about the ParaView mailing list