id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 530062582,MDU6SXNzdWU1MzAwNjI1ODI=,3582,New accessor for a biomechanics open source library,17710617,closed,1,,,6,2019-11-28T20:03:22Z,2023-08-02T19:58:35Z,2023-08-02T19:58:35Z,CONTRIBUTOR,,,,"Hello and first of all, thank you for xarray. With a colleague, we created [`pyomeca`](https://github.com/pyomeca/pyomeca) which is a Python library specialized in biomechanical data processing. Most of the data is multidimensional and so we have reimplemented by hand some functionality to access labels, etc. Except Xarray does it much better. I am rewriting the entire library using xarray. [`motion`](https://github.com/romainmartinez/motion) reimplements the pyomeca functions with an [accessor](https://github.com/romainmartinez/motion/blob/master/motion/accessor.py) for xarray. I have some questions about the architecture you recommend for a xarray-based library. In pyomeca, I have three classes ([`RotoTrans`](https://github.com/pyomeca/pyomeca/blob/cf1d411b9770edcfa89db48f6a2dc2a7ccf06035/pyomeca/rototrans.py), [`Markers3d`](https://github.com/pyomeca/pyomeca/blob/cf1d411b9770edcfa89db48f6a2dc2a7ccf06035/pyomeca/markers.py) and [`Analogs3d`](https://github.com/pyomeca/pyomeca/blob/cf1d411b9770edcfa89db48f6a2dc2a7ccf06035/pyomeca/analogs.py)) with each having very specific functions. I have two possible solutions to implement them with xarray: (1) write an accessor for each class or (2) inherit from DataArray, e.g: ```Python import xarray Rototrans class (xarray.DataArray): pass ``` According to your [documentation](http://xarray.pydata.org/en/stable/internals.html), the accesor is the recommended method. However, for most functions, I need a three-dimensional table with specific dimensions (`[axis, channels, time_frame]`) and the accessor does not allow to perform these checks when creating the DataArray. At the same time, the second solution forces me to inherit a basic function that allows me to access the functions common to all classes ```Python import xarray class BaseArray(xarray.DataArray): def fct(): pass class Rototrans(Base): pass ``` Do you have any design recommendations?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3582/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 698511838,MDExOlB1bGxSZXF1ZXN0NDg0MzQ2OTUw,4416,Add pyomeca to xarray related project,17710617,closed,0,,,1,2020-09-10T21:27:17Z,2020-09-12T16:50:24Z,2020-09-12T16:50:17Z,CONTRIBUTOR,,0,pydata/xarray/pulls/4416,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4416/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull