[Paraview] What part of the pipeline is producing the request for
UPDATE_EXTENT?
Mike Jackson
imikejackson at gmail.com
Wed Feb 13 12:22:49 EST 2008
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
>>
>>
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview
>
>
--
Mike Jackson Senior Research Engineer
Innovative Management & Technology Services
More information about the ParaView
mailing list