<p align="center">
<a href="https://anovos.ai"><img src="https://mobilewalla-anovos.s3.amazonaws.com/images/anovos-dark-horizontal.png" alt="anovos-dark-horizontal" border="0"></a>
</p>

# Anovos

[![Release Latest](https://img.shields.io/badge/release-%20v0.2.2-yellowgreen?style=plastic)](https://github.com/anovos/anovos/releases/)
[![Docs Latest](https://img.shields.io/badge/docs-latest-blue.svg?style=plastic)](https://docs.anovos.ai/)
[![License](https://img.shields.io/badge/License-Apache_2.0-red.svg?style=plastic)](https://opensource.org/licenses/Apache-2.0)
[![twitter](https://img.shields.io/badge/Follow--lightgrey?logo=twitter&style=social)](https://twitter.com/ml_anovos)
[![Slack](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://featureengineers.slack.com/)

_Anovos_ is an open source library for feature engineering at scale.
Built by data scientists & ML Engineers for the data science community,
it provides all the capabilities required for data ingestion, data analysis,
data drift & data stability analysis, feature recommendation and feature composition.
In addition, it automatically produces easily interpretable professional data reports
that help users understand the nature of data at first sight and further enable data
scientists to identify and engineer features.

Leveraging the power of [Apache Spark](https://spark.apache.org/) behind the scenes,
_Anovos_ improves data scientists' productivity and helps them build more resilient
and better performing models.

# Quick Start

The easiest way to try out _Anovos_ and explore its capabilities is through the provided
[examples](/examples) that you can run via Docker without the need to install anything
on your local machine.

```bash
# Launch an anovos-examples Docker container
sudo docker run -p 8888:8888 anovos/anovos-examples-3.2.1:latest
```

To reach the Jupyter environment, open the link to `http://127.0.0.1:8888/?token...`
generated by the Jupyter NotebookApp.

If you're not familiar with _Anovos_ or feature engineering, the _Getting Started with
Anovos_ guide is a good place to begin your journey.
You can find it in the `/guides` folder within the Jupyter environment.

For more detailed instructions on how to install Docker and how to troubleshoot potential
issues, see the [examples README](/examples/README.md).

# Using Anovos

## Requirements

To use _Anovos_, you need compatible versions of [Apache Spark](https://spark.apache.org/),
Java and Python.

Currently, we officially support the following combinations:

- Apache Spark 2.4.x on Java 8 with Python 3.7.x
- Apache Spark 3.1.x on Java 11 with Python 3.9.x
- Apache Spark 3.2.x on Java 11 with Python 3.9.x

To see what we're currently testing, see
[this configuration](https://github.com/anovos/anovos/blob/main/.github/workflows/full-demo.yml#L21).

## Installation

You can install the latest release of _Anovos_ directly through [PyPI](https://pypi.org/project/anovos/):

```bash
pip install anovos
```

## Documentation

We provide a comprehensive documentation at [docs.anovos.ai](https://docs.anovos.ai) that includes
[user guides](https://docs.anovos.ai/getting-started.html) as well as a detailed
[API documentation](https://docs.anovos.ai/api/index.html).

For usage examples, see the provided [interactive guides and Jupyter notebooks](/examples) as well as
the [Spark demo](/demo).

# Overview

<p align="center">
  <img src="https://mobilewalla-anovos.s3.amazonaws.com/images/anovos_architecture_v2_0_a.jpg" width="830px" alt="Anovos Architecture Diagram">
</p>

## Roadmap

_Anovos_ has designed for to support any feature engineering tasks in a scalable form.
To see what's planned for the upcoming releases, see our
[roadmap](https://docs.anovos.ai/using-anovos/roadmap.html).

## Development Version

To try out the latest additions to _Anovos_, you can install it directly from _GitHub_:

```bash
pip install git+https://github.com/anovos/anovos.git
```

Please note that this version is frequently updated and might not be fully compatible with the documentation available
at [docs.anovos.ai](https://docs.anovos.ai).

# Contribute

We're always happy to discuss and accept improvements to _Anovos_. To get started, please refer to
our [Contributing to Anovos](https://docs.anovos.ai/community/contributing.html) page in the documentation.

To start coding, clone this repository, install both the regular and development requirements,
and set up the pre-commit hooks:

```bash
git clone https://github.com/anovos/anovos.git
cd anovos/
pip install -r requirements.txt
pip install -r dev_requirements.txt
pre-commit install
```
