Back to list
tatsuki-washimi

add-type

by tatsuki-washimi

gwpy expansions for experiments

0🍴 0📅 Jan 25, 2026

SKILL.md


name: add_type description: gwexpyに新しい配列型(Array/Series/Field)とコレクションを実装する

Implement GWExPy Type

This skill guides the implementation of new array/field types in gwexpy, ensuring consistency with the existing class hierarchy, metadata management, and documentation standards.

Workflow

1. Survey & Plan

  • Identify Base Class: Inherit from gwexpy.types.Array, Array2D, or similar.
  • Metadata: Determine new metadata slots needed (e.g., _axis0_name, _unit).
  • Behavior: Define slicing behavior (does it drop dimensions or maintain them?), arithmetic rules, and domain logic (FFT, etc.).

2. Implementation: Core Class

  • File: Create gwexpy/types/yourtype.py.
  • Class Definition:
    class YourType(BaseArray):
        _metadata_slots = BaseArray._metadata_slots + ("_new_slot",)
    
  • __new__:
    • Validate input structure (ndim, etc.).
    • Initialize metadata slots (handling defaults).
    • Call super().__new__.
  • __array_finalize__:
    • Handle 3 creation scenarios: obj is None (explicit new), obj is subclass (view casting), obj is different type (copy/slice).
    • Copy metadata from obj to self.
  • Metadata-Preserving Indexing: Field4D 等の多次元クラスでは、インデックス操作 (__getitem__) 時に次元を落とさないことが推奨されます。整数インデックス islice(i, i+1) に変換して処理することで、軸の数とメタデータ(軸名称や単位)を一貫して維持できます。詳細は manage_field_metadata スキルを参照してください。
  • Transpose/Swapaxes:
    • Override to update axis-dependent metadata if applicable.

3. Implementation: Collections

  • File: gwexpy/types/yourtype_collections.py (or inside the same file if small).
  • List Class: Inherit list. Add batch methods (e.g., process_all).
  • Dict Class: Inherit dict. Add batch methods.

4. Integration

  • Export: Add the new classes to gwexpy/types/__init__.py.
  • Docs:
    • Create docs/reference/en/YourType.md and docs/reference/ja/YourType.md.
    • Add to docs/reference/{en,ja}/index.rst.

5. Testing

  • Location: tests/types/test_yourtype.py.
  • Coverage:
    • Construction (from array, from list, with units).
    • Metadata persistence.
    • Slicing behavior (key feature).
    • Arithmetic operations.
    • Collection behavior.

Key Considerations

  • Quantity Compatibility: gwexpy types are often subclasses of astropy.units.Quantity. Ensure unit handling works.
  • Axis Management: If managing axes, use AxisApiMixin or look at Array3D/Array4D for how to sync separate axis properties with the array shape.
  • Documentation: Always provide both English and Japanese API references.

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon