Home

Awesome

<!-- PROJECT SHIELDS -->

Contributors Forks Stargazers Issues MS-PL License LinkedIn

<!-- PROJECT LOGO --> <br /> <p align="center"> <a href="https://github.com/lisp-stat/select"> <img src="http://www.lisp-stat.dev/images/stats-image.svg" alt="Logo" width="80" height="80"> </a> <h3 align="center">Select</h3> <p align="center"> Selecting subsets of data from arrays, vectors and data-frames <br /> <a href="https://lisp-stat.dev/docs/manuals/select"><strong>Explore the docs »</strong></a> <br /> <br /> <a href="https://github.com/lisp-stat/select/issues">Report Bug</a> · <a href="https://github.com/lisp-stat/select/issues">Request Feature</a> · <a href="https://lisp-stat.github.io/select/">Reference Manual</a> </p> </p> <!-- TABLE OF CONTENTS --> <details open="open"> <summary><h2 style="display: inline-block">Table of Contents</h2></summary> <ol> <li> <a href="#about-the-project">About The Project</a> <ul> <li><a href="#built-with">Built With</a></li> </ul> </li> <li> <a href="#getting-started">Getting Started</a> <ul> <li><a href="#prerequisites">Prerequisites</a></li> <li><a href="#installation">Installation</a></li> </ul> </li> <li><a href="#usage">Usage</a></li> <li><a href="#roadmap">Roadmap</a></li> <li><a href="#resources">Resources</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> </ol> </details> <!-- ABOUT THE PROJECT -->

About the Project

This library provides:

  1. An API for taking slices (elements selected by the Cartesian product of vectors of subscripts for each axis) of array-like objects. The most important function is select. Unless you want to define additional methods for select, this is pretty much all you need from this library. See the documentation for a tutorial.
  2. An extensible DSL for selecting a subset of valid subscripts. This is useful if, for example, you want to resolve column names in a data frame in your implementation of select.
  3. A set of utility functions for traversing selections in array-like objects.

Built With

<!-- GETTING STARTED -->

Getting Started

To get a local copy up and running follow these steps:

Prerequisites

An ANSI Common Lisp implementation. Developed and tested with SBCL and CCL.

Installation

  1. Clone the repository
    cd ~/quicklisp/local-projects &&
    git clone https://github.com/Lisp-Stat/select.git
    
  2. Reset the ASDF source-registry to find the new system (from the REPL)
    (asdf:clear-source-registry)
    
  3. Load the system
    (ql:quickload :select)
    

Documentation

The API documentation is in the docs/ directory and is available in emacs info format, PDF and HTML. You can also view the documentation online.

<!-- USAGE EXAMPLES -->

Usage

The most frequently used form is:

(select object selection1 selection2 ...)

where each selection specifies a set of subscripts along the corresponding axis. The selection specifications are found in the documentation.

For more examples, please refer to the Reference Manual

<!-- ROADMAP -->

Roadmap

See the open issues for a list of proposed features (and known issues).

Known Issues

Select is known to pass all tests on SBCL and ACL (Allegro Common Lisp), and fails two tests on CCL related to vector/array representations. The specifics are described in issue #3. I suspect this to be a bug somewhere in CCL. Version 1.12 of CCL doesn't run on MS Windows, so the obvious next step is not available (install 1.12 and try). It could also be specific to MS Windows. If someone successfully gets this to run on another platform, I'd appreciate hearing about it.

Changes from cl-slice

Documentation Improvements

Test Improvements

Enhancements

Bug Fixes

Resources

This system is part of the Lisp-Stat project; that should be your first stop for information. Also see the resources and community pages for more information.

<!-- CONTRIBUTING -->

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated. Please see CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.

<!-- LICENSE -->

License

Distributed under the MS-PL License. See LICENSE for more information.

<!-- CONTACT -->

Contact

Project Link: https://github.com/lisp-stat/select

<!-- MARKDOWN LINKS & IMAGES --> <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->