diff options
Diffstat (limited to 'reproducible-paper.tex')
| -rw-r--r-- | reproducible-paper.tex | 530 | 
1 files changed, 310 insertions, 220 deletions
| diff --git a/reproducible-paper.tex b/reproducible-paper.tex index d9f7d52..b0603de 100644 --- a/reproducible-paper.tex +++ b/reproducible-paper.tex @@ -1,4 +1,4 @@ -\documentclass[9pt]{beamer} +\documentclass[9pt,usenames,dvipsnames]{beamer}  %% Beamer settings.  %\setbeamertemplate{footline}[frame number] @@ -24,7 +24,7 @@  }  %% Set the date and insitutional logos. -\date{\scriptsize \href{https://www.astro.rug.nl/~sundial/MidtermMeeting.html}{SUNDIAL Midterm meeting}, June 5th, 2019\\ Ghent, Belgium} +\date{\scriptsize \href{https://eas.unige.ch/EWASS2019/session.jsp?id=SS34}{EWASS 2019, Special Session 34}, June 25th, 2019\\ Lyon, France}  %% For a wider writing width.  \newcommand\Wider[2][3em]{% @@ -93,26 +93,6 @@ -%  \begin{frame}{Necessity of (exactly) reproducible research} -%    \begin{itemize} -%      \setlength\itemsep{0.7cm} -%    \item To be considered \alert{scientific}, any result has to be -%      reproducible. -%    \item The tsunami of data, fast internet, and high processing -%      power have made it very easy to \alert{promptly arrive at a -%        result}. -%    \item But these factors have also greatly increased the -%      \alert{complexity} of an analysis. Making it impossible to -%      exactly describe all steps in a traditional published paper. -%    \item Most scientific papers thus \alert{ignore some ``details''} -%      (as they interpret it). -%    \item But due to the complexity, even a small deviation from the -%      exact result, can be due to many different parts of the -%      analysis. Hence, its \alert{critical to exactly reproduce} a -%      result. -%    \end{itemize} -%  \end{frame} -    \begin{frame}{Reproducibility crisis in the sciences/astronomy}      \begin{tcolorbox}[title=Snakes on a Spaceship -- An Overview of Python in Heliophysics]        \small ``...\alert{inadequate analysis descriptions} and loss of @@ -145,8 +125,13 @@ +  %% Initially in full opacity: +  \newcommand{\allopacity}{1} + + -  \newcommand{\nodeopacity}{1} + +  %% Step-by-step slides.    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame}    \newcommand{\paperinit}{}    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} @@ -162,6 +147,19 @@    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame}    \newcommand{\confenv}{}    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} +  \begin{frame}{Example: Matplotlib (a Python visualization library) build dependencies} +    \Wider[5em]{ +      \vspace{5mm} +      \includegraphics[width=\linewidth]{img/matplotlib.pdf} + +      \vspace{7mm}\tiny From ``Attributing and Referencing (Research) +      Software: Best Practices and Outlook from Inria'' (Alliez et +      al. 2019, +      \textcolor{blue}{\href{https://hal.archives-ouvertes.fr/hal-02135891}{hal-02135891}}) +    } +  \end{frame} +  \newcommand{\containers}{} +  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame}    \newcommand{\db}{}    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame}    \newcommand{\calib}{} @@ -189,9 +187,11 @@    \newcommand{\paperfinal}{}    \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} -  %% Don't show the happy scientist any more. -  \let\paperfinal\undefined +  %% Don't show the happy scientist or the existing containers box.    \let\paperinit\undefined +  \let\allopacity\undefined +  \let\paperfinal\undefined +  \let\containers\undefined @@ -208,10 +208,10 @@      \vspace{0.2cm}      \begin{tcolorbox} -      \small Data analysis [...] is a human behaviour. Researchers -      who hunt hard enough will turn up a result that fits -      statistical criteria, but their \alert{discovery} will -      probably be a \alert{false positive}. +      \small Data analysis [...] is a \alert{human +        behaviour}. Researchers who hunt hard enough will turn up a +      result that fits statistical criteria, but their +      \alert{discovery} will probably be a \alert{false positive}.        \hfill Five ways to fix statistics, Nature, 551, Nov 2017.      \end{tcolorbox} @@ -245,111 +245,10 @@ -  \renewcommand{\nodeopacity}{0.3} -  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} - - - - - -  \begin{frame}{Values in final report/paper} -    All necessary analysis/processing \alert{input} and \alert{output} -    values are written into the final report as \LaTeX{} macros. Shown -    here is a portion of the \textsf{NoiseChisel} paper and its source -    (\textcolor{blue}{\small\href{https://arxiv.org/abs/1505.01664}{arXiv:1505.01664}}). - -    \vspace{1.2cm} -    \includegraphics[width=\linewidth]{img/reproducible-latex.png} -  \end{frame} - -  \begin{frame}{Values in final report/paper} -    All necessary analysis/processing \alert{input} and \alert{output} -    values are written into the final report as \LaTeX{} macros. Shown -    here is a portion of the \textsf{NoiseChisel} paper and its source -    (\textcolor{blue}{\small\href{https://arxiv.org/abs/1505.01664}{arXiv:1505.01664}}). - -    \vspace{1.2cm} -    \includegraphics[width=\linewidth]{img/reproducible-latex-highlighted.png} -  \end{frame} - -  \begin{frame}{Values come from a single file} -    All the \LaTeX{} macros (processing inputs and outputs) come from -    a \alert{single file}. This file is the \alert{final product} of -    the analysis steps. - -    \begin{center} -      \includegraphics[width=0.8\linewidth]{img/reproducible-macros.png} -    \end{center} -  \end{frame} - - - -  \begin{frame}{Values come from a single file} -    All the \LaTeX{} macros (processing inputs and outputs) come from -    a \alert{single file}. This file is the \alert{final product} of -    the analysis steps. - -    \begin{center} -      \includegraphics[width=0.8\linewidth]{img/reproducible-macros-highlighted.png} -    \end{center} -  \end{frame} - - -  \begin{frame}{Values written during analysis} -    Various steps of the analysis write the macro values as soon as -    they are calculated internally. - -    \begin{center} -      \includegraphics[width=0.8\linewidth]{img/reproducible-write-macro.png} -    \end{center} -  \end{frame} - - -  \begin{frame}{Values written during analysis} -    Various steps of the analysis write the macro values as soon as -    they are calculated internally. - -    \begin{center} -      \includegraphics[width=0.8\linewidth]{img/reproducible-write-macro-highlight.png} -    \end{center} -  \end{frame} - - -  \begin{frame}{Reproducible science: Template is managed through a Makefile} -    \small -    \begin{columns} -      \column{5.5cm} - -      All steps (downloading and analysis) is managed by Makefiles -      (example from -      \textcolor{blue}{\small\href{https://doi.org/10.5281/zenodo.1164774}{zenodo.1164774}}): - -      \begin{itemize} -        \setlength\itemsep{0.2cm} -      \item Unlike a script which always starts from the top, a -        Makefile \alert{starts from the end} and steps that don't -        change will be left untouched (not remade). -      \item A single \emph{rule} can \alert{manage any number of -        files}. See the examples here where \textsf{NoiseChisel} and -        \textsf{MakeCatalog} are run separately on \alert{$\sim20$ -          files} (different filters/fields) with a single rule. -      \item Make can identify independent steps internally and do them -        in \alert{parallel}. -      \item Make was \alert{designed for complex problems} with -        thousands of files (all major Unix-like components), so it is -        highly evolved and efficient. -      \item Make is a very \alert{simple} and \alert{small} language, -        thus easy to learn with great and free documentation (for -        example -        \textcolor{blue}{\href{https://www.gnu.org/software/make/manual/}{GNU -            Make's manual}}, usable to learn all implementations). -      \end{itemize} - -      \column{5.5cm} -      \includegraphics[width=\linewidth]{img/reproducible-makefile.png} -    \end{columns} -  \end{frame} +  \newcommand{\focusonpackages}{} +  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} +  \let\focusonpackages\undefined @@ -368,17 +267,15 @@          reproducibility.        \end{tcolorbox} +      \vspace{1cm} +        \begin{itemize}          \setlength\itemsep{0.4cm}        \item \emph{Containers} or \emph{Virtual Machines} are a -        \alert{binary black box}: just contain the environment, not -        how to set it up, or its history. They are also an overhead. +        \alert{binary black box}.        \item This template \alert{installs fixed versions} of all -        necessary research software and their dependencies, down to -        the command-line shell, C compiler, POSIX tools and Python -        interpreter. It just avoids very low-level OS elements like -        the kernel or linker. +        necessary research software and their dependencies.        \item Installs similar environment on \alert{GNU/Linux}, or          \alert{macOS} systems. @@ -388,7 +285,7 @@        \end{itemize}        \column{5.5cm} -      \includegraphics[width=\linewidth]{img/software.png} +      \includegraphics[width=\linewidth]{img/version.png}      \end{columns}    \end{frame} @@ -409,17 +306,15 @@          reproducibility.        \end{tcolorbox} +      \vspace{1cm} +        \begin{itemize}          \setlength\itemsep{0.4cm}        \item \emph{Containers} or \emph{Virtual Machines} are a -        \alert{binary black box}: just contain the environment, not -        how to set it up, or its history. They are also an overhead. +        \alert{binary black box}.        \item This template \alert{installs fixed versions} of all -        necessary research software and their dependencies, down to -        the command-line shell, C compiler, POSIX tools and Python -        interpreter. It just avoids very low-level OS elements like -        the kernel or linker. +        necessary research software and their dependencies.        \item Installs similar environment on \alert{GNU/Linux}, or          \alert{macOS} systems. @@ -429,61 +324,105 @@        \end{itemize}        \column{5.5cm} -      \includegraphics[width=\linewidth]{img/software-highlighted.png} +      \includegraphics[width=\linewidth]{img/version-highlighted.png}      \end{columns}    \end{frame} -  \newcommand{\redbdir}{\textcolor{green!80!black}{/TEMPLATE/BUILD/DIRECTORY/software/installed/lib}} -  \begin{frame}{Dependencies are cleanly managed} -    \begin{itemize} -    \item All the software are configured and built to use the -      \alert{template's own builds}: indepenent of host system -      (\textcolor{green!80!black}{in green}). -    \item Template even builds a fixed GNU C Compiler (\alert{GCC}). -    \item Only extremely low-level dependencies (for example C library -      and Kernel) not built. -      \begin{itemize} -      \item GNU C library will also be added later (\alert{in red}). -      \end{itemize} -    \end{itemize} + +  \begin{frame}{Controlled environment and build instructions} +    \small +    \begin{columns} +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/env.png} +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/build.png} +    \end{columns} +  \end{frame} + +  \begin{frame}{Controlled environment and build instructions} +    \small +    \begin{columns} +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/env-highlighted.png} +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/build-highlighted.png} +    \end{columns} +  \end{frame} + + + + + +  \newcommand{\redbdir}{\textcolor{green!80!black}{/PROJECT/PATH/software/installed/lib}} +  \begin{frame}{All dependencies (except C library and linker) built in project\\ +                Linked libraries to NoiseChisel executable on GNU/Linux}      \vspace{0.5cm}      \tiny\texttt{        \$ ldd .local/bin/astnoisechisel\\ -      \hspace{0.5cm}libgit2.so.26 => \redbdir/libgit2.so.26 (0x00007febb5232000)\\ -      \hspace{0.5cm}libtiff.so.5 => \redbdir/libtiff.so.5 (0x00007febb51b8000)\\ -      \hspace{0.5cm}liblzma.so.5 => \redbdir/liblzma.so.5 (0x00007febb5190000)\\ -      \hspace{0.5cm}libjpeg.so.9 => \redbdir/libjpeg.so.9 (0x00007febb5153000)\\ -      \hspace{0.5cm}z.so.1 => \redbdir/libz.so.1 (0x00007febb5136000)\\ -      \hspace{0.5cm}wcs.so.6 => \redbdir/libwcs.so.6 (0x00007febb4fcc000)\\ -      \hspace{0.5cm}cfitsio.so.8 => \redbdir/libcfitsio.so.8 (0x00007febb4caf000)\\ -      \hspace{0.5cm}curl.so.4 => \redbdir/libcurl.so.4 (0x00007febb4c35000)\\ -      \hspace{0.5cm}ssl.so.1.1 => \redbdir/libssl.so.1.1 (0x00007febb4b9b000)\\ -      \hspace{0.5cm}crypto.so.1.1 => \redbdir/libcrypto.so.1.1 (0x00007febb48b5000)\\ -      \hspace{0.5cm}gsl.so.23 => \redbdir/libgsl.so.23 (0x00007febb4626000)\\ -      \hspace{0.5cm}gslcblas.so.0 => \redbdir/libgslcblas.so.0 (0x00007febb45e2000)\\ -      \hspace{0.5cm}gnuastro.so.8 => \redbdir/libgnuastro.so.8 (0x00007febb419e000)\\ -      \hspace{0.5cm}bz2.so.1.0 => \redbdir/libbz2.so.1.0 (0x00007febb3e20000)\\ -      \hspace{0.5cm}\alert{m.so.6} => /usr/lib/libm.so.6 (0x00007febb4025000)\\ -      \hspace{0.5cm}\alert{pthread.so.0} => /usr/lib/libpthread.so.0 (0x00007febb4004000)\\ -      \hspace{0.5cm}\alert{c.so.6} => /usr/lib/libc.so.6 (0x00007febb3e3f000)\\ -      \hspace{0.5cm}rt.so.1 => /usr/lib/librt.so.1 (0x00007febb3e35000)\\ -      \hspace{0.5cm}dl.so.2 => /usr/lib/libdl.so.2 (0x00007febb3e1b000)\\ -      \hspace{0.5cm}linux-vdso.so.1 (0x00007ffcf2497000)\\ -      \hspace{0.5cm}/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007febb53c6000) +      \hspace{0.5cm}linux-vdso.so.1 (0x00007fffdcbf7000)\\ +      \hspace{0.5cm}libgnuastro.so.7 => \redbdir/libgnuastro.so.7 (0x00007f6745f39000)\\ +      \hspace{0.5cm}libgit2.so.26 => \redbdir/libgit2.so.26 (0x00007f6745df1000)\\ +      \hspace{0.5cm}libtiff.so.5 => \redbdir/libtiff.so.5 (0x00007f6745d77000)\\ +      \hspace{0.5cm}liblzma.so.5 => \redbdir/liblzma.so.5 (0x00007f6745d4f000)\\ +      \hspace{0.5cm}libjpeg.so.9 => \redbdir/libjpeg.so.9 (0x00007f6745d12000)\\ +      \hspace{0.5cm}libwcs.so.6 => \redbdir/libwcs.so.6 (0x00007f6745ba8000)\\ +      \hspace{0.5cm}libcfitsio.so.8 => \redbdir/libcfitsio.so.8 (0x00007f674588b000)\\ +      \hspace{0.5cm}libcurl.so.4 => \redbdir/libcurl.so.4 (0x00007f6745811000)\\ +      \hspace{0.5cm}libssl.so.1.1 => \redbdir/libssl.so.1.1 (0x00007f6745777000)\\ +      \hspace{0.5cm}libcrypto.so.1.1 => \redbdir/libcrypto.so.1.1 (0x00007f6745491000)\\ +      \hspace{0.5cm}libz.so.1 => \redbdir/libz.so.1 (0x00007f6745474000)\\ +      \hspace{0.5cm}libgsl.so.23 => \redbdir/libgsl.so.23 (0x00007f67451e3000)\\ +      \hspace{0.5cm}libgslcblas.so.0 => \redbdir/libgslcblas.so.0 (0x00007f67451a1000)\\ +      \hspace{0.5cm}libbz2.so.1.0 => \redbdir/libbz2.so.1.0 (0x00007f6744e23000)\\ +      \hspace{0.5cm}\alert{libpthread.so.0} => /usr/lib/libpthread.so.0 (0x00007f6745006000)\\ +      \hspace{0.5cm}\alert{libm.so.6} => /usr/lib/libm.so.6 (0x00007f6745027000)\\ +      \hspace{0.5cm}\alert{libc.so.6} => /usr/lib/libc.so.6 (0x00007f6744e43000)\\ +      \hspace{0.5cm}libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f6744e1e000)\\ +      \hspace{0.5cm}librt.so.1 => /usr/lib/librt.so.1 (0x00007f6744e36000)\\ +      \hspace{0.5cm}/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f67463c7000) +   } +  \end{frame} + + +  \begin{frame}{All dependencies (except C library and linker) built in project\\ +                Linked libraries to NoiseChisel executable on macOS} +    \vspace{0.5cm} +    \tiny\texttt{ +      \$ otool -L .local/bin/astnoisechisel\\ +      \hspace{0.5cm}.local/bin/astnoisechisel:\\ +      \hspace{0.5cm}\redbdir/libgnuastro.7.dylib (compatibility ver 8.0.0, current ver 8.0.0)\\ +      \hspace{0.5cm}\redbdir/libgit2.26.dylib (compatibility ver 26.0.0, current ver 0.26.0)\\ +      \hspace{0.5cm}\redbdir/libtiff.5.dylib (compatibility ver 10.0.0, current ver 10.0.0)\\ +      \hspace{0.5cm}\redbdir/liblzma.5.dylib (compatibility ver 8.0.0, current ver 8.4.0)\\ +      \hspace{0.5cm}\redbdir/libjpeg.9.dylib (compatibility ver 12.0.0, current ver 12.0.0)\\ +      \hspace{0.5cm}\redbdir/libwcs.6.2.dylib (compatibility ver 6.0.0, current ver 6.2.0)\\ +      \hspace{0.5cm}\redbdir/libcfitsio.8.dylib (compatibility ver 8.0.0, current ver 8.3.47)\\ +      \hspace{0.5cm}\redbdir/libcurl.4.dylib (compatibility ver 10.0.0, current ver 10.0.0)\\ +      \hspace{0.5cm}\redbdir/libssl.1.1.dylib (compatibility ver 1.1.0, current ver 1.1.0)\\ +      \hspace{0.5cm}\redbdir/libcrypto.1.1.dylib (compatibility ver 1.1.0, current ver 1.1.0)\\ +      \hspace{0.5cm}\redbdir/libz.1.dylib (compatibility ver 1.0.0, current ver 1.2.11)\\ +      \hspace{0.5cm}\redbdir/libgsl.23.dylib (compatibility ver 25.0.0, current ver 25.0.0)\\ +      \hspace{0.5cm}\redbdir/libgslcblas.0.dylib (compatibility ver 1.0.0, current ver 1.0.0)\\ +      \hspace{0.5cm}/usr/lib/libSystem.B.dylib (compatibility ver 1.0.0, current ver 1252.50.4)     }    \end{frame} +    \begin{frame}{Advantages of this build system}      \begin{columns}        \column{7cm}        \begin{itemize} -        \setlength\itemsep{1cm} +        \setlength\itemsep{0.7cm} +      \item Project runs in fixed/controlled environment: custom build +        of \alert{Bash}, GNU Coreutils (\alert{\texttt{ls}}, +        \alert{\texttt{cp}}, \alert{\texttt{mkdir}} and etc), +        \alert{AWK}, or \alert{SED}, \alert{\LaTeX}, etc.        \item No need for \alert{root}/administrator \alert{permissions}          (on servers or super computers).        \item Whole system is built \alert{automatically} on any @@ -511,44 +450,195 @@ -%  \begin{frame}{Reproducing the result and report/paper} -%    The two \alert{simple} and \alert{familiar} commands below are -%    enough to exactly reproduce the results at any time. -% -%    \begin{itemize} -%    \item[] \texttt{\$ ./configure} -%    \item[] \texttt{\$ make} -%    \end{itemize} -% -%    With \texttt{./configure}, you specify the local directories to -%    use. All necessary \alert{software} are then \alert{downloaded} -%    and installed there (independent of your OS or other projects). -% -%    \vspace{0.3cm} With \texttt{make}, input \alert{data} from online -%    archives (databases) are \alert{downloaded}, if not locally -%    available, the processing is done, and the \LaTeX{} paper is built -%    as a PDF (e.g., see -%    \textcolor{blue}{\small\href{https://doi.org/10.5281/zenodo.1164774}{zenodo.1164774}} -%    or -%    \textcolor{blue}{\small\href{https://gitlab.com/makhlaghi/reproducible-paper-output/raw/master/paper.pdf}{template's -%        output}}). -% -%   \vspace{0.3cm} Enabling version control (e.g., with \alert{Git}) -%    encourages testing different ideas while not harming the -%    initial/base result (thus encouraging \alert{creativity} and -%    brainstorming during the project). -% -%    \vspace{0.3cm} After publication, \alert{readers} can -%    \alert{change} the input configurations and the numbers and -%    figures of the reproduced paper will respectively change. This -%    encourages creativity and brainstorming after the project as well -%    as sharing of (the hardly gained) experiences with the whole -%    community. -%  \end{frame} - - - -  \renewcommand{\nodeopacity}{1} + + + + + +  %% Hardware/data +  \newcommand{\focusonhardware}{} +  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} +  \let\focusonhardware\undefined + +  \begin{frame}{Input data source and integrity is documented and checked} +    \small +    \begin{columns} +      \column{5.5cm} +      Stored information about each input file: +      \begin{itemize} +      \item \alert{PID} (where available). +      \item Download \alert{URL}. +      \item \alert{MD5}-sum to check integrity. +      \end{itemize} + +      \vspace{1cm} All inputs are downloaded from the given PID/URL. + +      \vspace{1cm} Their MD5-sum is checked to make sure the download +      was done properly or the file is the same (hasn't changed on the +      server/source). + +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/inputs.png} +    \end{columns} +  \end{frame} + +  \begin{frame}{Input data source and integrity is documented and checked} +    \small +    \begin{columns} +      \column{5.5cm} +      Stored information about each input file: +      \begin{itemize} +      \item \alert{PID} (where available). +      \item Download \alert{URL}. +      \item \alert{MD5}-sum to check integrity. +      \end{itemize} + +      \vspace{1cm} All inputs are downloaded from the given PID/URL. + +      \vspace{1cm} Their MD5-sum is checked to make sure the download +      was done properly or the file is the same (hasn't changed on the +      server/source). + +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/inputs-highlighted.png} +    \end{columns} +  \end{frame} + + + + + + + + + + +  %% Analysis +  \newcommand{\focusonrun}{} +  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} +  \let\focusonrun\undefined + + + + + +  \begin{frame}{Reproducible science: Template is managed through a Makefile} +    \small +    \begin{columns} +      \column{5.5cm} + +      All steps (downloading and analysis) is managed by Makefiles +      (example from +      \textcolor{blue}{\small\href{https://doi.org/10.5281/zenodo.1164774}{zenodo.1164774}}): + +      \begin{itemize} +        \setlength\itemsep{0.3cm} +      \item Unlike a script which always starts from the top, a +        Makefile \alert{starts from the end} and steps that don't +        change will be left untouched (not remade). +      \item A single \emph{rule} can \alert{manage any number of +        files}. +      \item Make can identify independent steps internally and do them +        in \alert{parallel}. +      \item Make was \alert{designed for complex problems} with +        thousands of files (all major Unix-like components), so it is +        highly evolved and efficient. +      \item Make is a very \alert{simple} and \alert{small} language, +        thus easy to learn with great and free documentation (for +        example +        \textcolor{blue}{\href{https://www.gnu.org/software/make/manual/}{GNU +            Make's manual}}). +      \end{itemize} + +      \column{5.5cm} +      \includegraphics[width=\linewidth]{img/reproducible-makefile.png} +    \end{columns} +  \end{frame} + + + + + + + +  \newcommand{\focusonpaper}{} +  \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} +  \let\focusonpaper\undefined + +  \begin{frame}{Values in final report/paper} +    All necessary analysis/processing \alert{input} and \alert{output} +    values are written into the final report as \LaTeX{} macros. Shown +    here is a portion of the \textsf{NoiseChisel} paper and its source +    (\textcolor{blue}{\small\href{https://arxiv.org/abs/1505.01664}{arXiv:1505.01664}}). + +    \vspace{1.2cm} +    \includegraphics[width=\linewidth]{img/reproducible-latex.png} +  \end{frame} + +  \begin{frame}{Values in final report/paper} +    All necessary analysis/processing \alert{input} and \alert{output} +    values are written into the final report as \LaTeX{} macros. Shown +    here is a portion of the \textsf{NoiseChisel} paper and its source +    (\textcolor{blue}{\small\href{https://arxiv.org/abs/1505.01664}{arXiv:1505.01664}}). + +    \vspace{1.2cm} +    \includegraphics[width=\linewidth]{img/reproducible-latex-highlighted.png} +  \end{frame} + + + +  \begin{frame}{Values come from a single file} +    All the \LaTeX{} macros (processing inputs and outputs) come from +    a \alert{single file}. This file is the \alert{final product} of +    the analysis steps. + +    \begin{center} +      \includegraphics[width=0.8\linewidth]{img/reproducible-macros.png} +    \end{center} +  \end{frame} + + + +  \begin{frame}{Values come from a single file} +    All the \LaTeX{} macros (processing inputs and outputs) come from +    a \alert{single file}. This file is the \alert{final product} of +    the analysis steps. + +    \begin{center} +      \includegraphics[width=0.8\linewidth]{img/reproducible-macros-highlighted.png} +    \end{center} +  \end{frame} + + +  \begin{frame}{Values written during analysis} +    Various steps of the analysis write the macro values as soon as +    they are calculated internally. + +    \begin{center} +      \includegraphics[width=0.8\linewidth]{img/reproducible-write-macro.png} +    \end{center} +  \end{frame} + + +  \begin{frame}{Values written during analysis} +    Various steps of the analysis write the macro values as soon as +    they are calculated internally. + +    \begin{center} +      \includegraphics[width=0.8\linewidth]{img/reproducible-write-macro-highlight.png} +    \end{center} +  \end{frame} + + + + + + + + + + +  \newcommand{\allopacity}{1}    \begin{frame}{Everything in plain text (machine and human readable)}      \include{tex/project-graph} \end{frame}    \newcommand{\gitlogo}{} | 
