Usage Guide

Basic Usage

The main class in Casa Cube is the Cube class, which handles FITS data cubes. Here’s a basic example:

from casa_cube import Cube

# Load a FITS cube
cube = Cube('your_data.fits')

# Plot a specific channel
cube.plot(iv=10)  # Plot channel 10

# Plot a moment map
cube.plot(moment=0)  # Plot integrated intensity (M0)

# Plot with custom parameters
cube.plot(
    moment=1,  # Plot velocity field (M1)
    v0=0,      # Reference velocity
    cmap='RdBu_r',  # Color map
    colorbar=True
)

Working with Channel Maps

You can plot multiple channels at once using the plot_channels method:

# Plot 20 channels in a 5x4 grid
cube.plot_channels(n=20, ncols=5)

# Plot specific velocity range
cube.plot_channels(vmin=-10, vmax=10)

Calculating Moments

Casa Cube provides methods to calculate various moments:

# Calculate integrated intensity (M0)
m0 = cube.get_moment_map(moment=0)

# Calculate velocity field (M1)
m1 = cube.get_moment_map(moment=1, v0=0)

# Calculate velocity dispersion (M2)
m2 = cube.get_moment_map(moment=2)

# Calculate peak intensity (M8)
m8 = cube.get_moment_map(moment=8)

# Calculate peak velocity (M9)
m9 = cube.get_moment_map(moment=9)

Working with Line Profiles

You can analyze line profiles:

# Get the line profile
profile = cube.get_line_profile()

# Plot the line profile
cube.plot_line(x_axis="velocity")  # Plot vs velocity
cube.plot_line(x_axis="channel")   # Plot vs channel number
cube.plot_line(x_axis="freq")      # Plot vs frequency

High-Pass Filtering

You can apply high-pass filtering to remove large-scale structures:

# Apply high-pass filter with 5 arcsec scale
filtered_map = cube.get_high_pass_filter_map(
    moment=0,  # Apply to integrated intensity
    w0=5.0     # Filter scale in arcsec
)

Unit Conversions

Casa Cube can convert between different units:

# Convert from Jy/beam to brightness temperature
Tb = cube._Jybeam_to_Tb(flux_map)

# Convert with Rayleigh-Jeans approximation
Tb_rj = cube._Jybeam_to_Tb(flux_map, RJ=True)

Working with Beams

You can access and manipulate beam information:

# Get beam parameters
bmaj, bmin, bpa = cube.beam

# Get beam area
beam_area = cube._beam_area()  # in arcsec^2
beam_area_pix = cube._beam_area_pix()  # in pixels^2

Working with scattered light images

You can specify the pixelscale if it is missing in the header

obs = casa.Cube('HD169142_2015-05-03_Q_phi.fits',pixelscale=0.01225)
obs.plot()

Plotting with RA and Dec on axes instead of relative offsets from image centre

obs = casa.Cube('IMLup_continuum.fits')
ax = plt.subplot(1,1,1,projection=obs.wcs)
obs.plot(ax)

Advanced Features

  • Tapering: Apply Gaussian tapering to the data

  • Dynamic range: Control the dynamic range of plots

  • Custom color scales: Use different color scales for different types of data

  • Coordinate systems: Work with different coordinate systems (arcsec, au, pixels)

For more examples and advanced usage, see the Examples section.