Update the How-To Guides of the Minterpy Documentation
Currently, the How-To Guides section of the Minterpy documentation is still under construction. As part of the preparation for the submission of Minterpy to JOSS (see Issue #110), this section should be updated.
We've discussed what should be in the section based on the current version of Minterpy. Below are some candidates:
- Multi-index set
-
Create a Multi-Index Set (i.e., the different constructors) (resolved by MR !76 (merged)) -
Add Exponents to a Multi-Index Set (resolved by MR !76 (merged)) -
Check exponents membership (resolved by MR !76 (merged)) -
Make a Multi-Index Set Complete (resolved by MR !76 (merged)) -
Make a Multi-Index Set Downward-closed (resolved by MR !84 (merged)) -
Multiply Multi-Index Sets (resolved by MR !80 (merged))
-
- Grid
-
Create a Grid (i.e., the different constructors) -
Use Different Generating Points for a Grid
-
- Polynomial Interpolation and Evaluation
-
Create an Interpolating Polynomial -
Evaluate a Polynomial
-
- Polynomial bases
-
Create a Polynomial in the Lagrange Basis -
Create a Polynomial in the Newton Basis -
Create a Polynomial in the Canonical Basis
-
- Transformation between bases
-
Transform from the Lagrange Basis to Another Basis -
Transform from the Newton Basis to Another Basis -
Transform from the Canonical Basis to Another Basis
-
- Least-Square (Regression) Polynomial
-
Create a Polynomial Regression
-
- Differentiation
-
Differentiate a Polynomial in different Bases -
Compute the Gradient of a Polynomial -
Compute the Laplacian of a Polynomial
-
- Integration
-
Integrate a One-dimensional Polynomial Over an Interval (resolved by MR !74 (merged) and !76 (merged)) -
Integrate a M-dimensional Polynomial Over an Interval (resolved by MR !74 (merged) and !76 (merged))
-
Notes on the structure
How-To Guides are guides for more advanced Minterpy users. Their purpose is to help users achieve a particular task using Minterpy ("How do I...?"). They assume (more proficient) users are looking for an answer to a particular question and are therefore completely free of context ("I want to transform a polynomial from one basis to another. How to do that?" It doesn't really matter why I want to do that in the first place).
Here's a summary on how a How-To Guide should be structured:
- Start with a good title (Complete the sentence "How to...", e.g., "Create a Lagrange Polynomial", "Transform from Lagrange to Canonical Basis", "Create a Canonical Polynomial with SymPy", "Differentiate a Polynomial", "Integrate a One-dimensional Polynomial", etc.")
- Make the particular task or question the guide aims to answer explicit at the beginning (preferably the first sentence of the guide).
- Provides a series of steps (in order)
- By the end, the series of steps must answer the question or goal posed at the beginning.
Avoid explaining concepts in the How-To guides; assume the users have a more advanced proficiency with Minterpy already
Notes on the infrastructure
Currently, the Tutorials (Guides for beginners and newcomers) and How-To's (guides for more advanced users) in the docs are written as a Jupyter Notebook and built into the docs with the help of the nbsphinx
extension for Sphinx.
I'm not entirely happy with this setup because the extension requires Pandoc to build the documentation. Furthermore, the rendered output is a bit limited because we can't hide or remove cells (either inputs or outputs) on the fly. This is a nice feature if say we want to hide a long plotting commands that are not exactly relevant for the discussion. Or maybe, add a notebox (admonition) in the document.
As an alternative, the extension MyST-NB
seems to offer a larger selection of customizations and without requiring Pandoc. I will investigate this option and see if we can migrate to that.