This skill should be used when the user asks to "analyze astronomical data", "process FITS files", "create sky maps", "work with cosmological simulations", "fit spectral data", "calculate redshifts",...
This skill provides specialized guidance for astrophysics analysis workflows, astronomical data processing, and scientific computing tasks common in astronomy research. It covers observational astronomy, cosmological analysis, and astrophysical simulations.
Handle standard astronomy file formats:
Perform common observational astronomy tasks:
Execute cosmological calculations:
Use these established astrophysics libraries:
# Core astronomy
import astropy
from astropy import units as u
from astropy.coordinates import SkyCoord
from astropy.io import fits
from astropy.cosmology import Planck18
# Visualization
import matplotlib.pyplot as plt
from astropy.visualization import ZScaleInterval, ImageNormalize
# Data analysis
import numpy as np
from scipy import optimize, interpolate
# Specialized tools
import photutils # Photometry
import specutils # Spectroscopy
import healpy # HEALPix sky maps
from astropy.io import fits
from astropy.wcs import WCS
# Open FITS file
with fits.open('image.fits') as hdul:
data = hdul[0].data
header = hdul[0].header
wcs = WCS(header)
from astropy.coordinates import SkyCoord
from astropy import units as u
# Create sky coordinate
coord = SkyCoord(ra=10.5*u.deg, dec=-30.2*u.deg, frame='icrs')
# Transform to galactic
galactic = coord.galactic
print(f"l={galactic.l:.2f}, b={galactic.b:.2f}")
from astropy.cosmology import Planck18
import astropy.units as u
z = 0.5 # redshift
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
d_C = Planck18.comoving_distance(z)
from specutils import Spectrum1D
from specutils.fitting import fit_lines
from astropy.modeling import models
# Create Gaussian model for emission line
g_init = models.Gaussian1D(amplitude=1*u.Jy, mean=6563*u.AA, stddev=2*u.AA)
g_fit = fit_lines(spectrum, g_init)
Always use astropy units for physical quantities:
from astropy import units as u
# Attach units
wavelength = 5000 * u.AA
flux = 1e-17 * u.erg / u.s / u.cm**2 / u.AA
# Convert between units
wavelength_nm = wavelength.to(u.nm)
Propagate uncertainties through calculations:
from astropy.nddata import StdDevUncertainty
from uncertainties import ufloat
# Using uncertainties package
flux = ufloat(1.5e-17, 0.2e-17) # value +/- error
Document analysis parameters and random seeds:
import numpy as np
np.random.seed(42) # For reproducible results
# Log parameters
params = {
'aperture_radius': 5.0, # arcsec
'background_annulus': (10.0, 15.0),
'sigma_clip': 3.0
}
Handle large datasets efficiently:
# Use memmap for large FITS files
with fits.open('large_image.fits', memmap=True) as hdul:
# Process in chunks
chunk = hdul[0].data[1000:2000, 1000:2000]
Access astronomical archives:
from astroquery.simbad import Simbad
from astroquery.vizier import Vizier
# Query Simbad for object
result = Simbad.query_object("M31")
# Query Vizier catalog
v = Vizier(columns=['*'])
catalogs = v.query_region("M31", radius=1*u.deg, catalog="II/246")
Create publication-quality figures:
import matplotlib.pyplot as plt
from astropy.visualization import ZScaleInterval, ImageNormalize
# Astronomical image display
norm = ImageNormalize(data, interval=ZScaleInterval())
plt.imshow(data, norm=norm, cmap='gray', origin='lower')
plt.colorbar(label='Counts')
Optimize computation for large datasets:
Activate this skill for tasks involving: