    def __print_forecast_info(self):
        """
        Print information about the forecast setup, including inputs, methods, and parameters.
        """
        print("STEPS blending")
        print("==============")
        print("")

        print("Inputs")
        print("------")
        print(f"forecast issue time:         {self.__issuetime.isoformat()}")
        print(
            f"input dimensions:            {self.__precip.shape[1]}x{self.__precip.shape[2]}"
        )
        if self.__config.kmperpixel is not None:
            print(f"km/pixel:                    {self.__config.kmperpixel}")
        if self.__config.timestep is not None:
            print(f"time step:                   {self.__config.timestep} minutes")
        print("")

        print("NWP and blending inputs")
        print("-----------------------")
        print(f"number of (NWP) models:      {self.__precip_models.shape[0]}")
        print(f"blend (NWP) model members:   {self.__config.blend_nwp_members}")
        print(
            f"decompose (NWP) models:      {'yes' if self.__precip_models.ndim == 4 else 'no'}"
        )
        print("")

        print("Methods")
        print("-------")
        print(f"extrapolation:               {self.__config.extrapolation_method}")
        print(f"bandpass filter:             {self.__config.bandpass_filter_method}")
        print(f"decomposition:               {self.__config.decomposition_method}")
        print(f"noise generator:             {self.__config.noise_method}")
        print(
            f"noise adjustment:            {'yes' if self.__config.noise_stddev_adj else 'no'}"
        )
        print(
            f"velocity perturbator:        {self.__config.velocity_perturbation_method}"
        )
        print(f"blending weights method:     {self.__config.weights_method}")
        print(
            f"conditional statistics:      {'yes' if self.__config.conditional else 'no'}"
        )
        print(f"precip. mask method:         {self.__config.mask_method}")
        print(f"probability matching:        {self.__config.probmatching_method}")
        print(f"FFT method:                  {self.__config.fft_method}")
        print(f"domain:                      {self.__config.domain}")
        print("")

        print("Parameters")
        print("----------")
        if isinstance(self.__timesteps, int):
            print(f"number of time steps:        {self.__timesteps}")
        else:
            print(f"time steps:                  {self.__timesteps}")
        print(f"ensemble size:               {self.__config.n_ens_members}")
        print(f"parallel threads:            {self.__config.num_workers}")
        print(f"number of cascade levels:    {self.__config.n_cascade_levels}")
        print(f"order of the AR(p) model:    {self.__config.ar_order}")
        if self.__config.velocity_perturbation_method == "bps":
            self.__params.velocity_perturbations_parallel = (
                self.__params.velocity_perturbation_kwargs.get(
                    "p_par", noise.motion.get_default_params_bps_par()
                )
            )
            self.__params.velocity_perturbations_perpendicular = (
                self.__params.velocity_perturbation_kwargs.get(
                    "p_perp", noise.motion.get_default_params_bps_perp()
                )
            )
            print(
                f"vel. pert., parallel:        {self.__params.velocity_perturbations_parallel[0]},{self.__params.velocity_perturbations_parallel[1]},{self.__params.velocity_perturbations_parallel[2]}"
            )
            print(
                f"vel. pert., perpendicular:   {self.__params.velocity_perturbations_perpendicular[0]},{self.__params.velocity_perturbations_perpendicular[1]},{self.__params.velocity_perturbations_perpendicular[2]}"
            )
        else:
            (
                self.__params.velocity_perturbations_parallel,
                self.__params.velocity_perturbations_perpendicular,
            ) = (None, None)

        if self.__config.conditional or self.__config.mask_method is not None:
            print(f"precip. intensity threshold: {self.__config.precip_threshold}")
        print(f"no-rain fraction threshold for radar: {self.__config.norain_threshold}")
        print("")
Print information about the forecast setup, including inputs, methods, and parameters.
pysteps/blending/steps.py