<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _downscaling(self, hr_array, meta_info, interp='linear', smooth=True):
 """ Downscale existing array to resolution requested by cloud detector :param hr_array: High-resolution data array to be downscaled :param meta_info: Meta-info of eopatch :param interp: Interpolation method to be used in downscaling. Default is `'linear'` :param smooth: Apply Gaussian smoothing in spatial directions before downscaling. Sigma of kernel is estimated by rescaling factor. Default is `True` :return: Down-scaled array """

        # Run cloud mask on full resolution
        if (self.cm_size_y is None) and (self.cm_size_x is None):
            return hr_array, None

        # Rescaling factor in spatial (height, width) dimensions
        rescale = self._get_rescale_factors(hr_array.shape[1:3], meta_info)

        if smooth:
            sigma = (0,) + tuple(int(1/x) for x in rescale) + (0,)
            hr_array = scipy.ndimage.gaussian_filter(hr_array, sigma)

        lr_array = scipy.ndimage.interpolation.zoom(hr_array, (1.0,) + rescale + (1.0,),
                                                    order=INTERP_METHODS.index(interp), mode='nearest')

        return lr_array, rescale