========
Concepts
========

.. _fusion-concepts-notebooks:

Notebooks
=========

Anaconda Fusion connects Microsoft Excel to the Anaconda ecosystem via Jupyter notebooks.

From `Jupyter <https://jupyter.org/>`_:

    The Jupyter Notebook is a web application that allows you to create and share documents that contain live code, equations, visualizations and explanatory text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, machine learning and much more.

Data scientists use notebooks to present and share their work. With Anaconda Fusion, Data Scientists write :ref:`functions <fusion-concepts-functions>` in notebooks and share them with Business Analysts using Microsoft Excel, so they can leverage advanced data science functionality in a code-free application directly inside Excel.

.. _fusion-concepts-functions:

Functions
=========

A function is a block of organized, reusable code that is used to perform a single, related action. Functions provide better modularity for your application and a high degree of code reuse.

In Anaconda Fusion, Data Scientists write functions in notebooks that provide Excel users with advanced functionality including database queries, interactive visualizations and machine learning.

To register a function with Anaconda Fusion, Data Scientists use the decorator ``@fusion.register()``. There are three types of parameters for Anaconda Fusion functions:

* Open parameters: The Business Analyst can input any value, defined :ref:`data <fusion-concepts-data>` or reference to Excel ranges.
* Closed parameters: The Business Analyst must select a value from a list of given options.
* Optional parameters: The Business Analyst does not have to input a value for that parameter. If none is passed, a default value is used. Optional parameters are marked with ``*``.

.. _fusion-concepts-data:

Data
====

Data in Anaconda Fusion are pre-defined datasets that can be used and referenced anytime during function executions. Those datasets can be references to Excel ranges and cells or Python expressions.


.. _fusion-concepts-inputs:

Inputs
======

Inputs are values assigned to function parameters. In Anaconda Fusion, Business Analysts assign values to function parameters in the Input section. The name of the parameter is displayed on the left and the value is displayed on the right. The input values can be:

* A manually entered value, such as 2.
* Defined :ref:`data <fusion-concepts-data>` inside Anaconda Fusion, such as 'sales'.
* A reference to an Excel range, such as A2:B4.

.. _fusion-concepts-outputs:

Outputs
=======

Outputs are the results of running the Fusion functions for the given input parameters. The output section in Anaconda Fusion is where Business Analysts get the results back. The outputs can be:

* Visualizations displayed in Anaconda Fusion.
* Output data, such as query results or model scores.
