'**SUMMARY**
Creates a gaussian filter of given size.
**PARAMETERS**
* *dia*       -  int - diameter of Gaussian filter
- list - provide a list of three diameters to create
a 3 channel filter
* *size*      - size of the filter (width, height)
* *highpass*: -  bool
True: highpass filter
False: lowpass filter
**RETURNS**
DFT filter.
**EXAMPLE**
>>> gauss = DFT.createGaussianfilter(200, (512, 512),
highpass=True)
>>> gauss = DFT.createGaussianfilter([100, 120, 140], (512, 512),
highpass=False)
>>> img = Image(\'lenna\')
>>> gauss.applyFilter(img).show()'

@classmethod
def createGaussianFilter(self, dia=400, size=(64, 64), highpass=False):

    if isinstance(dia, list):
        if ((len(dia) != 3) and (len(dia) != 1)):
            warnings.warn('diameter    list    must    be    of    size    1    or    3')
            return None
        stackedfilter = DFT()
        for d in dia:
            stackedfilter = stackedfilter._stackFilters(self.createGaussianFilter(d, size, highpass))
        image = Image(stackedfilter._numpy)
        retVal = DFT(numpyarray=stackedfilter._numpy, image=image, dia=dia, channels=len(dia), size=size, type='Gaussian', frequency=stackedfilter._freqpass)
        return retVal
    freqpass = 'lowpass'
    (sz_x, sz_y) = size
    x0 = (sz_x / 2)
    y0 = (sz_y / 2)
    (X, Y) = np.meshgrid(np.arange(sz_x), np.arange(sz_y))
    D = np.sqrt((((X - x0) ** 2) + ((Y - y0) ** 2)))
    flt = (255 * np.exp(((-0.5) * ((D / dia) ** 2))))
    if highpass:
        flt = (255 - flt)
        freqpass = 'highpass'
    img = Image(flt)
    retVal = DFT(size=size, numpyarray=flt, image=img, dia=dia, type='Gaussian', frequency=freqpass)
    return retVal
