add-type
gwexpyに新しい配列型(Array/Series/Field)とコレクションを実装する
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
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:
objis None (explicit new),objis subclass (view casting),objis different type (copy/slice). - Copy metadata from
objtoself.
- Handle 3 creation scenarios:
-
Metadata-Preserving Indexing:
Field4D等の多次元クラスでは、インデックス操作 (__getitem__) 時に次元を落とさないことが推奨されます。整数インデックスiをslice(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.mdanddocs/reference/ja/YourType.md. - Add to
docs/reference/{en,ja}/index.rst.
- Create
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. Ensureunithandling works. -
Axis Management: If managing axes, use
AxisApiMixinor look atArray3D/Array4Dfor how to sync separate axis properties with the array shape. - Documentation: Always provide both English and Japanese API references.
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-26
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!