diff options
-rw-r--r-- | reproducible-paper.tex | 321 | ||||
-rw-r--r-- | tex/git-branch.tex | 96 | ||||
-rw-r--r-- | tex/project-graph.tex | 5 |
3 files changed, 240 insertions, 182 deletions
diff --git a/reproducible-paper.tex b/reproducible-paper.tex index b0603de..0b0aaa6 100644 --- a/reproducible-paper.tex +++ b/reproducible-paper.tex @@ -1,4 +1,4 @@ -\documentclass[9pt,usenames,dvipsnames]{beamer} +\documentclass[9pt,usenames,dvipsnames,aspectratio=169]{beamer} %% Beamer settings. %\setbeamertemplate{footline}[frame number] @@ -92,7 +92,6 @@ - \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 @@ -117,7 +116,7 @@ \begin{frame} \centering - \includegraphics[width=0.6\linewidth]{img/schrodinger-code.png} + \includegraphics[width=0.45\linewidth]{img/schrodinger-code.png} \footnotesize Original image from \href{https://www.redbubble.com/people/seriesclothing/works/28520432-the-flash-ciscos-shirt-wanted-dead-and-alive-scr-dingers-cat}{\texttt{https://www.redbubble.com}} \end{frame} @@ -125,13 +124,8 @@ - %% Initially in full opacity: - \newcommand{\allopacity}{1} - - - - %% Step-by-step slides. + \newcommand{\allopacity}{1} \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} @@ -150,9 +144,11 @@ \begin{frame}{Example: Matplotlib (a Python visualization library) build dependencies} \Wider[5em]{ \vspace{5mm} - \includegraphics[width=\linewidth]{img/matplotlib.pdf} + \begin{center} + \includegraphics[width=0.9\linewidth]{img/matplotlib.pdf} + \end{center} - \vspace{7mm}\tiny From ``Attributing and Referencing (Research) + \vspace{-1mm}\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}}) @@ -187,6 +183,7 @@ \newcommand{\paperfinal}{} \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} + %% Don't show the happy scientist or the existing containers box. \let\paperinit\undefined \let\allopacity\undefined @@ -198,16 +195,17 @@ \begin{frame}{Science is a tricky business} - \includegraphics[width=\linewidth]{img/nature-cartoon.jpg} - - \vspace{-0.2cm} + \begin{center} + \includegraphics[width=0.9\linewidth]{img/nature-cartoon.jpg} + \end{center} + \vspace{-0.3cm}\hfill {\tiny Image from nature.com (``\href{https://www.nature.com/articles/d41586-017-07522-z}{Five - ways to fix statistics}'', Nov 2017)} + ways to fix statistics}'', Nov 2017)}\hspace{7mm} - \vspace{0.2cm} - \begin{tcolorbox} + \vspace{-1mm} + \begin{tcolorbox}[boxsep=0pt,left=1mm,right=1mm,top=1mm,bottom=1mm] \small Data analysis [...] is a \alert{human behaviour}. Researchers who hunt hard enough will turn up a result that fits statistical criteria, but their @@ -257,7 +255,7 @@ \begin{frame}{Predefined/exact software tools} \small \begin{columns} - \column{5.5cm} + \column{10cm} \begin{tcolorbox}[width=\linewidth, boxsep=1pt, left=1pt, right=1pt, top=1pt, bottom=1pt, title=Reproducibility \& software] @@ -267,10 +265,10 @@ reproducibility. \end{tcolorbox} - \vspace{1cm} + \vspace{2cm} \begin{itemize} - \setlength\itemsep{0.4cm} + \setlength\itemsep{0.6cm} \item \emph{Containers} or \emph{Virtual Machines} are a \alert{binary black box}. @@ -284,7 +282,7 @@ \alert{\texttt{apt}} or \alert{\texttt{brew}}). \end{itemize} - \column{5.5cm} + \column{5cm} \includegraphics[width=\linewidth]{img/version.png} \end{columns} \end{frame} @@ -296,7 +294,7 @@ \begin{frame}{Predefined/exact software tools} \small \begin{columns} - \column{5.5cm} + \column{10cm} \begin{tcolorbox}[width=\linewidth, boxsep=1pt, left=1pt, right=1pt, top=1pt, bottom=1pt, title=Reproducibility \& software] @@ -306,10 +304,10 @@ reproducibility. \end{tcolorbox} - \vspace{1cm} + \vspace{2cm} \begin{itemize} - \setlength\itemsep{0.4cm} + \setlength\itemsep{0.6cm} \item \emph{Containers} or \emph{Virtual Machines} are a \alert{binary black box}. @@ -323,7 +321,7 @@ \alert{\texttt{apt}} or \alert{\texttt{brew}}). \end{itemize} - \column{5.5cm} + \column{5cm} \includegraphics[width=\linewidth]{img/version-highlighted.png} \end{columns} \end{frame} @@ -336,9 +334,9 @@ \small \begin{columns} \column{5.5cm} - \includegraphics[width=\linewidth]{img/env.png} + \includegraphics[width=0.9\linewidth]{img/env.png} \column{5.5cm} - \includegraphics[width=\linewidth]{img/build.png} + \includegraphics[width=0.9\linewidth]{img/build.png} \end{columns} \end{frame} @@ -346,9 +344,9 @@ \small \begin{columns} \column{5.5cm} - \includegraphics[width=\linewidth]{img/env-highlighted.png} + \includegraphics[width=0.9\linewidth]{img/env-highlighted.png} \column{5.5cm} - \includegraphics[width=\linewidth]{img/build-highlighted.png} + \includegraphics[width=0.9\linewidth]{img/build-highlighted.png} \end{columns} \end{frame} @@ -356,58 +354,71 @@ - \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}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} + \newcommand{\prjdir}{\textcolor{gray}{/PROJECT}} + \newcommand{\lcolor}[1]{\textcolor{green!80!black}{#1}} + \begin{frame}{All high-level dependencies are under control (e.g., NoiseChisel's dependencies)} + \scriptsize + \begin{columns} + \column{8cm} + \begin{center} {\large \textbf{GNU/Linux distribution}} \end{center} + + \texttt{\$ ldd .local/bin/astnoisechisel}\\ + \hspace{0.5cm}\texttt{\lcolor{libgnuastro.so.7} => \textcolor{gray}{\prjdir}/libgnuastro.so.7 (0x00007f6745f39000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libgit2.so.26} => \prjdir/libgit2.so.26 (0x00007f6745df1000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libtiff.so.5} => \prjdir/libtiff.so.5 (0x00007f6745d77000)}\\ + \hspace{0.5cm}\texttt{\lcolor{liblzma.so.5} => \prjdir/liblzma.so.5 (0x00007f6745d4f000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libjpeg.so.9} => \prjdir/libjpeg.so.9 (0x00007f6745d12000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libwcs.so.6} => \prjdir/libwcs.so.6 (0x00007f6745ba8000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libcfitsio.so.8} => \prjdir/libcfitsio.so.8 (0x00007f674588b000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libcurl.so.4} => \prjdir/libcurl.so.4 (0x00007f6745811000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libssl.so.1.1} => \prjdir/libssl.so.1.1 (0x00007f6745777000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libcrypto.so.1.1} => \prjdir/libcrypto.so.1.1 (0x00007f6745491000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libz.so.1} => \prjdir/libz.so.1 (0x00007f6745474000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libgsl.so.23} => \prjdir/libgsl.so.23 (0x00007f67451e3000)}\\ + \hspace{0.5cm}\texttt{\lcolor{libgslcblas.so.0} => \prjdir/libgslcblas.so.0 (0x00007f67451a1000)}\\ + \hspace{0.5cm}\texttt{\textcolor{blue}{libpthread.so.0} => /usr/lib/libpthread.so.0 (0x00007f6745006000)}\\ + \hspace{0.5cm}\texttt{\textcolor{blue}{libm.so.6} => /usr/lib/libm.so.6 (0x00007f6745027000)}\\ + \hspace{0.5cm}\texttt{\textcolor{blue}{libc.so.6} => /usr/lib/libc.so.6 (0x00007f6744e43000)}\\ + \hspace{0.5cm}\texttt{\alert{libdl.so.2} => /usr/lib/libdl.so.2 (0x00007f6744e1e000)}\\ + \hspace{0.5cm}\texttt{\alert{librt.so.1} => /usr/lib/librt.so.1 (0x00007f6744e36000)}\\ + \hspace{0.5cm}\texttt{\alert{linux-vdso.so.1} (0x00007fffdcbf7000)}\\ + \hspace{0.5cm}\texttt{\alert{/lib64/ld-linux-x86-64.so.2} => /usr/lib64/ld-linux-x86-64.so.2} + + \column{7.5cm} + \begin{center} {\large \textbf{macOS}} \end{center} + + \texttt{\$ otool -L .local/bin/astnoisechisel}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libgnuastro.7.dylib} (comp ver 8.0.0, cur ver 8.0.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libgit2.26.dylib} (comp ver 26.0.0, cur ver 0.26.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libtiff.5.dylib} (comp ver 10.0.0, cur ver 10.0.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{liblzma.5.dylib} (comp ver 8.0.0, cur ver 8.4.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libjpeg.9.dylib} (comp ver 12.0.0, cur ver 12.0.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libwcs.6.2.dylib} (comp ver 6.0.0, cur ver 6.2.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libcfitsio.8.dylib} (comp ver 8.0.0, cur ver 8.3.47)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libcurl.4.dylib} (comp ver 10.0.0, cur ver 10.0.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libssl.1.1.dylib} (comp ver 1.1.0, cur ver 1.1.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libcrypto.1.1.dylib} (comp ver 1.1.0, cur ver 1.1.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libz.1.dylib} (comp ver 1.0.0, cur ver 1.2.11)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libgsl.23.dylib} (comp ver 25.0.0, cur ver 25.0.0)}\\ + \hspace{0.5cm}\texttt{\prjdir/\lcolor{libgslcblas.0.dylib} (comp ver 1.0.0, cur ver 1.0.0)}\\ + \hspace{0.5cm}\alert{/usr/lib/libSystem.B.dylib} (comp ver 1.0.0, cur ver 1252.50.4) + + \vspace{1.4cm} + \end{columns} + \vspace{2mm} + \begin{tcolorbox}[boxsep=0pt,left=1mm,right=1mm,top=1mm,bottom=1mm] + \small - \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) - } + \lcolor{Project libraries:} High-level libraries built for each + project. + + \textcolor{blue}{GNU C Library:} Currently not installed, will be + available on GNU/Linux systems soon. + + \alert{System/linker libraries}: Very low-level, we do + not need to control. + \end{tcolorbox} \end{frame} @@ -416,20 +427,21 @@ \begin{frame}{Advantages of this build system} \begin{columns} - \column{7cm} + \column{11cm} \begin{itemize} \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. + of \alert{Bash}, \alert{Make}, 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 - Unix-like operating system (less 2 hours). + Unix-like operating system \\(less 2 hours). \item Dependencies of different projects will \alert{not conflict}. - \item (Almost) all depencies are \alert{exactly} documened and - can be reproduced. + \item Everything in \alert{plain text} (human \& computer + readable/archivable). \end{itemize} \column{4cm} \includegraphics[width=\linewidth]{img/unchained.jpg}\\ @@ -440,10 +452,12 @@ \begin{frame}{Software acknowledgment and citation automatically generated in paper} - \includegraphics[width=\linewidth]{img/software-cite.png} + \centering + \includegraphics[width=0.8\linewidth]{img/software-cite.png} \end{frame} \begin{frame}{Software acknowledgment and citation automatically generated in paper} - \includegraphics[width=\linewidth]{img/software-cite-highlighted.png} + \centering + \includegraphics[width=0.8\linewidth]{img/software-cite-highlighted.png} \end{frame} @@ -463,7 +477,7 @@ \begin{frame}{Input data source and integrity is documented and checked} \small \begin{columns} - \column{5.5cm} + \column{10cm} Stored information about each input file: \begin{itemize} \item \alert{PID} (where available). @@ -471,13 +485,14 @@ \item \alert{MD5}-sum to check integrity. \end{itemize} - \vspace{1cm} All inputs are downloaded from the given PID/URL. + \vspace{1cm} All inputs are \alert{downloaded} from the given + PID/URL when necessary\\(during the analysis). - \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). + \vspace{1cm} MD5-sums are \alert{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} + \column{5cm} \includegraphics[width=\linewidth]{img/inputs.png} \end{columns} \end{frame} @@ -485,7 +500,7 @@ \begin{frame}{Input data source and integrity is documented and checked} \small \begin{columns} - \column{5.5cm} + \column{10cm} Stored information about each input file: \begin{itemize} \item \alert{PID} (where available). @@ -493,13 +508,14 @@ \item \alert{MD5}-sum to check integrity. \end{itemize} - \vspace{1cm} All inputs are downloaded from the given PID/URL. + \vspace{1cm} All inputs are \alert{downloaded} from the given + PID/URL when necessary\\(during the analysis). - \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). + \vspace{1cm} MD5-sums are \alert{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} + \column{5cm} \includegraphics[width=\linewidth]{img/inputs-highlighted.png} \end{columns} \end{frame} @@ -513,6 +529,7 @@ + %% Analysis \newcommand{\focusonrun}{} \begin{frame}{General outline of a project} \include{tex/project-graph} \end{frame} @@ -525,14 +542,15 @@ \begin{frame}{Reproducible science: Template is managed through a Makefile} \small \begin{columns} - \column{5.5cm} + \column{10cm} - All steps (downloading and analysis) is managed by Makefiles + All steps (downloading and analysis) are managed by Makefiles\\ (example from \textcolor{blue}{\small\href{https://doi.org/10.5281/zenodo.1164774}{zenodo.1164774}}): + \vspace{5mm} \begin{itemize} - \setlength\itemsep{0.3cm} + \setlength\itemsep{0.7cm} \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). @@ -540,7 +558,7 @@ files}. \item Make can identify independent steps internally and do them in \alert{parallel}. - \item Make was \alert{designed for complex problems} with + \item Make was \alert{designed for complex projects} 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, @@ -550,7 +568,7 @@ Make's manual}}). \end{itemize} - \column{5.5cm} + \column{5cm} \includegraphics[width=\linewidth]{img/reproducible-makefile.png} \end{columns} \end{frame} @@ -565,69 +583,65 @@ \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} + \begin{frame}{Analysis results stored as \LaTeX{} macros} + Any analysis result that must be reported in the final + paper/report must is saved as a \LaTeX{} macro. + \begin{center} + \includegraphics[width=0.6\linewidth]{img/reproducible-write-macro.png} + \end{center} \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} + \begin{frame}{Analysis results stored as \LaTeX{} macros} + Any analysis result that must be reported in the final + paper/report must is saved as a \LaTeX{} macro. + \begin{center} + \includegraphics[width=0.6\linewidth]{img/reproducible-write-macro-highlight.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{frame}{Analysis step results/values concatenated into a single file.} + All analysis results are concatenated into a \alert{single file} + that will be included into the paper's \LaTeX{} source. + \begin{center} + \includegraphics[width=0.6\linewidth]{img/reproducible-macros.png} + \end{center} + \end{frame} + \begin{frame}{Analysis step results/values concatenated into a single file.} + All analysis results are concatenated into a \alert{single file} + that will be included into the paper's \LaTeX{} source. \begin{center} - \includegraphics[width=0.8\linewidth]{img/reproducible-macros.png} + \includegraphics[width=0.6\linewidth]{img/reproducible-macros-highlighted.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 in final report/paper} + The \LaTeX{} macros are used when writing the paper (all numbers + updated automatically).\\ 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}}). - \begin{frame}{Values written during analysis} - Various steps of the analysis write the macro values as soon as - they are calculated internally. + \vspace{1.2cm} + \includegraphics[width=\linewidth]{img/reproducible-latex.png} + \end{frame} - \begin{center} - \includegraphics[width=0.8\linewidth]{img/reproducible-write-macro.png} - \end{center} + \begin{frame}{Values in final report/paper} + The \LaTeX{} macros are used when writing the paper (all numbers + updated automatically).\\ 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 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} @@ -649,9 +663,13 @@ \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} - \newcommand{\projbranch}{} + \newcommand{\projinit}{} + \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} + \newcommand{\projwork}{} \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} - \newcommand{\mergebranch}{} + \newcommand{\tempevolve}{} + \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} + \newcommand{\mergewithtemp}{} \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} \newcommand{\tofuture}{} \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} @@ -659,6 +677,9 @@ \begin{frame}{New projects branch from template} \include{tex/git-branch} \end{frame} + + + \begin{frame}{Publication of the project} A reproducible project using this template will have the following diff --git a/tex/git-branch.tex b/tex/git-branch.tex index 98234d3..982313d 100644 --- a/tex/git-branch.tex +++ b/tex/git-branch.tex @@ -1,56 +1,82 @@ -\begin{columns} +\begin{columns}[t] \column{5cm} \vspace{-0.4cm} \begin{tikzpicture} - \draw [white] (0,0) -- (0,8.3); + \draw [white] (0,0) -- (0,7.4); %% Template branch. \ifdefined\tofuture - \draw[->, line width=2mm] (0,0) -- (0,8.2); + \draw[->, line width=2mm] (0,0) -- (0,7.3); \else - \draw[->, line width=2mm] (0,0) -- (0,6.5); + \ifdefined\tempevolve + \draw[->, line width=2mm] (0,0) -- (0,5.5); + \else + \draw[->, line width=2mm] (0,0) -- (0,2.3); + \fi \fi %% Project branch. - \ifdefined\projbranch + \ifdefined\projinit \draw[line width=2mm] (0,1.5) -- (1,2); \ifdefined\tofuture - \draw[->, line width=2mm] (0.95,1.92) -- (0.95,8); + \draw[->, line width=2mm] (0.95,1.92) -- (0.95,7.3); \else - \draw[->, line width=2mm] (0.95,1.92) -- (0.95,7); + \ifdefined\mergewithtemp + \draw[->, line width=2mm] (0.95,1.92) -- (0.95,5.7); + \else + \ifdefined\projwork + \draw[->, line width=2mm] (0.95,1.92) -- (0.95,5); + \else + \draw[->, line width=2mm] (0.95,1.92) -- (0.95,3); + \fi + \fi \fi \fi %% Merge link - \ifdefined\mergebranch - \draw[line width=2mm] (0,5.5) -- (0.95,6.05); + \ifdefined\mergewithtemp + \draw[line width=2mm] (0,4.5) -- (0.95,5.05); \fi + %% COMMITS: Note that commits have to come after the branches, + %% otherwise the black lines are going to be over the commit + %% circles. + %% Template commits. \ifdefined\tofuture - \foreach \y in {0.55,...,7.55} + \foreach \y in {0.55,...,7} \draw [fill=green!80!blue, opacity=0.5] (0,\y) circle [radius=2.1mm]; \else - \foreach \y in {0.55,...,6.5} - \draw [fill=green!80!blue, opacity=0.5] (0,\y) circle [radius=2.1mm]; + \ifdefined\tempevolve + \foreach \y in {0.55,...,5} + \draw [fill=green!80!blue, opacity=0.5] (0,\y) circle [radius=2.1mm]; + \else + \foreach \y in {0.55,...,2.5} + \draw [fill=green!80!blue, opacity=0.5] (0,\y) circle [radius=2.1mm]; + \fi \fi %% Project commits. - \ifdefined\projbranch + \ifdefined\projinit \draw[anchor=north] (1,1.7) node {Project}; \ifdefined\tofuture - \foreach \y in {2,...,7.55} + \foreach \y in {2,...,6} \draw [fill=red!60!green, opacity=0.5] (0.95,\y) circle [radius=2.1mm]; \else - \ifdefined\mergebranch - \foreach \y in {2,...,6.5} - \draw [fill=red!60!green, opacity=0.5] (0.95,\y) circle [radius=2.1mm]; - \else + \ifdefined\mergewithtemp \foreach \y in {2,...,5} \draw [fill=red!60!green, opacity=0.5] (0.95,\y) circle [radius=2.1mm]; + \else + \ifdefined\projwork + \foreach \y in {2,...,4.9} + \draw [fill=red!60!green, opacity=0.5] (0.95,\y) circle [radius=2.1mm]; + \else + \foreach \y in {2,...,2.9} + \draw [fill=red!60!green, opacity=0.5] (0.95,\y) circle [radius=2.1mm]; + \fi \fi \fi \fi @@ -59,32 +85,42 @@ %% Happy scientist \ifdefined\githappy - \node [inner sep=0pt] at (3.5,6) {\includegraphics[width=2cm]{img/happy.jpg}}; - \node [inner sep=0pt] at (4.15,7.3) {\includegraphics[width=0.2cm]{img/checkmark.png}}; - \draw[anchor=east] (2.4,7) node {\footnotesize\texttt{5cfe2eab}}; - \draw[anchor=south] (4.5,7) node [rotate=20] {\tiny\texttt{5cfe2eab}}; + \node [inner sep=0pt] at (3.5,4) {\includegraphics[width=2cm]{img/happy.jpg}}; + \node [inner sep=0pt] at (4.15,5.3) {\includegraphics[width=0.2cm]{img/checkmark.png}}; + \draw[anchor=east] (2.4,6) node {\footnotesize\texttt{5cfe2eab}}; + \draw[anchor=south] (4.5,5) node [rotate=20] {\tiny\texttt{5cfe2eab}}; \fi \end{tikzpicture} - \column{6cm} + \column{8cm} + \vspace{-5mm} \begin{itemize} - \setlength\itemsep{0.6cm} + \setlength\itemsep{0.3cm} \item Template's history is recorded. - \ifdefined\projbranch - \item New projects: a branch in the history. + \ifdefined\projinit + \item New project: a branch from the template. \fi - \ifdefined\mergebranch - \item Low-level updates in the template can always be imported into - a project. + \ifdefined\projwork + \item Research progresses in the project branch. + \fi + \ifdefined\tempevolve + \item Template will evolve (improved infrastructure). + \fi + \ifdefined\mergewithtemp + \item Template can always be imported/merged into project. \fi \ifdefined\tofuture \item The template and project will \alert{evolve}. \fi \ifdefined\githappy + \item During research this \alert{encourages creative tests}\\ + (previous research states can easily be retrieved). + \item \alert{Coauthors} can work on same project in parallel + \\(separate project branches). \item Upon publication, the \alert{Git hash} is enough to verify the integrity of the result. - \item During research this encourages creative tests on any step. + \fi \end{itemize} \end{columns} diff --git a/tex/project-graph.tex b/tex/project-graph.tex index 2a0dc66..1ed5b73 100644 --- a/tex/project-graph.tex +++ b/tex/project-graph.tex @@ -1,6 +1,7 @@ \small \Wider[5em]{ - +\centering +\vspace{-3mm} \begin{tikzpicture}[>=stealth, thick, black!50, text=black, every new ->/.style={shorten >=1pt}, hv path/.style={to path={-| (\tikztotarget)}}, @@ -8,7 +9,7 @@ %% This white line is only added to fix the vertical position of the %% figure so it doesn't change as we add more boxes. - \draw [white] (0,-4.2) -- (0,4.2); + \draw [white] (0,-4.3) -- (0,3.8); \draw [white] (-0.5,0) -- (12,0); %% Box showing containers. |