[Paraview] What part of the pipeline is producing the request for UPDATE_EXTENT?

Mike Jackson imikejackson at gmail.com
Wed Feb 13 15:52:47 EST 2008


Any idea what produces those types of errors? I have been testing the  
code pretty heavily this afternoon and all _seems_ to be working  
correctly....

I can go from a VOI of 0, 500, 0, 500, 100, 102 -> 2000, 3000, 1800,  
2500, 106, 108 and there didn't seem to be problem?

Mike

On Feb 13, 2008, at 3:47 PM, John Biddiscombe wrote:

> I'd like to be a fly on the wall in your office when you start  
> getting the infamous "Update extent is not within the Whole Extent"  
> messages when you change your VOI!
>
> JB
>
>> Thank you so very much. I was able to implement what you wrote and  
>> now my reader is behaving much better in ParaView. I have put in  
>> some additional checks to see if either the input file or the VOI  
>> has changed to cut down on reading information from the file when  
>> it hasn't changed.
>>
>> Thanks for everyone sticking with me
>> Mike Jackson
>>
>> On Feb 13, 2008, at 12:48 PM, Moreland, Kenneth wrote:
>>
>>> In the example you give, you should just report 500, 1500, 200,  
>>> 1800, 100, 105 in WHOLE_EXTENT and respond to whatever  
>>> UPDATE_EXTENT the pipeline asks you for.  If you are in serial  
>>> mode, UPDATE_EXTENT should be set to WHOLE_EXTENT.  On a parallel  
>>> server, ParaView will automatically break up the WHOLE_EXTENT and  
>>> set the UPDATE_EXTENT on each process to a different piece.  In  
>>> either case, just respond to the UPDATE_EXTENT that the pipeline  
>>> gives you and that should work.
>>>
>>> How is this not working?  Are we talking about the multiple calls  
>>> to RequestData again?  Could it be that you have set the wrong  
>>> extents information on the output data?
>>>
>>> -Ken
>>>
>>>> -----Original Message-----
>>>> From: paraview-bounces+kmorel=sandia.gov at paraview.org  
>>>> [mailto:paraview-
>>>> bounces+kmorel=sandia.gov at paraview.org] On Behalf Of Mike Jackson
>>>> Sent: Wednesday, February 13, 2008 10:23 AM
>>>> To: ParaView
>>>> Subject: Re: [Paraview] What part of the pipeline is producing  
>>>> the request
>>>> for UPDATE_EXTENT?
>>>>
>>>> I understand. Now. my problem. In RequestInformation I read part of
>>>> my file to get what I am assuming should be the "WHOLE_EXTENT",  
>>>> which
>>>> is 7334 x 8448 x 200 as a uint8 vtkImageData object. This is too
>>>> large to fit into memory the machines that this will be run on. I
>>>> placed some auto-generated gui widgets in ParaView for the customer
>>>> to select a VOI. I have used the normal vtk macros for the set/get
>>>> methods for VOI.
>>>>
>>>> So say the customer is only interested in a VOI of 500, 1500, 200,
>>>> 1800, 100, 105. Could you lay out what calls should be made in each
>>>> of the RequestInformation and RequestData methods? (just the major
>>>> things we have been talking about, I can fill in the rest). I have
>>>> tried lots of different configurations and the only ones that  
>>>> seem to
>>>> work are the ones that are NOT recommended to do.
>>>>
>>>> If you want the entire vtkH5RoboMetReader.h/cpp, I can send that
>>>> along also.
>>>>
>>>> Thanks
>>>> Mike.
>>>>
>>>>
>>>> On Feb 13, 2008, at 12:10 PM, Moreland, Kenneth wrote:
>>>>
>>>>> In the call to loadDataFromMXAFile, you should be using the value
>>>>> in UPDATE_EXTENT, not VOI.  To review, WHOLE_EXTENT is what the
>>>>> reader reports to the downstream components what data is available
>>>>> (and reporting VOI is an easy way to limit the data to what the
>>>>> user wants).  UPDATE_EXTENT is the part of the data that the
>>>>> downstream components want.  If you return with data that does not
>>>>> match up to UPDATE_EXTENT, the pipeline might execute again trying
>>>>> to get the range of data it asked for.
>>>>>
>>>>> -Ken
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: paraview-bounces+kmorel=sandia.gov at paraview.org
>>>>>> [mailto:paraview-
>>>>>> bounces+kmorel=sandia.gov at paraview.org] On Behalf Of Mike Jackson
>>>>>> Sent: Wednesday, February 13, 2008 9:48 AM
>>>>>> To: ParaView
>>>>>> Subject: Re: [Paraview] What part of the pipeline is producing  
>>>>>> the
>>>>>> request
>>>>>> for UPDATE_EXTENT?
>>>>>>
>>>>>> Ok, so now I have
>>>>>> RequestInformation()
>>>>>> {
>>>>>> ...
>>>>>> outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT 
>>>>>> (), this-
>>>>>>> VOI, 6 );
>>>>>> ...
>>>>>> }
>>>>>>
>>>>>> and RequestData() I load the data into a newly created  
>>>>>> vtkImageData
>>>>>> object, then shallow copy into the
>>>>>> actual output data object:
>>>>>>
>>>>>> vtkInformation* outInfo = outputVector->GetInformationObject(0);
>>>>>> vtkImageData* output = vtkImageData::SafeDownCast(outInfo->Get
>>>>>> (vtkDataObject::DATA_OBJECT()));
>>>>>> vtkTypeInt32 error = 1;
>>>>>> vtkSmartPointer<vtkImageData> imageData =
>>>>>> vtkSmartPointer<vtkImageData>::New();
>>>>>> error = loadDataFromMXAFile(outInfo, imageData, this->VOI);
>>>>>> output->ShallowCopy(imageData);
>>>>>>
>>>>>> In paraview from CVS this causes multiple executions of the  
>>>>>> pipeline.
>>>>>> Before, where I thought I had "fixed" the issue I was calling:
>>>>>>
>>>>>> outInfo->Set( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT 
>>>>>> (), this-
>>>>>>> VOI, 6 );
>>>>>>
>>>>>> in RequestData(). Berk said that wasn't a good idea so I  
>>>>>> removed it.
>>>>>> So now I am back to square 1 again.
>>>>>>
>>>>>> Thanks
>>>>>> Mike
>>>>>>
>>>>>> On Feb 13, 2008, at 10:17 AM, Kent Eschenberg wrote:
>>>>>>
>>>>>>> Indeed, each of the my routines to set the VOI bounds (one  
>>>>>>> each for
>>>>>>> the min/max in X/Y/Z) calls Modified().
>>>>>>>
>>>>>>> During development I had temporary print statements  
>>>>>>> everywhere and
>>>>>>> as I remember it these routines to set the VOI were called both
>>>>>>> before and after RequestInformation.
>>>>>>>
>>>>>>> Kent
>>>>>>> Pittsburgh Supercomputing Center
>>>>>>>
>>>>>>> Moreland, Kenneth wrote:
>>>>>>>> I belive it is supposed to work that your SetVOI() method  
>>>>>>>> should
>>>>>>>> call modified, which will in turn cause the pipeline to call
>>>>>>>> RequestInformation() on the next update.  Make sure that  
>>>>>>>> SetVOI()
>>>>>>>> is actually calling Modified().
>>>>>>>> -Ken
>>>>>>>> On 2/12/08 9:26 PM, "Mike Jackson" <imikejackson at gmail.com>  
>>>>>>>> wrote:
>>>>>>>>     Pretty sure that was where we were going to end up BUT  
>>>>>>>> as far
>>>>>>>> as I
>>>>>>>>     can tell, the order of execution is :
>>>>>>>>     RequestInformation()
>>>>>>>>     SetVOI() // From the GUI in ParaView
>>>>>>>>     RequestData();
>>>>>>>>     So we never really get a chance to get the VOI until
>>>>>>>> RequestData
>>>>>>>>     fires.. Is that what you have seen?
>>>>>>>>     Mike
>>>>>>>>     On Feb 12, 2008, at 11:21 PM, Kent Eschenberg wrote:
>>>>>>>>>  Mike,
>>>>>>>>>
>>>>>>>>>  I accomplished what you want with one of our custom
>>>>>>>> readers. In my
>>>>>>>>>  opinion the documentation for RequestInformation,  
>>>>>>>>> RequestData,
>>>>>>>>>  extents, etc. is so poor that it is useless.
>>>>>>>>>
>>>>>>>>>  At RequestInformation I read enough of the input to get the
>>>>>>>> overall
>>>>>>>>>  input array size; apply the user-selected VOI; and return the
>>>>>>>>>  desired subset as the whole extent. At RequestData I read
>>>>>>>> the rest.
>>>>>>>>>  I just don't bother letting VTK/ParaView manage the
>>>>>>>> selection of
>>>>>>>>>  the VOI. This has worked for 2.6.1 through 3.2.1.
>>>>>>>>>
>>>>>>>>>  Kent
>>>>>>>>>  Pittsburgh Supercomputing Center
>>>>>>>>>
>>>>>>>>>  Mike Jackson wrote:
>>>>>>>>>> I can do that but I don't think it will work.
>>>>>>>>>> In paraview, I have managed to set an auto-generated UI
>>>>>>>> for the
>>>>>>>>>> VOI. Now, the user opens our file, RequestInformation is
>>>>>>>> run (I
>>>>>>>>>> can put some sane defaults for the VOI) and things are ok
>>>>>>>> so far.
>>>>>>>>>> Now the user clicks "Apply" and then SetVOI is called with
>>>>>>>> the
>>>>>>>>>> values from the GUI and then RequestData() is called after
>>>>>>>> that.
>>>>>>>>>> So where do I update WHOLE_EXTENT? Or just take the values
>>>>>>>> from
>>>>>>>>>> the VOI, create a vtkImageObject from that, and then just
>>>>>>>>>> ShallowCopy to the output object?
>>>>>>>>>> I'm a bit confused at this point. If our case is NOT a
>>>>>>>> standard
>>>>>>>>>> use case for the pipeline than I guess I can look more
>>>>>>>> seriously
>>>>>>>>>> into developing a full blown Plugin for our data file.
>>>>>>>>>> Mike
>>>>>>
>> _______________________________________________
>> \


More information about the ParaView mailing list