/ainotes

(Phased out) A collection of interactive notes related to Artificial Intelligence

Primary LanguagePythonOtherNOASSERTION

Python Versions PyPI Version Code style: black

Artificial Intelligence Notes

This project is being phased out and replaced by mlcourse.

A collection of interactive notes related to Artificial Intelligence. Built for educational purposes and updated (somewhat) regularly.

Structure

This project has the following structure:

  • ainotes/ contains the notes' source files, written in Python;
  • data/ contains the datasets used by some of the notes;
  • docs/ contains the Jupyter notebooks synchronized with Python files and used to create the online version of the notes.

Once a new notebook (.ipynb file) is created in the docs/ folder, it is automagically paired with a Python (.py) file by the same name in the ainotes/ folder. Afterwards, all updates to either file will be reflected into the other. This is configured in the pyproject.toml file.

Alongside the source files, the notebooks are also versioned in order to display their output online and access them in cloud execution platforms like Google Colaboratory.

The project is also published as a package on PyPI. This is necessary to import shared code in cloud execution platforms.

Toolchain

This project is built with the following software:

  • Poetry for dependency management and deployment;
  • Black for code formatting;
  • Pylint to detect programming mistakes before execution;
  • Jupytext to synchronize Python source files with Jupyter notebooks;
  • Jupyter Book to generate a static website from the notebooks;
  • RISE to showcase notebooks as live reveal.js-based presentations;
  • A GitHub Action to publish the website to GitHub Pages;
  • Another GitHub Action to publish the source code as a PyPI/TestPyPI package.

Development notes

Here are some useful commands for running this project:

# Reformat all Python files
black ainotes/

# Check the code for mistakes
pylint ainotes/*

# Force resync of all notebook files (in docs/) with Python files (in ainotes/)
# Add the --execute flag to rerun all notebooks
jupytext --sync ainotes/**/*.py

# Build the website locally from notebook files
# Output is in the docs/_build/ subfolder
jupyter-book build docs/  # Or simply: jb build docs/

# Generate a PDF version of a chapter
# GIF files must be replaced by their static counterparts (PNG or JPG) in the notebook before launching this command
jupyter nbconvert --to PDF {notebook_file_name}

License

Licenses are Creative Commons for the textual content and MIT for the code. See also Acknowledgments.

Copyright © 2023-present Baptiste Pesquet.