Loading...
Loading...
Compare original and translation side by side
scripts/fits_info.pypython scripts/fits_info.py observation.fits
python scripts/fits_info.py observation.fits --detailed
python scripts/fits_info.py observation.fits --ext 1from astropy.io import fitsscripts/fits_info.pypython scripts/fits_info.py observation.fits
python scripts/fits_info.py observation.fits --detailed
python scripts/fits_info.py observation.fits --ext 1from astropy.io import fits
**Multi-extension FITS**:
```python
from astropy.io import fits
**多扩展FITS文件**:
```python
from astropy.io import fits
**Binary tables**:
```python
from astropy.io import fits
**二进制表**:
```python
from astropy.io import fitsundefinedundefinedscripts/coord_convert.pypython scripts/coord_convert.py 10.68 41.27 --from icrs --to galactic
python scripts/coord_convert.py --file coords.txt --from icrs --to galactic --output sexagesimalfrom astropy.coordinates import SkyCoord
import astropy.units as uscripts/coord_convert.pypython scripts/coord_convert.py 10.68 41.27 --from icrs --to galactic
python scripts/coord_convert.py --file coords.txt --from icrs --to galactic --output sexagesimalfrom astropy.coordinates import SkyCoord
import astropy.units as u
**Working with coordinate arrays**:
```python
import numpy as np
from astropy.coordinates import SkyCoord
import astropy.units as u
**坐标数组操作**:
```python
import numpy as np
from astropy.coordinates import SkyCoord
import astropy.units as u
**Catalog matching**:
```python
from astropy.coordinates import SkyCoord
import astropy.units as u
catalog1 = SkyCoord(ra=[10, 11, 12]*u.degree, dec=[40, 41, 42]*u.degree)
catalog2 = SkyCoord(ra=[10.01, 11.02, 13]*u.degree, dec=[40.01, 41.01, 43]*u.degree)
**星表匹配**:
```python
from astropy.coordinates import SkyCoord
import astropy.units as u
catalog1 = SkyCoord(ra=[10, 11, 12]*u.degree, dec=[40, 41, 42]*u.degree)
catalog2 = SkyCoord(ra=[10.01, 11.02, 13]*u.degree, dec=[40.01, 41.01, 43]*u.degree)
**Horizontal coordinates (Alt/Az)**:
```python
from astropy.coordinates import SkyCoord, EarthLocation, AltAz
from astropy.time import Time
import astropy.units as u
location = EarthLocation(lat=40*u.deg, lon=-70*u.deg, height=300*u.m)
obstime = Time('2023-01-01 03:00:00')
target = SkyCoord(ra=10*u.degree, dec=40*u.degree, frame='icrs')
altaz_frame = AltAz(obstime=obstime, location=location)
target_altaz = target.transform_to(altaz_frame)
print(f"Alt: {target_altaz.alt.deg:.2f}°, Az: {target_altaz.az.deg:.2f}°")icrsfk5fk4galacticsupergalacticaltazgcrscirsitrsBarycentricMeanEclipticHeliocentricMeanEclipticGeocentricMeanEcliptic
**地平坐标(高度/方位角)**:
```python
from astropy.coordinates import SkyCoord, EarthLocation, AltAz
from astropy.time import Time
import astropy.units as u
location = EarthLocation(lat=40*u.deg, lon=-70*u.deg, height=300*u.m)
obstime = Time('2023-01-01 03:00:00')
target = SkyCoord(ra=10*u.degree, dec=40*u.degree, frame='icrs')
altaz_frame = AltAz(obstime=obstime, location=location)
target_altaz = target.transform_to(altaz_frame)
print(f"高度: {target_altaz.alt.deg:.2f}°, 方位角: {target_altaz.az.deg:.2f}°")icrsfk5fk4galacticsupergalacticaltazgcrscirsitrsBarycentricMeanEclipticHeliocentricMeanEclipticGeocentricMeanEclipticimport astropy.units as uimport astropy.units as u
**Working with arrays**:
```python
import numpy as np
import astropy.units as u
wavelengths = np.array([400, 500, 600]) * u.nm
frequencies = wavelengths.to(u.THz, equivalencies=u.spectral())
fluxes = np.array([1.2, 2.3, 1.8]) * u.Jy
luminosities = 4 * np.pi * (10*u.pc)**2 * fluxesu.spectral()u.doppler_optical(rest)u.doppler_radio(rest)u.doppler_relativistic(rest)u.temperature()u.brightness_temperature(freq)from astropy import constants as const
print(const.c) # Speed of light
print(const.G) # Gravitational constant
print(const.M_sun) # Solar mass
print(const.R_sun) # Solar radius
print(const.L_sun) # Solar luminosity<<undefined
**数组操作**:
```python
import numpy as np
import astropy.units as u
wavelengths = np.array([400, 500, 600]) * u.nm
frequencies = wavelengths.to(u.THz, equivalencies=u.spectral())
fluxes = np.array([1.2, 2.3, 1.8]) * u.Jy
luminosities = 4 * np.pi * (10*u.pc)**2 * fluxesu.spectral()u.doppler_optical(rest)u.doppler_radio(rest)u.doppler_relativistic(rest)u.temperature()u.brightness_temperature(freq)from astropy import constants as const
print(const.c) # 光速
print(const.G) # 引力常数
print(const.M_sun) # 太阳质量
print(const.R_sun) # 太阳半径
print(const.L_sun) # 太阳光度<<undefinedundefinedundefinedfrom astropy.time import Time
import astropy.units as ufrom astropy.time import Time
import astropy.units as u
**Time arithmetic**:
```python
from astropy.time import Time, TimeDelta
import astropy.units as u
t1 = Time('2023-01-01T00:00:00')
dt = TimeDelta(1*u.day)
t2 = t1 + dt
diff = t2 - t1
print(diff.to(u.hour))
**时间算术运算**:
```python
from astropy.time import Time, TimeDelta
import astropy.units as u
t1 = Time('2023-01-01T00:00:00')
dt = TimeDelta(1*u.day)
t2 = t1 + dt
diff = t2 - t1
print(diff.to(u.hour))
**Astronomical time calculations**:
```python
from astropy.time import Time
from astropy.coordinates import SkyCoord, EarthLocation
import astropy.units as u
location = EarthLocation(lat=40*u.deg, lon=-70*u.deg)
t = Time('2023-01-01T00:00:00')
**天文时间计算**:
```python
from astropy.time import Time
from astropy.coordinates import SkyCoord, EarthLocation
import astropy.units as u
location = EarthLocation(lat=40*u.deg, lon=-70*u.deg)
t = Time('2023-01-01T00:00:00')
**Available time scales**:
- `utc` - Coordinated Universal Time
- `tai` - International Atomic Time
- `tt` - Terrestrial Time
- `tcb`, `tcg` - Barycentric/Geocentric Coordinate Time
- `tdb` - Barycentric Dynamical Time
- `ut1` - Universal Time
**可用时间尺度**:
- `utc` - 协调世界时
- `tai` - 国际原子时
- `tt` - 地球时
- `tcb`, `tcg` - 质心/地心坐标时
- `tdb` - 质心力学时
- `ut1` - 世界时from astropy.table import Table
import astropy.units as ufrom astropy.table import Table
import astropy.units as u
**Table I/O**:
```python
from astropy.table import Table
**数据表读写**:
```python
from astropy.table import Table
**Advanced operations**:
```python
from astropy.table import Table, join, vstack, hstack
**高级操作**:
```python
from astropy.table import Table, join, vstack, hstack
**Tables with astronomical objects**:
```python
from astropy.table import Table
from astropy.coordinates import SkyCoord
from astropy.time import Time
import astropy.units as u
coords = SkyCoord(ra=[10, 11, 12]*u.deg, dec=[40, 41, 42]*u.deg)
times = Time(['2023-01-01', '2023-01-02', '2023-01-03'])
t = Table([coords, times], names=['coords', 'obstime'])
print(t['coords'][0].ra) # Access coordinate properties
**包含天文对象的表**:
```python
from astropy.table import Table
from astropy.coordinates import SkyCoord
from astropy.time import Time
import astropy.units as u
coords = SkyCoord(ra=[10, 11, 12]*u.deg, dec=[40, 41, 42]*u.deg)
times = Time(['2023-01-01', '2023-01-02', '2023-01-03'])
t = Table([coords, times], names=['coords', 'obstime'])
print(t['coords'][0].ra) # 访问坐标属性python scripts/cosmo_calc.py 0.5 1.0 1.5
python scripts/cosmo_calc.py --range 0 3 0.5 --cosmology Planck18
python scripts/cosmo_calc.py 0.5 --verbose
python scripts/cosmo_calc.py --convert 1000 --from luminosity_distancefrom astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
cosmo = Planck18python scripts/cosmo_calc.py 0.5 1.0 1.5
python scripts/cosmo_calc.py --range 0 3 0.5 --cosmology Planck18
python scripts/cosmo_calc.py 0.5 --verbose
python scripts/cosmo_calc.py --convert 1000 --from luminosity_distancefrom astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
cosmo = Planck18
**Convert observables**:
```python
from astropy.cosmology import Planck18
import astropy.units as u
cosmo = Planck18
z = 1.5
**可观测值转换**:
```python
from astropy.cosmology import Planck18
import astropy.units as u
cosmo = Planck18
z = 1.5
**Available cosmologies**:
- `Planck18`, `Planck15`, `Planck13` - Planck satellite parameters
- `WMAP9`, `WMAP7`, `WMAP5` - WMAP satellite parameters
- Custom: `FlatLambdaCDM(H0=70*u.km/u.s/u.Mpc, Om0=0.3)`
**可用宇宙学模型**:
- `Planck18`, `Planck15`, `Planck13` - 普朗克卫星参数
- `WMAP9`, `WMAP7`, `WMAP5` - WMAP卫星参数
- 自定义: `FlatLambdaCDM(H0=70*u.km/u.s/u.Mpc, Om0=0.3)`from astropy.modeling import models, fitting
import numpy as npfrom astropy.modeling import models, fitting
import numpy as np
**Common 1D models**:
- `Gaussian1D` - Gaussian profile
- `Lorentz1D` - Lorentzian profile
- `Voigt1D` - Voigt profile
- `Moffat1D` - Moffat profile (PSF modeling)
- `Polynomial1D` - Polynomial
- `PowerLaw1D` - Power law
- `BlackBody` - Blackbody spectrum
**Common 2D models**:
- `Gaussian2D` - 2D Gaussian
- `Moffat2D` - 2D Moffat (stellar PSF)
- `AiryDisk2D` - Airy disk (diffraction pattern)
- `Disk2D` - Circular disk
**Fitting with constraints**:
```python
from astropy.modeling import models, fitting
g = models.Gaussian1D(amplitude=10, mean=5, stddev=1)
**常见一维模型**:
- `Gaussian1D` - 高斯轮廓
- `Lorentz1D` - 洛伦兹轮廓
- `Voigt1D` - 佛克脱轮廓
- `Moffat1D` - 莫菲特轮廓(PSF建模)
- `Polynomial1D` - 多项式
- `PowerLaw1D` - 幂律
- `BlackBody` - 黑体谱
**常见二维模型**:
- `Gaussian2D` - 二维高斯
- `Moffat2D` - 二维莫菲特(恒星PSF)
- `AiryDisk2D` - 艾里斑(衍射图案)
- `Disk2D` - 圆盘
**带约束的拟合**:
```python
from astropy.modeling import models, fitting
g = models.Gaussian1D(amplitude=10, mean=5, stddev=1)
**Available fitters**:
- `LinearLSQFitter` - Linear least squares (fast, for linear models)
- `LevMarLSQFitter` - Levenberg-Marquardt (most common)
- `SimplexLSQFitter` - Downhill simplex
- `SLSQPLSQFitter` - Sequential Least Squares with constraints
**可用拟合器**:
- `LinearLSQFitter` - 线性最小二乘(快速,适用于线性模型)
- `LevMarLSQFitter` - 列文伯格-马夸尔特法(最常用)
- `SimplexLSQFitter` - 下山单纯形法
- `SLSQPLSQFitter` - 带约束的序列最小二乘法from astropy.io import fits
from astropy.wcs import WCSfrom astropy.io import fits
from astropy.wcs import WCS
**Plotting with WCS**:
```python
from astropy.io import fits
from astropy.wcs import WCS
from astropy.visualization import ImageNormalize, LogStretch, PercentileInterval
import matplotlib.pyplot as plt
hdu = fits.open('image.fits')[0]
wcs = WCS(hdu.header)
data = hdu.data
**结合WCS绘图**:
```python
from astropy.io import fits
from astropy.wcs import WCS
from astropy.visualization import ImageNormalize, LogStretch, PercentileInterval
import matplotlib.pyplot as plt
hdu = fits.open('image.fits')[0]
wcs = WCS(hdu.header)
data = hdu.dataundefinedundefinedfrom astropy.stats import sigma_clip, sigma_clipped_statsfrom astropy.stats import sigma_clip, sigma_clipped_stats
**Other statistical functions**:
```python
from astropy.stats import mad_std, biweight_location, biweight_scale
**其他统计函数**:
```python
from astropy.stats import mad_std, biweight_location, biweight_scaleundefinedundefinedfrom astropy.visualization import (ImageNormalize, MinMaxInterval,
PercentileInterval, ZScaleInterval,
SqrtStretch, LogStretch, PowerStretch,
AsinhStretch)
import matplotlib.pyplot as pltfrom astropy.visualization import (ImageNormalize, MinMaxInterval,
PercentileInterval, ZScaleInterval,
SqrtStretch, LogStretch, PowerStretch,
AsinhStretch)
import matplotlib.pyplot as plt
**Available intervals** (determine min/max):
- `MinMaxInterval()` - Use actual min/max
- `PercentileInterval(percentile)` - Clip to percentile (e.g., 99%)
- `ZScaleInterval()` - IRAF's zscale algorithm
- `ManualInterval(vmin, vmax)` - Specify manually
**Available stretches** (nonlinear scaling):
- `LinearStretch()` - Linear (default)
- `SqrtStretch()` - Square root (common for images)
- `LogStretch()` - Logarithmic (for high dynamic range)
- `PowerStretch(power)` - Power law
- `AsinhStretch()` - Arcsinh (good for wide range)
**可用区间(确定最小值/最大值)**:
- `MinMaxInterval()` - 使用实际的最小/最大值
- `PercentileInterval(percentile)` - 裁剪到指定百分位(如99%)
- `ZScaleInterval()` - IRAF的zscale算法
- `ManualInterval(vmin, vmax)` - 手动指定
**可用拉伸方式(非线性缩放)**:
- `LinearStretch()` - 线性(默认)
- `SqrtStretch()` - 平方根(图像常用)
- `LogStretch()` - 对数(适用于高动态范围)
- `PowerStretch(power)` - 幂律
- `AsinhStretch()` - 反双曲正弦(适用于宽范围数据)fits_info.pypython scripts/fits_info.py observation.fits
python scripts/fits_info.py observation.fits --detailed
python scripts/fits_info.py observation.fits --ext 1coord_convert.pypython scripts/coord_convert.py 10.68 41.27 --from icrs --to galactic
python scripts/coord_convert.py --file coords.txt --from icrs --to galacticcosmo_calc.pypython scripts/cosmo_calc.py 0.5 1.0 1.5
python scripts/cosmo_calc.py --range 0 3 0.5 --cosmology Planck18fits_info.pypython scripts/fits_info.py observation.fits
python scripts/fits_info.py observation.fits --detailed
python scripts/fits_info.py observation.fits --ext 1coord_convert.pypython scripts/coord_convert.py 10.68 41.27 --from icrs --to galactic
python scripts/coord_convert.py --file coords.txt --from icrs --to galacticcosmo_calc.pypython scripts/cosmo_calc.py 0.5 1.0 1.5
python scripts/cosmo_calc.py --range 0 3 0.5 --cosmology Planck18module_overview.mdcommon_workflows.mdmodule_overview.mdcommon_workflows.mdwith fits.open('file.fits') as hdul:
# Work with filereferences/module_overview.mdreferences/common_workflows.mdwith fits.open('file.fits') as hdul:
# 处理文件references/module_overview.mdreferences/common_workflows.mdfrom astropy.io import fits
from astropy.stats import sigma_clipped_statsfrom astropy.io import fits
from astropy.stats import sigma_clipped_stats# Process
mean, median, std = sigma_clipped_stats(data, sigma=3)
processed = (data - median) / std
# Write
fits.writeto('output.fits', processed, header, overwrite=True)undefined# 处理
mean, median, std = sigma_clipped_stats(data, sigma=3)
processed = (data - median) / std
# 写入
fits.writeto('output.fits', processed, header, overwrite=True)undefinedfrom astropy.coordinates import SkyCoord
from astropy.table import Table
import astropy.units as ufrom astropy.coordinates import SkyCoord
from astropy.table import Table
import astropy.units as uundefinedundefinedfrom astropy.time import Time
from astropy.timeseries import TimeSeries
import astropy.units as ufrom astropy.time import Time
from astropy.timeseries import TimeSeries
import astropy.units as uundefinedundefinedfrom astropy.io import fits
from astropy.wcs import WCS
from astropy.visualization import ImageNormalize, SqrtStretch, PercentileInterval
import matplotlib.pyplot as plt
hdu = fits.open('image.fits')[0]
wcs = WCS(hdu.header)
data = hdu.data
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection=wcs)
norm = ImageNormalize(data, interval=PercentileInterval(99),
stretch=SqrtStretch())
im = ax.imshow(data, norm=norm, origin='lower', cmap='viridis')
ax.set_xlabel('RA')
ax.set_ylabel('Dec')
ax.coords.grid(color='white', alpha=0.5, linestyle='solid')
plt.colorbar(im, ax=ax)from astropy.io import fits
from astropy.wcs import WCS
from astropy.visualization import ImageNormalize, SqrtStretch, PercentileInterval
import matplotlib.pyplot as plt
hdu = fits.open('image.fits')[0]
wcs = WCS(hdu.header)
data = hdu.data
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection=wcs)
norm = ImageNormalize(data, interval=PercentileInterval(99),
stretch=SqrtStretch())
im = ax.imshow(data, norm=norm, origin='lower', cmap='viridis')
ax.set_xlabel('赤经')
ax.set_ylabel('赤纬')
ax.coords.grid(color='white', alpha=0.5, linestyle='solid')
plt.colorbar(im, ax=ax)pip install astropypip install astropy[all] # Includes optional dependenciespip install astropypip install astropy[all] # 包含可选依赖references/module_overview.mdreferences/common_workflows.mdreferences/module_overview.mdreferences/common_workflows.md