text: #############################################################################
  ##
  ## Copyright (C) 2006-2007 University of Utah. All rights reserved.
  ##
  ## This file is part of VisTrails.
  ##
  ## This file may be used under the terms of the GNU General Public
  ## License version 2.0 as published by the Free Software Foundation
  ## and appearing in the file LICENSE.GPL included in the packaging of
  ## this file.  Please review the following to ensure GNU General Public
  ## Licensing requirements will be met:
  ## http://www.opensource.org/licenses/gpl-license.php
  ##
  ## If you are unsure which license is appropriate for your use (for
  ## instance, you are interested in developing a commercial derivative
  ## of VisTrails), please contact us at contact@vistrails.org.
  ##
  ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  ##
  ############################################################################
  import itk
  import core.modules
  from core.modules.vistrails_module import Module, ModuleError
  
  from ITK import *
  from Image import Image
  
  class GradientMagnitudeImageFilter(Module):
      my_namespace = 'Filter|Gradient'
  
      def compute(self):
          im = self.get_input("Input Image")
  
          #check for input PixelType
          if self.has_input("Input PixelType"):
              inPixelType = self.get_input("Input PixelType")
          else:
              inPixelType = im.getPixelType()
  
          #check for output PixelType
          if self.has_input("Output PixelType"):
              outPixelType = self.get_input("Output PixelType")
          else:
              outPixelType = inPixelType
  
          #check for dimension
          if self.has_input("Dimension"):
              dim = self.get_input("Dimension")
          else:
              dim = im.getDim()
  
          #set up filter
          inImgType = itk.Image[inPixelType._type, dim]
          outImgType = itk.Image[outPixelType._type, dim]
  
          self.filter_ = itk.GradientMagnitudeImageFilter[inImgType, outImgType].New(im.getImg())
          self.filter_.Update()
  
          #setup output image
          outIm = Image()
          outIm.setImg(self.filter_.GetOutput())
          outIm.setPixelType(outPixelType)
          outIm.setDim(dim)
  
          #set results
          self.set_output("Output Image", outIm)
          self.set_output("Filter", self)
          self.set_output("Output PixelType", outPixelType)
  
  
      @classmethod
      def register(cls, reg, basic):
          reg.add_module(cls, name="Gradient Magnitude Image Filter", namespace=cls.my_namespace)
  
          reg.add_input_port(cls, "Input Image", (Image, 'Input Image'))
          reg.add_input_port(cls, "Input PixelType", (PixelType, 'Input PixelType'),True)
          reg.add_input_port(cls, "Output PixelType", (PixelType, 'Output PixelType'),True)
          reg.add_input_port(cls, "Dimension", (basic.Integer, 'Dimension'),True)
  
  
          reg.add_output_port(cls, "Output Image", (Image, 'Output Image'))
          reg.add_output_port(cls, "Filter", (Filter, 'Filter'), True)
          reg.add_output_port(cls, "Output PixelType", (PixelType, 'Output PixelType'),True)
  