Community연구 & 데이터 분석github.com

Astropy

천문학 및 천체물리학 데이터 분석 파이프라인에서 Astropy API(단위/수량, 좌표, FITS 입출력, 테이블, 시간 시스템, WCS, 우주론)가 필요할 때 사용됩니다. Astropy로 천문 데이터 분석 코드를 구현하거나 디버깅할 때 활용하세요.

Astropy란 무엇인가요?

Astropy는 천문학 연구 및 데이터 분석에 필수적인 기능을 제공하는 핵심 Python 패키지입니다. 좌표 변환, 단위 및 수량 계산, FITS 파일 작업, 우주론 계산, 정밀 시간 처리, 테이블 데이터 조작, 천문 이미지 처리 등을 포괄합니다. ICRS, Galactic, AltAz 등 다양한 천체 좌표계 간 변환, 물리 단위 변환(Jy → mJy, pc → km 등), 표준 우주론 모델(Planck18, WMAP9)을 이용한 거리 및 시간 계산, 다양한 시간 척도(UTC, TAI, TT, TDB) 간 변환을 지원합니다. FITS 파일 읽기/쓰기 및 헤더 조작, 카탈로그 교차 매칭과 같은 테이블 작업, 픽셀과 천체 좌표 간 WCS 변환 등 천문학적 데이터 처리의 거의 모든 측면을 다루며, Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ruwwww/agent-skills/tree/HEAD/hermes-skills/scientific/astropy

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Astropy은(는) 무엇을 하나요?

개요

Astropy는 천문학 연구 및 데이터 분석에 필수적인 기능을 제공하는 핵심 Python 패키지입니다. 좌표 변환, 단위 및 수량 계산, FITS 파일 작업, 우주론 계산, 정밀 시간 처리, 테이블 데이터 조작, 천문 이미지 처리 등에 Astropy를 사용하세요.

이 스킬을 사용해야 하는 경우

다음과 같은 작업에 Astropy를 사용하세요:

  • 천체 좌표계 간 변환 (ICRS, Galactic, FK5, AltAz 등)
  • 물리 단위 및 수량 작업 (Jy를 mJy로, 파섹을 km로 변환 등)
  • FITS 파일 읽기, 쓰기, 조작 (이미지 또는 테이블)
  • 우주론 계산 (광도 거리, 후방 시간, 허블 매개변수)
  • 다양한 시간 척도(UTC, TAI, TT, TDB) 및 형식(JD, MJD, ISO)을 사용한 정밀 시간 처리
  • 테이블 작업 (카탈로그 읽기, 교차 매칭, 필터링, 결합)
  • 픽셀과 천체 좌표 간 WCS 변환
  • 천문 상수 및 계산

빠른 시작

import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time
from astropy.io import fits
from astropy.table import Table
from astropy.cosmology import Planck18

# 단위 및 수량
distance = 100 * u.pc
distance_km = distance.to(u.km)

# 좌표
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galactic = coord.galactic

# 시간
t = Time('2023-01-15 12:30:00')
jd = t.jd  # 율리우스 날

# FITS 파일
data = fits.getdata('image.fits')
header = fits.getheader('image.fits')

# 테이블
table = Table.read('catalog.fits')

# 우주론
d_L = Planck18.luminosity_distance(z=1.0)

핵심 기능

1. 단위 및 수량 (astropy.units)

물리량을 단위와 함께 처리하고, 단위 변환을 수행하며, 계산에서 차원 일관성을 보장합니다.

주요 작업:

  • 값에 단위를 곱하여 수량 생성
  • .to() 메서드를 사용하여 단위 간 변환
  • 자동 단위 처리를 통한 산술 연산
  • 도메인별 변환을 위한 등가성 사용 (스펙트럼, 도플러, 시차)
  • 로그 단위 작업 (등급, 데시벨)

참조: references/units.md에서 포괄적인 문서, 단위 시스템, 등가성, 성능 최적화, 단위 산술을 확인하세요.

2. 좌표계 (astropy.coordinates)

천체 위치를 나타내고 다양한 좌표 프레임 간 변환합니다.

주요 작업:

  • 모든 프레임(ICRS, Galactic, FK5, AltAz 등)에서 SkyCoord로 좌표 생성
  • 좌표계 간 변환
  • 각분리 및 위치각 계산
  • 카탈로그에 좌표 매칭
  • 3D 좌표 연산을 위한 거리 포함
  • 고유 운동 및 시선 속도 처리
  • 온라인 데이터베이스에서 명명된 객체 조회

참조: references/coordinates.md에서 자세한 좌표 프레임 설명, 변환, 관측자 종속 프레임(AltAz), 카탈로그 매칭, 성능 팁을 확인하세요.

3. 우주론 계산 (astropy.cosmology)

표준 우주론 모델을 사용하여 우주론 계산을 수행합니다.

주요 작업:

  • 내장 우주론 사용 (Planck18, WMAP9 등)
  • 사용자 정의 우주론 모델 생성
  • 거리 계산 (광도, 공액, 각지름)
  • 나이 및 후방 시간 계산
  • 임의 적색편이에서 허블 매개변수 결정
  • 밀도 매개변수 및 부피 계산
  • 역 계산 수행 (주어진 거리에 대한 적색편이 찾기)

참조: references/cosmology.md에서 사용 가능한 모델, 거리 계산, 시간 계산, 밀도 매개변수, 중성미자 효과를 확인하세요.

4. FITS 파일 처리 (astropy.io.fits)

FITS 파일을 읽고, 쓰고, 조작합니다.

주요 작업:

  • 컨텍스트 관리자로 FITS 파일 열기
  • 인덱스 또는 이름으로 HDU 접근
  • 헤더 읽기 및 수정 (키워드, 주석, 이력)
  • 이미지 데이터 작업 (NumPy 배열)
  • 테이블 데이터 처리 (이진 및 ASCII 테이블)
  • 새 FITS 파일 생성 (단일 또는 다중 확장)
  • 대용량 파일을 위한 메모리 매핑 사용
  • 원격 FITS 파일 접근 (S3, HTTP)

참조: references/fits.md에서 포괄적인 파일 작업, 헤더 조작, 이미지 및 테이블 처리, 다중 확장 파일, 성능 고려 사항을 확인하세요.

5. 테이블 작업 (astropy.table)

단위, 메타데이터 및 다양한 파일 형식을 지원하는 표 형식 데이터 작업.

주요 작업:

  • 배열, 리스트 또는 딕셔너리로 테이블 생성
  • 여러 형식(FITS, CSV, HDF5, VOTable)으로 테이블 읽기/쓰기
  • 열 및 행 접근 및 수정
  • 테이블 정렬, 필터링, 인덱싱
  • 데이터베이스 스타일 작업 수행 (결합, 그룹화, 집계)
  • 테이블 스택 및 연결
  • 단위 인식 열 작업 (QTable)
  • 마스킹으로 누락 데이터 처리

참조: references/tables.md에서 테이블 생성, 입출력 작업, 데이터 조작, 정렬, 필터링, 결합, 그룹화, 성능 팁을 확인하세요.

6. 시간 처리 (astropy.time)

정밀한 시간 표현과 시간 척도 및 형식 간 변환.

주요 작업:

  • 다양한 형식(ISO, JD, MJD, Unix 등)으로 Time 객체 생성
  • 시간 척도 간 변환 (UTC, TAI, TT, TDB 등)
  • TimeDelta로 시간 산술 연산 수행
  • 관측자를 위한 항성시 계산
  • 광행시간 보정 계산 (중심, 태양 중심)
  • 시간 배열 효율적으로 작업
  • 마스킹된 (누락) 시간 처리

참조: references/time.md에서 시간 형식, 시간 척도, 변환, 산술, 관측 기능, 정밀도 처리를 확인하세요.

7. 세계 좌표계 (astropy.wcs)

이미지의 픽셀 좌표와 세계 좌표 간 변환.

주요 작업:

  • FITS 헤더에서 WCS 읽기
  • 픽셀 좌표를 세계 좌표로 변환 (그 반대도)
  • 이미지 풋프린트 계산
  • WCS 매개변수 접근 (기준 픽셀, 투영, 축척)
  • 사용자 정의 WCS 객체 생성

참조: references/wcs_and_other_modules.md에서 WCS 작업 및 변환을 확인하세요.

추가 기능

references/wcs_and_other_modules.md 파일은 다음 내용도 다룹니다:

NDData 및 CCDData

메타데이터, 불확실성, 마스킹, WCS 정보를 포함한 n차원 데이터셋용 컨테이너.

모델링

천문 데이터에 수학적 모델을 생성하고 피팅하는 프레임워크.

시각화

적절한 스트레칭 및 스케일링으로 천문 이미지 표시 도구.

상수

적절한 단위를 가진 물리 및 천문 상수 (광속, 태양 질량, 플랑크 상수 등).

컨볼루션

스무딩 및 필터링을 위한 이미지 처리 커널.

통계

시그마 클리핑 및 이상치 제거를 포함한 강건한 통계 함수.

설치

# 현재 안정 릴리스에 대한 재현 가능한 설치
uv pip install "astropy==7.2.0"

# 플로팅 및 일반 워크플로우를 위한 권장 선택적 종속성
uv pip install "astropy[recommended]==7.2.0"

# 광범위한 천문 워크플로우를 위한 전체 선택적 종속성 세트
uv pip install "astropy[all]==7.2.0"

Astropy 7.2.0은 Python 3.11+이 필요하며 NumPy, PyERFA, PyYAML, packaging에 의존합니다. 격리된 가상 환경을 사용하고, 상승된 권한으로 Astropy를 설치하지 마십시오.

[recommended] 및 [all] 엑스트라는 고정되지 않은 버전의 전이 종속성(matplotlib, scipy 등)을 가져옵니다. 재현 가능한 프로덕션 환경의 경우, lockfile(uv lock in a project, or uv pip compile for requirements files)로 전체 종속성 트리를 고정하고 배포 전에 해결된 버전을 검토하십시오.

일반적인 워크플로우

좌표계 간 변환

from astropy.coordinates import SkyCoord
import astropy.units as u

# 좌표 생성
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')

# 은하 좌표로 변환
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")

# 고도-방위각으로 변환 (시간 및 위치 필요)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz

관측_시간 = Time('2023-06-15 23:00:00')
관측_위치 = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=관측_시간, location=관측_위치)
c_altaz = c.transform_to(aa_frame)
print(f"고도={c_altaz.alt.deg}, 방위각={c_altaz.az.deg}")

FITS 파일 읽기 및 분석

from astropy.io import fits
import numpy as np

# FITS 파일 열기
with fits.open('observation.fits') as hdul:
    # 구조 표시
    hdul.info()

    # 이미지 데이터 및 헤더 가져오기
    data = hdul[1].data
    header = hdul[1].header

    # 헤더 값 접근
    exptime = header['EXPTIME']
    filter_name = header['FILTER']

    # 데이터 분석
    mean = np.mean(data)
    median = np.median(data)
    print(f"평균: {mean}, 중앙값: {median}")

우주론 거리 계산

from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np

# z=1.5에서 거리 계산
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)

print(f"광도 거리: {d_L}")
print(f"각지름 거리: {d_A}")

# 해당 적색편이에서 우주 나이
age = Planck18.age(z)
print(f"z={z}에서 나이: {age.to(u.Gyr)}")

# 후방 시간
t_lookback = Planck18.lookback_time(z)
print(f"후방 시간: {t_lookback.to(u.Gyr)}")

카탈로그 교차 매칭

from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u

# 카탈로그 읽기
cat1 = Table.read('catalog1.fits')
cat2 = Table.read('catalog2.fits')

# 좌표 객체 생성
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)

# 일치 항목 찾기
idx, sep, _ = coords1.match_to_catalog_sky(coords2)

# 분리 임계값으로 필터링
max_sep = 1 * u.arcsec
matches = sep < max_sep

# 일치된 카탈로그 생성
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"{len(cat1_matched)}개의 일치 항목 발견")

모범 사례

  1. 항상 단위 사용: 수량에 단위를 첨부하여 오류를 방지하고 차원 일관성 보장
  2. FITS 파일에는 컨텍스트 관리자 사용: 적절한 파일 닫힘 보장
  3. 루프보다 배열 선호: 더 나은 성능을 위해 여러 좌표/시간을 배열로 처리
  4. 좌표 프레임 확인: 변환 전 프레임 확인
  5. 적절한 우주론 사용: 분석에 맞는 우주론 모델 선택
  6. 누락 데이터 처리: 누락 값이 있는 테이블에 마스킹된 열 사용
  7. 시간 척도 지정: 정밀한 타이밍을 위해 시간 척도(UTC, TT, TDB) 명시
  8. 단위 인식 테이블에 QTable 사용: 테이블 열에 단위가 있는 경우
  9. WCS 유효성 확인: 변환 사용 전 WCS 확인
  10. 자주 사용하는 값 캐싱: 비용이 많이 드는 계산(예: 우주론 거리)은 캐시 가능
  11. 네트워크 접근 명시: SkyCoord.from_name(), EarthLocation.of_site(refresh_cache=True), EarthLocation.of_address(), download_file(), 원격 FITS 읽기 및 일부 IERS 시간/좌표 변환은 외부 서비스에 접속하거나 로컬 캐시를 업데이트할 수 있습니다. 민감한 대상 이름, 주소, URL 또는 독점 파일 위치를 타사 서비스로 보내지 마십시오. 잠재적으로 민감한 대상이나 데이터 위치로 작업할 때는 이러한 네트워크 호출을 수행하기 전에 사용자에게 확인하십시오.
  12. 재현성을 위해 고정: 공유 환경에서는 astropy==7.2.0과 같이 고정된 버전을 사용하고, 릴리스 노트를 검토한 후 의도적으로 핀을 업데이트하십시오.

현재 버전 참고 사항

  • 연구된 현재 안정 릴리스: Astropy 7.2.0 (2025-11-25 출시, 2026-06-10 기준 최신 확인)
  • Python 요구 사항: 3.11+
  • Astropy 8.0은 릴리스 후보 단계 (8.0.0rc1, 2026-05-26). 예상되는 주요 변경 사항:
    • 더 이상 사용되지 않는 astropy.cosmology 서브모듈 심(astropy.cosmology.flrw, .core, .funcs, .connect, .parameter)이 제거됩니다 — 모든 것을 astropy.cosmology에서 직접 가져오십시오 (예: from astropy.cosmology import FlatLambdaCDM, z_at_value)
    • astropy.constants 기본값이 CODATA 2018에서 CODATA 2022로 변경됩니다. 재현성이 중요하다면 astropyconst 과학 상태를 통해 상수 버전을 고정하십시오
    • NumPy 2.0이 최소 지원 버전이 됩니다. 7.2.x LTS 브랜치는 8.0 릴리스 후 6개월 동안 NumPy 1.x 지원을 유지합니다
    • 내장 테스트 러너(astropy.test(), TestRunner)는 공식적으로 더 이상 사용되지 않습니다 — pytest를 직접 호출하십시오
  • 새 코드에서 피해야 할 최근 7.x 사용 중단 사항: 첫 번째 .loc 요소로 테이블 인덱스 식별자를 전달하는 것(t.loc["b", 2]) — 대신 t.loc.with_index("b")[2]를 사용하십시오 (9.0에서 제거 예정); astropy.utils.isiterable() — numpy.iterable() 사용
  • 최근 7.0 제거 사항: (Bin)Table.update, _ExtensionHDU, _NonstandardExtHDU 및 CompImageHDU의 tile_size 인수와 같은 이전 FITS API; CompImageHeader는 더 이상 사용되지 않습니다. 새 예제에서는 이러한 레거시 패턴을 피하십시오.
  • 권장 선택적 엑스트라는 일반적인 플로팅/과학 종속성의 경우 recommended, 광범위한 선택적 기능 세트가 필요한 경우에만 all입니다.

문서 및 리소스

참조 파일

특정 모듈에 대한 자세한 정보:

  • references/units.md - 단위, 수량, 변환 및 등가성
  • references/coordinates.md - 좌표계, 변환 및 카탈로그 매칭
  • references/cosmology.md - 우주론 모델 및 계산
  • references/fits.md - FITS 파일 작업 및 조작
  • references/tables.md - 테이블 생성, 입출력 및 작업
  • references/time.md - 시간 형식, 척도 및 계산
  • references/wcs_and_other_modules.md - WCS, NDData, 모델링, 시각화, 상수 및 유틸리티

과학 에이전트 스킬 인용

이 스킬은 Scientific Agent Skil…

… [번역을 위해 잘렸습니다]

관련 스킬