aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--reproducible-paper.tex321
-rw-r--r--tex/git-branch.tex96
-rw-r--r--tex/project-graph.tex5
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.