diff --git a/.binder/postBuild b/.binder/postBuild deleted file mode 100644 index cc9f025ba9..0000000000 --- a/.binder/postBuild +++ /dev/null @@ -1 +0,0 @@ -pip install -e .[test] diff --git a/README.md b/README.md index 17b5c8cce0..1332f72c06 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,9 @@ and Dask (this is an experimental implementation with limited testing) [[PyCon 2020 Poster](https://docs.google.com/presentation/d/10tS2I34rS0G9qz6v29qVd77OUydjP_FdBklrgAGmYSw/edit?usp=sharing)] ### Tutorial -This tutorial will walk you through the main concepts of Pydra! -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/nipype/pydra/master?filepath=tutorial%2Fnotebooks) +Pydra Tutorial can be find in [pydra-tutorial repository](https://github.com/nipype/pydra-tutorial). + +The tutorial can be run locally or using Binder service: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/nipype/pydra-tutorial/master?filepath=notebooks) Please note that mybinder times out after an hour. diff --git a/setup.cfg b/setup.cfg index 838313301f..d7dea4e0d6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,11 +37,8 @@ test_requires = codecov numpy psutil - tornado==4.5.3 - nbformat - notebook==5.7.8 - jupyter - jupyter_contrib_nbextensions + python-dateutil + tornado boutiques packages = find: include_package_data = True @@ -72,11 +69,8 @@ test = numpy pyld psutil - tornado==4.5.3 - nbformat - notebook==5.7.8 - jupyter - jupyter_contrib_nbextensions + python-dateutil + tornado boutiques tests = %(test)s @@ -85,20 +79,7 @@ dev = black pre-commit dask = - pytest >= 4.4.0 - pytest-cov - pytest-env - pytest-xdist - pytest-rerunfailures - codecov - numpy - pyld - psutil - tornado - nbformat - notebook - jupyter - jupyter_contrib_nbextensions + %(test)s dask distributed all = diff --git a/tutorial/README.md b/tutorial/README.md new file mode 100644 index 0000000000..4df55ac5a0 --- /dev/null +++ b/tutorial/README.md @@ -0,0 +1,5 @@ +# Pydra Tutorial + +Python Tutorial has been moved to a separate [GitHub repository](https://github.com/nipype/pydra-tutorial). + +The interactive tutorial is available at [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/nipype/pydra-tutorial/master?filepath=notebooks) diff --git a/tutorial/figures/nd_spl.tikz b/tutorial/figures/nd_spl.tikz deleted file mode 100644 index e4c29da5c0..0000000000 --- a/tutorial/figures/nd_spl.tikz +++ /dev/null @@ -1,13 +0,0 @@ -\begin{tikzpicture}[font={\tiny}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}, label={above:x=[1,2,3]}] (0) at (0, -5.5) {}; - \node [style={nd_blue}, label={above:x=1}] (1) at (-2, -7) {}; - \node [style={nd_red}, label={above:x=2}] (2) at (0, -7) {}; - \node [style={nd_green, opacity=0.02}, label={\small above:x=3}] (3) at (2, -7) {}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_1.png b/tutorial/figures/nd_spl_1.png deleted file mode 100644 index 35782911fa..0000000000 Binary files a/tutorial/figures/nd_spl_1.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_1.tikz b/tutorial/figures/nd_spl_1.tikz deleted file mode 100644 index 15674dfebf..0000000000 --- a/tutorial/figures/nd_spl_1.tikz +++ /dev/null @@ -1,16 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -2.5) { \tiny$x=[1, 2, 3]$ \\ \small\textcolor{red}{$\mathcal{S}=x$}}; - \node [style={nd_blue}] (1) at (-4, -7) {$x=1$}; - \node [style={nd_red}] (2) at (0, -7) {$x=2$}; - \node [style={nd_green}] (3) at (4, -7) {$x=3$}; - \node [style=none] (4) at (0, -9) {$out=3$}; - \node [style=none] (5) at (4, -9) {$out=4$}; - \node [style=none] (6) at (-4, -9) {$out=5$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_2.png b/tutorial/figures/nd_spl_2.png deleted file mode 100644 index f12950d9e5..0000000000 Binary files a/tutorial/figures/nd_spl_2.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_2.tikz b/tutorial/figures/nd_spl_2.tikz deleted file mode 100644 index 866b897c37..0000000000 --- a/tutorial/figures/nd_spl_2.tikz +++ /dev/null @@ -1,18 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}, font={\small}] (0) at (0, -2) {\tiny $a=[1, 2, 3]$ \\ \tiny $b=10$ \\ \small \textcolor{red}{$\mathcal{S -}=a$}}; - \node [style={nd_blue}] (1) at (-4, -7) {$a=1$ \\ $b=10$}; - \node [style={nd_red}] (2) at (0, -7) {$a=2$ \\ $b=10$}; - \node [style={nd_green}] (3) at (4, -7) {$a=3$ \\ $b=10$}; - \node [style=none] (4) at (0, -9.5) {$out=11$}; - \node [style=none] (5) at (4, -9.5) {$out=12$}; - \node [style=none] (6) at (-4, -9.5) {$out=13$}; - \node [style=none] (7) at (5.5, -3.75) {}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_3.png b/tutorial/figures/nd_spl_3.png deleted file mode 100644 index e4e95b4e72..0000000000 Binary files a/tutorial/figures/nd_spl_3.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_3.tikz b/tutorial/figures/nd_spl_3.tikz deleted file mode 100644 index 9d1061d295..0000000000 --- a/tutorial/figures/nd_spl_3.tikz +++ /dev/null @@ -1,20 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -1) {\tiny $a=[1, 2]$ \\ \tiny $b=[10, 100]$ \\ \small \textcolor{red}{$\mathcal{S -}=[a, b]$}}; - \node [style={nd_blue}] (1) at (-7.5, -7) {$a=1$ \\ $b=10~$}; - \node [style={nd_red}] (2) at (-2.5, -7) {$a=1$ \\ $b=100$}; - \node [style={nd_green}] (3) at (7.5, -7) {$a=2$ \\ $b=100$}; - \node [style=none] (4) at (-2.5, -9.5) {$out=101$}; - \node [style=none] (5) at (2.5, -9.5) {$out=12$}; - \node [style=none] (6) at (-7.5, -9.5) {$out=11$}; - \node [style={nd_pr}] (9) at (2.5, -7) {$a=2$ \\ $b=10~$}; - \node [style=none] (10) at (7.5, -9.5) {$out=102$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \draw [style=grey] (0) to (9); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_3_comb1.png b/tutorial/figures/nd_spl_3_comb1.png deleted file mode 100644 index dd19db24f9..0000000000 Binary files a/tutorial/figures/nd_spl_3_comb1.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_3_comb1.tikz b/tutorial/figures/nd_spl_3_comb1.tikz deleted file mode 100644 index 8cf3509c78..0000000000 --- a/tutorial/figures/nd_spl_3_comb1.tikz +++ /dev/null @@ -1,26 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -1) {\tiny $a=[1, 2]$ \\ \tiny $b=[10, 100]$ \\ \small \textcolor{red}{$\mathcal{S -}=[a, b]$} \\ \small \textcolor{red}{$\mathcal{C}=b$}}; - \node [style={nd_blue}] (1) at (-7.5, -7) {$a=1$ \\ $b=10~$}; - \node [style={nd_red}] (2) at (-2.5, -7) {$a=1$ \\ $b=100$}; - \node [style={nd_green}] (3) at (7.5, -7) {$a=2$ \\ $b=100$}; - \node [style=none] (4) at (-2.5, -9.5) {$out=101$}; - \node [style=none] (5) at (2.5, -9.5) {$out=12$}; - \node [style=none] (6) at (-7.5, -9.5) {$out=11$}; - \node [style={nd_pr}] (9) at (2.5, -7) {$a=2$ \\ $b=10~$}; - \node [style=none] (10) at (7.5, -9.5) {$out=102$}; - \node [style=none] (11) at (-5, -12) {$out_{comb}=[11, 101]$}; - \node [style=none] (12) at (5, -12) {$out_{comb}=[12, 102]$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \draw [style=grey] (0) to (9); - \draw [style=grey] (6.center) to (11.center); - \draw [style=grey] (4.center) to (11.center); - \draw [style=grey] (5.center) to (12.center); - \draw [style=grey] (10.center) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_3_comb2.png b/tutorial/figures/nd_spl_3_comb2.png deleted file mode 100644 index 0967e3f3cf..0000000000 Binary files a/tutorial/figures/nd_spl_3_comb2.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_3_comb2.tikz b/tutorial/figures/nd_spl_3_comb2.tikz deleted file mode 100644 index ae49237e9a..0000000000 --- a/tutorial/figures/nd_spl_3_comb2.tikz +++ /dev/null @@ -1,26 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -1) {\tiny $a=[1, 2]$ \\ \tiny $b=[10, 100]$ \\ \small \textcolor{red}{$\mathcal{S -}=[a, b]$} \\ \small \textcolor{red}{$\mathcal{C}=a$}}; - \node [style={nd_blue}] (1) at (-7.5, -7) {$a=1$ \\ $b=10~$}; - \node [style={nd_red}] (2) at (-2.5, -7) {$a=1$ \\ $b=100$}; - \node [style={nd_green}] (3) at (7.5, -7) {$a=2$ \\ $b=100$}; - \node [style=none] (4) at (-2.5, -9.5) {$out=101$}; - \node [style=none] (5) at (2.5, -9.5) {$out=12$}; - \node [style=none] (6) at (-7.5, -9.5) {$out=11$}; - \node [style={nd_pr}] (9) at (2.5, -7) {$a=2$ \\ $b=10~$}; - \node [style=none] (10) at (7.5, -9.5) {$out=102$}; - \node [style=none] (11) at (-5, -12) {$out_{comb}=[11, 12]$}; - \node [style=none] (12) at (5, -12) {$out_{comb}=[101, 102]$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \draw [style=grey] (0) to (9); - \draw [style=grey] (6.center) to (11.center); - \draw [style=grey] (10.center) to (12.center); - \draw [style=grey] (5.center) to (11.center); - \draw [style=grey] (4.center) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_3_comb3.png b/tutorial/figures/nd_spl_3_comb3.png deleted file mode 100644 index b50fad23f5..0000000000 Binary files a/tutorial/figures/nd_spl_3_comb3.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_3_comb3.tikz b/tutorial/figures/nd_spl_3_comb3.tikz deleted file mode 100644 index 421f302629..0000000000 --- a/tutorial/figures/nd_spl_3_comb3.tikz +++ /dev/null @@ -1,25 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -1) {\tiny $a=[1, 2]$ \\ \tiny $b=[10, 100]$ \\ \small \textcolor{red}{$\mathcal{S -}=[a, b]$} \\ \small \textcolor{red}{$\mathcal{C}=[a, b]$}}; - \node [style={nd_blue}] (1) at (-7.5, -7) {$a=1$ \\ $b=10~$}; - \node [style={nd_red}] (2) at (-2.5, -7) {$a=1$ \\ $b=100$}; - \node [style={nd_green}] (3) at (7.5, -7) {$a=2$ \\ $b=100$}; - \node [style=none] (4) at (-2.5, -9.5) {$out=101$}; - \node [style=none] (5) at (2.5, -9.5) {$out=12$}; - \node [style=none] (6) at (-7.5, -9.5) {$out=11$}; - \node [style={nd_pr}] (9) at (2.5, -7) {$a=2$ \\ $b=10~$}; - \node [style=none] (10) at (7.5, -9.5) {$out=102$}; - \node [style=none] (11) at (0, -12) {$out_{comb}=[11, 101, 12, 102]$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \draw [style=grey] (0) to (9); - \draw [style=grey] (6.center) to (11.center); - \draw [style=grey] (4.center) to (11.center); - \draw [style=grey] (5.center) to (11.center); - \draw [style=grey] (10.center) to (11.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_4.png b/tutorial/figures/nd_spl_4.png deleted file mode 100644 index e900bc3298..0000000000 Binary files a/tutorial/figures/nd_spl_4.png and /dev/null differ diff --git a/tutorial/figures/nd_spl_4.tikz b/tutorial/figures/nd_spl_4.tikz deleted file mode 100644 index 0cacdfbaa5..0000000000 --- a/tutorial/figures/nd_spl_4.tikz +++ /dev/null @@ -1,14 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}] (0) at (0, -2) {\tiny $a=[1, 2]$ \\ \tiny $b=[10, 100]$ \\ \small \textcolor{red}{$\mathcal{S -}=(a, b)$}}; - \node [style={nd_blue}] (1) at (-5, -7) {$a=1$ \\ $b=10~$}; - \node [style={nd_green}] (3) at (5, -7) {$a=2$ \\ $b=100$}; - \node [style=none] (6) at (-5, -9.5) {$out=11$}; - \node [style=none] (10) at (5, -9.5) {$out=102$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (3); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_cmb_1.tikz b/tutorial/figures/nd_spl_cmb_1.tikz deleted file mode 100644 index a8bd6992c5..0000000000 --- a/tutorial/figures/nd_spl_cmb_1.tikz +++ /dev/null @@ -1,24 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_white}, font={\small}] (0) at (0, -1) {$x=[1, 2, 3]$ \\ $n=[2, 3]$ \\ {\boldmath $\mathcal{S -}=[x, n]$} \\ {\boldmath $\mathcal{C}=n$}}; - \node [style={nd_blue}] (1) at (-10, -7) {$x=1$ \\ $n=2$}; - \node [style={nd_red}] (2) at (-2, -7) {$x=2$ \\ $n=2$}; - \node [style={nd_green}] (3) at (10, -7) {$x=3$ \\ $n=3$}; - \node [style=none] (4) at (-2, -9) {$out=101$}; - \node [style=none] (5) at (2, -9) {$out=12$}; - \node [style=none] (6) at (-10, -9) {$square=1$}; - \node [style={nd_pr}] (9) at (2, -7) {$x=2$ \\ $n=3$}; - \node [style=none] (10) at (10, -9) {$out=102$}; - \node [style={nd_sel}] (11) at (-6, -7) {$x=1$ \\ $n=3$}; - \node [style={nd_yl}] (12) at (6, -7) {$x=3$ \\ $n=2$}; - \node [style=none] (13) at (-6, -9) {}; - \node [style=none] (14) at (6, -9) {}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style=grey] (0) to (1); - \draw [style=grey] (0) to (2); - \draw [style=grey] (0) to (3); - \draw [style=grey] (0) to (9); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/nd_spl_sm.png b/tutorial/figures/nd_spl_sm.png deleted file mode 100644 index d4abf7b2ec..0000000000 Binary files a/tutorial/figures/nd_spl_sm.png and /dev/null differ diff --git a/tutorial/figures/sample_dj.tikzstyles b/tutorial/figures/sample_dj.tikzstyles deleted file mode 100644 index 2ba990d8b5..0000000000 --- a/tutorial/figures/sample_dj.tikzstyles +++ /dev/null @@ -1,29 +0,0 @@ -% TiKZ style file generated by TikZiT. You may edit this file manually, -% but some things (e.g. comments) may be overwritten. To be readable in -% TikZiT, the only non-comment lines must be of the form: -% \tikzstyle{NAME}=[PROPERTY LIST] - -% Node styles -\tikzstyle{nd_blue}=[fill={rgb,255: red,73; green,92; blue,176}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{wf_black}=[fill=black, fill opacity=0.3, text opacity=1, draw=black, shape=rectangle] -\tikzstyle{nd_black}=[fill=black, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{nd_red}=[fill={rgb,255: red,195; green,10; blue,47}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{nd_green}=[fill={rgb,255: red,74; green,123; blue,53}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{nd_white}=[fill=white, draw=black, shape=circle] -\tikzstyle{nd_grey}=[fill={rgb,255: red,191; green,191; blue,191}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{wf_white}=[fill=white, draw=black, fill opacity=0.3, text opacity=1, shape=rectangle] -\tikzstyle{wf_blue}=[fill={rgb,255: red,73; green,92; blue,176}, fill opacity=0.3, text opacity=1, draw=black, shape=rectangle] -\tikzstyle{new style 0}=[fill=black, draw=black, fill opacity=0.3, text opacity=1, shape=rectangle] -\tikzstyle{wf_green}=[fill={rgb,255: red,74; green,123; blue,53}, fill opacity=0.3, text opacity=1, draw=black, shape=rectangle] -\tikzstyle{wf_grey}=[fill={rgb,255: red,191; green,191; blue,191}, fill opacity=0.3, text opacity=1, draw=black, shape=rectangle] -\tikzstyle{nd_pr}=[fill={rgb,255: red,169; green,101; blue,192}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{nd_yl}=[fill={rgb,255: red,245; green,255; blue,149}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{nd_sel}=[fill={rgb,255: red,84; green,255; blue,221}, fill opacity=0.3, text opacity=1, draw=black, shape=circle] -\tikzstyle{wf_pr}=[fill={rgb,255: red,128; green,0; blue,128}, draw=black, shape=rectangle, fill opacity=0.3, text opacity=1] -\tikzstyle{wf_red}=[fill={rgb,255: red,195; green,39; blue,70}, draw=black, shape=rectangle, fill opacity=0.3, text opacity=1] - -% Edge styles -\tikzstyle{direct}=[->] -\tikzstyle{grey}=[-, draw={rgb,255: red,220; green,220; blue,220}] -\tikzstyle{edge_wf}=[-, draw={rgb,255: red,128; green,0; blue,128}] -\tikzstyle{edge_lzinout}=[draw={rgb,255: red,128; green,0; blue,128}, ->] diff --git a/tutorial/figures/wf_1.png b/tutorial/figures/wf_1.png deleted file mode 100644 index f12ca8a933..0000000000 Binary files a/tutorial/figures/wf_1.png and /dev/null differ diff --git a/tutorial/figures/wf_1.tikz b/tutorial/figures/wf_1.tikz deleted file mode 100644 index f0687c454e..0000000000 --- a/tutorial/figures/wf_1.tikz +++ /dev/null @@ -1,19 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (0, -2) {\small \textcolor{blue}{sum} \\ \small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_black}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -5) {}; - \node [style=none] (11) at (2, -5) {}; - \node [style=none] (12) at (0, -5.5) {{\small $wf.out=5$}}; - \node [style=none] (13) at (0, 0) {\textcolor{violet}{\tiny $x=wf.lzin.x$}}; - \node [style=none] (14) at (0, -4) {\tiny \textcolor{violet}{$wf.out=wf.sum.lzout.out$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (0) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_2.png b/tutorial/figures/wf_2.png deleted file mode 100644 index a2d63eadb9..0000000000 Binary files a/tutorial/figures/wf_2.png and /dev/null differ diff --git a/tutorial/figures/wf_2.tikz b/tutorial/figures/wf_2.tikz deleted file mode 100644 index b6e4410230..0000000000 --- a/tutorial/figures/wf_2.tikz +++ /dev/null @@ -1,24 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_black}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -6.5) {}; - \node [style=none] (11) at (2.25, -6.5) {}; - \node [style=none] (12) at (0, -7.25) {{\small $wf.out_s=5;~wf.out_p=9$}}; - \node [style=none] (13) at (-2, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -5.25) {\tiny \textcolor{violet}{$wf.out_p=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (3.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (16) at (2, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -4.25) {\tiny \textcolor{violet}{$wf.out_s = wf.sum.lzout.out$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (15) to (12.center); - \draw [style={edge_lzinout}] (0) to (12.center); - \draw [style={edge_lzinout}] (9) to (15); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_3.png b/tutorial/figures/wf_3.png deleted file mode 100644 index cf8090f2f5..0000000000 Binary files a/tutorial/figures/wf_3.png and /dev/null differ diff --git a/tutorial/figures/wf_3.tikz b/tutorial/figures/wf_3.tikz deleted file mode 100644 index ec37ac0499..0000000000 --- a/tutorial/figures/wf_3.tikz +++ /dev/null @@ -1,25 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (0, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_black}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -10) {}; - \node [style=none] (11) at (2, -10) {}; - \node [style=none] (12) at (0, -10.5) {{\small $wf.out_s=5;~wf.out_p=25$}}; - \node [style=none] (13) at (0, 0) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (0, -9) {\tiny \textcolor{violet}{$wf.out_p=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (0, -7) {\small \textcolor{blue}{power} \\ \small $a=5$}; - \node [style=none] (16) at (0, -4.5) {\tiny \textcolor{violet}{$a=wf.sum.lzout.out$}}; - \node [style=none] (17) at (4, -5.5) {\tiny \textcolor{violet}{$wf.out_s = wf.sum.lzout.out$}}; - \node [style=none] (18) at (0, 1.5) {}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (0) to (15); - \draw [style={edge_lzinout}] (15) to (12.center); - \draw [style={edge_lzinout}, bend left=60, looseness=1.50] (0) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_4.png b/tutorial/figures/wf_4.png deleted file mode 100644 index 3f982bc170..0000000000 Binary files a/tutorial/figures/wf_4.png and /dev/null differ diff --git a/tutorial/figures/wf_4.tikz b/tutorial/figures/wf_4.tikz deleted file mode 100644 index 30f567d0b5..0000000000 --- a/tutorial/figures/wf_4.tikz +++ /dev/null @@ -1,27 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_black}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -10.75) {}; - \node [style=none] (11) at (2, -10.75) {}; - \node [style=none] (12) at (0, -11.25) {{\small $wf.out=45$}}; - \node [style=none] (13) at (-2, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (3.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (16) at (2, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (18) at (0, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=9$}; - \node [style=none] (19) at (0, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (15) to (18); - \draw [style={edge_lzinout}] (0) to (18); - \draw [style={edge_lzinout}] (9) to (15); - \draw [style={edge_lzinout}] (18) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_5.png b/tutorial/figures/wf_5.png deleted file mode 100644 index 1f3335e933..0000000000 Binary files a/tutorial/figures/wf_5.png and /dev/null differ diff --git a/tutorial/figures/wf_5.tikz b/tutorial/figures/wf_5.tikz deleted file mode 100644 index f6625b1af6..0000000000 --- a/tutorial/figures/wf_5.tikz +++ /dev/null @@ -1,22 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={wf_black}] (0) at (0, -2) {\small \textcolor{blue}{wf2} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_black}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -10.75) {}; - \node [style=none] (11) at (2, -10.75) {}; - \node [style=none] (12) at (0, -11.25) {{\small $wf.out=45$}}; - \node [style=none] (13) at (0, -0.25) {\tiny \textcolor{violet}{$x=wf2.x = wf.lzin.x$}}; - \node [style=none] (14) at (0, -4.25) {\tiny \textcolor{violet}{$a=wf.wf2.lzout.out_s$} \\ \tiny \textcolor{violet}{$b=wf.wf2.lzout.out_p$}}; - \node [style={nd_black}] (18) at (0, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=9$}; - \node [style=none] (19) at (0, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (0) to (18); - \draw [style={edge_lzinout}] (18) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_6.png b/tutorial/figures/wf_6.png deleted file mode 100644 index 0c42c2fb89..0000000000 Binary files a/tutorial/figures/wf_6.png and /dev/null differ diff --git a/tutorial/figures/wf_6.tikz b/tutorial/figures/wf_6.tikz deleted file mode 100644 index c457e212bf..0000000000 --- a/tutorial/figures/wf_6.tikz +++ /dev/null @@ -1,51 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_blue}] (9) at (0, 1.8) {{\small $wf.x=3$}}; - \node [style=none] (10) at (-2, -10.75) {}; - \node [style=none] (11) at (2, -10.75) {}; - \node [style=none] (12) at (0, -11.25) {{\small $wf.out=45$}}; - \node [style=none] (13) at (-2, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (3.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (16) at (2, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (18) at (0, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=9$}; - \node [style=none] (19) at (0, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={nd_black}] (20) at (8.75, -2) {\small \textcolor{blue}{sum} \\\small $x=5$}; - \node [style=none] (21) at (10, 1) {}; - \node [style=none] (22) at (14, 1) {}; - \node [style={wf_green}] (23) at (12, 1.8) {{\small $wf.x=5$}}; - \node [style=none] (24) at (10, -10.75) {}; - \node [style=none] (25) at (14, -10.75) {}; - \node [style=none] (26) at (12, -11.25) {{\small $wf.out=179$}}; - \node [style=none] (27) at (10, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (28) at (9.75, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (29) at (15.25, -2) {\small \textcolor{blue}{power} \\ \small $a=5$}; - \node [style=none] (30) at (14, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (31) at (15.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (32) at (12, -7) {\small \textcolor{blue}{mult} \\ \small $a=7$ \\ \small $b=25$}; - \node [style=none] (33) at (12, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={wf_white}] (34) at (5.5, 6) {\small $wf.x=[3,5]$ \\ \small \textcolor{red}{$\mathcal{S}=x$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (15) to (18); - \draw [style={edge_lzinout}] (0) to (18); - \draw [style={edge_lzinout}] (9) to (15); - \draw [style={edge_lzinout}] (18) to (12.center); - \draw [style={edge_wf}] (21.center) to (22.center); - \draw [style={edge_lzinout}] (23) to (20); - \draw [style={edge_wf}] (24.center) to (25.center); - \draw [style={edge_lzinout}] (29) to (32); - \draw [style={edge_lzinout}] (20) to (32); - \draw [style={edge_lzinout}] (23) to (29); - \draw [style={edge_lzinout}] (32) to (26.center); - \draw [style=grey] (34) to (9); - \draw [style=grey] (34) to (23); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_7.png b/tutorial/figures/wf_7.png deleted file mode 100644 index 074fbfd9e7..0000000000 Binary files a/tutorial/figures/wf_7.png and /dev/null differ diff --git a/tutorial/figures/wf_7.tikz b/tutorial/figures/wf_7.tikz deleted file mode 100644 index 400d56ca5a..0000000000 --- a/tutorial/figures/wf_7.tikz +++ /dev/null @@ -1,95 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_red}] (9) at (0, 2.3) {\small $wf.x=3$ \\ \small $wf.y=3$}; - \node [style=none] (10) at (-2, -10.75) {}; - \node [style=none] (11) at (2, -10.75) {}; - \node [style=none] (12) at (0, -11.25) {{\small $wf.out=45$}}; - \node [style=none] (13) at (-2, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (3.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (16) at (2, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (18) at (0, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=9$}; - \node [style=none] (19) at (0, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={nd_black}] (20) at (7.75, -2) {\small \textcolor{blue}{sum} \\\small $x=5$}; - \node [style=none] (21) at (9, 1) {}; - \node [style=none] (22) at (13, 1) {}; - \node [style={wf_pr}] (23) at (11, 2.3) {\small $wf.x=5$ \\ \small $wf.y=2$}; - \node [style=none] (24) at (9, -10.75) {}; - \node [style=none] (25) at (13, -10.75) {}; - \node [style=none] (26) at (11, -11.25) {{\small $wf.out=28$}}; - \node [style=none] (27) at (9, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (28) at (8.75, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (29) at (14.25, -2) {\small \textcolor{blue}{power} \\ \small $a=2$}; - \node [style=none] (30) at (13, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (31) at (14.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (32) at (11, -7) {\small \textcolor{blue}{mult} \\ \small $a=7$ \\ \small $b=4$}; - \node [style=none] (33) at (11, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={wf_white}] (34) at (5.25, 8) {\tiny $wf.x=[3,5]$ \\ \tiny $wf.y=[2, 3]$ \\ \small \textcolor{red}{$\mathcal{S}=[x, y]$}}; - \node [style={nd_black}] (35) at (18.75, -2) {\small \textcolor{blue}{sum} \\\small $x=5$}; - \node [style=none] (36) at (20, 1) {}; - \node [style=none] (37) at (24, 1) {}; - \node [style={wf_green}] (38) at (22, 2.3) {\small $wf.x=5$ \\ \small $wf.y=3$}; - \node [style=none] (39) at (20, -10.75) {}; - \node [style=none] (40) at (24, -10.75) {}; - \node [style=none] (41) at (22, -11.25) {{\small $wf.out=63$}}; - \node [style=none] (42) at (20, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (43) at (19.75, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (44) at (25.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (45) at (24, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (46) at (25.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (47) at (22, -7) {\small \textcolor{blue}{mult} \\ \small $a=7$ \\ \small $b=9$}; - \node [style=none] (48) at (22, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={nd_black}] (49) at (-14.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (50) at (-13, 1) {}; - \node [style=none] (51) at (-9, 1) {}; - \node [style={wf_blue}] (52) at (-11, 2.3) {\small $wf.x=3$ \\ \small $wf.y=2$}; - \node [style=none] (53) at (-13, -10.75) {}; - \node [style=none] (54) at (-9, -10.75) {}; - \node [style=none] (55) at (-11, -11.25) {{\small $wf.out=20$}}; - \node [style=none] (56) at (-13, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (57) at (-13.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (58) at (-7.75, -2) {\small \textcolor{blue}{power} \\ \small $a=2$}; - \node [style=none] (59) at (-9, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (60) at (-7.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (61) at (-11, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=4$}; - \node [style=none] (62) at (-11, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (15) to (18); - \draw [style={edge_lzinout}] (0) to (18); - \draw [style={edge_lzinout}] (9) to (15); - \draw [style={edge_lzinout}] (18) to (12.center); - \draw [style={edge_wf}] (21.center) to (22.center); - \draw [style={edge_lzinout}] (23) to (20); - \draw [style={edge_wf}] (24.center) to (25.center); - \draw [style={edge_lzinout}] (29) to (32); - \draw [style={edge_lzinout}] (20) to (32); - \draw [style={edge_lzinout}] (23) to (29); - \draw [style={edge_lzinout}] (32) to (26.center); - \draw [style=grey] (34) to (9); - \draw [style=grey] (34) to (23); - \draw [style={edge_wf}] (36.center) to (37.center); - \draw [style={edge_lzinout}] (38) to (35); - \draw [style={edge_wf}] (39.center) to (40.center); - \draw [style={edge_lzinout}] (44) to (47); - \draw [style={edge_lzinout}] (35) to (47); - \draw [style={edge_lzinout}] (38) to (44); - \draw [style={edge_lzinout}] (47) to (41.center); - \draw [style={edge_wf}] (50.center) to (51.center); - \draw [style={edge_lzinout}] (52) to (49); - \draw [style={edge_wf}] (53.center) to (54.center); - \draw [style={edge_lzinout}] (58) to (61); - \draw [style={edge_lzinout}] (49) to (61); - \draw [style={edge_lzinout}] (52) to (58); - \draw [style={edge_lzinout}] (61) to (55.center); - \draw [style=grey] (34) to (52); - \draw [style=grey] (34) to (38); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_8.png b/tutorial/figures/wf_8.png deleted file mode 100644 index 8a2bb736b7..0000000000 Binary files a/tutorial/figures/wf_8.png and /dev/null differ diff --git a/tutorial/figures/wf_8.tikz b/tutorial/figures/wf_8.tikz deleted file mode 100644 index 3d17f12547..0000000000 --- a/tutorial/figures/wf_8.tikz +++ /dev/null @@ -1,101 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (7) at (-2, 1) {}; - \node [style=none] (8) at (2, 1) {}; - \node [style={wf_red}] (9) at (0, 2.3) {\small $wf.x=3$ \\ \small $wf.y=3$}; - \node [style=none] (10) at (-2, -10.75) {}; - \node [style=none] (11) at (2, -10.75) {}; - \node [style=none] (12) at (0, -11.25) {{\small $wf.out=45$}}; - \node [style=none] (13) at (-2, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (15) at (3.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (16) at (2, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (18) at (0, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=9$}; - \node [style=none] (19) at (0, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={nd_black}] (20) at (7.75, -2) {\small \textcolor{blue}{sum} \\\small $x=5$}; - \node [style=none] (21) at (9, 1) {}; - \node [style=none] (22) at (13, 1) {}; - \node [style={wf_pr}] (23) at (11, 2.3) {\small $wf.x=5$ \\ \small $wf.y=2$}; - \node [style=none] (24) at (9, -10.75) {}; - \node [style=none] (25) at (13, -10.75) {}; - \node [style=none] (26) at (11, -11.25) {{\small $wf.out=28$}}; - \node [style=none] (27) at (9, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (28) at (8.75, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (29) at (14.25, -2) {\small \textcolor{blue}{power} \\ \small $a=2$}; - \node [style=none] (30) at (13, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (31) at (14.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (32) at (11, -7) {\small \textcolor{blue}{mult} \\ \small $a=7$ \\ \small $b=4$}; - \node [style=none] (33) at (11, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={wf_white}] (34) at (5.25, 8) {\tiny $wf.x=[3,5]$ \\ \tiny $wf.y=[2, 3]$ \\ \small \textcolor{red}{$\mathcal{S}=[x, y]$}}; - \node [style={nd_black}] (35) at (18.75, -2) {\small \textcolor{blue}{sum} \\\small $x=5$}; - \node [style=none] (36) at (20, 1) {}; - \node [style=none] (37) at (24, 1) {}; - \node [style={wf_green}] (38) at (22, 2.3) {\small $wf.x=5$ \\ \small $wf.y=3$}; - \node [style=none] (39) at (20, -10.75) {}; - \node [style=none] (40) at (24, -10.75) {}; - \node [style=none] (41) at (22, -11.25) {{\small $wf.out=63$}}; - \node [style=none] (42) at (20, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (43) at (19.75, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (44) at (25.25, -2) {\small \textcolor{blue}{power} \\ \small $a=3$}; - \node [style=none] (45) at (24, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (46) at (25.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (47) at (22, -7) {\small \textcolor{blue}{mult} \\ \small $a=7$ \\ \small $b=9$}; - \node [style=none] (48) at (22, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style={nd_black}] (49) at (-14.25, -2) {\small \textcolor{blue}{sum} \\\small $x=3$}; - \node [style=none] (50) at (-13, 1) {}; - \node [style=none] (51) at (-9, 1) {}; - \node [style={wf_blue}] (52) at (-11, 2.3) {\small $wf.x=3$ \\ \small $wf.y=2$}; - \node [style=none] (53) at (-13, -10.75) {}; - \node [style=none] (54) at (-9, -10.75) {}; - \node [style=none] (55) at (-11, -11.25) {{\small $wf.out=20$}}; - \node [style=none] (56) at (-13, -0.25) {\tiny \textcolor{violet}{$x=wf.lzin.x$}}; - \node [style=none] (57) at (-13.25, -4.25) {\tiny \textcolor{violet}{$b=wf.power.lzout.out$}}; - \node [style={nd_black}] (58) at (-7.75, -2) {\small \textcolor{blue}{power} \\ \small $a=2$}; - \node [style=none] (59) at (-9, -0.25) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (60) at (-7.5, -4.25) {\tiny \textcolor{violet}{$a = wf.sum.lzout.out$}}; - \node [style={nd_black}] (61) at (-11, -7) {\small \textcolor{blue}{mult} \\ \small $a=5$ \\ \small $b=4$}; - \node [style=none] (62) at (-11, -9.5) {\tiny \textcolor{violet}{$wf.out = wf.mult.lzout.out$}}; - \node [style=none] (63) at (-4, -15) {\small $out_{comb}=[20,28]$}; - \node [style=none] (64) at (15, -15) {\small $out_{comb}=[45, 63]$}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (15) to (18); - \draw [style={edge_lzinout}] (0) to (18); - \draw [style={edge_lzinout}] (9) to (15); - \draw [style={edge_lzinout}] (18) to (12.center); - \draw [style={edge_wf}] (21.center) to (22.center); - \draw [style={edge_lzinout}] (23) to (20); - \draw [style={edge_wf}] (24.center) to (25.center); - \draw [style={edge_lzinout}] (29) to (32); - \draw [style={edge_lzinout}] (20) to (32); - \draw [style={edge_lzinout}] (23) to (29); - \draw [style={edge_lzinout}] (32) to (26.center); - \draw [style=grey] (34) to (9); - \draw [style=grey] (34) to (23); - \draw [style={edge_wf}] (36.center) to (37.center); - \draw [style={edge_lzinout}] (38) to (35); - \draw [style={edge_wf}] (39.center) to (40.center); - \draw [style={edge_lzinout}] (44) to (47); - \draw [style={edge_lzinout}] (35) to (47); - \draw [style={edge_lzinout}] (38) to (44); - \draw [style={edge_lzinout}] (47) to (41.center); - \draw [style={edge_wf}] (50.center) to (51.center); - \draw [style={edge_lzinout}] (52) to (49); - \draw [style={edge_wf}] (53.center) to (54.center); - \draw [style={edge_lzinout}] (58) to (61); - \draw [style={edge_lzinout}] (49) to (61); - \draw [style={edge_lzinout}] (52) to (58); - \draw [style={edge_lzinout}] (61) to (55.center); - \draw [style=grey] (34) to (52); - \draw [style=grey] (34) to (38); - \draw [style=grey] (55.center) to (63.center); - \draw [style=grey] (26.center) to (63.center); - \draw [style=grey] (12.center) to (64.center); - \draw [style=grey] (41.center) to (64.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/figures/wf_9.png b/tutorial/figures/wf_9.png deleted file mode 100644 index 9a65564ab2..0000000000 Binary files a/tutorial/figures/wf_9.png and /dev/null differ diff --git a/tutorial/figures/wf_9.tikz b/tutorial/figures/wf_9.tikz deleted file mode 100644 index a7ecde4ee6..0000000000 --- a/tutorial/figures/wf_9.tikz +++ /dev/null @@ -1,35 +0,0 @@ -\begin{tikzpicture}[{every text node part/.style}={align=center}] - \begin{pgfonlayer}{nodelayer} - \node [style={nd_black}] (0) at (-3.25, -2) {\tiny \textcolor{blue}{mean} \\\tiny $x_{list}=[3, 5, 8]$}; - \node [style=none] (7) at (-2, 2) {}; - \node [style=none] (8) at (2, 2) {}; - \node [style={wf_black}] (9) at (0, 2.8) {{\small $wf.x=[3, 5, 7]$}}; - \node [style=none] (10) at (-2, -11.75) {}; - \node [style=none] (11) at (2.25, -11.75) {}; - \node [style=none] (12) at (0, -12.5) {{\small $wf.out_m=5;~wf.out_p=[9, 25, 49]$}}; - \node [style=none] (13) at (-2, 0.75) {\tiny \textcolor{violet}{$x_{list}=wf.lzin.x$}}; - \node [style=none] (14) at (-2.25, -10.5) {\tiny \textcolor{violet}{$wf.out_m=wf.mean.lzout.out$}}; - \node [style={nd_white}] (15) at (3.25, -2) {\tiny \textcolor{blue}{power} \\ \tiny $a=[3, 5, 8]$ \\ \tiny \textcolor{red}{$\mathcal{S}=a$}}; - \node [style=none] (16) at (2, 0.75) {\tiny \textcolor{violet}{$a=wf.lzin.x$}}; - \node [style=none] (17) at (3.5, -9.5) {\tiny \textcolor{violet}{$wf.out_p = wf.power.lzout.out$}}; - \node [style={nd_blue}] (18) at (0.5, -5.25) {\tiny \textcolor{blue}{power} \\ \tiny $a=3$}; - \node [style={nd_red}] (19) at (3.25, -5.25) {\tiny \textcolor{blue}{power} \\ \tiny $a=5$}; - \node [style={nd_green}] (21) at (6, -5.25) {\tiny \textcolor{blue}{power} \\ \tiny $a=7$}; - \node [style=none] (22) at (0.5, -6.75) {}; - \node [style=none] (25) at (6, -6.75) {\small $out=49$}; - \node [style=none] (26) at (0.5, -6.75) {\small $out=9$}; - \node [style=none] (27) at (3.25, -6.75) {\small $out=25$}; - \node [style=none] (28) at (3.25, -7.5) {}; - \end{pgfonlayer} - \begin{pgfonlayer}{edgelayer} - \draw [style={edge_wf}] (7.center) to (8.center); - \draw [style={edge_lzinout}] (9) to (0); - \draw [style={edge_wf}] (10.center) to (11.center); - \draw [style={edge_lzinout}] (0) to (12.center); - \draw [style={edge_lzinout}] (9) to (15); - \draw [style=grey] (15) to (19); - \draw [style=grey] (15) to (18); - \draw [style=grey] (15) to (21); - \draw [style={edge_lzinout}] (28.center) to (12.center); - \end{pgfonlayer} -\end{tikzpicture} diff --git a/tutorial/notebooks/intro_functiontask.ipynb b/tutorial/notebooks/intro_functiontask.ipynb deleted file mode 100644 index 1f3211f8bc..0000000000 --- a/tutorial/notebooks/intro_functiontask.ipynb +++ /dev/null @@ -1,617 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# pydra\n", - "\n", - "There are two main types of objects in *pydra*: `Task` and `Workflow`. `Task` is used to represent individual tasks that take specified input and return specified output. You can create a `Task` from various things, e.g. from *python* functions or *shell* commands. In this introduction we will cover `FunctionTask`s that are used to convert any *python* function to *pydra* `Task`.\n", - "\n", - "Later, we will talk about `Workflow` that is used to create a pipeline that connects various `Task`s. In *pydra*, every `Workflow` is also a `Task`, so can be connected to any other `Task` and be part of another `Workflow`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import pydra" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## FunctionTask\n", - "\n", - "A `FunctionTask` can be created from every *python* function by using *pydra* decorator: `pydra.mark.task`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def add_var(a, b):\n", - " return a + b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once we decorate the function, we can create a pydra `Task` and specify the input:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1 = add_var(a=4, b=5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can check the type of `task1`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "type(task1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and we can check if the task has correct values of `a` and `b`, they should be saved in the task `inputs`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(f\"a = {task1.inputs.a}\")\n", - "print(f\"b = {task1.inputs.b}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also check content of entire `inputs`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.inputs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you could see, `task.inputs` contains also information about the function, that is an inseparable part of the `FunctionTask`.\n", - "\n", - "Once we have the task with set input, we can run it. Since `Task` is a \"callable object\", we can use the syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, the result was returned right away, but we can also access it later:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`Result` contains more than just an output, so if we want to get the task output, we can type:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = task1.result()\n", - "result.output.out" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Customizing output names\n", - "Note, that \"out\" is a default name for the task output, but we can always customize it. There are two ways of doing it: using *python* function annotation and using another *pydra* decorator:\n", - "\n", - "Let's start from the function annotation:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Result(output=Output(sum_a_b=9), runtime=None, errored=False)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import typing as ty\n", - "\n", - "@pydra.mark.task\n", - "def add_var_an(a, b) -> ty.NamedTuple(\"Output\", [(\"sum_a_b\", int)]):\n", - " return a + b\n", - "\n", - "\n", - "task1a = add_var_an(a=4, b=5)\n", - "task1a()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The annotation might be very useful to specify the output names when the function returns multiple values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def modf_an(a) -> ty.NamedTuple(\"Output\", [(\"fractional\", ty.Any), (\"integer\", ty.Any)]):\n", - " import math\n", - " return math.modf(a)\n", - "\n", - "task2 = modf_an(a=3.5)\n", - "task2()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second way of customizing the output requires another decorator - `pydra.mark.annotate`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "@pydra.mark.annotate({\"return\": {\"fractional\": ty.Any, \"integer\": ty.Any}})\n", - "def modf(a):\n", - " import math\n", - " return math.modf(a)\n", - "\n", - "task2a = modf(a=3.5)\n", - "task2a()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, that the order of the decorators is important!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Setting the input\n", - "\n", - "We don't have to provide the input when we create a task, we can always set it later:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task3 = add_var()\n", - "task3.inputs.a = 4\n", - "task3.inputs.b = 5\n", - "task3()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we forget to specify the input, `None` will be used as the default value in *pydra*, so the function will return a python error:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task3a = add_var()\n", - "task3a.inputs.a = 4\n", - "try:\n", - " task3a()\n", - "except(TypeError) as err:\n", - " print(f\"TypeError: {err}\")\n", - "else:\n", - " raise" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Output directory and caching the results\n", - "\n", - "After running the task, we can check where the output directory with the results was created:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task3.output_dir" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Within the directory you can find the file with the results: `_result.pklz`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "os.listdir(task3.output_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But we can also provide the directory path where we want to store the results, let's create a temporary directory and a specific subdirectory \"task4\":" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from tempfile import mkdtemp\n", - "from pathlib import Path\n", - "cache_dir_tmp = Path(mkdtemp()) / \"task4\"\n", - "print(cache_dir_tmp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can pass this path to the argument of `FunctionTask` - `cache_dir`. To observe the execution time, we specify a function that is sleeping for 5s:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def add_var_wait(a, b):\n", - " import time\n", - " time.sleep(5)\n", - " return a + b\n", - "\n", - "task4 = add_var_wait(a=4, b=6, cache_dir=cache_dir_tmp)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running the cell first time, it should take around 5s." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running the cell first time, it should take around 5s.\n", - "\n", - "We can check `output_dir` of our task, it should contain the path of `cache_dir_tmp` and the last part contains the name of the task class `FunctionTask` and the task checksum:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4.output_dir" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's see what happens when we defined identical task again with the same `cache_dir`: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4a = add_var_wait(a=4, b=6, cache_dir=cache_dir_tmp)\n", - "task4a()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time the result should be ready right away! *pydra* uses available results and do not recompute the task.\n", - "\n", - "*pydra* not only checks for the results in `cache_dir`, but you can provide a list of other locations that should be checked. Let's create another directory that will be used as `cache_dir` and previous working directory will be used in `cache_locations`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cache_dir_tmp_new = Path(mkdtemp()) / \"task4b\"\n", - "\n", - "task4b = add_var_wait(a=4, b=6, cache_dir=cache_dir_tmp_new, cache_locations=[cache_dir_tmp])\n", - "task4b()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time the results should be also returned quickly! And we can check that `task4b.output_dir` was not created:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4b.output_dir.exists()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, that if we update the input of the task, and run again, the new directory will be created and task will be recomputed:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4b.inputs.a = 1\n", - "print(task4b())\n", - "print(task4b.output_dir.exists())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and when we change the `output_dir`, we can see that the last part is different than last time:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4b.output_dir" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is because, the checksum changes when we change either input or function." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden", - "solution2_first": true - }, - "source": [ - "#### Exercise 1\n", - "Create a task that take a list of numbers as an input and returns two fields: `mean` with the mean value and `std` with the standard deviation value." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "scrolled": true, - "solution2": "hidden" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Result(output=Output(mean=2, std=0.0), runtime=None, errored=False)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@pydra.mark.task\n", - "@pydra.mark.annotate({\"return\": {\"mean\": ty.Any, \"std\": ty.Any}})\n", - "def mean_dev(my_list):\n", - " import statistics as st\n", - " return st.mean(my_list), st.stdev(my_list)\n", - "\n", - "my_task = mean_dev(my_list=[2, 2, 2])\n", - "my_task()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your solution here (you can use statistics module)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using Audit\n", - "\n", - "*pydra* can record various run time information, including the workflow provenance, by setting `audit_flags` and the type of messengers. \n", - "\n", - "`AuditFlag.RESOURCE` allows you to monitor resource usage for the `Task`, while `AuditFlag.PROV` tracks the provenance of the `Task`. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pydra.utils.messenger import AuditFlag, PrintMessenger\n", - "\n", - "task5 = add_var(a=4, b=5, audit_flags=AuditFlag.RESOURCE)\n", - "task5()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One can turn on both audit flags using `AuditFlag.ALL`, and print the messages on the terminal using the `PrintMessenger`. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task5 = add_var(a=4, b=5, audit_flags=AuditFlag.ALL, messengers=PrintMessenger())\n", - "task5()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorial/notebooks/intro_shelltask.ipynb b/tutorial/notebooks/intro_shelltask.ipynb deleted file mode 100644 index 41b0abdcd0..0000000000 --- a/tutorial/notebooks/intro_shelltask.ipynb +++ /dev/null @@ -1,449 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ShellCommandTask\n", - "\n", - "In addition to `FunctionTask`, pydra allows for creating tasks from shell commands by using `ShellCommandTask`.\n", - "\n", - "Let's run a simple command `pwd` using pydra" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pydra" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = \"pwd\"\n", - "# we should use executable to pass the command we want to run\n", - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=cmd)\n", - "shelly.cmdline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can always check the cmdline of our task\n", - "shelly.cmdline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and now let's try to run it:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and check the result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "the result should have `return_code`, that hopehully is 0, `stdout` and `stderr`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### longer commands\n", - "you can also use longer command by providing a list:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = [\"echo\", \"hail\", \"pydra\"]\n", - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=cmd)\n", - "print(\"cmndline = \", shelly.cmdline)\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n", - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### using args\n", - "In addition to `executable`, we can also use `args`. Last example can be also rewritten:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = \"echo\"\n", - "args = [\"hail\", \"pydra\"]\n", - "\n", - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=cmd, args=args)\n", - "print(\"cmndline = \", shelly.cmdline)\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n", - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### customized input\n", - "\n", - "Pydra always checks `executable` and `args`, but we can also provide additional inputs, in orger to do it, we have to modify `input_spec` first by using `SpecInfo` class:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import attr\n", - "\n", - "my_input_spec = pydra.specs.SpecInfo(\n", - " name=\"Input\",\n", - " fields=[\n", - " (\n", - " \"text\",\n", - " attr.ib(\n", - " type=str,\n", - " metadata={\"position\": 1, \"help_string\": \"text\", \"mandatory\": True},\n", - " ),\n", - " )\n", - " ],\n", - " bases=(pydra.specs.ShellSpec,),\n", - ")\n", - "# this will be simplified!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can define our task:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd_exec = \"echo\"\n", - "hello = \"HELLO\"\n", - "shelly = pydra.ShellCommandTask(\n", - " name=\"shelly\", executable=cmd_exec, text=hello, input_spec=my_input_spec\n", - ")\n", - "\n", - "print(\"cmndline = \", shelly.cmdline)\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n", - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### customized output\n", - "\n", - "We can also customized output if we want to return something more than the `stdout`, e.g. a file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_output_spec = pydra.specs.SpecInfo(\n", - " name=\"Output\",\n", - " fields=[(\"newfile\", pydra.specs.File, \"newfile_tmp.txt\")],\n", - " bases=(pydra.specs.ShellOutSpec,),\n", - ")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "now we can create a task that returns a new file:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = [\"touch\", \"newfile_tmp.txt\"]\n", - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=cmd, output_spec=my_output_spec)\n", - "\n", - "print(\"cmndline = \", shelly.cmdline)\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n", - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden", - "solution2_first": true - }, - "source": [ - "#### exercise 1\n", - "\n", - "Write a task that creates two new files, use provided output spec." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "solution2": "hidden" - }, - "outputs": [], - "source": [ - "cmd = \"echo\"\n", - "args = [\"newfile_1.txt\", \"newfile_2.txt\"]\n", - "\n", - "my_output_spec = pydra.specs.SpecInfo(\n", - " name=\"Output\",\n", - " fields=[\n", - " (\n", - " \"out1\",\n", - " attr.ib(\n", - " type=pydra.specs.File,\n", - " metadata={\n", - " \"output_file_template\": \"{args}\",\n", - " \"help_string\": \"output file\",\n", - " },\n", - " ),\n", - " )\n", - " ],\n", - " bases=(pydra.specs.ShellOutSpec,),\n", - ")\n", - "\n", - "\n", - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=cmd, args=args, output_spec=my_output_spec).split(\"args\")\n", - "\n", - "print(\"cmndline = \", shelly.cmdline)\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(shelly)\n", - "shelly.result()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = \"echo\"\n", - "args = [\"newfile_1.txt\", \"newfile_2.txt\"]\n", - "\n", - "my_output_spec = pydra.specs.SpecInfo(\n", - " name=\"Output\",\n", - " fields=[\n", - " (\n", - " \"out1\",\n", - " attr.ib(\n", - " type=pydra.specs.File,\n", - " metadata={\n", - " \"output_file_template\": \"{args}\",\n", - " \"help_string\": \"output file\",\n", - " },\n", - " ),\n", - " )\n", - " ],\n", - " bases=(pydra.specs.ShellOutSpec,),\n", - ")\n", - "\n", - "# write your solution here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### DockerTask\n", - "\n", - "all the commands can be also run in a docker container using `DockerTask`. Syntax is very similar, but additional argument `image` is required." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cmd = \"whoami\"\n", - "docky = pydra.DockerTask(name=\"docky\", executable=cmd, image=\"busybox\")\n", - "\n", - "with pydra.Submitter() as sub:\n", - " docky(submitter=sub)\n", - "\n", - "docky.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden", - "solution2_first": true - }, - "source": [ - "#### exercise2\n", - "\n", - "Use splitter to run the same command in two different images:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "solution2": "hidden" - }, - "outputs": [], - "source": [ - "cmd = \"whoami\"\n", - "docky = pydra.DockerTask(name=\"docky\", executable=cmd, image=[\"busybox\", \"ubuntu\"]).split(\"image\")\n", - "\n", - "with pydra.Submitter() as sub:\n", - " docky(submitter=sub)\n", - "\n", - "docky.result()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#write your solution here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Using `ShellCommandTask` with `container_info` argument:\n", - "\n", - "You can run the shell command in a docker container by adding `container_info` argument to `ShellCommandTask`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=\"whoami\", container_info=(\"docker\", \"busybox\"))\n", - "with pydra.Submitter() as sub:\n", - " shelly(submitter=sub)\n", - "\n", - "shelly.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we don't provide `container_info` the output should be different:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "shelly = pydra.ShellCommandTask(name=\"shelly\", executable=\"whoami\")\n", - "with pydra.Submitter() as sub:\n", - " shelly(submitter=sub)\n", - "\n", - "shelly.result()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorial/notebooks/intro_task_state.ipynb b/tutorial/notebooks/intro_task_state.ipynb deleted file mode 100644 index bd6cc3e84b..0000000000 --- a/tutorial/notebooks/intro_task_state.ipynb +++ /dev/null @@ -1,735 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction to Tasks with States\n", - "\n", - "Task might be run for a single set of input values or we can generate multiple sets, that will be called \"states\". If we want to run our `Task` multiple times we have to provide input that is iterable and specify the way we want to map values of the inputs to the specific states. In order to do it, we set so-called `splitter`. \n", - "\n", - "Let's start from a simple `FunctionTask` that takes a list as an input:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pydra\n", - "\n", - "@pydra.mark.task\n", - "def add_two(x):\n", - " return x + 2\n", - "\n", - "task1 = add_two(x=[1, 2, 3])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we set any splitter, the task's `state` should be `None`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.state is None" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now check the results of our task:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can set the `splitter` by using the `split` method. Since our task has only one input, there is only one option to create set of inputs, i.e. `splitter=\"x\"`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.split(\"x\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can check that our task has a `state`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.state" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And if we can print information about our state" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(task1.state)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "within the `state` information about the splitter has been stored: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1.state.splitter" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, that *pydra* adds name of the function to the name of the input.\n", - "\n", - "Now, we can run the task and check results:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task1()\n", - "task1.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time, we got a list that contains three `Result` objects, one for each value of `x`.\n", - "\n", - "For tasks with a state *pydra* prepare all sets of inputs and run the task for each of the set. We could simply represent this by the following figure:" - ] - }, - { - "attachments": { - "nd_spl_1.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_1.png](attachment:nd_spl_1.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, that you can set the`splitter` only once, if you try to use `split` method again, you will get an error:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO\n", - "# try:\n", - "# task1.split(\"x\")\n", - "# except(Exception) as err:\n", - "# print(f\"Exception: {err}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Multiple inputs\n", - "\n", - "We can also use `State` for functions with multiple inputs:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def add_var(a, b):\n", - " return a + b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have more options to define `splitter`, it depends on the type of inputs and on our application. For example, we could have `a` that is a list and `b` that is a single value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task2 = add_var(a=[1, 2, 3], b=10).split(\"a\")\n", - "task2()\n", - "task2.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have three results for each element from the `a` list and the value of `b` is always the same. " - ] - }, - { - "attachments": { - "nd_spl_2.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_2.png](attachment:nd_spl_2.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But we can have lists for both inputs, let's assume that `a` and `b` are two elements lists." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task3 = add_var(a=[1, 2], b=[10, 100])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we have two options to map the input values, we might want to run the task for two sets of values: (`a`=1, `b`=10) and (`a`=2, `b`=100), or we might want to run the task for four sets: (`a`=1, `b`=10), (`a`=1, `b`=100), (`a`=2, `b`=10) and (`a`=2, `b`=100). \n", - "\n", - "The first situation will be represented by the so-called \"scalar\" splitter, the later by the so-called \"outer\" splitter. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Scalar splitter\n", - "\n", - "Let's start from the scalar splitter, that uses parentheses in the syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task3.split((\"a\", \"b\"))\n", - "task3()\n", - "task3.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As we expected, we have two outputs: `1+10=11` and `2+100=102`. \n", - "\n", - "We can represent the execution by the graph:" - ] - }, - { - "attachments": { - "nd_spl_4.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_4.png](attachment:nd_spl_4.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Outer splitter\n", - "\n", - "For the outer splitter we will use brackets:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task4 = add_var(a=[1, 2], b=[10, 100])\n", - "task4.split([\"a\", \"b\"])\n", - "task4()\n", - "task4.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we have results for all of the combinations of values from `a` and `b`." - ] - }, - { - "attachments": { - "nd_spl_3.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_3.png](attachment:nd_spl_3.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more inputs we can create more complex splitter, and use scalar and outer splitters together. Note, that the scalar splitter can only work for lists that have the same length, but the outer splitter doesn't have this limitation. \n", - "\n", - "Let's run one more example that takes four inputs, `x` and `y` components of two vectors, and calculates all possible sums of vectors. `x` components should be kept together with corresponding `y` components (i.e. scalar splitters: `(\"x1\", \"y1\")` and `(\"x2\", \"y2\")`), but we should use outer splitter for two vectors to get all combinations." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def add_vector(x1, y1, x2, y2):\n", - " return (x1 + x2, y1 + y2)\n", - "\n", - "task5 = add_vector(name=\"add_vect\", output_names=[\"x\", \"y\"], \n", - " x1=[10, 20], y1=[1, 2], x2=[10, 20, 30], y2=[10, 20, 30])\n", - "task5.split(splitter=[(\"x1\", \"y1\"), (\"x2\", \"y2\")])\n", - "task5()\n", - "task5.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We should get six outputs: two elements for vector1 times three elements for vector2." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Combining the output\n", - "\n", - "When we use `splitter`, we can also define `combiner`, if we want to combine together the results.\n", - "\n", - "If we take the `task4` as an example and combine all results for each element of the input `b`, we can modify the task as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task5 = add_var(a=[1, 2], b=[10, 100])\n", - "task5.split([\"a\", \"b\"])\n", - "# adding combiner\n", - "task5.combine(\"b\")\n", - "task5()\n", - "task5.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now our result contains two elements, each one is a list. The first one contains results for `a=1` and both values of `b`, and the second contains results for `a=2` and both values of `b`." - ] - }, - { - "attachments": { - "nd_spl_3_comb1.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_3_comb1.png](attachment:nd_spl_3_comb1.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But we could also group all elements from the input `a` and have a different combined output:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task6 = add_var(a=[1, 2], b=[10, 100])\n", - "task6.split([\"a\", \"b\"])\n", - "# changing the combiner\n", - "task6.combine(\"a\")\n", - "task6()\n", - "task6.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We still have two elements in our results, but this time the first element contains results for `b=10` and both values of `a`, and the second contains results for `b=100` and both values of `a`." - ] - }, - { - "attachments": { - "nd_spl_3_comb2.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_3_comb2.png](attachment:nd_spl_3_comb2.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also combine all elements by providing a list of all inputs to the `combiner`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task7 = add_var(a=[1, 2], b=[10, 100])\n", - "task7.split([\"a\", \"b\"])\n", - "# combining all inputs\n", - "task7.combine([\"a\", \"b\"])\n", - "task7()\n", - "task7.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time the output contains one element that is a list of all outputs:" - ] - }, - { - "attachments": { - "nd_spl_3_comb3.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![nd_spl_3_comb3.png](attachment:nd_spl_3_comb3.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden", - "solution2_first": true - }, - "source": [ - "### Exercise 1\n", - "\n", - "Let's say we want to calculate squares and cubes of integers from 2 to 5, and combine separately all squares and all cubes:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden" - }, - "source": [ - "First we will define a function that returns powers:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "solution2": "hidden" - }, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def power(x, n):\n", - " return x**n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden" - }, - "source": [ - "Now we can create a task that takes two lists as its input, outer splitter for `x` and `n`, and combine all `x`: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "solution2": "hidden" - }, - "outputs": [], - "source": [ - "task_ex1 = power(x=[2, 3, 4, 5], n=[2, 3]).split([\"x\", \"n\"]).combine(\"x\")\n", - "task_ex1(plugin=\"cf\")\n", - "task_ex1.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "solution2": "hidden" - }, - "source": [ - "The result should contain two list, the first one is for squares, the second for cubes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true, - "solution2": "hidden" - }, - "outputs": [], - "source": [ - "squares_list = [el.output.out for el in task_ex1.result()[0]]\n", - "cubes_list = [el.output.out for el in task_ex1.result()[1]]\n", - "print(f\"squares: {squares_list}\")\n", - "print(f\"cubes: {cubes_list}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your solution here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Parallel execution\n", - "\n", - "We run task multiple times for multiple sets of input, but we didn't talk about the execution time. Let's create a function that sleeps for a second and run for four values:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "\n", - "@pydra.mark.task\n", - "def add_two_sleep(x):\n", - " time.sleep(1)\n", - " return x + 2\n", - "\n", - "task8 = add_two_sleep(x=[1, 2, 3, 4]).split(\"x\")\n", - "t0 = time.time()\n", - "task8()\n", - "print(f'total time: {time.time() - t0}')\n", - "task8.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The total time will depend on the machine you are using, but it could be below `1.1s`, so clearly the tasks are running in parallel!\n", - "\n", - "If we run `Task` that has a `State`, pydra will automatically create a `Submitter` with a default `Worker` that is `cf`, i.e. `ConcurrentFutures`.\n", - "\n", - "We could also create a `Submitter` first, and than use it to run the task:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task9 = add_two_sleep(x=[1, 2, 3, 4]).split(\"x\")\n", - "\n", - "t0 = time.time()\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " task9(submitter=sub)\n", - "print(f'total time: {time.time() - t0}')\n", - "print(f\"results: {task9.result()}\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or we can provide the name of the plugin:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task10 = add_two_sleep(x=[1, 2, 3, 4]).split(\"x\")\n", - "\n", - "t0 = time.time()\n", - "task10(plugin=\"cf\")\n", - "print(f'total time: {time.time() - t0}')\n", - "print(f\"results: {task10.result()}\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The last option for running the task is to create a `Submitter` first and run the submitter (`Submitter` is also a callable object) with the task as a `runnable`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task11 = add_two_sleep(x=[1, 2, 3, 4]).split(\"x\")\n", - "\n", - "t0 = time.time()\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(runnable=task11)\n", - "print(f'total time: {time.time() - t0}')\n", - "print(f\"results: {task11.result()}\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All of the execution time should be similar, since all taska are run by *pydra* in the same way, i.e. *pydra* creates a submitter with `ConcurrentFutures` worker, if a number of processors is not provided, `ConcurrentFutures` takes all available processors as `max_workers`. However, if we want to set a specific number of processors, we can set it using `n_procs` when creating a `Submitter`. Let's see how the execution time changes when we use `n_procs=2`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "task12 = add_two_sleep(x=[1, 2, 3, 4]).split(\"x\")\n", - "\n", - "t0 = time.time()\n", - "with pydra.Submitter(plugin=\"cf\", n_procs=2) as sub:\n", - " sub(runnable=task12)\n", - "print(f'total time: {time.time() - t0}')\n", - "print(f\"results: {task11.result()}\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the total time could be significantly different. For example, if your machine has at least 4 processors, the previous `tasks8` - `task11` took around 1s to run, but the task12 took around 2s.\n", - "If you have 2 processors or less, you should not see any difference in the execution time." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorial/notebooks/intro_workflow.ipynb b/tutorial/notebooks/intro_workflow.ipynb deleted file mode 100644 index fd8dcc22a5..0000000000 --- a/tutorial/notebooks/intro_workflow.ipynb +++ /dev/null @@ -1,574 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pydra\n", - "\n", - "# functions used later in the notebook:\n", - "\n", - "@pydra.mark.task\n", - "def add_two(x):\n", - " return x + 2\n", - "\n", - "@pydra.mark.task\n", - "def power(a, n=2):\n", - " return a**n\n", - "\n", - "@pydra.mark.task\n", - "def mult_var(a, b):\n", - " return a * b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction to Workflow\n", - "\n", - "In order to run multiple tasks within one pipeline, we use another *pydra* class - `Workflow`. The workflow will contain arbitrary number of tasks that will be treated as a graph's nodes.\n", - "\n", - "Let's start from a workflow with a single task that has one input `x`. When we create a `Workflow`, we have to specify `input_spec` that contains all of the workflow inputs:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf1 = pydra.Workflow(name=\"wf1\", input_spec=[\"x\"], x=3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can add a task and specify that `x` will be taken from the workflow input by using so-called *Lazy Input*, `x=wf1.lzin.x`. We should also add the `name` to the task we are using in the `Workflow`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf1.add(add_two(name=\"sum\", x=wf1.lzin.x))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can access the task by using the task name:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf1.sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have to also specify what would be the workflow output, for this one-task workflow, we simply take the output of `sum` and we use *Lazy Output* to set it to `wf.output.out`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf1.set_output([(\"out\", wf1.sum.lzout.out)])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We could also use dictionary to set the output - `wf1.set_output({\"out\": wf1.sum.lzout.out})`, or as a tuple if we set a single element: `wf1.set_output((\"out\", wf1.sum.lzout.out))`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we are ready to run the workflow:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf1)\n", - "\n", - "wf1.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The result of the workflow should be the same as the output of the task, i.e. 5.\n", - "\n", - "We could think about the workflow as follows: the workflow has an input `x` that is passed to the \"sum\" task, once the task has its input it runs as always and produces an output, the output is later set to the workflow output. " - ] - }, - { - "attachments": { - "wf_1.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_1.png](attachment:wf_1.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add as many task as you want to the workflow and return multiple variables:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf2 = pydra.Workflow(name=\"wf2\", input_spec=[\"x\"], x=3)\n", - "wf2.add(add_two(name=\"add_two\", x=wf2.lzin.x))\n", - "wf2.add(power(name=\"power\", a=wf2.lzin.x))\n", - "\n", - "# setting multiple workflow output\n", - "wf2.set_output([(\"out_s\", wf2.add_two.lzout.out),\n", - " (\"out_p\", wf2.power.lzout.out)\n", - " ])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf2)\n", - "\n", - "wf2.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example we had two tasks, that took inputs from the workflow input and pass the outputs to the workflow output:" - ] - }, - { - "attachments": { - "wf_2.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_2.png](attachment:wf_2.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Connecting tasks\n", - "\n", - "The previous example showed a workflow with two nodes, but they were not connected with each other.\n", - "\n", - "If we want to connect the tasks, we simply have to set the input of the second task to the output of the first task, and we use again the `Lazy Output` concept:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf3 = pydra.Workflow(name=\"wf3\", input_spec=[\"x\"], x=3)\n", - "wf3.add(add_two(name=\"sum\", x=wf3.lzin.x))\n", - "# by setting a=wf3.sum.lzout.out we create a connection\n", - "wf3.add(power(name=\"power\", a=wf3.sum.lzout.out))\n", - "\n", - "wf3.set_output([(\"out_s\", wf3.sum.lzout.out),\n", - " (\"out_p\", wf3.power.lzout.out)\n", - " ])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf3)\n", - "\n", - "wf3.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we could see that the second task took an input from the first one:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf3.power.inputs.a" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So this time the workflow graph will look like this:" - ] - }, - { - "attachments": { - "wf_3.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_3.png](attachment:wf_3.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The node can be connected to multiple nodes, we can modify `wf` to add additional node that uses `mult_var` to multiple the outputs of two previous tasks:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf4 = pydra.Workflow(name=\"wf4\", input_spec=[\"x\"], x=3)\n", - "wf4.add(add_two(name=\"add_two\", x=wf4.lzin.x))\n", - "wf4.add(power(name=\"power\", a=wf4.lzin.x))\n", - "wf4.add(mult_var(name=\"mult\", a=wf4.add_two.lzout.out, b=wf4.power.lzout.out))\n", - "\n", - "wf4.set_output([(\"out\", wf4.mult.lzout.out)])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf4)\n", - "\n", - "wf4.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time the graph should look like this:" - ] - }, - { - "attachments": { - "wf_4.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_4.png](attachment:wf_4.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Workflow as a node\n", - "\n", - "Previously we had workflows that had `Task`s as nodes, but *pydra* treats `Workflow` as any other `Task`, so the workflow could be used as a node.\n", - "\n", - "Let's modify the previous workflow, and instead of `sum` and `power` tasks we use `wf2` as the first node:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf2a = pydra.Workflow(name=\"wf2a\", input_spec=[\"x\"])\n", - "wf2a.add(add_two(name=\"add_two\", x=wf2a.lzin.x))\n", - "wf2a.add(power(name=\"power\", a=wf2a.lzin.x))\n", - "\n", - "wf2a.set_output([(\"out_s\", wf2a.add_two.lzout.out),\n", - " (\"out_p\", wf2a.power.lzout.out)\n", - " ])\n", - "\n", - "\n", - "wf5 = pydra.Workflow(name=\"wf5\", input_spec=[\"x\"], x=3)\n", - "wf5.add(wf2a)\n", - "# connecting wfa to the input from the main workflow\n", - "wf2a.inputs.x = wf5.lzin.x\n", - "wf5.add(mult_var(name=\"mult\", a=wf5.wf2a.lzout.out_s, b=wf5.wf2a.lzout.out_p))\n", - "\n", - "wf5.set_output([(\"out\", wf5.mult.lzout.out)])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf5)\n", - "\n", - "wf5.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We should get exactly the same result as previously, but this time we run `wf2a` inside our main workflow:" - ] - }, - { - "attachments": { - "wf_5.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_5.png](attachment:wf_5.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Workflow with a splitter\n", - "\n", - "Workflow as any other task could also have a splitter. Let's take one of our previous workflows and add a splitter for the workflow input by setting `splitter` using the `split` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf6 = pydra.Workflow(name=\"wf6\", input_spec=[\"x\"])\n", - "# setting a plitter for the entire workflow\n", - "wf6.split(\"x\", x=[3, 5])\n", - "wf6.add(add_two(name=\"add_two\", x=wf6.lzin.x))\n", - "wf6.add(power(name=\"power\", a=wf6.lzin.x))\n", - "wf6.add(mult_var(name=\"mult\", a=wf6.add_two.lzout.out, b=wf6.power.lzout.out))\n", - "\n", - "wf6.set_output([(\"wf_out\", wf6.mult.lzout.out)])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf6)\n", - "\n", - "wf6.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As we could expect, we received a list with two `Result`s, one is for `wf.x=3`, and the other is for `wf.x=5`. \n", - "\n", - "Behind the scene *pydra* expanded two workflows for two values of the workflow input: " - ] - }, - { - "attachments": { - "wf_6png.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_6png.png](attachment:wf_6png.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's create a new workflow that has two inputs and more complicated splitter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf7 = pydra.Workflow(name=\"wf7\", input_spec=[\"x\", \"y\"])\n", - "wf7.split([\"x\", \"y\"], x=[3, 5], y=[2, 3])\n", - "wf7.add(add_two(name=\"sum\", x=wf7.lzin.x))\n", - "wf7.add(power(name=\"power\", a=wf7.lzin.y))\n", - "wf7.add(mult_var(name=\"mult\", a=wf7.sum.lzout.out, b=wf7.power.lzout.out))\n", - "\n", - "wf7.set_output([(\"out\", wf7.mult.lzout.out)])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf7)\n", - "\n", - "wf7.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We should have four results for four sets of inputs, and the graph should look like this:" - ] - }, - { - "attachments": { - "wf_7.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_7.png](attachment:wf_7.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Adding a combiner\n", - "\n", - "In the same way as we did for `Task`, we can add a `combiner` to the entire workflow:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wf7.combine(\"x\")\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf7)\n", - "\n", - "wf7.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we should have two lists in the results, one for `y=2` and one for `y=3`:" - ] - }, - { - "attachments": { - "wf_8.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_8.png](attachment:wf_8.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Setting a splitter for nodes\n", - "\n", - "We presented how to set a `splitter` and a `combiner` for entire workflow, but we could also set a `splitter` and a `combiner` on the level of a single node.\n", - "\n", - "Let's create a workflow that takes a list as an input, and pass this input to two nodes. One node can take entire list as its input and the second node splits the input: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@pydra.mark.task\n", - "def mean(x_list):\n", - " return sum(x_list)/len(x_list)\n", - "\n", - "wf8 = pydra.Workflow(name=\"wf8\", input_spec=[\"x\"], x=[3, 5, 7])\n", - "wf8.add(mean(name=\"mean\", x_list=wf8.lzin.x))\n", - "# adding a task that has its own splitter\n", - "wf8.add(power(name=\"power\", a=wf8.lzin.x).split(\"a\"))\n", - "\n", - "wf8.set_output([(\"out_m\", wf8.mean.lzout.out),\n", - " (\"out_p\", wf8.power.lzout.out)])\n", - "\n", - "with pydra.Submitter(plugin=\"cf\") as sub:\n", - " sub(wf8)\n", - "\n", - "wf8.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This time we have in the workflow output a single value from the `mean` task and three values from the `power` task. The graph should look like this:" - ] - }, - { - "attachments": { - "wf_9.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![wf_9.png](attachment:wf_9.png)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorial/test_notebooks.py b/tutorial/test_notebooks.py deleted file mode 100644 index a051b63f1c..0000000000 --- a/tutorial/test_notebooks.py +++ /dev/null @@ -1,54 +0,0 @@ -from glob import glob -import sys, os, time -import pytest, pdb - -import nbformat -from nbconvert.preprocessors import ExecutePreprocessor -from nbconvert.preprocessors.execute import CellExecutionError - - -def _notebook_run(path): - """ - Execute a notebook via nbconvert and collect output. - :returns (parsed nb object, execution errors) - """ - kernel_name = "python%d" % sys.version_info[0] - this_file_directory = os.path.dirname(__file__) - errors = [] - - with open(path) as f: - nb = nbformat.read(f, as_version=4) - nb.metadata.get("kernelspec", {})["name"] = kernel_name - ep = ExecutePreprocessor( - kernel_name=kernel_name, timeout=7200 - ) # , allow_errors=True - - try: - ep.preprocess(nb, {"metadata": {"path": this_file_directory}}) - - except CellExecutionError as e: - if "SKIP" in e.traceback: - print(str(e.traceback).split("\n")[-2]) - else: - raise e - - return nb, errors - - -Dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "notebooks") - - -@pytest.mark.parametrize( - "notebook", - [ - os.path.join(Dir_path, "intro_functiontask.ipynb"), - os.path.join(Dir_path, "intro_task_state.ipynb"), - os.path.join(Dir_path, "intro_shelltask.ipynb"), - os.path.join(Dir_path, "intro_workflow.ipynb"), - ], -) -def test_notebooks(notebook): - t0 = time.time() - nb, errors = _notebook_run(notebook) - print("time", time.time() - t0) - assert errors == []