From 40ae7bbd043ab8e8a14e08f019ddbe8f5e0af008 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Tue, 17 Oct 2023 18:06:18 +0200 Subject: [PATCH] Use separate conda env for each example --- .gitignore | 2 +- 63c9c54.zip | Bin 122348 -> 0 bytes CONTRIBUTING.rst | 17 ++--- docs/requirements-rascal.txt | 6 -- docs/requirements.txt | 21 ------ docs/src/conf.py | 71 +-------------------- docs/src/index.rst | 14 ++++ examples/lode_linear/environement.yml | 9 +++ examples/mlp_models/README.rst | 3 - examples/mlp_models/linear_model.py | 20 ------ examples/roy_gch/environement.yml | 10 +++ examples/roy_gch/roy_gch.py | 21 +++--- examples/sample_selection/environement.yml | 12 ++++ generate-gallery.py | 68 ++++++++++++++++++++ ipynb_to_gallery.py => ipynb-to-gallery.py | 0 tox.ini | 61 +++++++++++++++--- 16 files changed, 185 insertions(+), 150 deletions(-) delete mode 100644 63c9c54.zip delete mode 100644 docs/requirements-rascal.txt create mode 100644 docs/src/index.rst create mode 100644 examples/lode_linear/environement.yml delete mode 100644 examples/mlp_models/README.rst delete mode 100644 examples/mlp_models/linear_model.py create mode 100644 examples/roy_gch/environement.yml create mode 100644 examples/sample_selection/environement.yml create mode 100644 generate-gallery.py rename ipynb_to_gallery.py => ipynb-to-gallery.py (100%) diff --git a/.gitignore b/.gitignore index 5ed76bae..c950b957 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -docs/src/* +docs/src/examples/ *build* *egg-info/ diff --git a/63c9c54.zip b/63c9c54.zip deleted file mode 100644 index 5c6010e6a42b1bc8962b829b86e05bea162fce55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122348 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%0D$7ZXf^(^cXS+$tQ~CZ|MM2QRNMSFGU)TH(_2Vq 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 diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index fb25ef17..689534a0 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -15,8 +15,8 @@ example in an external repository and link to it on the `Wiki page `_. If you feel unsure if a contribution is suitable, feel free to contact one of the `support`_ before. -Adding an sphinx-gallery examples ---------------------------------- +Adding a new examples +--------------------- To visualize examples on our readthedocs page we use `sphinx-gallery`. When building the doc the examples are run and compiled automatically into HTML files and moved to the @@ -27,16 +27,20 @@ If you do not know where to put your example, just put in the `examples/uncatego `_ folder and when doing a pull request, we will figure out where to put it. +After adding a file, you'll need to update ``tox.ini`` to build your example when +building the documentation. Look how it's done for the ``lode_linear`` example, and +do the same for yours! + Converting a Jupyter notebook to a sphinx-gallery compatible Python script -------------------------------------------------------------------------- Often it is more convenient to work in a Jupyter notebook and convert in later to sphinx-gallery example. To convert your Jupyter notebook you can just use the -`ipynb_to_gallery.py `_ file that is root folder of the repository +`ipynb-to-gallery.py `_ file that is root folder of the repository .. code-block:: bash - python ipynb_to_gallery.py + python ipynb-to-gallery.py Building the cookbook locally ----------------------------- @@ -59,13 +63,10 @@ formatting issues remaining, then the reviewer of your pull request can fix them To visualize the generated cookbook open in a browser the file ``docs/build/html/index.html``. -When you generate the examples locally all the notebook will be automatically generated -in the folder ``docs/src/examples/`` - Known issues ------------ -Sometimes the doc preview from readthedocs is not correcty rendered. If something works +Sometimes the doc preview from readthedocs is not rendered correctly. If something works in your local build but not in the readthedocs PR preview. It could that the issue is fixed once you merge with the main branch. diff --git a/docs/requirements-rascal.txt b/docs/requirements-rascal.txt deleted file mode 100644 index b69845b9..00000000 --- a/docs/requirements-rascal.txt +++ /dev/null @@ -1,6 +0,0 @@ -# rascal needs to be in a separate requirements file because we need to specify -# the packages index-url for it te use the prebuilt from -# from https://github.com/Luthaf/nightly-wheels -# extra-url does not work here because there is another rascal package on pypi ---index-url https://luthaf.fr/nightly-wheels/ -rascal diff --git a/docs/requirements.txt b/docs/requirements.txt index fe4ef1d2..e1efa3b0 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,25 +1,4 @@ -# Sphinx sphinx -sphinx_rtd_theme sphinx-gallery sphinx-toggleprompt furo - -# Jupyter widgets -ipywidgets -jupyter_sphinx - -# Scientific libraries -matplotlib -numpy -ase -scipy - -# COSMO stack and friends -scikit-learn -skmatter -chemiscope -equisolve @ https://github.com/lab-cosmo/equisolve/archive/63c9c54.zip - -metatensor -rascaline @ https://github.com/luthaf/rascaline/archive/581d0ca.zip diff --git a/docs/src/conf.py b/docs/src/conf.py index 958d5d9e..7e913817 100644 --- a/docs/src/conf.py +++ b/docs/src/conf.py @@ -1,30 +1,5 @@ -# Sphinx documentation build configuration file -import os - - # Add any Sphinx extension module names here, as strings. -extensions = [ - "sphinx.ext.autodoc", # import the modules you are documenting - "sphinx.ext.intersphinx", # generate links to external projects - "sphinx.ext.viewcode", # add links to highlighted source code - "sphinx_gallery.gen_gallery", # provides a source parser for *.ipynb files -] - -examples_root = os.path.join(os.getcwd(), "../../examples/") -examples_subdirs = [] -for path in os.listdir(examples_root): - # ignores files and hidden directories - if os.path.isdir(os.path.join(examples_root, path)) and path[0] != ".": - examples_subdirs.append(path) - -sphinx_gallery_conf = { - "filename_pattern": "/*", - "examples_dirs": [f"../../examples/{subdir}" for subdir in examples_subdirs], - "gallery_dirs": [f"{subdir}" for subdir in examples_subdirs], - "min_reported_time": 60, - # Make the code snippet for own functions clickable - "reference_url": {"cosmo-software-cookbook": None}, -} +extensions = ["sphinx.ext.viewcode", "sphinx_gallery.load_style"] templates_path = ["_templates"] exclude_patterns = ["_build"] @@ -34,47 +9,3 @@ htmlhelp_basename = "COSMO software-cookbook" html_theme = "furo" - -# We create the index.rst here because sphinx is not able to automatically -# include all subdirectories using regex expression -root_index_rst_content = r""" -COSMO Software Cookbook -======================= - -.. include:: ../../README.rst - :start-after: marker-intro-start - :end-before: marker-intro-end - -.. toctree:: - :caption: Table of Contents - -""" -root_index_rst_content += "".join( - [f" {subdir}/index\n" for subdir in examples_subdirs] -) -print("Creating index.rst including all examples") -print(root_index_rst_content) - -with open("index.rst", "w") as f: - f.write(root_index_rst_content) - -# Configuration for intersphinx: refer to the Python standard library -# and other packages used by the cookbook - -intersphinx_mapping = { - "ase": ("https://wiki.fysik.dtu.dk/ase/", None), - "chemiscope": ("https://chemiscope.org/docs/", None), - "metatensor": ("https://lab-cosmo.github.io/metatensor/latest/", None), - "equisolve": ("https://lab-cosmo.github.io/equisolve/latest/", None), - "matplotlib": ("https://matplotlib.org/stable/", None), - "numpy": ("https://numpy.org/doc/stable/", None), - "python": ("https://docs.python.org/3", None), - "rascaline": ("https://luthaf.fr/rascaline/latest/", None), - "rascal": ("https://lab-cosmo.github.io/librascal/", None), - "scipy": ("https://docs.scipy.org/doc/scipy/", None), - "sklearn": ( - "http://scikit-learn.org/stable", - (None, "./_intersphinx/sklearn-objects.inv"), - ), - "skmatter": ("https://scikit-matter.readthedocs.io/en/latest/", None), -} diff --git a/docs/src/index.rst b/docs/src/index.rst new file mode 100644 index 00000000..f8460251 --- /dev/null +++ b/docs/src/index.rst @@ -0,0 +1,14 @@ +COSMO Software Cookbook +======================= + +.. include:: ../../README.rst + :start-after: marker-intro-start + :end-before: marker-intro-end + +.. toctree:: + :caption: Table of Contents + :maxdepth: 1 + + examples/roy_gch/roy_gch + examples/lode_linear/lode_tutorial + examples/sample_selection/sample_selection_librascal diff --git a/examples/lode_linear/environement.yml b/examples/lode_linear/environement.yml new file mode 100644 index 00000000..6e07a10e --- /dev/null +++ b/examples/lode_linear/environement.yml @@ -0,0 +1,9 @@ +name: lode_linear +dependencies: + - python=3.11 + - pip + - pip: + - ase + - metatensor + - equisolve @ git+https://github.com/lab-cosmo/equisolve.git@63c9c54046507b27f115efb1d9b9fa8a1573c4da + - rascaline @ git+https://github.com/Luthaf/rascaline@581d0ca4dece424b4594c8c3cac40a7381e13ae5 diff --git a/examples/mlp_models/README.rst b/examples/mlp_models/README.rst deleted file mode 100644 index 572a37d4..00000000 --- a/examples/mlp_models/README.rst +++ /dev/null @@ -1,3 +0,0 @@ -Machine Learning Potentials -=========================== - diff --git a/examples/mlp_models/linear_model.py b/examples/mlp_models/linear_model.py deleted file mode 100644 index bbc8003c..00000000 --- a/examples/mlp_models/linear_model.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -""" -MLP with Linear Model -===================== -""" -# %% -# - - -import numpy as np - - -# %% -# Explanation - -X = np.random.rand(10000) * 400 -Y = 0.1 * X + 10.1 -Y_p = Y + np.random.randn(10000) * 1.5 diff --git a/examples/roy_gch/environement.yml b/examples/roy_gch/environement.yml new file mode 100644 index 00000000..8f7401d1 --- /dev/null +++ b/examples/roy_gch/environement.yml @@ -0,0 +1,10 @@ +name: lode_linear +dependencies: + - python=3.11 + - pip + - pip: + - chemiscope + - skmatter + - metatensor + - equisolve @ git+https://github.com/lab-cosmo/equisolve.git@63c9c54046507b27f115efb1d9b9fa8a1573c4da + - rascaline @ git+https://github.com/Luthaf/rascaline@581d0ca4dece424b4594c8c3cac40a7381e13ae5 diff --git a/examples/roy_gch/roy_gch.py b/examples/roy_gch/roy_gch.py index 0b90a705..d4c4eeb2 100644 --- a/examples/roy_gch/roy_gch.py +++ b/examples/roy_gch/roy_gch.py @@ -6,7 +6,7 @@ `Beran et Al, Chemical Science (2022) `__, comparing the conventional density-energy convex hull with a Generalized Convex Hull -(GCH) analysis (see `Anelli et al., Phys. Rev. Materials +(GCH) analysis (see `Anelli et al., Phys. Rev. Materials (2018) `__). It uses features computed with `rascaline ` and uses the directional convex hull function from @@ -14,7 +14,7 @@ to make the figure. """ import chemiscope -import matplotlib.tri as mtri +import matplotlib.tri import numpy as np from matplotlib import pyplot as plt from metatensor import mean_over_samples @@ -40,7 +40,7 @@ # %% # Energy-density hull -# =================== +# ------------------- # # The Directional Convex Hull routines can be used to compute a # conventional density-energy hull @@ -59,7 +59,7 @@ # %% # # Hull energies -# ------------- +# ^^^^^^^^^^^^^ # # Structures on the hull are stable with respect to synthesis at constant # molar volume. Any other structure would lower the energy by decomposing @@ -85,7 +85,7 @@ # %% # Interactive visualization -# ------------------------- +# ^^^^^^^^^^^^^^^^^^^^^^^^^ # # You can also visualize the hull with ``chemiscope``. # This runs only in a notebook, and @@ -116,7 +116,7 @@ # %% # Generalized Convex Hull -# ======================= +# ----------------------- # # A GCH is a similar construction, in which generic structural descriptors # are used in lieu of composition, density or other thermodynamic @@ -131,7 +131,7 @@ # %% # Compute structural descriptors -# ------------------------------ +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # # A first step is to computes suitable ML descriptors. Here we have used # ``rascaline`` to evaluate average SOAP features for the structures. @@ -163,7 +163,7 @@ # %% # PCA projection -# -------------- +# ^^^^^^^^^^^^^^ # # Computes PCA projection to generate low-dimensional descriptors that # reflect structural diversity. Any other dimensionality reduction scheme @@ -182,7 +182,7 @@ # %% # Builds the Generalized Convex Hull -# ---------------------------------- +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # # Builds a convex hull on the first two PCA features @@ -196,7 +196,7 @@ # Generates a 3D Plot # -triang = mtri.Triangulation(pca_features[sel, 0], pca_features[sel, 1]) +triang = matplotlib.tri.Triangulation(pca_features[sel, 0], pca_features[sel, 1]) fig = plt.figure(figsize=(7, 5), tight_layout=True) ax = fig.add_subplot(projection="3d") ax.plot_trisurf(triang, energy[sel], color="gray") @@ -239,7 +239,6 @@ "y": {"property": "pca_2"}, "z": {"property": "energy"}, "symbol": "type", - "symbol": "type", "color": {"property": "hull_energy"}, "size": { "factor": 35, diff --git a/examples/sample_selection/environement.yml b/examples/sample_selection/environement.yml new file mode 100644 index 00000000..1dd5fdda --- /dev/null +++ b/examples/sample_selection/environement.yml @@ -0,0 +1,12 @@ +name: lode_linear +dependencies: + - python=3.10 + - pip + - pip: + # example dependencies + - chemiscope + - skmatter + - scikit-learn + - ase + # needed to install rascal + - setuptools diff --git a/generate-gallery.py b/generate-gallery.py new file mode 100644 index 00000000..1ccb0450 --- /dev/null +++ b/generate-gallery.py @@ -0,0 +1,68 @@ +import os +import shutil +import sys + +import sphinx_gallery.gen_gallery + + +HERE = os.path.realpath(os.path.dirname(__file__)) + + +class AttrDict(dict): + def __init__(self): + super().__init__() + self.__dict__ = self + + +class PseudoSphinxApp: + """ + Class pretending to be a sphinx App, used to configure and run sphinx-gallery + from the command line, without having an actual sphinx project. + """ + + def __init__(self, example): + gallery_dir = os.path.join( + HERE, "docs", "src", "examples", os.path.basename(example) + ) + if os.path.exists(gallery_dir): + shutil.rmtree(gallery_dir) + + # the options here are the minimal set of options to get sphinx-gallery to run + # feel free to add more if sphinx-gallery uses more options in the future + self.config = AttrDict() + self.config.html_static_path = [] + self.config.source_suffix = [".rst"] + self.config.default_role = "" + self.config.sphinx_gallery_conf = { + "filename_pattern": ".*", + "examples_dirs": os.path.join(HERE, example), + "gallery_dirs": gallery_dir, + "min_reported_time": 60, + } + + self.builder = AttrDict() + self.builder.srcdir = os.path.join(HERE, "docs", "src") + self.builder.outdir = "" + self.builder.name = os.path.basename(example) + + self.extensions = [] + + self.builder.config = AttrDict() + self.builder.config.plot_gallery = "True" + self.builder.config.abort_on_example_error = True + self.builder.config.highlight_language = None + + def add_css_file(self, path): + pass + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print(f"usage: {sys.argv[0]} ") + sys.exit(1) + + app = PseudoSphinxApp(example=sys.argv[1]) + + sphinx_gallery.gen_gallery.fill_gallery_conf_defaults(app, app.config) + sphinx_gallery.gen_gallery.update_gallery_conf_builder_inited(app) + sphinx_gallery.gen_gallery.generate_gallery_rst(app) diff --git a/ipynb_to_gallery.py b/ipynb-to-gallery.py similarity index 100% rename from ipynb_to_gallery.py rename to ipynb-to-gallery.py diff --git a/tox.ini b/tox.ini index 1b4b1be2..cdd7509f 100644 --- a/tox.ini +++ b/tox.ini @@ -5,16 +5,65 @@ envlist = docs [testenv] +package = skip lint_folders = - "{toxinidir}/ipynb_to_gallery.py" \ + "{toxinidir}/ipynb-to-gallery.py" \ + "{toxinidir}/generate-gallery.py" \ "{toxinidir}/docs/src/conf.py" \ "{toxinidir}/examples" + +install_conda_env = + conda env update --file examples/{envname}/environement.yml --prefix {envdir}/conda --verbose + # install sphinx-gallery and its dependencies + {envdir}/conda/bin/python -m pip install sphinx-gallery sphinx pillow matplotlib + +generate_gallery = + {envdir}/conda/bin/python generate-gallery.py examples/{envname} + rm -rf docs/src/examples/{envname}/index.rst + +allowlist_externals = + rm + conda + {envdir}/conda/bin/python + commands = # error if the user gives a wrong testenv name in `tox -e` python -c "import sys; print('environement {env_name} does not exist'); sys.exit(1)" + +[testenv:docs] +deps = + -r docs/requirements.txt + +allowlist_externals = tox +commands = + # transform all examples to rst + tox -e lode_linear + tox -e roy_gch + tox -e sample_selection + + sphinx-build {posargs:-E} -W -b html docs/src docs/build/html + + +[testenv:lode_linear] +commands = + {[testenv]install_conda_env} + {[testenv]generate_gallery} + +[testenv:roy_gch] +commands = + {[testenv]install_conda_env} + {[testenv]generate_gallery} + +[testenv:sample_selection] +commands = + {[testenv]install_conda_env} + # manually install librascal from https://luthaf.fr/nightly-wheels/ + {envdir}/conda/bin/python -m pip install rascal --index-url https://luthaf.fr/nightly-wheels/ + {[testenv]generate_gallery} + + [testenv:lint] -skip_install = true deps = black blackdoc @@ -32,18 +81,10 @@ commands = -i "{toxinidir}/docs/src" \ {[testenv]lint_folders} "{toxinidir}/README.rst" "{toxinidir}/CONTRIBUTING.rst" -[testenv:docs] -deps = - -r docs/requirements.txt -commands = - # tox's can not handle our custom requirement files in the deps section. - pip install -r docs/requirements-rascal.txt - sphinx-build {posargs:-E} -W -b html docs/src docs/build/html [testenv:format] # Abuse tox to do actual formatting. Users can call `tox -e format` to run # formatting on all files -skip_install = true deps = black blackdoc