mcpField
A
alterlab-astropy

alterlab-astropy

github.com/alterlab-ieuデータ・データベース7870 回インストール5 週間前に更新
リポジトリ

alterlab-astropy について

alterlab-astropy は、Astropy で天文データを解析する研究者向けのスキルです。座標、単位、FITS、宇宙論、時刻、テーブル、画像の WCS 操作を扱います。

主な機能

  1. 01天球座標系の変換
  2. 02物理単位の計算と変換
  3. 03FITS ファイルの読み書き
  4. 04宇宙論的距離と時刻の計算
  5. 05精密な時刻系と形式の処理
  6. 06ピクセル座標と世界座標の変換

活用シーン

  1. 01カタログ位置の座標系変換
  2. 02FITS 観測データの確認や編集
  3. 03指定赤方偏移での距離計算
  4. 04天文カタログのクロスマッチ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-astropy

インストール後、Claude Code で/alterlab-astropyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
coordinates.md
cosmology.md
fits.md
tables.md
time.md
units.md
wcs_and_other_modules.md

詳細

Astropy

概要

Astropy は、天文学研究やデータ解析に不可欠な機能を提供する、天文学向けの中核的な Python パッケージです。座標変換、単位と物理量の計算、FITS ファイル操作、宇宙論計算、高精度な時刻処理、表形式データの操作、天体画像処理には astropy を使用します。

このスキルを使用する場面

次のようなタスクには astropy を使用します。

  • 天球座標系(ICRS、Galactic、FK5、AltAz など)間の変換
  • 物理単位と物理量の処理(Jy から mJy、パーセクから km への変換など)
  • FITS ファイル(画像またはテーブル)の読み込み、書き込み、操作
  • 宇宙論計算(光度距離、ルックバック時間、ハッブルパラメーター)
  • 異なる時刻系(UTC、TAI、TT、TDB)と形式(JD、MJD、ISO)による高精度な時刻処理
  • テーブル操作(カタログの読み込み、クロスマッチング、フィルタリング、結合)
  • ピクセル座標と天球座標間の WCS 変換
  • 天文学定数と計算
該当しないケース
ケース代わりに使用
地上 GIS — シェープファイル、地図投影(EPSG)、バッファー、空間結合alterlab-geopandas
衛星/地球観測のラスターデータ、DEM、スペクトル指数alterlab-geomaster
物理公式の記号的な導出(データや単位を扱わない場合)alterlab-sympy
光度曲線を単純な配列として扱う汎用的な時系列 ML(分類、予測)alterlab-aeon

クイックスタート

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

# Units and quantities
distance = 100 * u.pc
distance_km = distance.to(u.km)

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

# Time
t = Time('2023-01-15 12:30:00')
jd = t.jd  # Julian Date

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

# Tables
table = Table.read('catalog.fits')

# Cosmology
d_L = Planck18.luminosity_distance(z=1.0)

主な機能

1. 単位と物理量(astropy.units)

物理量を単位付きで扱い、単位変換を行い、計算で次元の整合性を保ちます。

主な操作:

  • 値に単位を乗算して物理量を作成
  • .to() メソッドを使用して単位を変換
  • 自動的な単位処理を用いた算術演算
  • 分野固有の変換(スペクトル、ドップラー、視差)に等価関係を使用
  • 対数単位(等級、デシベル)を処理

参照: 単位系、等価関係、パフォーマンス最適化、単位演算に関する詳しいドキュメントは references/units.md を参照してください。

2. 座標系(astropy.coordinates)

天球上の位置を表現し、異なる座標フレーム間で変換します。

主な操作:

  • 任意のフレーム(ICRS、Galactic、FK5、AltAz など)で SkyCoord を使用して座標を作成
  • 座標系間で変換
  • 角距離と位置角を計算
  • カタログと座標を照合
  • 3D 座標操作に距離を含める
  • 固有運動と視線速度を処理
  • オンラインデータベースから天体名を指定して検索

参照: 座標フレームの詳しい説明、変換、観測者依存フレーム(AltAz)、カタログ照合、パフォーマンスに関するヒントは references/coordinates.md を参照してください。

3. 宇宙論計算(astropy.cosmology)

標準的な宇宙論モデルを使用して宇宙論計算を行います。

主な操作:

  • 組み込みの宇宙論モデル(Planck18、WMAP9 など)を使用
  • カスタム宇宙論モデルを作成
  • 距離(光度距離、共動距離、角径距離)を計算
  • 宇宙年齢とルックバック時間を計算
  • 任意の赤方偏移におけるハッブルパラメーターを求める
  • 密度パラメーターと体積を計算
  • 逆計算(指定した距離に対応する z を求める)を実行

参照: 利用可能なモデル、距離計算、時間計算、密度パラメーター、ニュートリノの影響については references/cosmology.md を参照してください。

4. FITS ファイルの処理(astropy.io.fits)

FITS(Flexible Image Transport System)ファイルの読み取り、書き込み、操作を行います。

主な操作:

  • コンテキストマネージャーを使用して FITS ファイルを開く
  • インデックスまたは名前で HDU(Header Data Unit)にアクセスする
  • ヘッダー(キーワード、コメント、履歴)を読み取り、変更する
  • 画像データ(NumPy 配列)を扱う
  • テーブルデータ(バイナリテーブルおよび ASCII テーブル)を扱う
  • 新しい FITS ファイルを作成する(単一または複数の拡張)
  • 大きなファイルにメモリマッピングを使用する
  • リモート FITS ファイルにアクセスする(S3、HTTP)

参照: ファイル操作、ヘッダー操作、画像とテーブルの処理、複数拡張ファイル、パフォーマンスに関する考慮事項の詳細は、references/fits.md をご覧ください。

5. テーブル操作(astropy.table)

単位、メタデータ、さまざまなファイル形式に対応した表形式データを扱います。

主な操作:

  • 配列、リスト、辞書からテーブルを作成する
  • 複数の形式(FITS、CSV、HDF5、VOTable)でテーブルを読み書きする
  • 列と行にアクセスして変更する
  • テーブルを並べ替え、フィルタリングし、インデックスを作成する
  • データベース形式の操作(結合、グループ化、集計)を実行する
  • テーブルを積み重ねて連結する
  • 単位に対応した列(QTable)を扱う
  • マスキングを使用して欠損データを処理する

参照: テーブルの作成、I/O 操作、データ操作、並べ替え、フィルタリング、結合、グループ化、パフォーマンスのヒントについては、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 オブジェクトを作成する

参照: WCS の操作と変換については、references/wcs_and_other_modules.md をご覧ください。

その他の機能

references/wcs_and_other_modules.md ファイルでは、以下についても説明しています。

NDData と CCDData

メタデータ、不確実性、マスキング、WCS 情報を含む、多次元データセット用のコンテナーです。

モデリング

天文学データの数学的モデルを作成し、フィッティングするためのフレームワークです。

可視化

適切なストレッチとスケーリングを用いて天体画像を表示するツールです。

定数

適切な単位を持つ物理定数および天文学定数です(光速、太陽質量、プランク定数など)。

畳み込み

平滑化とフィルタリングに使用する画像処理カーネルです。

統計

シグマクリッピングや外れ値の除外など、ロバストな統計関数です。

インストール

# Install astropy (8.x requires Python >= 3.11 and NumPy >= 2.0; current 8.0.x as of 2026-09)
uv pip install astropy

# Common optional dependencies (scipy, matplotlib, ...) or everything
uv pip install "astropy[recommended]"
uv pip install "astropy[all]"

Astropy 8.0 に関する注意:宇宙論クラスは astropy.cosmology から直接インポートしてください(astropy.cosmology.flrw / .core / .funcs の shim モジュールは削除されました)。astropy.samp は pyvo.samp に移動しました。デフォルトの CODATA 定数は 2022 年版になりました。また、FITS 文字列列では末尾のスペースがデフォルトで削除されます(従来の動作に戻すには strip_spaces=False を指定してください)。NumPy 1.x を使い続ける必要がある場合は、astropy<8(7.2.x 系列)に固定してください。

一般的なワークフロー

座標系間の変換
from astropy.coordinates import SkyCoord
import astropy.units as u

# Create coordinate
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')

# Transform to galactic
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")

# Transform to alt-az (requires time and location)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz

observing_time = Time('2023-06-15 23:00:00')
observing_location = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=observing_time, location=observing_location)
c_altaz = c.transform_to(aa_frame)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
FITS ファイルの読み取りと解析
from astropy.io import fits
import numpy as np

# Open FITS file
with fits.open('observation.fits') as hdul:
    # Display structure
    hdul.info()

    # Get image data and header
    data = hdul[1].data
    header = hdul[1].header

    # Access header values
    exptime = header['EXPTIME']
    filter_name = header['FILTER']

    # Analyze data
    mean = np.mean(data)
    median = np.median(data)
    print(f"Mean: {mean}, Median: {median}")
宇宙論的距離の計算
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np

# Calculate distances at z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)

print(f"Luminosity distance: {d_L}")
print(f"Angular diameter distance: {d_A}")

# Age of universe at that redshift
age = Planck18.age(z)
print(f"Age at z={z}: {age.to(u.Gyr)}")

# Lookback time
t_lookback = Planck18.lookback_time(z)
print(f"Lookback time: {t_lookback.to(u.Gyr)}")
カタログのクロスマッチング
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u

# Read catalogs
cat1 = Table.read('catalog1.fits')
cat2 = Table.read('catalog2.fits')

# Create coordinate objects
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)

# Find matches
idx, sep, _ = coords1.match_to_catalog_sky(coords2)

# Filter by separation threshold
max_sep = 1 * u.arcsec
matches = sep < max_sep

# Create matched catalogs
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"Found {len(cat1_matched)} matches")

ベストプラクティス

  1. 常に単位を使用する:エラーを防ぎ、次元の整合性を確保するため、数量には単位を付けます
  2. FITS ファイルにはコンテキストマネージャーを使用する:ファイルが適切に閉じられるようにします
  3. ループより配列を優先する:パフォーマンスを向上させるため、複数の座標や時刻を配列として処理します
  4. 座標系を確認する:変換の前に座標系を確認します
  5. 適切な宇宙論を使用する:解析に適した宇宙論モデルを選択します
  6. 欠損データを処理する:欠損値を含むテーブルにはマスク付き列を使用します
  7. 時間尺度を指定する:正確な時刻計測のため、時間尺度(UTC、TT、TDB)を明示します
  8. 単位を扱うテーブルには QTable を使用する:テーブルの列に単位がある場合に使用します
  9. WCS の有効性を確認する:変換を使用する前に WCS を確認します
  10. 頻繁に使用する値をキャッシュする:宇宙論的距離などのコストの高い計算はキャッシュできます

ドキュメントとリソース

参照ファイル

各モジュールの詳細については、以下を参照してください。

  • 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、モデリング、可視化、定数、ユーティリティ

AlterLab Academic Skills スイートの一部です。

コメント