def NumericPsdLoadXY(self, FilePath, xScaling=1, yScaling=1, xIsSpatialFreq=True):
    ' @TODO: specificare formati e tipi di file\n\n\t\tParameters\n\t\t----------------------------\n\t\txIsSpatialFreq : bool\n\t\t\t\t\t\ttrue If the first column (Read_x_values) contains spatial\n\t\t\t\t\t\tfrequencies. False if it contains lenghts. Default = True\n\t\txScaling, yScaling: floats\n\t\t\t\t\t\tRead_x_values => Read_x_values * xScaling\n\n\t\t\t\t\t\tRead_y_values => Read_y_values * yScaling\n\n\t\t\t\t\t\tSometimes, properly setting the x and y scaling values may be confusing (although just matter of high-school considerations). On this purpose, the property .RoughnessMaker.ProfileScaling property can be used also..ProfileScaling is the scale factor that acts on the output of MakeProfile() function only.\n\n\t\tremarks\n\t\t\t\t\t\t--------\n\t\t\t\t\t\tpippo\n\n\t\t'
    try:
        self._IsNumericPsdInFreq = xIsSpatialFreq
        s = np.loadtxt(FilePath)
        x = s[:, 0]
        y = s[:, 1]
        x = (x * xScaling)
        y = (y * yScaling)
        if (xIsSpatialFreq == False):
            f = (1 / x)
        else:
            f = x
        i = np.argsort(f)
        f = f[i]
        y = y[i]
        self.PsdCutoffLowHigh = [np.amin, np.amax(f)]
        self.PsdType = PsdFuns.Interp
        self.PsdParams = [f, y]
        self.NumericPsdSetXY(f, y)
    except:
        pass

    def Generate(self, N=None, dx=None, CutoffLowHigh=[None, None]):
        '\n\t\t\tParameters\n\t\t\t\tN: # of output samples\n\t\t\t\tdx: step of the x axis\n\t\t\tNote: generates an evenly spaced array\n\t\t\t'
        L = (dx * N)
        df = (1 / L)
        (fPsd, yPsd) = self.PsdEval(((N // 2) + 1), df=df, CutoffLowHigh=CutoffLowHigh)
        h = Psd2Noise_1d(yPsd, Semiaxis=True)
        return h
@TODO: specificare formati e tipi di file

Parameters
----------------------------
xIsSpatialFreq : bool
                                true If the first column (Read_x_values) contains spatial
                                frequencies. False if it contains lenghts. Default = True
xScaling, yScaling: floats
                                Read_x_values => Read_x_values * xScaling

                                Read_y_values => Read_y_values * yScaling

                                Sometimes, properly setting the x and y scaling values may be confusing (although just matter of high-school considerations). On this purpose, the property .RoughnessMaker.ProfileScaling property can be used also..ProfileScaling is the scale factor that acts on the output of MakeProfile() function only.

remarks
                                --------
                                pippo
def NumericPsdLoadXY(self, FilePath, xScaling=1, yScaling=1, xIsSpatialFreq=True):
    ' @TODO: specificare formati e tipi di file\n\n\t\tParameters\n\t\t----------------------------\n\t\txIsSpatialFreq : bool\n\t\t\t\t\t\ttrue If the first column (Read_x_values) contains spatial\n\t\t\t\t\t\tfrequencies. False if it contains lenghts. Default = True\n\t\txScaling, yScaling: floats\n\t\t\t\t\t\tRead_x_values => Read_x_values * xScaling\n\n\t\t\t\t\t\tRead_y_values => Read_y_values * yScaling\n\n\t\t\t\t\t\tSometimes, properly setting the x and y scaling values may be confusing (although just matter of high-school considerations). On this purpose, the property .RoughnessMaker.ProfileScaling property can be used also..ProfileScaling is the scale factor that acts on the output of MakeProfile() function only.\n\n\t\tremarks\n\t\t\t\t\t\t--------\n\t\t\t\t\t\tpippo\n\n\t\t'
    try:
        self._IsNumericPsdInFreq = xIsSpatialFreq
        s = np.loadtxt(FilePath)
        x = s[:, 0]
        y = s[:, 1]
        x = (x * xScaling)
        y = (y * yScaling)
        if (xIsSpatialFreq == False):
            f = (1 / x)
        else:
            f = x
        i = np.argsort(f)
        f = f[i]
        y = y[i]
        self.PsdCutoffLowHigh = [np.amin, np.amax(f)]
        self.PsdType = PsdFuns.Interp
        self.PsdParams = [f, y]
        self.NumericPsdSetXY(f, y)
    except:
        pass

    def Generate(self, N=None, dx=None, CutoffLowHigh=[None, None]):
        '\n\t\t\tParameters\n\t\t\t\tN: # of output samples\n\t\t\t\tdx: step of the x axis\n\t\t\tNote: generates an evenly spaced array\n\t\t\t'
        L = (dx * N)
        df = (1 / L)
        (fPsd, yPsd) = self.PsdEval(((N // 2) + 1), df=df, CutoffLowHigh=CutoffLowHigh)
        h = Psd2Noise_1d(yPsd, Semiaxis=True)
        return h