소스 정보
- 저장소
- arm2arm/AstroAgentAssistant
- 최근 소스 활동
- 2026년 8월 26일 12:28
- 감지된 SKILL.md 언어
- 영어
- 스타
- 4
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/arm2arm/AstroAgentAssistant --skill memory-bounded-parquet-analysis명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
S3/MinIO operations: connectivity, transfers, read benchmarks, and matplotlib visualization templates.
Complete guide to the REANA reproducible analytics platform: Dockerized client setup, multi-backend profiles, workflow authoring patterns, S3 dataset workflows, and best practices. Covers dev/prod backends, serial workflows, REANA_WORKSPACE usage, and self-learning from finished workflows.
Complete guide to working with Arepo simulation HDF5 files: structure inspection, unit conversion, radial profiles, slice projections, and dimensionality reduction (UMAP/t-SNE) for clustering analysis.
SKILL.md 표시 중
| name | memory-bounded-parquet-analysis |
| title | Memory-bounded Dask/Parquet analysis and plotting |
| description | Use Dask for large Parquet data safely. |
| version | 1.0.0 |
| author | Hermes Curator |
| license | MIT |
| metadata | {"hermes":{"tags":["dask","parquet","memory","performance"],"related_skills":["data-visualization-umbrella"]}} |
| tags | ["dask","parquet","memory","performance","plotting"] |
Use for large astronomy or scientific catalogs where loading the full table into pandas is unsafe, especially when a plotting suite materializes one selected column subset at a time.
len(ddf) merely to report row count.dd.read_parquet(..., columns=needed, engine="pyarrow", split_row_groups=True, blocksize=...) for the current plot. Do not build an all-column graph and slice it later.persist() unless the working set is explicitly bounded and the reuse is demonstrated.For the 50M-row joined SH26 catalog, the stable reference configuration was 2 workers × 6 threads × 7 GB (14 GB total) with 32 MB Parquet partitions. This completed a 2-column comparison plot and a 4-column Galactic derived plot without worker death. A 3 × 4.5 GB layout restarted workers on the wider plot because decompression and transformation overhead exceeded the worker limit.
This is a validation example, not a universal machine setting: re-measure on the target host and dataset.
Expose compact controls such as:
plots --all --data DATASET --memory 14GB --threads 12
Define --memory as total budget in help text. Record dataset path, quality-cut mode, memory budget, selected columns, derived quantities, and Git revision in per-plot provenance sidecars.
For catalogs too big to materialize even one plot's columns at full scale, binned plot families (2D/1D histograms, sky maps, binned mean/std) should be computed per partition on the workers and combined by a single addition — raw rows never cross to the client, only the small binned table does. Pattern (validated in SH26 v0.2.0, src/sh26/aggregate.py):
np.histogram2d result, per-bin [n, sum, sumsq]).sum([delayed(part_fn)(p, ...) for p in ddf.to_delayed()]).compute() — exact for integer counts because binning is a per-point decision and the combine is pure addition.[lo, hi), rightmost edge inclusive) so results equal np.histogram* on the materialized frame to the last count; test against that reference.int bin specs with two cheap dask min()/max() reduces on the scheduler, never by pulling rows.(l, sin b) pixel grid has exactly equal solid angle per pixel (dΩ = cos b dl db = dl d(sin b)) — a dependency-free fallback for Mollweide-style maps.client= injection seam to the loader so tests/demos can run the same code path with zero cluster processes (see pytest deadlock pitfall above).dask-expr API drift breaks code at RUNTIME in untested branches (hit 2026-08-25): this dask build (2026.x, dask-expr enabled) removed Series.notna() — use Series.notnull(). It only raised AttributeError in the dist_cut code path that no test exercised; the test suite was fully green. Verify new code paths in branches tests don't cover (conditional flags like dist cuts) with a one-off script against the fixture, and grep new code for notna after dask upgrades.
Worker memory_limit is not a guarantee against OS-level memory pressure; oversized decompressed partitions can still kill workers.
Smaller Parquet block size improves safety but may increase scheduler and metadata overhead; validate runtime on the actual suite.
A schema read from only the first part can miss columns in heterogeneous datasets; union metadata across parts.
A loader that silently drops missing columns can hide broken plot specifications. Prefer explicit per-plot missing-column handling or a documented skip guard.
Global science cuts in the loader can silently change figure semantics. Keep cuts explicit and opt-in unless the analysis contract requires them.
pytest + dask.distributed LocalCluster deadlocks (hit 2026-08-25, SH26 test suite): several LocalCluster instances (one per session-scoped fixture or per test) inside ONE pytest process hang the whole run — every file and every pair of files passes in ~4 s in isolation, but the combined run stalls for 10+ min. Nanny worker-subprocess clusters fail with "Nanny failed to start worker process"; in-process (processes=False) shared clusters still hang. Robust fix for small-fixture tests: don't spawn any cluster at all — add a client= injection seam to the loader (a marker object makes compute() fall back to dask's threads scheduler via dask.config.set({"scheduler": "threads"}), restored in the fixture teardown; the loader's close() must never close a client it doesn't own). Scheduler choice is irrelevant to what the tests verify (pushdown, masks, derived columns, dtypes) at 2000-row scale. Also: pdf.memory_usage(deep=True) in a hot path is minutes-to-hours on 402M-row object-dtype columns — estimate from dtypes (itemsize × len, constant factor for object) instead.
See references/sh26_dask_review_2026-08.md for the SH26 failure signature, configuration comparison, and verification checklist. See references/agent_stage_verification_2026-08.md for the post-stage verification checklist to run after any coding-agent stage (claimed-but-missing deletions, untested branches with dead APIs, recomputing self-reported counts).