********************
ndcube Documentation
********************


Welcome to ndcube's documentation.

ndcube is a SunPy-affiliated package designed for handling n-dimensional datacubes described by a WCS (World Coordinate System) translation.

.. toctree::
   :maxdepth: 1

   introduction
   installation
   data_classes
   coordinates
   slicing
   visualization
   reproject
   tabular_coordinates
   api
   extending_ndcube
   whatsnew/index


.. _getting_help:

Getting Help
============

If you are unsure of the general features of the ndcube package, your first stop should be this document which we strive to make as comprehensive, yet understandable, as possible.
If you would like to know more about how to use a specific function, class, etc., documentation for each object is in the :ref:`api` of this guide.
If you cannot find the answer to your issue there, would like to provide feedback, or would like help contributing code to ndcube, you can get help directly from the ndcube team in a number of ways.

Live Chat
---------

ndcube has a `matrix channel`_ which will open directly in your browser.
You will need to register in order to comment but in there are many sunpy and ndcube users and developers, who will be happy to help.

We could always use more voices and opinions in the discussions about ndcube and its development from both users and developers.
There are a number of ways to make your voice heard.
Whether it be constructive criticism, inquiries about current or future capabilities, or flattering praise, we would love to hear from you.

.. _`matrix channel`: https://openastronomy.element.io/#/room/#ndcube:openastronomy.org

Reporting Bugs
--------------

If you run into unexpected behavior or a bug please report it.
All bugs are raised and stored on our `issue tracker`_.
If you are not sure if your problem is a bug, you can either send a message to the chat room or open an issue.
Ideally, we would like a short code example so we can run into the bug on our own machines.

.. _issue tracker: https://github.com/sunpy/ndcube/issues


Using ndcube in your project
----------------------------

The ndcube package has been built to be used directly, or where needed extended in your own package.
Read more about :ref:`extending_ndcube`.
Please come tell us about what you build with ndcube to help make it better for everyone.

.. _contributing:

Contributing to ndcube
======================

We are always enthusiastic to welcome new users and developers who want to enhance the ndcube package.
You can contribute in several ways, from providing feedback, reporting bugs, contributing code, and reviewing pull requests.
There is a role for almost any level of engagement.

If you would like to contribute code, it is strongly recommended that you first discuss your aims with the ndcube community.
We strive to be an open and welcoming community for developers of all experience levels.
Discussing your ideas before you start can give you new insights that will make your development easier, lead to a better end product, and reduce the chances of your work being regretfully rejected because of an issue you weren't aware of, e.g. the functionality already exists elsewhere.

The best guide we provide comes from the `sunpy newcomers guide <https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html>`__.
The only think you will need to change is sunpy to ndcube e.g., ``https://github.com/<username>/sunpy.git sunpy-git`` to ``https://github.com/<username>/ndcube.git ndcube-git`` where appropriate.
