From f4cb6655324a96bc6373345914de675dabd4a2d3 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson <oscar.gustafsson@gmail.com> Date: Wed, 5 Apr 2023 17:35:28 +0200 Subject: [PATCH] Use jupyter-sphinx --- README.md | 1 + docs_sphinx/conf.py | 1 + examples/connectmultiplesfgs.py | 133 +++++++++++--------------------- requirements_doc.txt | 1 + 4 files changed, 46 insertions(+), 90 deletions(-) diff --git a/README.md b/README.md index b35fe30e..b1684b2d 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ To generate the documentation, the following additional packages are required: - [numpydoc](https://numpydoc.readthedocs.io/) - [Sphinx-Gallery](https://sphinx-gallery.github.io/) - [mplsignal](https://mplsignal.readthedocs.io/) + - [jupyters-sphinx](https://jupyter-sphinx.readthedocs.io/) ### Using setuptools to create a package diff --git a/docs_sphinx/conf.py b/docs_sphinx/conf.py index 670495e0..aae9c64e 100644 --- a/docs_sphinx/conf.py +++ b/docs_sphinx/conf.py @@ -24,6 +24,7 @@ extensions = [ 'sphinx.ext.intersphinx', 'sphinx_gallery.gen_gallery', 'numpydoc', # Needs to be loaded *after* autodoc. + 'jupyter_sphinx', ] templates_path = ['_templates'] diff --git a/examples/connectmultiplesfgs.py b/examples/connectmultiplesfgs.py index 20d29f22..2a078601 100644 --- a/examples/connectmultiplesfgs.py +++ b/examples/connectmultiplesfgs.py @@ -13,94 +13,47 @@ interest to "flatten" the SFGs, i.e., get a resulting SFG not containing other SFGs but the operations of these. To do this, one will have to use the method :func:`~b_asic.signal_flow_graph.SFG.connect_external_signals_to_components`. -This example illustrates how this can be done. -""" +This example illustrates how it can be done. + +.. jupyter-execute:: + + from b_asic.sfg_generators import wdf_allpass + from b_asic.signal_flow_graph import SFG + from b_asic.special_operations import Input, Output + + # Generate allpass branches for fifth-ordet LWDF filter + allpass1 = wdf_allpass([0.2, 0.5]) + allpass2 = wdf_allpass([-0.5, 0.2, 0.5]) + + in_lwdf = Input() + allpass1 << in_lwdf + allpass2 << in_lwdf + out_lwdf = Output((allpass1 + allpass2) * 0.5) + + # Create SFG of LWDF with two internal SFGs + sfg_with_sfgs = SFG( + [in_lwdf], [out_lwdf], name="LWDF with separate internals SFGs for allpass branches" + ) + +The resulting SFG looks like: + +.. jupyter-execute:: -from b_asic.sfg_generators import wdf_allpass -from b_asic.signal_flow_graph import SFG -from b_asic.special_operations import Input, Output - -# Generate allpass branches for fifth-ordet LWDF filter -allpass1 = wdf_allpass([0.2, 0.5]) -allpass2 = wdf_allpass([-0.5, 0.2, 0.5]) - -in_lwdf = Input() -allpass1 << in_lwdf -allpass2 << in_lwdf -out_lwdf = Output((allpass1 + allpass2) * 0.5) - -# Create SFG of LWDF with two internal SFGs -sfg_with_sfgs = SFG( - [in_lwdf], [out_lwdf], name="LWDF with separate internals SFGs for allpass branches" -) - -# %% -# Rendering the SFG will result in something like: -# -# .. graphviz:: -# -# digraph { -# rankdir=LR -# in1 [shape=cds] -# in1 -> sfg1 -# in1 -> sfg2 -# out1 [shape=cds] -# cmul1 -> out1 -# sfg1 [shape=ellipse] -# sfg1 -> add1 -# add1 [shape=ellipse] -# sfg2 -> add1 -# sfg2 [shape=ellipse] -# add1 -> cmul1 -# cmul1 [shape=ellipse] -# } -# -# Now, to create a LWDF where the SFGs are flattened. Note that the original SFGs -# ``allpass1`` and ``allpass2`` currently cannot be printed etc after this operation. - -allpass1.connect_external_signals_to_components() -allpass2.connect_external_signals_to_components() -flattened_sfg = SFG([in_lwdf], [out_lwdf], name="Flattened LWDF") - -# %% -# Resulting in: -# -# .. graphviz:: -# -# digraph { -# rankdir=LR -# in1 [shape=cds] -# in1 -> sym2p1 -# in1 -> sym2p4 -# out1 [shape=cds] -# cmul1 -> out1 -# sym2p1 [shape=ellipse] -# sym2p2 -> sym2p1 -# sym2p2 [shape=ellipse] -# sym2p1 -> add1 -# add1 [shape=ellipse] -# sym2p1 -> t1 -# t1 [shape=square] -# t1 -> sym2p2 -# sym2p3 -> add1 -# sym2p3 [shape=ellipse] -# add1 -> cmul1 -# cmul1 [shape=ellipse] -# sym2p4 -> sym2p3 -# sym2p4 [shape=ellipse] -# sym2p5 -> sym2p3 -# sym2p5 [shape=ellipse] -# sym2p3 -> t2 -# t2 [shape=square] -# t2 -> sym2p5 -# t3 -> sym2p5 -# t3 [shape=square] -# sym2p5 -> t3 -# t4 -> sym2p4 -# t4 [shape=square] -# sym2p4 -> t4 -# t5 -> sym2p2 -# t5 [shape=square] -# sym2p2 -> t5 -# } -# + sfg_with_sfgs + + +Now, to create a LWDF where the SFGs are flattened. Note that the original SFGs +``allpass1`` and ``allpass2`` currently cannot be printed etc after this operation. + +.. jupyter-execute:: + + allpass1.connect_external_signals_to_components() + allpass2.connect_external_signals_to_components() + flattened_sfg = SFG([in_lwdf], [out_lwdf], name="Flattened LWDF") + +Resulting in: + +.. jupyter-execute:: + + flattened_sfg +""" diff --git a/requirements_doc.txt b/requirements_doc.txt index cc10b763..5112621b 100644 --- a/requirements_doc.txt +++ b/requirements_doc.txt @@ -3,3 +3,4 @@ furo numpydoc sphinx-gallery mplsignal +jupyter-sphinx -- GitLab