[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: talks: Add iPOP-UP 2021 seminar.
From: |
Leo Famulari |
Subject: |
branch master updated: talks: Add iPOP-UP 2021 seminar. |
Date: |
Wed, 09 Feb 2022 14:04:36 -0500 |
This is an automated email from the git hooks/post-receive script.
lfam pushed a commit to branch master
in repository maintenance.
The following commit(s) were added to refs/heads/master by this push:
new 9169f9e talks: Add iPOP-UP 2021 seminar.
9169f9e is described below
commit 9169f9e83d3b77900d70b0770218a16595baf17b
Author: zimoun <zimon.toutoune@gmail.com>
AuthorDate: Wed Feb 9 18:21:32 2022 +0100
talks: Add iPOP-UP 2021 seminar.
* talks/uparis-ipopup-2021: New directory.
Signed-off-by: Leo Famulari <leo@famulari.name>
---
talks/uparis-ipopup-2021/images/Guix-white.pdf | 1 +
talks/uparis-ipopup-2021/images/big-picture-3.pdf | 1 +
.../uparis-ipopup-2021/images/diderot_u-paris.png | Bin 0 -> 2260 bytes
.../images/diderot_u-paris_bis.png | Bin 0 -> 2130 bytes
talks/uparis-ipopup-2021/images/figures.pdf | Bin 0 -> 548673 bytes
talks/uparis-ipopup-2021/images/guix-refcard.pdf | 1 +
.../images/guixhpc-logo-transparent.pdf | 1 +
talks/uparis-ipopup-2021/images/pipe.pdf | Bin 0 -> 590028 bytes
talks/uparis-ipopup-2021/images/r-minimal.png | Bin 0 -> 2722229 bytes
.../images/software-heritage-logo-title-white.pdf | 1 +
talks/uparis-ipopup-2021/outline | 7 +
talks/uparis-ipopup-2021/talk-20210909.pdf | Bin 0 -> 3296183 bytes
talks/uparis-ipopup-2021/talk.tex | 772 +++++++++++++++++++++
13 files changed, 784 insertions(+)
diff --git a/talks/uparis-ipopup-2021/images/Guix-white.pdf
b/talks/uparis-ipopup-2021/images/Guix-white.pdf
new file mode 120000
index 0000000..288a029
--- /dev/null
+++ b/talks/uparis-ipopup-2021/images/Guix-white.pdf
@@ -0,0 +1 @@
+../../fosdem-2019/minimalist/images/Guix-white.pdf
\ No newline at end of file
diff --git a/talks/uparis-ipopup-2021/images/big-picture-3.pdf
b/talks/uparis-ipopup-2021/images/big-picture-3.pdf
new file mode 120000
index 0000000..b8d0c4f
--- /dev/null
+++ b/talks/uparis-ipopup-2021/images/big-picture-3.pdf
@@ -0,0 +1 @@
+../../fosdem-2018/hpc/images/big-picture-3.pdf
\ No newline at end of file
diff --git a/talks/uparis-ipopup-2021/images/diderot_u-paris.png
b/talks/uparis-ipopup-2021/images/diderot_u-paris.png
new file mode 100644
index 0000000..3eaf755
Binary files /dev/null and
b/talks/uparis-ipopup-2021/images/diderot_u-paris.png differ
diff --git a/talks/uparis-ipopup-2021/images/diderot_u-paris_bis.png
b/talks/uparis-ipopup-2021/images/diderot_u-paris_bis.png
new file mode 100644
index 0000000..841d735
Binary files /dev/null and
b/talks/uparis-ipopup-2021/images/diderot_u-paris_bis.png differ
diff --git a/talks/uparis-ipopup-2021/images/figures.pdf
b/talks/uparis-ipopup-2021/images/figures.pdf
new file mode 100644
index 0000000..3023512
Binary files /dev/null and b/talks/uparis-ipopup-2021/images/figures.pdf differ
diff --git a/talks/uparis-ipopup-2021/images/guix-refcard.pdf
b/talks/uparis-ipopup-2021/images/guix-refcard.pdf
new file mode 120000
index 0000000..560fc1a
--- /dev/null
+++ b/talks/uparis-ipopup-2021/images/guix-refcard.pdf
@@ -0,0 +1 @@
+../../fosdem-2019/minimalist/images/guix-refcard.pdf
\ No newline at end of file
diff --git a/talks/uparis-ipopup-2021/images/guixhpc-logo-transparent.pdf
b/talks/uparis-ipopup-2021/images/guixhpc-logo-transparent.pdf
new file mode 120000
index 0000000..9976a7f
--- /dev/null
+++ b/talks/uparis-ipopup-2021/images/guixhpc-logo-transparent.pdf
@@ -0,0 +1 @@
+../../fosdem-2018/hpc/images/guixhpc-logo-transparent.pdf
\ No newline at end of file
diff --git a/talks/uparis-ipopup-2021/images/pipe.pdf
b/talks/uparis-ipopup-2021/images/pipe.pdf
new file mode 100644
index 0000000..81859b5
Binary files /dev/null and b/talks/uparis-ipopup-2021/images/pipe.pdf differ
diff --git a/talks/uparis-ipopup-2021/images/r-minimal.png
b/talks/uparis-ipopup-2021/images/r-minimal.png
new file mode 100644
index 0000000..a8b4b1e
Binary files /dev/null and b/talks/uparis-ipopup-2021/images/r-minimal.png
differ
diff --git
a/talks/uparis-ipopup-2021/images/software-heritage-logo-title-white.pdf
b/talks/uparis-ipopup-2021/images/software-heritage-logo-title-white.pdf
new file mode 120000
index 0000000..0c5148d
--- /dev/null
+++ b/talks/uparis-ipopup-2021/images/software-heritage-logo-title-white.pdf
@@ -0,0 +1 @@
+../../aramis-2019/images/software-heritage-logo-title-white.pdf
\ No newline at end of file
diff --git a/talks/uparis-ipopup-2021/outline b/talks/uparis-ipopup-2021/outline
new file mode 100644
index 0000000..f2e5f58
--- /dev/null
+++ b/talks/uparis-ipopup-2021/outline
@@ -0,0 +1,7 @@
+The duration of the session was less than one, question included. The
+audience was impatient biologists not practitioning daily computating tasks
+and with low if not none experience about how a computation runs.
+
+The components presented in this talk had been written as a blog entry, see:
+
+ https://simon.tournier.info/posts/2021-09-09-ipopup-seminar.html
diff --git a/talks/uparis-ipopup-2021/talk-20210909.pdf
b/talks/uparis-ipopup-2021/talk-20210909.pdf
new file mode 100644
index 0000000..102f29c
Binary files /dev/null and b/talks/uparis-ipopup-2021/talk-20210909.pdf differ
diff --git a/talks/uparis-ipopup-2021/talk.tex
b/talks/uparis-ipopup-2021/talk.tex
new file mode 100644
index 0000000..851eaa8
--- /dev/null
+++ b/talks/uparis-ipopup-2021/talk.tex
@@ -0,0 +1,772 @@
+\documentclass[aspectratio=169]{beamer}
+
+\usetheme{default}
+
+\usefonttheme{structurebold}
+\usepackage{helvet}
+\usepackage{multimedia} % movie
+\usecolortheme{seagull} % white on black
+
+\usepackage[utf8]{inputenc}
+\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol}
+\usepackage[absolute,overlay]{textpos}
+\usepackage{tikz}
+\usetikzlibrary{arrows,shapes,trees,shadows,positioning,
decorations.pathreplacing}
+\usepackage{fancyvrb} % for \Verb
+
+\usepackage{ulem}
+
+% Remember the position of every picture.
+\tikzstyle{every picture}+=[remember picture]
+
+\tikzset{onslide/.code args={<#1>#2}{%
+ \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path
+}}
+
+% Colors.
+\definecolor{guixred1}{RGB}{226,0,38} % red P
+\definecolor{guixorange1}{RGB}{243,154,38} % guixorange P
+\definecolor{guixyellow}{RGB}{254,205,27} % guixyellow P
+\definecolor{guixred2}{RGB}{230,68,57} % red S
+\definecolor{guixred3}{RGB}{115,34,27} % dark red
+\definecolor{guixorange2}{RGB}{236,117,40} % guixorange S
+\definecolor{guixtaupe}{RGB}{134,113,127} % guixtaupe S
+\definecolor{guixgrey}{RGB}{91,94,111} % guixgrey S
+\definecolor{guixdarkgrey}{RGB}{46,47,55} % guixdarkgrey S
+\definecolor{guixblue1}{RGB}{38,109,131} % guixblue S
+\definecolor{guixblue2}{RGB}{10,50,80} % guixblue S
+\definecolor{guixgreen1}{RGB}{133,146,66} % guixgreen S
+\definecolor{guixgreen2}{RGB}{157,193,7} % guixgreen S
+
+\setbeamerfont{title}{size=\huge}
+\setbeamerfont{frametitle}{size=\huge}
+\setbeamerfont{normal text}{size=\Large}
+
+% White-on-black color theme.
+\setbeamercolor{structure}{fg=guixorange1,bg=black}
+\setbeamercolor{title}{fg=white,bg=black}
+\setbeamercolor{date}{fg=guixorange1,bg=black}
+\setbeamercolor{frametitle}{fg=white,bg=black}
+\setbeamercolor{titlelike}{fg=white,bg=black}
+\setbeamercolor{normal text}{fg=white,bg=black}
+\setbeamercolor{alerted text}{fg=guixyellow,bg=black}
+\setbeamercolor{section in toc}{fg=white,bg=black}
+\setbeamercolor{section in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsubsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsubsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{frametitle in toc}{fg=white,bg=black}
+\setbeamercolor{local structure}{fg=guixorange1,bg=black}
+
+\newcommand{\highlight}[1]{\alert{\textbf{#1}}}
+\newcommand{\orange}[1]{\textcolor{guixorange1}{\textbf{#1}}}
+\newcommand{\comment}[1]{\textcolor{guixgreen2}{#1}}
+\newcommand{\red}[1]{\textcolor{guixred2}{#1}}
+
+
+\title{Computational reproducibility \\ with GNU Guix: \\
+ \Large{application to multiparametric cytometry}}
+
+\author{Simon Tournier${}^1$ \& Nicolas Vallet${}^2$}
+\date{iPOP-UP, September 9th, 2021}
+\institute{%
+ \texttt{simon.tournier@u-paris.fr}
+ \ \
+ \texttt{nicolas.vallet@inserm.fr}}
+
+\setbeamertemplate{navigation symbols}{} % remove the navigation bar
+
+\AtBeginSection[]{
+ \begin{frame}
+ \frametitle{}
+ \tableofcontents[currentsection]
+ \end{frame}
+}
+
+
+\newcommand{\screenshot}[1]{
+ \begin{frame}[plain]
+ \begin{tikzpicture}[remember picture, overlay]
+ \node [at=(current page.center), inner sep=0pt]
+ {\includegraphics[width=\paperwidth]{#1}};
+ \end{tikzpicture}
+ \end{frame}
+}
+
+
+\begin{document}
+
+
+\begin{frame}[plain, fragile]
+ \vspace{10mm}
+ \titlepage
+
+ \vfill{}
+ ${}^1$Research Eng. Sci. Computing \ \scriptsize{(+little admin-sys)}
+
+ \normalsize
+ ${}^2$PhD student \ \scriptsize{(and MD)}
+
+ \normalsize
+ \hfill{%
+ \begin{minipage}{0.2\paperwidth}
+ \begin{tabular}{c|c}
+ \includegraphics[width=0.1\paperwidth]{images/diderot_u-paris}
+ &
+ \includegraphics[width=0.04\paperwidth]{images/diderot_u-paris_bis}
+ \end{tabular}
+ \end{minipage}
+ }
+\end{frame}
+
+
+\begin{frame}[plain]
+ \begin{center}
+ \begin{tabular}{rcl}
+ \textcolor{guixtaupe}{Science} & \textcolor{guixtaupe}{=} &
\textcolor{guixtaupe}{Transparency}
+ \\
+ \textcolor{guixblue1}{Scientific result} & \textcolor{guixblue1}{=} &
+
\textcolor{guixblue1}{Experiment
+ +
+
\only<1>{{Numerical treatment}}
+
\only<2>{\emph{Numerical treatment}}}
+ \end{tabular}
+ \end{center}
+
+% \vfill{}
+
+ \begin{center}
+ \highlight{Science at the numerical age:}
+ \end{center}
+
+ \begin{tabular}{cll}
+ \orange{1.} & Open Article & HAL, BioArxiv
+ \\
+ \orange{2.} & Open Data & Zenodo
+ \\
+ \orange{3.} & Open Source & GitHub, Software Heritage
+ \\
+ \uncover<2->{\orange{4.}} & \uncover<2->{\fbox{\comment{Computational
env.}}} & \uncover<2->{\alert{?}}
+ \end{tabular}
+
+ \begin{center}
+ {and how to \only<1>{glue}\only<2>{\emph{glue}} all that?}
+ \end{center}
+
+ \vfill{}
+
+ $\left(
+ \begin{tabular}{lcl}
+ reproductibility &=& verification\\
+ replicability &=& validation
+ \end{tabular}
+ \right)$
+
+ \vspace{-0.75cm}
+
+ \begin{flushright}
+ \href{https://scibian.org/up/201609/Software_Heritage.pdf}%
+ {\small{R. Di Cosmo@Scibian2016 \sout{(pdf)}}}\\
+
\href{https://aramis.resinfo.org/wiki/lib/exe/fetch.php?media=pleniaires:aramis_keynote_enjeux-et-defis-recherche-reproductible_konrad_hinsen.pdf}%
+ {\small{K. Hinsen@Aramis2019 (pdf)}}
+ \end{flushright}
+\end{frame}
+
+
+\begin{frame}{Redo (reproduce or replicate) a result?}
+ \begin{tabular}{clclclcl}
+ &&& \orange{audit} && \red{opaque} && \comment{depend?}
+ \\ \hline \\
+ & result &$\longleftarrow$& \orange{paper} &+& \red{data} &+&
\comment{analysis}
+ \\ \\
+ & data &$\longleftarrow$& \orange{protocol} &+& \red{instruments} &+&
\comment{materials} (reagent, etc.)
+ \\
+ \uncover<2->{\orange{$\rhd$}} & analysis &$\longleftarrow$&
\orange{script} &+& \red{data} &+&
+
\only<-3>{\comment{environment}}\uncover<4->{\fbox{\comment{environment}}}
+ % \\ \\ \hline \\
+ % & environment &$\longleftarrow$& \orange{source} &+& \red{builder}
(package) &+& packages
+ % \\
+ % & package &$\longleftarrow$& \orange{source} &+& \red{executable}
&$\Big($+& packages$\Big)$
+ \end{tabular}
+
+ \vfill
+ \begin{center}
+ \begin{minipage}[c]{.8\linewidth}
+ \begin{itemize}
+ \item \orange{audit} is the ``easy'' part
+ \item \red{opaque} is generally the hard part
+ \item<3-> how to evacuate \comment{depend?} from the equations%
+ \uncover<4->{\dots \\ \hfill \dots at least let speak about
\comment{environment}}
+ \end{itemize}
+ \end{minipage}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Concrete scenarii about environment}
+ \begin{itemize}
+ \item Alice used \emph{numerical tools} \texttt{R@4.1.1},
\texttt{FlowCore@2.4} and \texttt{CATALYST@1.16.2}.
+ \item Carole \emph{collaborates} with Alice \dots \\
+ \hfill{but also requires \texttt{R@4.0.4}, \texttt{FlowCore@2.0} for
another project.}
+ \item Charlie upgrades their system then all is broken.
+ \item Bob runs the \emph{same versions} as Alice \dots \\
+ \hfill{but does \emph{not} get the \emph{same outputs}.}
+ \item Dan tries to \emph{redo} the analysis months (years?) later \dots\\
+ \hfill{but hits the \emph{dependencies hell}\footnote{at best :-)}.}
+ \end{itemize}
+ \uncover<2->{
+ \begin{center}
+ \highlight{Solution(s)}
+ \end{center}
+
+ \vspace{-0.6cm}
+
+ \begin{tikzpicture}[decoration=brace]
+ \node[text width=0.6\paperwidth] (box)
+ {
+ \begin{enumerate}
+ \item \textbf{package manager}: \texttt{apt}, \texttt{yum}, etc.
+ \item \textbf{virtual environment}: \texttt{conda},
\texttt{modulefiles}, etc.
+ \item \textbf{container}: Docker, Singularity, etc.
+ \end{enumerate}
+ };
+ \draw [decorate] (box.north east) --node[right=10pt]{\alert{Guix}}
(box.south east);
+ \end{tikzpicture}
+ }
+\end{frame}
+
+
+\begin{frame}[fragile]{Why is it complicated?}
+ \begin{semiverbatim}
+ alice@laptop\$ R -e '1+2'
+ > 1+2
+ [1] 3
+ \end{semiverbatim}
+
+ \vspace{-1cm}
+ \uncover<2->{
+ \begin{center}
+ What is the issue?
+ \orange{R is Open Source}
+ \\
+ \href{https://svn.r-project.org/R/trunk/src/main/main.c}%
+ {https://svn.r-project.org/R/trunk/src/main/\orange{main.c}}
+ \end{center}
+ }
+
+ \vspace{-0.25cm}
+ \uncover<3->{
+ \begin{semiverbatim}
+ alice@laptop\$ file
\only<-8>{/usr/lib/R/bin/exec/R}\only<9->{\red{/usr/lib/R/bin/exec/R}}
+
+ /usr/lib/R/bin/exec/R: \only<3>{executable}\only<4->{\red{executable}},
dynamically \only<3-8>{linked}\only<9->{\comment{linked}}, ...
+ \end{semiverbatim}
+ }
+
+ \uncover<5-8>{
+ Recipe to make an \only<5>{yogurt}\only<6->{\sout{yogurt} executable}:
+ \begin{center}
+ \begin{tabular}{lclcl}
+ Yogurt &$\longleftarrow$& Milk &+& Skyr\only<5-8>{\footnote{Icelandic
strained yogurt}}
+ \uncover<6->{
+ \\
+ \red{executable} && \orange{source} && \only<5-7>{\red{executable}}
+ } \uncover<7->{\\
+ R && \texttt{main.c} && C compiler
+ } \uncover<8->{\\
+ && && \red{executable} $\leftarrow$ \orange{source} ~+~
\red{executable}
+ }
+ \end{tabular}
+ \end{center}
+ }
+
+ \vspace{-2.25cm}
+ \begin{semiverbatim}
+ \uncover<10-11>{
+ alice@laptop\$ ldd \red{/usr/lib/R/bin/exec/R}\only<10>{
+ libblas.so.3 => /usr/lib/x86_64-linux-gnu/libblas.so.3
+ libR.so => /usr/lib/libR.so
+ libgfortran.so.5 => /usr/lib/x86_64-linux-gnu/libgfortran.so.5
+ libquadmath.so.0 =>
/usr/lib/x86_64-linux-gnu/libquadmath.so.0}\only<11->{
+ libblas.so.3 => \red{/usr/lib/x86_64-linux-gnu/libblas.so.3}
+ libR.so => \red{/usr/lib/libR.so}
+ libgfortran.so.5 => \red{/usr/lib/x86_64-linux-gnu/libgfortran.so.5}
+ libquadmath.so.0 => \red{/usr/lib/x86_64-linux-gnu/libquadmath.so.0}}
+ ...}
+ \end{semiverbatim}
+
+ \only<12->{
+ \vspace{-1.25cm}
+ \begin{flushright}
+
\href{https://webcast.in2p3.fr/video/les-enjeux-et-defis-de-la-recherche-reproductible}%
+ {\small{K. Hinsen@Aramis2019 (video)}}
+
+
\href{https://hpc.guix.info/blog/2020/01/reproducible-computations-with-guix/}%
+ {Blog: Reproducible computations with Guix (link)}
+ \end{flushright}
+ }
+\end{frame}
+
+
+\begin{frame}{Is it really so complicated?}
+ \begin{itemize}
+ \item Wait! \highlight{Package managers}
+ (\texttt{apt}, \texttt{yum}, \texttt{conda}, \texttt{brew}, etc.)
+ do the \emph{job for us}.
+ \item Yes, but\dots \ \uncover<7->{e.g., \highlight{Conda is not enough}}
+ \begin{center}
+ \begin{tabular}{cclclcl}
+ \uncover<2->{
+ Yogurt &$\longleftarrow$& Milk &+& Skyr &+& Utensils
+ \\
+ \red{executable} && \orange{source} && \red{executable} &&
+
\comment{links}(executable too)
+ \\
+ R && \texttt{main.c} && C compiler && Deps. (libblas, etc.)
+ } \uncover<3->{
+ \\ \\
+ \hline
+ \\
+ R@4.1.1 &$\longleftarrow$& source\orange{@4.1.1} &+&
executable\red{@A} &+& links\comment{@C}
+ \\
+ \uncover<5->{$\left|\right| ?$}
+ \\
+ \uncover<4->{R@4.1.1 &$\longleftarrow$& source\orange{@4.1.1} &+&
executable\red{@B} &+& links\comment{@D}}
+ }
+ \end{tabular}
+ \end{center}
+ \uncover<6->{
+ \item Too many combinations to have the same environment on different
+ machines
+ \highlight{when something is going wrong,
+ it is hard to say from where it comes}
+ \begin{center}
+ is it the environment? is it the analysis? something else?
+ \end{center}
+ }
+ \end{itemize}
+ \uncover<7->{
+ \highlight{Conclusion}: Tools allowing to \emph{capture the
\comment{environment}} (= \orange{@4.1.1}, \red{@A}, \comment{@C})
+ }
+
+\end{frame}
+
+
+\begin{frame}[fragile]
+ \begin{itemize}
+ \item<1-> Alice says she uses R@4.1.1
+ \begin{semiverbatim}
+ alice@laptop\$ install r\orange{@4.1.1} \uncover<5->{\comment{#
gcc-toolchain}\red{@7.5.0}}
+ alice@laptop\$ R --version
+ R version \orange{4.1.1} (2021-08-10) -- "Kick Things"
+ \end{semiverbatim}
+ \item<2-> Bob runs this same version @4.1.1
+ \begin{semiverbatim}
+ bob@cluster\$ install r\orange{@4.1.1} \uncover<5->{\comment{#
gcc-toolchain}\red{@9.4.0}}
+ bob@cluster\$ R --version
+ R version \orange{4.1.1} (2021-08-10) -- "Kick Things"
+ \end{semiverbatim}
+ \item<3-> but Bob does not get the same result (e.g., precision,
performance, other)
+ \item<4-> \highlight{why? what is different?} both uses R\orange{@4.1.1}
+ \uncover<5->{
+ \begin{semiverbatim}
+ \orange{$\rhd$} \$ diff with-\{\red{7.5.0},\red{9.4.0}\}/lib/R/bin/exec/R
+
+ \quad \ Binary files differ
+ \end{semiverbatim}
+ \orange{$\rhd$} \ some \comment{links} (\texttt{libquadmath.so}) are at
different versions
+ }
+ \end{itemize}
+ \uncover<6->{
+ \highlight{Conclusion}: Version \orange{@4.1.1} of \orange{source} is
+ \emph{not enough} for reproducing
+
+ \begin{center}
+ Reproducibility requires to capture the \comment{environment}
+ \end{center}
+}
+\end{frame}
+
+
+\begin{frame}{Concretely, just R requires a lot!}
+ %%% guix graph r-minimal | dot -Tpng -Gsize=50,25\! -Gratio=fill
-Nstyle=filled > images/r-minimal.png
+ \includegraphics[width=\textwidth]{images/r-minimal}
+\end{frame}
+
+
+\begin{frame}{Usual (soon?) published result}
+ \begin{tabular}{cc}
+ \begin{minipage}{0.7\textwidth}
+ \includegraphics[width=\textwidth]{images/figures}
+ \end{minipage}
+ &
+ \begin{minipage}{0.3\textwidth}
+ \begin{itemize}
+ \item Cytometry CyTOF: 43 parameters
+ \item zillions of events (cells)
+ \item FlowJo (cleaning)
+ \item R plus 19 packages from BioConductor
+ \end{itemize}
+ \end{minipage}
+ \end{tabular}
+\end{frame}
+
+
+\begin{frame}{How to redo this (soon?) published result}
+ \begin{center}
+ \highlight{Assuming nothing is lost and all is transparent}
+ \end{center}
+ \begin{tabular}{lclclcl}
+ && \orange{audit} && \red{opaque} && \comment{depend?}
+ \\ \hline \\
+ result &$\longleftarrow$& \orange{paper} &+& \red{data} &+&
\comment{analysis}
+ \\ \\
+ data &$\longleftarrow$& \orange{protocol} &+& \red{instruments} &+&
\comment{materials}
+ \\
+ analysis &$\longleftarrow$& \orange{script} &+& \red{data} &+&
\fbox{\comment{environment}}
+ \\ \\ \hline
+
+ \end{tabular}
+ \begin{center}
+ \comment{environment} = collection of packages
+ \end{center}
+ \begin{tabular}{lclclcl}
+ % environment &$\longleftarrow$& \orange{source} &+& \red{builder}
(package) &+& packages
+ % \\
+ package &$\longleftarrow$& \orange{source} &+& \red{executable} &$\Big($+&
others packages$\Big)$
+ \end{tabular}
+
+ \uncover<2->{
+ Alice says she uses \texttt{R@4.1.1} with \texttt{CATALYST@1.16.2} from
+ Bioconductor means:}
+ \uncover<3->{
+ \begin{itemize}
+ \item \texttt{R}: 40 input packages and 40 build packages (but 408
+ closure packages)
+ \item \texttt{CATALYST}: 27 input packages and 48 build packages
+ \\ \hfill (but 907 closure packages)
+ \end{itemize}
+ }
+\end{frame}
+
+
+\begin{frame}{Redo data is complicated}
+ \vspace{-1.35cm}
+ \begin{center}
+ \includegraphics[width=\textwidth]{images/pipe}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{Redo analysis: use Guix!}
+
+ \begin{itemize}
+ \item<1-> Alice lists the packages with the file
+ \orange{\texttt{requirements.scm}}
+ \only<1>{
+ \begin{semiverbatim}
+(specifications->manifest
+
+\quad (list
+
+\quad\quad "r"
+
+\quad\quad "r-catalyst"
+
+\quad\quad "r-flowcore"))
+ \end{semiverbatim}
+
+ }
+ \item<2-> Alice describe her current state
+ \begin{semiverbatim}
+ alice@laptop\$ guix describe
+
+ Generation 65 Aug 16 2021 20:42:44 (current)
+
+ \quad guix \comment{a9eb969}
+
+\quad\quad repository URL: https://git.savannah.gnu.org/git/guix.git
+
+\quad\quad branch: master
+
+\quad\quad commit: a9eb969bb63fc421e5cb2a699ef1f1e7c5cbd1b4
+
+ alice@laptop\$ guix describe -f channels > \comment{alice-state.scm}
+ \end{semiverbatim}
+
+ \item<3-> Bob recreates the \emph{exact} same environment as Alice
+ \begin{semiverbatim}
+ bob@cluster\$ guix time-machine -C \comment{alice-state.scm} \\
+
+\quad\quad\quad\quad\quad\quad\quad -- package -m \orange{requirements.scm}
+ \end{semiverbatim}
+ \end{itemize}
+
+ \uncover<4->{
+ \highlight{Conclusion}: All \red{executable} composing the
+ \comment{environment} are captured by the state.
+ }
+\end{frame}
+
+
+\begin{frame}{Generate containers (Docker, Singularity)}
+ \begin{itemize}
+ \item<1-> \texttt{guix time-machine} allows to rebuild the same
+ \comment{environment} from \orange{source}
+ \item<2-> Bob runs analysis on another infrastructure
+ \begin{semiverbatim}
+ bob@cluster\$ guix time-machine -C \comment{alice-state.scm} \
+
+ \quad\quad\quad\quad\quad\quad\quad
+ -- pack -f docker -m \orange{requirements.txt}
+
+ bob@IFB\$ docker load < \red{image}.tar.gz
+
+ bob@IFB\$ docker run ...
+ \end{semiverbatim}
+\end{itemize}
+
+\uncover<3->{
+\begin{center}
+ \highlight{This Docker image disappears}
+\end{center}
+}
+\begin{itemize}
+\item<4-> Later, Dan rebuilds this same Docker image
+ \begin{semiverbatim}
+ dan@laptop\$ guix time-machine -C \comment{alice-state.scm} \
+
+ \quad\quad\quad\quad\quad\quad\quad
+ -- pack -f docker -m \orange{requirements.txt}
+ \end{semiverbatim}
+ \item<5-> Dan runs on another infrastructure using the exact same tools as
Alice
+ \begin{semiverbatim}
+ dan@AWS\$ docker load < \red{image}.tar.gz
+
+ dabn@AWS\$ docker run ...
+ \end{semiverbatim}
+ \end{itemize}
+ \uncover<6->{
+ $\Big($Lack real examples to ensure this scenario fully works ;-$\Big)$
+ \begin{flushright}
+
\href{https://hpc.guix.info/static/videos/atelier-reproductibilit\%C3\%A9-2021/arnaud-legrand.webm}{%
+ A. Legrand@GuixHPC2021 (video)}%
+
\href{https://hpc.guix.info/static/doc/atelier-reproductibilit\%C3\%A9-2021/arnaud-legrand-debian-docker.pdf}{%
+ (pdf)}
+ \end{flushright}
+ }
+\end{frame}
+
+
+\begin{frame}{Long-term with Software Heritage}
+ \begin{center}
+ \highlight{What happens if the package on GitHub disappears?}
+ \end{center}
+
+ \begin{semiverbatim}
+dan@workstation\$ guix install hi
+
+\red{fatal: could not read Username for 'https://github.com': No such device
or address}
+
+Trying content-addressed mirror at berlin.guix.gnu.org...
+
+Trying to download from Software Heritage...
+
+\orange{SWH: found revision} e1eefd033b8a2c4c81babc6fde08ebb116c6abb8
+
+at 'https://archive.softwareheritage.org/api/1/directory/c3e538ed2de412.../'
+\end{semiverbatim}
+
+The \orange{source} of \texttt{hi} were at
+\href{https://github.com/zimoun/hello-example}%
+{\sout{https://github.com/zimoun/hello-example}}.
+
+$\Big($See Software Heritage ambassador
\href{https://cupnet.net/about/}{Pierre Poulain} :-$\Big)$
+
+\begin{flushright}
+ $\Big($
+ Package defined
+
\href{https://github.com/zimoun/channel-example/blob/main/hello.scm}{\emph{here}}.
+ $\Big)$
+\end{flushright}
+
+\end{frame}
+
+
+\begin{frame}{Guix in a nutshell}
+
+ \begin{center}
+ \highlight{Tools helping in managing complexity}
+ \end{center}
+ \vfill{}
+
+ \begin{enumerate}
+ \item package manager: functional and transactional paradigm
+ \item environment manager: switch between projects
+ \item generate container: Docker, Singularity
+ \item provide tools (Scheme library) to extend for user specificities
+ \end{enumerate}
+
+ \vfill{}
+ \begin{center}
+ \highlight{(fine) Control over the dependency chain}
+ \end{center}
+
+ \vfill{}
+
+ \begin{tabular}{cll}
+ \alert{$\star\star$} & Binary reproductibility &
+ \scriptsize{(at least to track it)}\normalsize \\
+ \alert{$\star\star$} & \emph{Bootstrap} &
+ \scriptsize{(new yogurt $\leftarrow$ milk + old yogurt)}\normalsize
+ \end{tabular}
+\end{frame}
+
+
+\begin{frame}[fragile]
+ \begin{center}
+ Similar to other package manager
+ \end{center}
+
+ \begin{semiverbatim}
+ \small{
+ \comment{\# Alice}
+ guix \alert{install} foo@1.2 bar@3.4 baz@5.6 \comment{\# -m
requirements.scm}
+ guix \alert{describe} -f channels > \red{alice-conf.scm}
+
+ \comment{\# Carole}
+ guix install \alert{--profile}=./with-alice foo@1.2 bar@3.4 baz@5.6
+ guix install foo@7.8 bar@9.0
+
+ \comment{\# Charlie}
+ guix package \alert{--roll-back} \comment{\#
generations}
+
+ \comment{\# Bob}
+ guix \alert{pull --channels}=\red{alice-conf.scm}
+ guix \alert{pack} -f docker ... \comment{# -f
squashfs}
+
+ \comment{\# Dan}
+ guix \alert{time-machine} -C \red{alice-conf.scm} -- install foo@1.2
bar@3.4 baz@5.6
+ }
+ \end{semiverbatim}
+\end{frame}
+
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\begin{frame}[plain]{The \emph{ideal} target}
+ \vspace{-0.9cm}
+ \includegraphics[width=\textwidth]{images/big-picture-3}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+
+\begin{frame}{Clusters using Guix}
+ \large{
+ \begin{tabular}{lrrl}
+ \highlight{GriCAD}&\highlight{Grenoble}:& 72-node &(1000+ cores)\\
+ \highlight{CCIPL}&\highlight{Nantes}:& 230-node &(4000+ cores)\\
+ \highlight{PlaFRIM Inria}&\highlight{Bordeaux}:& 120-node &(3000+
cores)\\
+ \highlight{Max Delbrück Center}&\highlight{Berlin}:& 250-node &+
workstations \\
+ \highlight{UMC Utrecht}&:& 68-node &(1,000+ cores)\\
+ \quad (Univ. Paris ?)&:& ?9-node? &+ 2 workstations
+ \end{tabular}
+ }
+ \begin{center}
+ \includegraphics[height=0.3\paperheight]{images/guixhpc-logo-transparent}
+
+ \url{https://hpc.guix.info}
+ \end{center}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[plain]
+ \vfill{
+ \begin{minipage}[c]{1.0\linewidth}
+ \highlight{\texttt{simon.tournier@u-paris.fr}}
+ \hfill
+ \highlight{\texttt{nicolas.vallet@inserm.fr}}
+ \end{minipage}
+ \begin{center}
+ \url{https://hpc.guix.info}
+ \\
+ \includegraphics[width=0.3\textwidth]{images/Guix-white}
+ \end{center}
+ \texttt{help-guix@gnu.org}\hfill{\alert{\url{https://guix.gnu.org}}}
+ }
+\end{frame}
+
+\begin{frame}{}
+
+ \begin{textblock}{12}(2, 8)
+ \tiny{
+ Copyright \copyright{} 2021 Simon Tournier
+ \texttt{simon.tournier@u-paris.fr}.\\
+ Copyright \copyright{} 2021 Nicolas Vallet
\texttt{nicolas.vallet@inserm.fr}.\\[3.0mm]
+ GNU Guix logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics}
+
+ GNU~Guix Reference Card under GFDL~1.3+.
+
+ Copyright of other images included in this document is held by
+ their respective owners; especially from Ludovic Courtès.
+ \\[3.0mm]
+ This work is licensed under the \alert{Creative Commons
+ Attribution-Share Alike 3.0} License. To view a copy of this
+ license, visit
+ \url{http://creativecommons.org/licenses/by-sa/3.0/} or send a
+ letter to Creative Commons, 171 Second Street, Suite 300, San
+ Francisco, California, 94105, USA.
+ \\[2.0mm]
+ At your option, you may instead copy, distribute and/or modify
+ this document under the terms of the \alert{GNU Free Documentation
+ License, Version 1.3 or any later version} published by the Free
+ Software Foundation; with no Invariant Sections, no Front-Cover
+ Texts, and no Back-Cover Texts. A copy of the license is
+ available at \url{https://www.gnu.org/licenses/gfdl.html}.
+ \\[2.0mm]
+ % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL.
+ The source of this document is available from
+ \url{https://git.sv.gnu.org/cgit/guix/maintenance.git}.
+ \url{TODO}.
+ }
+ \end{textblock}
+\end{frame}
+
+
+\begin{frame}{Container is a smoothie}
+
+ \begin{itemize}
+ \item Container = a binary box that stores (captures) all the executables
+ \item How to generate one?\\
+ \hfill For instance, \texttt{Dockerfile} based on some Linux distribution
+ \item What happens if this binary container is lost? Can I rebuild it?\\
+ \hfill The answer is no, you cannot!
+
+ Well, require a lot of hard and low-level work.
+ \begin{flushright}
+
\href{https://hpc.guix.info/static/videos/atelier-reproductibilit\%C3\%A9-2021/arnaud-legrand.webm}{%
+ A. Legrand@GuixHPC2021 (video)}%
+
\href{https://hpc.guix.info/static/doc/atelier-reproductibilit\%C3\%A9-2021/arnaud-legrand-debian-docker.pdf}{%
+ (pdf)}
+ \end{flushright}
+ \end{itemize}
+
+ \bigskip
+
+ \highlight{Conclusion 1}: Container is \highlight{useful} to move binaries
from one place to another
+
+ \medskip
+
+ \highlight{Conclusion 2}: Container is \highlight{not the solution} for the
Reproducibility Crisis\\
+ \hfill (= run the same analysis on different machines at different moments)
+
+\end{frame}
+
+\end{document}
+
+% Local Variables:
+% coding: utf-8
+% comment-start: "%"
+% comment-end: ""
+% ispell-local-dictionary: "french"
+% End:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: talks: Add iPOP-UP 2021 seminar.,
Leo Famulari <=