diff options
Diffstat (limited to 'astro/calc_psd.py')
| -rwxr-xr-x | astro/calc_psd.py | 34 | 
1 files changed, 18 insertions, 16 deletions
| diff --git a/astro/calc_psd.py b/astro/calc_psd.py index 6f0c2f6..2d4f4fe 100755 --- a/astro/calc_psd.py +++ b/astro/calc_psd.py @@ -25,17 +25,29 @@ from functools import lru_cache  import numpy as np  from astropy.io import fits -import matplotlib.pyplot as plt +import matplotlib +import matplotlib.style  from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas  from matplotlib.figure import Figure -plt.style.use("ggplot") +# Matplotlib settings +matplotlib.style.use("ggplot") +for k, v in [("font.family",       "monospace"), +             ("xtick.major.size",  7.0), +             ("xtick.major.width", 2.0), +             ("xtick.minor.size",  4.0), +             ("xtick.minor.width", 1.5), +             ("ytick.major.size",  7.0), +             ("ytick.major.width", 2.0), +             ("ytick.minor.size",  4.0), +             ("ytick.minor.width", 1.5)]: +    matplotlib.rcParams[k] = v  class PSD:      """ -    Computes the 2D power spectral density and the azimuthally averaged power -    spectral density (i.e., 1D radial power spectrum). +    Calculate the 2D power spectral density and then apply azimuthal +    averaging to obtain the 1D radial power spectrum.      Parameters      ---------- @@ -124,9 +136,8 @@ class PSD:          """          print("Calculating 2D power spectral density ... ", end="", flush=True)          rows, cols = self.shape -        # Compute the power spectral density (i.e., power spectrum)          imgf = np.fft.fftshift(np.fft.fft2(self.image)) -        # Normalization w.r.t. image size +        # NOTE: normalize w.r.t. image size          norm = rows * cols * self.pixel[0]**2          self.psd2d = (np.abs(imgf) ** 2) / norm          print("DONE", flush=True) @@ -134,7 +145,7 @@ class PSD:      def calc_psd(self):          """ -        Azimuthally average the above 2D power spectral density to generate +        Azimuthally average the above 2D power spectral density to obtain          the 1D radial power spectral density.          Returns @@ -212,15 +223,6 @@ class PSD:          phi = np.arctan2(y, x)          return (rho, phi) -    @staticmethod -    def pol2cart(rho, phi): -        """ -        Convert polar coordinates to Cartesian coordinates. -        """ -        x = rho * np.cos(phi) -        y = rho * np.sin(phi) -        return (x, y) -      def save(self, outfile):          data = np.column_stack((self.frequencies, self.psd1d,                                  self.psd1d_errl, self.psd1d_erru)) | 
