Metadata-Version: 2.1
Name: awkward
Version: 1.1.1
Summary: Manipulate JSON-like data with NumPy-like idioms.
Home-page: https://github.com/scikit-hep/awkward-1.0
Author: Jim Pivarski
Author-email: pivarski@princeton.edu
Maintainer: Scikit-HEP
Maintainer-email: scikit-hep-admins@googlegroups.com
License: BSD 3-clause
Project-URL: Documentation, https://awkward-array.org
Project-URL: Source Code, https://github.com/scikit-hep/awkward-1.0
Project-URL: Bug Tracker, https://github.com/scikit-hep/awkward-1.0/issues
Project-URL: Discussions, https://github.com/scikit-hep/awkward-1.0/discussions
Project-URL: Chat, https://gitter.im/Scikit-HEP/awkward-array
Project-URL: Releases, https://github.com/scikit-hep/awkward-1.0/releases
Description: <a href="https://github.com/scikit-hep/awkward-1.0"><img src="https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/logo/logo-300px.png"></a>
        
        [![PyPI version](https://badge.fury.io/py/awkward.svg)](https://pypi.org/project/awkward)
        [![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/awkward)](https://github.com/conda-forge/awkward-feedstock)
        [![Python 2.7,3.5‒3.9](https://img.shields.io/badge/python-2.7%2c3.5%E2%80%923.9-blue)](https://www.python.org)
        [![BSD-3 Clause License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
        [![Continuous integration tests](https://img.shields.io/azure-devops/build/jpivarski/Scikit-HEP/3/main?label=tests)](https://dev.azure.com/jpivarski/Scikit-HEP/_build)
        
        [![Scikit-HEP](https://scikit-hep.org/assets/images/Scikit--HEP-Project-blue.svg)](https://scikit-hep.org/)
        [![NSF-1836650](https://img.shields.io/badge/NSF-1836650-blue.svg)](https://nsf.gov/awardsearch/showAward?AWD_ID=1836650)
        [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4341376.svg)](https://doi.org/10.5281/zenodo.4341376)
        [![Documentation](https://img.shields.io/badge/docs-online-success)](https://awkward-array.org)
        [![Gitter](https://img.shields.io/badge/chat-online-success)](https://gitter.im/Scikit-HEP/awkward-array)
        
        Awkward Array is a library for **nested, variable-sized data**, including arbitrary-length lists, records, mixed types, and missing data, using **NumPy-like idioms**.
        
        Arrays are **dynamically typed**, but operations on them are **compiled and fast**. Their behavior coincides with NumPy when array dimensions are regular and generalizes when they're not.
        
        # Motivating example
        
        Given an array of objects with `x`, `y` fields and variable-length nested lists like
        
        ```python
        array = ak.Array([
            [{"x": 1.1, "y": [1]}, {"x": 2.2, "y": [1, 2]}, {"x": 3.3, "y": [1, 2, 3]}],
            [],
            [{"x": 4.4, "y": {1, 2, 3, 4]}, {"x": 5.5, "y": [1, 2, 3, 4, 5]}]
        ])
        ```
        
        the following slices out the `y` values, drops the first element from each inner list, and runs NumPy's `np.square` function on everything that is left:
        
        ```python
        output = np.square(array["y", ..., 1:])
        ```
        
        The result is
        
        ```python
        [
            [[], [4], [4, 9]],
            [],
            [[4, 9, 16], [4, 9, 16, 25]]
        ]
        ```
        
        The equivalent using only Python is
        
        ```python
        output = []
        for sublist in array:
            tmp1 = []
            for record in sublist:
                tmp2 = []
                for number in record["y"][1:]:
                    tmp2.append(np.square(number))
                tmp1.append(tmp2)
            output.append(tmp1)
        ```
        
        Not only is the expression using Awkward Arrays more concise, using idioms familiar from NumPy, but it's much faster and uses less memory.
        
        For a similar problem 10 million times larger than the one above (on a single-threaded 2.2 GHz processor),
        
           * the Awkward Array one-liner takes **4.6 seconds** to run and uses **2.1 GB** of memory,
           * the equivalent using Python lists and dicts takes **138 seconds** to run and uses **22 GB** of memory.
        
        Speed and memory factors in the double digits are common because we're replacing Python's dynamically typed, pointer-chasing virtual machine with type-specialized, precompiled routines on contiguous data. (In other words, for the same reasons as NumPy.) Even higher speedups are possible when Awkward Array is paired with [Numba](https://numba.pydata.org/).
        
        Our [presentation at SciPy 2020](https://youtu.be/WlnUF3LRBj4) provides a good introduction, showing how to use these arrays in a real analysis.
        
        # Installation
        
        Awkward Array can be installed [from PyPI](https://pypi.org/project/awkward) using pip:
        
        ```bash
        pip install awkward
        ```
        
        You will likely get a precompiled binary (wheel), depending on your operating system and Python version. If not, pip attempts to compile from source (which requires a C++ compiler, make, and CMake).
        
        Awkward Array is also available using [conda](https://anaconda.org/conda-forge/awkward), which always installs a binary:
        ```bash
        conda install -c conda-forge awkward
        ```
        
        If you have already added `conda-forge` as a channel, the `-c conda-forge` is unnecessary. Adding the channel is recommended because it ensures that all of your packages use compatible versions:
        
        ```bash
        conda config --add channels conda-forge
        conda update --all
        ```
        
        ## Getting help
        
        <table>
          <tr>
            <td width="66%" valign="top">
              <a href="https://awkward-array.org">
                <img src="https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/panel-tutorials.png" width="570">
              </a>
              <p align="center"><b>
                <a href="https://awkward-array.org">
                How-to tutorials
                </a>
              </b></p>
            </td>
            <td width="33%" valign="top">
              <a href="https://awkward-array.readthedocs.io/en/latest/index.html">
                <img src="https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/panel-sphinx.png" width="268">
              </a>
              <p align="center"><b>
                <a href="https://awkward-array.readthedocs.io/en/latest/index.html">
                Python API reference
                </a>
              </b></p>
              <a href="https://awkward-array.readthedocs.io/en/latest/_static/index.html">
                <img src="https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/panel-doxygen.png" width="268">
              </a>
              <p align="center"><b>
                <a href="https://awkward-array.readthedocs.io/en/latest/_static/index.html">
                C++ API reference
                </a>
              </b></p>
            </td>
          </tr>
        </table>
        
           * Report bugs, request features, and ask for additional documentation on [GitHub Issues](https://github.com/scikit-hep/awkward-1.0/issues).
           * You can vote for issues by adding a "thumbs up" (👍) using the "smile/pick your reaction" menu on the top-right of the issue. See the [prioritized list of open issues](https://github.com/scikit-hep/awkward-1.0/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+reactions%3A%3E0+).
           * If you have a "How do I...?" question, start a [GitHub Discussion](https://github.com/scikit-hep/awkward-1.0/discussions) with category "Q&A".
           * Alternatively, ask about it on [StackOverflow with the [awkward-array] tag](https://stackoverflow.com/questions/tagged/awkward-array). Be sure to include tags for any other libraries that you use, such as Pandas or PyTorch.
           * To ask questions in real time, try the Gitter [Scikit-HEP/awkward-array](https://gitter.im/Scikit-HEP/awkward-array) chat room.
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development
Classifier: Topic :: Utilities
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7
Description-Content-Type: text/markdown
Provides-Extra: cuda
Provides-Extra: test
Provides-Extra: dev
Provides-Extra: all
