<h2 align="center">Marcelle</h2>

<p align="center">An Interactive Machine Learning Toolkit</p>
<p align="center"><a href="https://marcelle.dev" target="_blank">https://marcelle.dev</a></p>
<div align="center">

[![Status](https://img.shields.io/badge/status-active-success.svg)]()
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)
[![npm version](https://img.shields.io/npm/v/@marcellejs/core)]()

</div>

## Status ⚠️

Marcelle is still experimental and is currently under active development. Breaking changes are expected.

## About

Marcelle is a modular open source toolkit for programming interactive machine learning applications. Marcelle is built around components embedding computation and interaction that can be composed to form reactive machine learning pipelines and custom user interfaces. This architecture enables rapid prototyping and extension. Marcelle can be used to build interfaces to Python scripts, and it provides flexible data stores to facilitate collaboration between machine learning experts, designers and end users.

## Installation

[See online documentation](https://marcelle.dev/installation.html)

Using NPM:

```bash
npm install @marcellejs/core --save
```

Using Yarn:

```bash
yarn add @marcellejs/core
```

## Usage

See [Online Documentation](https://marcelle.dev)

## 🛠 Developing

### Building the library

To build for production:

```bash
yarn build # OR npm run build
```

To build for development (watch mode):

```bash
yarn dev # OR npm run dev
```

To generate the typescript declaration files (useful for the rollup example), run `yarn build:types` in production, or `yarn dev:types` in development.

### Setting up VSCode

[Download VSCode](https://code.visualstudio.com/) and install the following extensions:

- [Svelte for VS Code](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode)
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
- [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)

## Credits

Marcelle is a research project led by [Jules Françoise](https://www.julesfrancoise.com/) (CNRS researcher at [LISN](https://www.lisn.upsaclay.fr/)) and [Baptiste Caramiaux](https://baptistecaramiaux.com/) (CNRS researcher at [ISIR](https://hci.isir.upmc.fr/)).

This research was supported by the [ELEMENT project](https://element-project.ircam.fr/) (ANR-18-CE33-0002) from the French National Research Agency.

### ✍️ Authors

- [Jules Françoise](https://www.julesfrancoise.com/) (CNRS researcher at [LISN](https://www.lisn.upsaclay.fr/))
- [Baptiste Caramiaux](https://baptistecaramiaux.com/) (CNRS researcher at [ISIR](https://hci.isir.upmc.fr/)).
- [Téo Sanchez](https://teo-sanchez.github.io/) (PhD Student at [LISN](https://www.lisn.upsaclay.fr/))

### Citing this work

Please cite the following publication when refering to Marcelle in academic publications:

> Jules Françoise, Baptiste Caramiaux, Téo Sanchez. **Marcelle: Composing Interactive Machine Learning Workflows and Interfaces.** Annual ACM Symposium on User Interface Software and Technology (UIST ’21), Oct 2021, Virtual. DOI: [10.1145/3472749.3474734](https://doi.org/10.1145/3472749.3474734).<br> > [PDF](https://hal.archives-ouvertes.fr/hal-03335115/document)

### Supporting institutions

- [CNRS](https://www.cnrs.fr)
- [Université Paris Saclay](https://www.universite-paris-saclay.fr/)
- [Sorbonne Université](https://www.sorbonne-universite.fr/)
- [Inria](https://www.inria.fr/)

## 🔨 Built Using

- [TypeScript](https://www.typescriptlang.org/)
- [Most](https://github.com/mostjs/core)
- [Svelte](https://svelte.dev/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Tensorflow.js](https://js.tensorflow.org/)
- [Chartjs](https://www.chartjs.org/)
- And more...

## 🎉 Acknowledgements

- [Teachable Machine](https://teachablemachine.withgoogle.com/)
- [Wekinator](http://www.wekinator.org/)
