[Insight-developers] GenerateOutputInformation() vs UpdateOutputInformation()

Miller, James V (CRD) millerjv@crd.ge.com
Wed, 26 Sep 2001 11:31:56 -0400


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C146A0.60228030
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C146A0.60228030"


------_=_NextPart_001_01C146A0.60228030
Content-Type: text/plain;
	charset="iso-8859-1"

Will's be putting together the documentation of the pipeline mechanism and noticed that we were
overloading UpdateOutputInformation() in placed where we should be overriding
GenerateOutputInformation().
 
This is my fault as I wrote the first filter overriding UpdateOutputInformation() and told others
that is what they should do as well.  But people should have been overriding
GenerateOutputInformation(). (What we had worked but could cause unnecessary updates on filters).
 
I have gone through the code and changed all the places where it was needed. I updated the
documentation in ProcessObject.
 
To summarize, a filter may need to override the following methods:
 

*	GenerateData() or ThreadedGenerateData() - to perform some calculation
*	GenerateOutputInformation() - if the LargestPossibleRegion, Spacing, or Origin of the output
will be different from the input.
*	EnlargeOutputRequestedRegion() - if the filter needs to produce more output than was
originally requested
*	GenerateInputRequestedRegion() - if the filter needs more or less data than it will produce
*	GenerateOutputRequestedRegion() - if the filter has multiple outputs and each produces a
different amount of data.

If a ThreadedGenerateData() method is provided, the filter could also override
BeforeThreadedGenerateData() and AfterThreadedGenerateData() if single threaded execution is needed
at the beginning or end of the computations.
 
I apologize for the confusion.
 
Jim
 


Jim Miller 
_____________________________________
Visualization & Computer Vision
GE Corporate Research & Development
Bldg. KW, Room C218B
P.O. Box 8, Schenectady NY 12301

millerjv@crd.ge.com < mailto:millerjv@crd.ge.com <mailto:millerjv@crd.ge.com> >
(518) 387-4005, Dial Comm: 8*833-4005, 
Cell: (518) 505-7065, Fax: (518) 387-6981 


 

------_=_NextPart_001_01C146A0.60228030
Content-Type: text/html;
	charset="iso-8859-1"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 5.50.4616.200" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=017302115-26092001><FONT size=2>Will's be putting together the 
documentation of the pipeline mechanism and noticed that we were overloading 
UpdateOutputInformation() in placed where we should be overriding 
GenerateOutputInformation().</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2>This is my fault as I wrote the 
first filter overriding UpdateOutputInformation() and told others that is what 
they should do as well.&nbsp; But people should have been overriding 
GenerateOutputInformation(). (What we had worked but could cause unnecessary 
updates on filters).</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2>I have gone through the code 
and changed all the places where it was needed. I updated the documentation in 
ProcessObject.</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2>To summarize, a filter may need 
to override the following methods:</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<UL>
  <LI><SPAN class=017302115-26092001><FONT size=2>GenerateData() or 
  ThreadedGenerateData() - to perform some calculation</FONT></SPAN></LI>
  <LI><SPAN class=017302115-26092001></SPAN><SPAN class=017302115-26092001><FONT 
  size=2>GenerateOutputInformation()&nbsp;- if the LargestPossibleRegion, 
  Spacing, or Origin of the output will be different from the 
  input.</FONT></SPAN></LI>
  <LI><SPAN class=017302115-26092001><FONT size=2>EnlargeOutputRequestedRegion() 
  - if the filter needs to produce more output than was originally 
  requested</FONT></SPAN></LI>
  <LI><SPAN class=017302115-26092001><FONT size=2>GenerateInputRequestedRegion() 
  - if the filter needs more or less data than it will 
produce</FONT></SPAN></LI>
  <LI><SPAN class=017302115-26092001><FONT 
  size=2>GenerateOutputRequestedRegion() - if the filter has multiple outputs 
  and each produces a different amount of data.</FONT></SPAN></LI></UL>
<DIV><SPAN class=017302115-26092001><FONT size=2>If a ThreadedGenerateData() 
method is provided, the filter could also override BeforeThreadedGenerateData() 
and AfterThreadedGenerateData() if single threaded execution is needed at the 
beginning or end of the computations.</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2>I apologize for the 
confusion.</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2>Jim</FONT></SPAN></DIV>
<DIV><SPAN class=017302115-26092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><BR></DIV>
<P><B><FONT face="Comic Sans MS" color=#000080>Jim Miller</FONT></B> 
<BR><B><I><FONT face=Arial color=#ff0000 
size=2>_____________________________________</FONT></I></B><I></I><BR><I></I><I><FONT 
face=Arial color=#000000 size=1>Visualization &amp; Computer Vision<BR>GE 
Corporate Research &amp; Development<BR>Bldg. KW, Room C218B<BR>P.O. Box 8, 
Schenectady NY 12301<BR><BR></FONT><U><FONT face=Arial color=#0000ff 
size=1>millerjv@crd.ge.com &lt;<A 
href="mailto:millerjv@crd.ge.com">mailto:millerjv@crd.ge.com</A>&gt;</FONT></U></I><BR><I><FONT 
face=Arial color=#000000 size=1>(518) 387-4005, Dial Comm: 8*833-4005, 
</FONT></I><BR><I><FONT face=Arial color=#000000 size=1>Cell: (518) 505-7065, 
Fax: (518) 387-6981</FONT></I> </P><BR>
<DIV>&nbsp;</DIV></BODY></HTML>

------_=_NextPart_001_01C146A0.60228030--

------_=_NextPart_000_01C146A0.60228030
Content-Type: application/octet-stream;
	name="Miller, James V (CRD).vcf"
Content-Disposition: attachment;
	filename="Miller, James V (CRD).vcf"

BEGIN:VCARD
VERSION:2.1
N:Miller;James
FN:Miller, James V (CRD)
ORG:CRD;ESL
TITLE:Computer Scientist
TEL;WORK;VOICE:*833-4005
TEL;WORK;VOICE:1 518 387-4005
ADR;WORK:;KW-C218B;P.O. Box 8;Schenectady;New York;12301;USA
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:KW-C218B=0D=0AP.O. Box 8=0D=0ASchenectady, New York 12301=0D=0AUSA
EMAIL;PREF;INTERNET:millerjv@crd.ge.com
REV:20010420T140329Z
END:VCARD

------_=_NextPart_000_01C146A0.60228030--