用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/arm2arm/AstroAgentAssistant --skill rave-dr6-starhorse-access命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | rave-dr6-starhorse-access |
| description | Query RAVE DR6 via TAP and crossmatch with SHboost24 distances for nearby star analysis. |
| version | 1.0.0 |
| author | AstroAgent / AIP |
| license | MIT |
| metadata | {"hermes":{"tags":["astronomy","rave-dr6","starhorse","tap","adql","crossmatch","s3","parquet"],"category":"astronomy","related_skills":["starhorse-access","data-aip-de-s3","gaia-dr3-tap-query"]}} |
When you need RAVE DR6 star coordinates (ra, dec) paired with distances or Galactocentric positions for analysis of nearby stars.
https://www.rave-survey.org/tap/syncravedr6.dr6_obsdata (ra_input, dec_input, rave_obs_id), ravedr6.dr6_cnn (source_id, rave_obs_id)ravedr6.dr6_x_gaiaedr3 and ravedr6.dr6_sparv are NOT TAP-accessible — they appear in VOSI tables but all queries return "Not found"dr6_obsdata + dr6_cnn on rave_obs_idhttps://s3.data.aip.de:9000/shboost2024/shboost_08july2024_pub.parq/part.0.parquet (~190 MB)urllib.request — no auth requiredsource_id, dist, xg, yg, zg, xgbdist_av_*, bprp0, mg0, etc.SQL:
SELECT o.ra_input, o.dec_input, c.source_id
FROM ravedr6.dr6_obsdata o
JOIN ravedr6.dr6_cnn c ON o.rave_obs_id = c.rave_obs_id
TOP 100000 (not LIMIT m OFFSET n — OFFSET causes 400 errors)votable<FIELD name="..."> for columns, <TD>([^<]*)</TD> for values/usr/bin/python3 (3.12) has numpy, boto3; install pyarrow and pandas with pip3 install --break-system-packagesimport urllib.request
url = "https://s3.data.aip.de:9000/shboost2024/shboost_08july2024_pub.parq/part.0.parquet"
urllib.request.urlopen(url).read() # returns 190 MB
Read with pyarrow.parquet (no pandas needed for schema inspection):
import pyarrow.parquet as pq
t = pq.read_table('/path/to/file.parquet', columns=['source_id', 'dist', 'xg', 'yg', 'zg'])
import pyarrow.parquet as pq, pickle
# SHboost lookup
t = pq.read_table('shboost_08july2024_pub.parquet', columns=['source_id', 'dist', 'xg', 'yg', 'zg'])
sh = t.to_pandas().reset_index()
sh_lookup = dict(zip(sh['source_id'], sh['dist']))
# RAVE data
with open('rave_dr6_gaia.pkl', 'rb') as f:
rave = pickle.load(f)
# Match, deduplicate (keep first = nearest if sorted by dist)
matched = {}
for row in rave:
sid = row['source_id']
if sid in sh_lookup and sid not in matched:
matched[sid] = {**row, 'dist': sh_lookup[sid]}
matched_list = sorted(matched.values(), key=lambda x: x['dist'])
top100 = matched_list[:100]
source_id values are Gaia DR2/EDR3 format — RAVE DR6 CNN crossmatch provides theseLIMIT/OFFSET — use TOP n per batchdr6_x_gaiaedr3 via TAP — table exists in VOSI but returns errors/usr/bin/python3.reset_index() on the DataFrame after to_pandas()