aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2019-06-21 19:24:46 +0100
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2019-06-21 19:24:46 +0100
commit5b6414ac64a1c986a9ad6a1e05bbaccc7d7d8f38 (patch)
treefae939a5e39ca7b2d893e65f25f48daf2b1c94c6
parentddd1690dacaecdfa9bfe982935a1365c27b7491b (diff)
Adjusted for 16:9 aspect ratio, improved Git demonstration
For EWASS, they recommended a 16:9 aspect ratio. This is becoming the standard and after some tests, I saw felt that it does indeed show better on modern monitors while also giving more horizontal space. The slides are now changed to this aspect ratio and everything was slightly modified to show nicely in it. Also, an extra step was added to the Git demonstration steps to show how progress on the project branch happens independently of progress on the template.
-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.