code: def calc_PSD(Signal, SampleFreq, NPerSegment=1000000, window="hann"):
      
      freqs, PSD = scipy.signal.welch(Signal, SampleFreq,
                                      window=window, nperseg=NPerSegment)
      PSD = PSD[freqs.argsort()]
      freqs.sort()
      return freqs, PSD
docs: Extracts the pulse spectral density (PSD) from the data.
  
      Parameters
      ----------
      Signal : array-like
          Array containing the signal to have the PSD calculated for
      SampleFreq : float
          Sample frequency of the signal array
      NPerSegment : int, optional
          Length of each segment used in scipy.welch
          default = 1000000
      window : str or tuple or array_like, optional
          Desired window to use. See get_window for a list of windows
          and required parameters. If window is array_like it will be
          used directly as the window and its length will be used for
          nperseg.
          default = "hann"
  
      Returns
      -------
      freqs : ndarray
              Array containing the frequencies at which the PSD has been
              calculated
      PSD : ndarray
              Array containing the value of the PSD at the corresponding
              frequency value in V**2/Hz