diff --git a/README.md b/README.md index ce44ca2..16bdece 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,21 @@ This repository contains (better: will contain) teaching material to teach for all tailored for HPC systems. -## Getting started +## Getting started / Onboarding -If you want to participate in the development: Just notify us (issue) and we will add your github account. +If you want to participate in the development: Just notify us (issue) and we will add your github account. Alternatively, you may fork the repo and create PRs from there. -For every issue: +Workflow for pull requests: + +- create or take an issue to work on (you may assign others or no one). Issues ought to be as specific as possible. We may break "big issues" into smaller ones +- create a branch `"_"`. Only in rare case (closely related issues) bundle the work on issues into one branch. The parent branch should always be "main" +- commit your work to branch +- push to origin (your own fork of the snakemake-hpc-teaching-material repository) +- create a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) +- assign arbitrary reviewer (or wait until someone takes on this pull reqeust) +- (s.o. else) perform review (switch to branch and try; check the quality) +- merge and delete source branch -- create a branch `"_"` -- do a pull (request) ## Progress diff --git a/images/logos/UNI_Bonn_Logo_Standard+HPCA.pdf b/images/logos/UNI_Bonn_Logo_Standard+HPCA.pdf new file mode 100644 index 0000000..180a32f Binary files /dev/null and b/images/logos/UNI_Bonn_Logo_Standard+HPCA.pdf differ diff --git a/images/logos/UNI_Bonn_Logo_Standard_RZ.pdf b/images/logos/UNI_Bonn_Logo_Standard_RZ.pdf new file mode 100644 index 0000000..0b6350e Binary files /dev/null and b/images/logos/UNI_Bonn_Logo_Standard_RZ.pdf differ diff --git a/slides/Snakemake_HPC_Creators.tex b/slides/Snakemake_HPC_Creators.tex index d2856d0..c6592b9 100644 --- a/slides/Snakemake_HPC_Creators.tex +++ b/slides/Snakemake_HPC_Creators.tex @@ -7,384 +7,9 @@ % to typeset only a few slide sets, set them here during development %\includeonly{Why_Workflows} -\usepackage{etoolbox} -%\setbeamertemplate{mini frames}[box] -\usepackage{babel} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{amsfonts,amsmath,amssymb} -\usepackage{textgreek} -\usepackage{wrapfig} -\usepackage[load-configurations=binary,binary-units=true]{siunitx} -\usepackage[normalem]{ulem} % for strikethrough with \sout +\input{common/preamble} -\usepackage{color,colortbl} -\usepackage{upquote} - -\definecolor{pblue}{RGB}{45,106,148} -\definecolor{pdarkblue}{RGB}{35,71,100} -\definecolor{plightblue}{RGB}{90,159,212} -\definecolor{pyellow}{RGB}{255,212,59} -\definecolor{pdarkyellow}{RGB}{255,188,41} -\definecolor{orange}{RGB}{255,165,0} -\definecolor{plightyellow}{RGB}{255,232,115} -\definecolor{pdarkgrey}{RGB}{100,100,100} -\definecolor{pgrey}{RGB}{153,153,153} -\definecolor{plightgrey}{RGB}{233,233,233} -\definecolor{plightgrey2}{RGB}{247,247,247} -\definecolor{pnavy}{RGB}{0,0,170} -\definecolor{BrickRed}{RGB}{150,22,11} -\definecolor{BlueViolet}{RGB}{138, 43, 226} -\definecolor{PineGreen}{RGB}{0, 51, 0} -\definecolor{light-gray}{gray}{0.95} - -\definecolor{UniRot}{RGB}{193,0,42} -\definecolor{UniDunkelGrau}{RGB}{99,99,99} -\definecolor{UniHellGrau}{RGB}{172,172,172} - -\definecolor{UrlColor}{rgb}{0,0.08,0.45} -\definecolor{links}{rgb}{0,0,0} - -\usetheme{CambridgeUS} % Pittsburgh, CambridgeUS -\usecolortheme{beaver} %wolverine | crane | beaver | seahorse -\useinnertheme{rounded} -\useoutertheme{default} -\usefonttheme{default} -%\setbeamercovered{transparent} -\setbeamertemplate{footline}[frame number] -\setbeamersize{text margin left=0.5cm, text margin right=0.5cm} - -\setbeamercolor{structure}{fg=UniRot}% to modify immediately all palettes -\setbeamercolor{title}{fg=UniRot} -\setbeamercolor{title in head/foot}{fg=UniRot} - -\setbeamercolor{block title}{bg=UniRot!20,fg=darkred} -\setbeamercolor{block body}{fg=black, bg=plightgrey2} - -% \setbeamercolor{block title}{fg=white,bg=orange} -\setbeamercolor{block title alerted}{fg=white,bg=UniRot} -\setbeamercolor{block title example}{fg=white,bg=PineGreen!80} - - -% enables two line cols in tabular envs -\newcommand{\specialcell}[2][c]{% - \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}} -\usepackage{subfig} -\usepackage{tikz} -\usetikzlibrary{arrows,shapes,backgrounds,positioning,shadows,decorations,trees,decorations.pathreplacing} -\usepackage{smartdiagram} - - -\addtobeamertemplate{footline}{}{% -\begin{tikzpicture}[remember picture,overlay] -\node[anchor=south west,yshift=2pt] at (current page.south west) {\includegraphics[height=0.8cm]{../images/logos/zdv_logo.png}}; -\end{tikzpicture}} - -\usepackage[tikz]{bclogo} -\newenvironment{task}[1][Task]{\bclogo[arrondi=0.1,logo=\bcoutil]{#1}}{\endbclogo} -\newenvironment{docs}[1][Documentation]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} -\newenvironment{hint}[1][Hint]{\bclogo[arrondi=0.1,logo=\bcinfo]{#1}}{\endbclogo} -\newenvironment{warning}[1][Warning]{\bclogo[arrondi=0.1,logo=\bcattention]{#1}}{\endbclogo} -% ``d/Definition'' is already defined ;-) -\newenvironment{explanation}[1][Definition]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} -\newenvironment{question}[1][Question]{\bclogo[arrondi=0.1,logo=\bcquestion]{#1}}{\endbclogo} - - -%%%%%%%%%%%%%%%%% -%% PLEASE NOTE %% -%%%%%%%%%%%%%%%%% -% frames containing ``Hand Out'' or ``Interlude'' should be started: - -% \setcounter{preframe_handson}{\value{handson}} -% \begin{frame}[fragile] -% \setcounter{handson}{\value{preframe_handson}} -% \frametitle{\HandsOn{Using \texttt{find}}} - -% or - -% \setcounter{preframe_interlude}{\value{interlude}} -% \begin{frame}[fragile] -% \setcounter{interlude}{\value{preframe_interlude}} -% \frametitle{Interlude -- Parameter Extension} - -% respectively. - -\newcounter{handson} -\setcounter{handson}{1} -\newcounter{preframe_handson} -\setcounter{preframe_handson}{1} -\newcommand{\HandsOn}[1]{Hands On \Roman{handson} -- #1 \addtocounter{handson}{1}} -%\newcommand{\HandsOn}[1]{Hands On -- #1} - -%TODO: Merge ``HandsOn'' && ``Excercise'' -\newcounter{exercise} -\setcounter{exercise}{1} -% \newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} - -% Bugfix of the Exercise command: avoid the annoying counter -\newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} - -\newcounter{interlude} -\setcounter{interlude}{1} -\newcounter{preframe_interlude} -\setcounter{preframe_interlude}{1} - -%\newcommand{\Interlude}[1]{Interlude \Roman{interlude} -- #1 \addtocounter{interlude}{1}} - -% Bugfix of the Interlude command: avoid the annoying counter! -\newcommand{\Interlude}[1]{Interlude -- #1} - -\usepackage{marvosym} -\usepackage{multicol} - -\usepackage{hhline} - -\usepackage{times} - -% will decrease the font size for one frame -\newcommand\Fontvi{\fontsize{6}{7.2}\selectfont} -% -\usepackage{dirtree,float} % for directory tree listings -\usepackage[nodisplayskipstretch]{setspace} - - -\usepackage{verbatim} -\usepackage{listings} - -\newcommand{\altverb}[2][{}]{\colorbox{plightgrey}{\lstinline[language={#1}]{#2}}} - - -\lstloadlanguages{Python,bash,C++} -\lstset{showspaces=false, -basicstyle=\small, -showstringspaces=false} - -\lstdefinestyle{tree}{ - literate= - {├}{{smash{raisebox{-1ex}{rule{1pt}{baselineskip}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 - {─}{{raisebox{0.5ex}{rule{1.5ex}{1pt}}}}1 - {└}{{smash{raisebox{0.5ex}{rule{1pt}{dimexprbaselineskip-1.5ex}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 - } - -%default python listings: -\lstdefinestyle{Python} -{ - language=Python, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, - moredelim=**[is][\bfseries\color{red}]{@}{@}, - literate={\\@}{{\makeatletter @ \makeatother}}1 -} - -\lstdefinestyle{R} -{ - language=R, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, -} - -%default python listings: -\lstdefinestyle{C++} -{ - language=C++, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, -} - -\newcommand{\CC}{C\nolinebreak\hspace{-.05em}\raisebox{1ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{1ex}{\tiny\bf +}} - -%default shell listings: -\lstdefinestyle{Shell} -{ - language=Bash, - basicstyle=\ttfamily\small, - showstringspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle=\color{black}, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}}, - moredelim=**[is][\bfseries\color{red}]{@}{@}, - literate={\\@}{{\makeatletter @ \makeatother}}1 -} - -%default plain listings (e.g. for config files):https://www.google.com/search?client=firefox-b-e&q=conrad -\lstdefinestyle{Plain} -{ - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - language=Bash, - basicstyle=\ttfamily\small, - showstringspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{black}, - keywordstyle=\color{black}, - commentstyle=\color{blue}\bfseries, - identifierstyle=\color{black}, - breaklines=true, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} -} - -\lstdefinelanguage{XML} -{ - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{black}, - keywordstyle=\color{black}, - commentstyle=\color{blue}\bfseries, - identifierstyle=\color{black}, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} - morestring=[b]", - morestring=[s]{>}{<}, - morecomment=[s]{}, - morekeywords={xmlns,version,type}% list your attributes here -} - -\newcommand{\bibtex}{\textsc{Bib}\TeX} - -%%% https://tex.stackexchange.com/questions/99316/symbol-for-external-links -\newcommand{\LinkSymbol}{% - \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{% - \begin{scope}[x=1ex, y=1ex] - \clip (-0.1,-0.1) - --++ (-0, 1.2) - --++ (0.6, 0) - --++ (0, -0.6) - --++ (0.6, 0) - --++ (0, -1); - \path[draw, - line width = 0.5, - rounded corners=0.5] - (0,0) rectangle (1,1); - \end{scope} - \path[draw, line width = 0.5] (0.5, 0.5) - -- (1, 1); - \path[draw, line width = 0.5] (0.6, 1) - -- (1, 1) -- (1, 0.6); - } -} -\newcommand{\lhref}[2]{\href{#1}{#2\,\LinkSymbol}} - -%%%% shortcuts for uniform appearance of common strings %%%% -\newcommand{\slurm}{\textsc{slurm}~} -\makeatletter -\newcommand{\rmnum}[1]{\romannumeral #1} -\newcommand{\Rmnum}[1]{\expandafter\@slowromancap\romannumeral #1@} -\makeatother -\usepackage{xspace} -\newcommand{\mogon}{\textsc{mogon}\xspace} -\newcommand{\mogonI}{\textsc{mogon}\,\Rmnum{1}\xspace} -\newcommand{\mogonII}{\textsc{mogon}\,\Rmnum{2}\xspace} - -% this package provides the option to read parameters from a configuration file -\usepackage{readarray} - -\readdef{config/config.dat}{\data} -\readarray\data\MyDat[-,3] -\newcommand\configparam[1]{\csname DATA#1\endcsname} -%\MyDatROWS{} rows of data read. - -\newcounter{datacount} -\setcounter{datacount}{0}% -\whiledo{\value{datacount} < \MyDatROWS}{% - \stepcounter{datacount}% - \expandafter\xdef\csname DATA\MyDat[\arabic{datacount},1]\endcsname{% - \MyDat[\arabic{datacount},3]}% -} - - - -%\newcommand{\pathtoexercise}[1]{\path{/lustre/project/m2_jgu-ngstraing/workflows/#1}} -%\newcommand{\pathtoexercise}[1]{\path{ \DTLfetch{data}{thekey}{#1}{thevalue} }} -%\newcommand{\pathtoclozure}[1]{\path{/lustre/project/hpckurs/bash-course/cloze/#1}} -%\newcommand{\pathtosolution}[1]{\path{/lustre/project/hpckurs/bash-course/solutions/#1}} - -\setcounter{tocdepth}{1} - -% this allows turning of footlines for particular slides -\setbeamertemplate{footline}[frame number] -% to use it, perform: - -% \begin{frame} -% normal frame -% \end{frame} -% -% \begingroup -% \setbeamertemplate{footline}{} -% \begin{frame} -% without footline -% \end{frame} -% \endgroup - -%--------------------% -% Meta-Info -%--------------------% - - - -\title[Introduction to Workflow Programming]{HPC-conformant Scientific Workflow Programming with Snakemake} -%TODO: What should the subtitle be like? Should there be an Edition? How to keep track? -\subtitle{Workflow Course - Edition 3} -\author[Snakemake Teaching Alliance]{The "Snakemake Teaching Alliance"} -% TODO: How do we insert a date, which is up to date? Should we insert one, here? -\date{September 2023} - -\hypersetup{colorlinks,linkcolor=,urlcolor=links} - -\graphicspath{{../images/}{../logos}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -392,22 +17,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Passe captions an -\setbeamertemplate{caption}{\insertcaption} -% \setbeamerfont{caption}{size=\scriptsize} -\setlength\abovecaptionskip{-2.5pt} -\setlength\belowcaptionskip{0pt} - - - -% For every picture that defines or uses external nodes, you'll have to -% apply the 'remember picture' style. To avoid some typing, we'll apply -% the style to all pictures. -\tikzstyle{every picture}+=[remember picture] -\tikzstyle{na} = [baseline=-.5ex] - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame}[plain] % plain erzeugt Titelseite ohne Kopf- und Fußzeile +\begin{frame}[plain] % plain creates a title page without header or footer \titlepage \end{frame} diff --git a/slides/Snakemake_HPC_Users.tex b/slides/Snakemake_HPC_Users.tex index fbd5e96..f83d624 100644 --- a/slides/Snakemake_HPC_Users.tex +++ b/slides/Snakemake_HPC_Users.tex @@ -7,383 +7,7 @@ % to typeset only a few slide sets, set them here during development %\includeonly{Why_Workflows} -\usepackage{etoolbox} -%\setbeamertemplate{mini frames}[box] -\usepackage{babel} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{amsfonts,amsmath,amssymb} -\usepackage{textgreek} -\usepackage{wrapfig} - -\usepackage[load-configurations=binary,binary-units=true]{siunitx} -\usepackage[normalem]{ulem} % for strikethrough with \sout - -\usepackage{color,colortbl} -\usepackage{upquote} - -\definecolor{pblue}{RGB}{45,106,148} -\definecolor{pdarkblue}{RGB}{35,71,100} -\definecolor{plightblue}{RGB}{90,159,212} -\definecolor{pyellow}{RGB}{255,212,59} -\definecolor{pdarkyellow}{RGB}{255,188,41} -\definecolor{orange}{RGB}{255,165,0} -\definecolor{plightyellow}{RGB}{255,232,115} -\definecolor{pdarkgrey}{RGB}{100,100,100} -\definecolor{pgrey}{RGB}{153,153,153} -\definecolor{plightgrey}{RGB}{233,233,233} -\definecolor{plightgrey2}{RGB}{247,247,247} -\definecolor{pnavy}{RGB}{0,0,170} -\definecolor{BrickRed}{RGB}{150,22,11} -\definecolor{BlueViolet}{RGB}{138, 43, 226} -\definecolor{PineGreen}{RGB}{0, 51, 0} -\definecolor{light-gray}{gray}{0.95} - -\definecolor{UniRot}{RGB}{193,0,42} -\definecolor{UniDunkelGrau}{RGB}{99,99,99} -\definecolor{UniHellGrau}{RGB}{172,172,172} - -\definecolor{UrlColor}{rgb}{0,0.08,0.45} -\definecolor{links}{rgb}{0,0,0} - -\usetheme{CambridgeUS} % Pittsburgh, CambridgeUS -\usecolortheme{beaver} %wolverine | crane | beaver | seahorse -\useinnertheme{rounded} -\useoutertheme{default} -\usefonttheme{default} -%\setbeamercovered{transparent} -\setbeamertemplate{footline}[frame number] -\setbeamersize{text margin left=0.5cm, text margin right=0.5cm} - -\setbeamercolor{structure}{fg=UniRot}% to modify immediately all palettes -\setbeamercolor{title}{fg=UniRot} -\setbeamercolor{title in head/foot}{fg=UniRot} - -\setbeamercolor{block title}{bg=UniRot!20,fg=darkred} -\setbeamercolor{block body}{fg=black, bg=plightgrey2} - -% \setbeamercolor{block title}{fg=white,bg=orange} -\setbeamercolor{block title alerted}{fg=white,bg=UniRot} -\setbeamercolor{block title example}{fg=white,bg=PineGreen!80} - - -% enables two line cols in tabular envs -\newcommand{\specialcell}[2][c]{% - \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}} -\usepackage{subfig} -\usepackage{tikz} -\usetikzlibrary{arrows,shapes,backgrounds,positioning,shadows,decorations,trees,decorations.pathreplacing} -\usepackage{smartdiagram} - - -\addtobeamertemplate{footline}{}{% -\begin{tikzpicture}[remember picture,overlay] -\node[anchor=south west,yshift=2pt] at (current page.south west) {\includegraphics[height=0.8cm]{../images/logos/zdv_logo.png}}; -\end{tikzpicture}} - -\usepackage[tikz]{bclogo} -\newenvironment{task}[1][Task]{\bclogo[arrondi=0.1,logo=\bcoutil]{#1}}{\endbclogo} -\newenvironment{docs}[1][Documentation]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} -\newenvironment{hint}[1][Hint]{\bclogo[arrondi=0.1,logo=\bcinfo]{#1}}{\endbclogo} -\newenvironment{warning}[1][Warning]{\bclogo[arrondi=0.1,logo=\bcattention]{#1}}{\endbclogo} -% ``d/Definition'' is already defined ;-) -\newenvironment{explanation}[1][Definition]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} -\newenvironment{question}[1][Question]{\bclogo[arrondi=0.1,logo=\bcquestion]{#1}}{\endbclogo} - - -%%%%%%%%%%%%%%%%% -%% PLEASE NOTE %% -%%%%%%%%%%%%%%%%% -% frames containing ``Hand Out'' or ``Interlude'' should be started: - -% \setcounter{preframe_handson}{\value{handson}} -% \begin{frame}[fragile] -% \setcounter{handson}{\value{preframe_handson}} -% \frametitle{\HandsOn{Using \texttt{find}}} - -% or - -% \setcounter{preframe_interlude}{\value{interlude}} -% \begin{frame}[fragile] -% \setcounter{interlude}{\value{preframe_interlude}} -% \frametitle{Interlude -- Parameter Extension} - -% respectively. - -\newcounter{handson} -\setcounter{handson}{1} -\newcounter{preframe_handson} -\setcounter{preframe_handson}{1} -\newcommand{\HandsOn}[1]{Hands On \Roman{handson} -- #1 \addtocounter{handson}{1}} -%\newcommand{\HandsOn}[1]{Hands On -- #1} - -%TODO: Merge ``HandsOn'' && ``Excercise'' -\newcounter{exercise} -\setcounter{exercise}{1} -% \newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} - -% Bugfix of the Exercise command: avoid the annoying counter -\newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} - -\newcounter{interlude} -\setcounter{interlude}{1} -\newcounter{preframe_interlude} -\setcounter{preframe_interlude}{1} - -%\newcommand{\Interlude}[1]{Interlude \Roman{interlude} -- #1 \addtocounter{interlude}{1}} - -% Bugfix of the Interlude command: avoid the annoying counter! -\newcommand{\Interlude}[1]{Interlude -- #1} - -\usepackage{marvosym} -\usepackage{multicol} - -\usepackage{hhline} - -\usepackage{times} - -% will decrease the font size for one frame -\newcommand\Fontvi{\fontsize{6}{7.2}\selectfont} -% -\usepackage{dirtree,float} % for directory tree listings -\usepackage[nodisplayskipstretch]{setspace} - - -\usepackage{verbatim} -\usepackage{listings} - -\newcommand{\altverb}[2][{}]{\colorbox{plightgrey}{\lstinline[language={#1}]{#2}}} - - -\lstloadlanguages{Python,bash,C++} -\lstset{showspaces=false, -basicstyle=\small, -showstringspaces=false} - -\lstdefinestyle{tree}{ - literate= - {├}{{smash{raisebox{-1ex}{rule{1pt}{baselineskip}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 - {─}{{raisebox{0.5ex}{rule{1.5ex}{1pt}}}}1 - {└}{{smash{raisebox{0.5ex}{rule{1pt}{dimexprbaselineskip-1.5ex}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 - } - -%default python listings: -\lstdefinestyle{Python} -{ - language=Python, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, - moredelim=**[is][\bfseries\color{red}]{@}{@}, - literate={\\@}{{\makeatletter @ \makeatother}}1 -} - -\lstdefinestyle{R} -{ - language=R, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, -} - -%default python listings: -\lstdefinestyle{C++} -{ - language=C++, - basicstyle=\small, - showstringspaces=false, - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - showspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{white}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}\bfseries, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle={}, - emph={[10]self}, emphstyle={[10]\color{pblue}}, - emph={[11]yield}, emphstyle={[11]\color{pblue}}, -} - -\newcommand{\CC}{C\nolinebreak\hspace{-.05em}\raisebox{1ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{1ex}{\tiny\bf +}} - -%default shell listings: -\lstdefinestyle{Shell} -{ - language=Bash, - basicstyle=\ttfamily\small, - showstringspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{BrickRed}, - keywordstyle=\color{BlueViolet}, - commentstyle=\color{PineGreen}\bfseries, - identifierstyle=\color{black}, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}}, - moredelim=**[is][\bfseries\color{red}]{@}{@}, - literate={\\@}{{\makeatletter @ \makeatother}}1 -} - -%default plain listings (e.g. for config files):https://www.google.com/search?client=firefox-b-e&q=conrad -\lstdefinestyle{Plain} -{ - stepnumber=5, - numberstyle=\tiny, - numbersep=5pt, - language=Bash, - basicstyle=\ttfamily\small, - showstringspaces=false, - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{black}, - keywordstyle=\color{black}, - commentstyle=\color{blue}\bfseries, - identifierstyle=\color{black}, - breaklines=true, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} -} - -\lstdefinelanguage{XML} -{ - frame=single, - framerule=0.4pt, - rulecolor=\color{pgrey}, - backgroundcolor=\color{plightgrey2}, - stringstyle=\color{black}, - keywordstyle=\color{black}, - commentstyle=\color{blue}\bfseries, - identifierstyle=\color{black}, - emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} - morestring=[b]", - morestring=[s]{>}{<}, - morecomment=[s]{}, - morekeywords={xmlns,version,type}% list your attributes here -} - -\newcommand{\bibtex}{\textsc{Bib}\TeX} - -%%% https://tex.stackexchange.com/questions/99316/symbol-for-external-links -\newcommand{\LinkSymbol}{% - \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{% - \begin{scope}[x=1ex, y=1ex] - \clip (-0.1,-0.1) - --++ (-0, 1.2) - --++ (0.6, 0) - --++ (0, -0.6) - --++ (0.6, 0) - --++ (0, -1); - \path[draw, - line width = 0.5, - rounded corners=0.5] - (0,0) rectangle (1,1); - \end{scope} - \path[draw, line width = 0.5] (0.5, 0.5) - -- (1, 1); - \path[draw, line width = 0.5] (0.6, 1) - -- (1, 1) -- (1, 0.6); - } -} -\newcommand{\lhref}[2]{\href{#1}{#2\,\LinkSymbol}} - -%%%% shortcuts for uniform appearance of common strings %%%% -\newcommand{\slurm}{\textsc{slurm}~} -\makeatletter -\newcommand{\rmnum}[1]{\romannumeral #1} -\newcommand{\Rmnum}[1]{\expandafter\@slowromancap\romannumeral #1@} -\makeatother -\usepackage{xspace} -\newcommand{\mogon}{\textsc{mogon}\xspace} -\newcommand{\mogonI}{\textsc{mogon}\,\Rmnum{1}\xspace} -\newcommand{\mogonII}{\textsc{mogon}\,\Rmnum{2}\xspace} - -% this package provides the option to read parameters from a configuration file -\usepackage{readarray} - -\readdef{config/config.dat}{\data} -\readarray\data\MyDat[-,3] -\newcommand\configparam[1]{\csname DATA#1\endcsname} -%\MyDatROWS{} rows of data read. - -\newcounter{datacount} -\setcounter{datacount}{0}% -\whiledo{\value{datacount} < \MyDatROWS}{% - \stepcounter{datacount}% - \expandafter\xdef\csname DATA\MyDat[\arabic{datacount},1]\endcsname{% - \MyDat[\arabic{datacount},3]}% -} - -% -%\newcommand{\pathtoexercise}[1]{\path{/lustre/project/m2_jgu-ngstraing/workflows/#1}} -%\newcommand{\pathtoclozure}[1]{\path{/lustre/project/hpckurs/bash-course/cloze/#1}} -%\newcommand{\pathtosolution}[1]{\path{/lustre/project/hpckurs/bash-course/solutions/#1}} - -\setcounter{tocdepth}{1} - -% this allows turning of footlines for particular slides -\setbeamertemplate{footline}[frame number] -% to use it, perform: - -% \begin{frame} -% normal frame -% \end{frame} -% -% \begingroup -% \setbeamertemplate{footline}{} -% \begin{frame} -% without footline -% \end{frame} -% \endgroup - -%--------------------% -% Meta-Info -%--------------------% - - - -\title[Introduction to Using Snakemake Workflows on Clusters]{An Introduction to Using Snakemake Workflows on HPC Clusters with the SLURM Batch Sytem} -%TODO: What should the subtitle be like? Should there be an Edition? How to keep track? -%\subtitle{Workflow Course - Edition 3} -%TODO: How shall we call ourself? -\author[Snakemake Teaching Alliance]{The "Snakemake Teaching Alliance"} -% TODO: How do we insert a date, which is up to date? Should we insert one, here? -\date{September 2023} - -\hypersetup{colorlinks,linkcolor=,urlcolor=links} - -\graphicspath{{../images/}{../logos}} +\include{common/preamble} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -391,20 +15,6 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Passe captions an -\setbeamertemplate{caption}{\insertcaption} -% \setbeamerfont{caption}{size=\scriptsize} -\setlength\abovecaptionskip{-2.5pt} -\setlength\belowcaptionskip{0pt} - - - -% For every picture that defines or uses external nodes, you'll have to -% apply the 'remember picture' style. To avoid some typing, we'll apply -% the style to all pictures. -\tikzstyle{every picture}+=[remember picture] -\tikzstyle{na} = [baseline=-.5ex] - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[plain] % plain erzeugt Titelseite ohne Kopf- und Fußzeile \titlepage diff --git a/slides/common/Reports.tex b/slides/common/Reports.tex index 6f4d3f3..85bc797 100644 --- a/slides/common/Reports.tex +++ b/slides/common/Reports.tex @@ -93,11 +93,9 @@ \subsection{Benchmarking} \end{warning} \end{frame} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Reporting} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{\texttt{Snakemake} Reports} @@ -106,11 +104,6 @@ \subsection{Reporting} $ snakemake --report \end{lstlisting} This will generate a file called ``\altverb{report.html}'', which you can visualize with a browser. - \pause - %TODO adjust, once working - \begin{alertblock}{Viewing the Report} - Due to a bug on \mogon: Copy the file to your computer and visualize it in your browser! - \end{alertblock} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/slides/common/condarc_mogon.tex b/slides/common/condarc_mogon.tex new file mode 100644 index 0000000..0583367 --- /dev/null +++ b/slides/common/condarc_mogon.tex @@ -0,0 +1,27 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame}[fragile] + \frametitle{Reducing Search Overhead - the \texttt{.condarc}-File} + On many HPC clusters the number of Conda channels (the repositories) is reduced by the whitelisting. Nevertheless, it helps to reduce the search time with a resource file, including a number of definitions, \emph{before} starting: + \begin{lstlisting}[language=Bash, style=Shell, basicstyle=\tiny] +$ cat .condarc +create_default_packages: + - setuptools # since Python is often needed +# these channels cover most of the required software +channels: + - conda-forge + - bioconda + - defaults + - r +proxy_servers: # in case a proxy server is present + http: http://webproxy.zdv.uni-mainz.de:8888 +ssl_verify: false +auto_update_conda: false +always_yes: true # avoid confirmation(s) +env_prompt: '($(basename {default_env})) ' + \end{lstlisting} + To obtain the same resource file, run: + \begin{lstlisting}[language=Bash, style=Shell, basicstyle=\footnotesize] +$ cp ../setup/condarc ~/.condarc + \end{lstlisting} + More on \altverb{.condarc} on the \lhref{https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html}{official Conda documentation site} +\end{frame} diff --git a/slides/common/contributions.tex b/slides/common/contributions.tex index c5e3b34..67ad7ac 100644 --- a/slides/common/contributions.tex +++ b/slides/common/contributions.tex @@ -10,6 +10,9 @@ \section{Contributors} \item Johannes Köster \includegraphics[height=\baselineskip]{logos/signet_ude_rgb} \item Lukas Hellmann \includegraphics[height=\baselineskip]{logos/logo_schriftzug.jpg} \item Christian Meesters \includegraphics[height=\baselineskip]{logos/logo_schriftzug.jpg} + \item Malte Petersen \includegraphics[height=\baselineskip]{logos/UNI_Bonn_Logo_Standard+HPCA.pdf} + \item Fabian Brand \includegraphics[height=\baselineskip]{logos/UNI_Bonn_Logo_Standard+HPCA.pdf} + \item Florian Boecker \includegraphics[height=\baselineskip]{logos/UNI_Bonn_Logo_Standard_RZ.pdf} \end{itemize} \end{column} \begin{column}{.5\textwidth} diff --git a/slides/common/preamble.tex b/slides/common/preamble.tex new file mode 100644 index 0000000..4546e6f --- /dev/null +++ b/slides/common/preamble.tex @@ -0,0 +1,394 @@ +\usepackage{etoolbox} +%\setbeamertemplate{mini frames}[box] +\usepackage{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsfonts,amsmath,amssymb} +\usepackage{textgreek} +\usepackage{wrapfig} + +\usepackage[load-configurations=binary,binary-units=true]{siunitx} +\usepackage[normalem]{ulem} % for strikethrough with \sout + +\usepackage{color,colortbl} +\usepackage{upquote} + +\definecolor{pblue}{RGB}{45,106,148} +\definecolor{pdarkblue}{RGB}{35,71,100} +\definecolor{plightblue}{RGB}{90,159,212} +\definecolor{pyellow}{RGB}{255,212,59} +\definecolor{pdarkyellow}{RGB}{255,188,41} +\definecolor{orange}{RGB}{255,165,0} +\definecolor{plightyellow}{RGB}{255,232,115} +\definecolor{pdarkgrey}{RGB}{100,100,100} +\definecolor{pgrey}{RGB}{153,153,153} +\definecolor{plightgrey}{RGB}{233,233,233} +\definecolor{plightgrey2}{RGB}{247,247,247} +\definecolor{pnavy}{RGB}{0,0,170} +\definecolor{BrickRed}{RGB}{150,22,11} +\definecolor{BlueViolet}{RGB}{138, 43, 226} +\definecolor{PineGreen}{RGB}{0, 51, 0} +\definecolor{light-gray}{gray}{0.95} + +\definecolor{UniRot}{RGB}{193,0,42} +\definecolor{UniDunkelGrau}{RGB}{99,99,99} +\definecolor{UniHellGrau}{RGB}{172,172,172} + +\definecolor{UrlColor}{rgb}{0,0.08,0.45} +\definecolor{links}{rgb}{0,0,0} + +\usetheme{CambridgeUS} % Pittsburgh, CambridgeUS +\usecolortheme{beaver} %wolverine | crane | beaver | seahorse +\useinnertheme{rounded} +\useoutertheme{default} +\usefonttheme{default} +%\setbeamercovered{transparent} +\setbeamertemplate{footline}[frame number] + +% remove the navigation symbols +\setbeamertemplate{navigation symbols}{} + +% side margins +\setbeamersize{text margin left=0.5cm, text margin right=0.5cm} + +\setbeamercolor{structure}{fg=UniRot}% to modify immediately all palettes +\setbeamercolor{title}{fg=UniRot} +\setbeamercolor{title in head/foot}{fg=UniRot} + +\setbeamercolor{block title}{bg=UniRot!20,fg=darkred} +\setbeamercolor{block body}{fg=black, bg=plightgrey2} + +% \setbeamercolor{block title}{fg=white,bg=orange} +\setbeamercolor{block title alerted}{fg=white,bg=UniRot} +\setbeamercolor{block title example}{fg=white,bg=PineGreen!80} + + +% enables two line cols in tabular envs +\newcommand{\specialcell}[2][c]{% + \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}} +\usepackage{subfig} +\usepackage{tikz} +\usetikzlibrary{arrows,shapes,backgrounds,positioning,shadows,decorations,trees,decorations.pathreplacing} +\usepackage{smartdiagram} + + +\addtobeamertemplate{footline}{}{% +\begin{tikzpicture}[remember picture,overlay] +\node[anchor=south west,yshift=2pt] at (current page.south west) {\includegraphics[height=0.8cm]{../images/logos/zdv_logo.png}}; +\end{tikzpicture}} + +\usepackage[tikz]{bclogo} +\newenvironment{task}[1][Task]{\bclogo[arrondi=0.1,logo=\bcoutil]{#1}}{\endbclogo} +\newenvironment{docs}[1][Documentation]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} +\newenvironment{hint}[1][Hint]{\bclogo[arrondi=0.1,logo=\bcinfo]{#1}}{\endbclogo} +\newenvironment{warning}[1][Warning]{\bclogo[arrondi=0.1,logo=\bcattention]{#1}}{\endbclogo} +% ``d/Definition'' is already defined ;-) +\newenvironment{explanation}[1][Definition]{\bclogo[arrondi=0.1,logo=\bcplume]{#1}}{\endbclogo} +\newenvironment{question}[1][Question]{\bclogo[arrondi=0.1,logo=\bcquestion]{#1}}{\endbclogo} + + +%%%%%%%%%%%%%%%%% +%% PLEASE NOTE %% +%%%%%%%%%%%%%%%%% +% frames containing ``Hand Out'' or ``Interlude'' should be started: + +% \setcounter{preframe_handson}{\value{handson}} +% \begin{frame}[fragile] +% \setcounter{handson}{\value{preframe_handson}} +% \frametitle{\HandsOn{Using \texttt{find}}} + +% or + +% \setcounter{preframe_interlude}{\value{interlude}} +% \begin{frame}[fragile] +% \setcounter{interlude}{\value{preframe_interlude}} +% \frametitle{Interlude -- Parameter Extension} + +% respectively. + +\newcounter{handson} +\setcounter{handson}{1} +\newcounter{preframe_handson} +\setcounter{preframe_handson}{1} +\newcommand{\HandsOn}[1]{Hands On \Roman{handson} -- #1 \addtocounter{handson}{1}} +%\newcommand{\HandsOn}[1]{Hands On -- #1} + +%TODO: Merge ``HandsOn'' && ``Excercise'' +\newcounter{exercise} +\setcounter{exercise}{1} +% \newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} + +% Bugfix of the Exercise command: avoid the annoying counter +\newcommand{\Exercise}{\theexercise . Excercise \addtocounter{exercise}{1}} + +\newcounter{interlude} +\setcounter{interlude}{1} +\newcounter{preframe_interlude} +\setcounter{preframe_interlude}{1} + +%\newcommand{\Interlude}[1]{Interlude \Roman{interlude} -- #1 \addtocounter{interlude}{1}} + +% Bugfix of the Interlude command: avoid the annoying counter! +\newcommand{\Interlude}[1]{Interlude -- #1} + +\usepackage{marvosym} +\usepackage{multicol} + +\usepackage{hhline} + +\usepackage{times} + +% will decrease the font size for one frame +\newcommand\Fontvi{\fontsize{6}{7.2}\selectfont} +% +\usepackage{dirtree,float} % for directory tree listings +\usepackage[nodisplayskipstretch]{setspace} + + +\usepackage{verbatim} +\usepackage{listings} + +\newcommand{\altverb}[2][{}]{\colorbox{plightgrey}{\lstinline[language={#1}]{#2}}} + + +\lstloadlanguages{Python,bash,C++} +\lstset{showspaces=false, +basicstyle=\small, +showstringspaces=false} + +\lstdefinestyle{tree}{ + literate= + {├}{{smash{raisebox{-1ex}{rule{1pt}{baselineskip}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 + {─}{{raisebox{0.5ex}{rule{1.5ex}{1pt}}}}1 + {└}{{smash{raisebox{0.5ex}{rule{1pt}{dimexprbaselineskip-1.5ex}}}raisebox{0.5ex}{rule{1ex}{1pt}}}}1 + } + +%default python listings: +\lstdefinestyle{Python} +{ + language=Python, + basicstyle=\small, + showstringspaces=false, + stepnumber=5, + numberstyle=\tiny, + numbersep=5pt, + showspaces=false, + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{white}, + stringstyle=\color{BrickRed}, + keywordstyle=\color{BlueViolet}\bfseries, + commentstyle=\color{PineGreen}\bfseries, + identifierstyle={}, + emph={[10]self}, emphstyle={[10]\color{pblue}}, + emph={[11]yield}, emphstyle={[11]\color{pblue}}, + moredelim=**[is][\bfseries\color{red}]{@}{@}, + literate={\\@}{{\makeatletter @ \makeatother}}1 +} + +\lstdefinestyle{R} +{ + language=R, + basicstyle=\small, + showstringspaces=false, + stepnumber=5, + numberstyle=\tiny, + numbersep=5pt, + showspaces=false, + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{white}, + stringstyle=\color{BrickRed}, + keywordstyle=\color{BlueViolet}\bfseries, + commentstyle=\color{PineGreen}\bfseries, + identifierstyle={}, + emph={[10]self}, emphstyle={[10]\color{pblue}}, + emph={[11]yield}, emphstyle={[11]\color{pblue}}, +} + +%default python listings: +\lstdefinestyle{C++} +{ + language=C++, + basicstyle=\small, + showstringspaces=false, + stepnumber=5, + numberstyle=\tiny, + numbersep=5pt, + showspaces=false, + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{white}, + stringstyle=\color{BrickRed}, + keywordstyle=\color{BlueViolet}\bfseries, + commentstyle=\color{PineGreen}\bfseries, + identifierstyle={}, + emph={[10]self}, emphstyle={[10]\color{pblue}}, + emph={[11]yield}, emphstyle={[11]\color{pblue}}, +} + +\newcommand{\CC}{C\nolinebreak\hspace{-.05em}\raisebox{1ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{1ex}{\tiny\bf +}} + +%default shell listings: +\lstdefinestyle{Shell} +{ + language=Bash, + basicstyle=\ttfamily\small, + showstringspaces=false, + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{plightgrey2}, + stringstyle=\color{BrickRed}, + keywordstyle=\color{BlueViolet}, + commentstyle=\color{PineGreen}\bfseries, + identifierstyle=\color{black}, + emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}}, + moredelim=**[is][\bfseries\color{red}]{@}{@}, + literate={\\@}{{\makeatletter @ \makeatother}}1 +} + +%default plain listings (e.g. for config files):https://www.google.com/search?client=firefox-b-e&q=conrad +\lstdefinestyle{Plain} +{ + stepnumber=5, + numberstyle=\tiny, + numbersep=5pt, + language=Bash, + basicstyle=\ttfamily\small, + showstringspaces=false, + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{plightgrey2}, + stringstyle=\color{black}, + keywordstyle=\color{black}, + commentstyle=\color{blue}\bfseries, + identifierstyle=\color{black}, + breaklines=true, + emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} +} + +\lstdefinelanguage{XML} +{ + frame=single, + framerule=0.4pt, + rulecolor=\color{pgrey}, + backgroundcolor=\color{plightgrey2}, + stringstyle=\color{black}, + keywordstyle=\color{black}, + commentstyle=\color{blue}\bfseries, + identifierstyle=\color{black}, + emph={[10]\$,>>>}, emphstyle={[10]\color{pblue}} + morestring=[b]", + morestring=[s]{>}{<}, + morecomment=[s]{}, + morekeywords={xmlns,version,type}% list your attributes here +} + +\newcommand{\bibtex}{\textsc{Bib}\TeX} + +%%% https://tex.stackexchange.com/questions/99316/symbol-for-external-links +\newcommand{\LinkSymbol}{% + \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{% + \begin{scope}[x=1ex, y=1ex] + \clip (-0.1,-0.1) + --++ (-0, 1.2) + --++ (0.6, 0) + --++ (0, -0.6) + --++ (0.6, 0) + --++ (0, -1); + \path[draw, + line width = 0.5, + rounded corners=0.5] + (0,0) rectangle (1,1); + \end{scope} + \path[draw, line width = 0.5] (0.5, 0.5) + -- (1, 1); + \path[draw, line width = 0.5] (0.6, 1) + -- (1, 1) -- (1, 0.6); + } +} +\newcommand{\lhref}[2]{\href{#1}{#2\,\LinkSymbol}} + +%%%% shortcuts for uniform appearance of common strings %%%% +\newcommand{\slurm}{\textsc{slurm}~} +\makeatletter +\newcommand{\rmnum}[1]{\romannumeral #1} +\newcommand{\Rmnum}[1]{\expandafter\@slowromancap\romannumeral #1@} +\makeatother + +% this package provides the option to read parameters from a configuration file +\usepackage{readarray} + +\readdef{config/config.dat}{\data} +\readarray\data\MyDat[-,3] +\newcommand\configparam[1]{\csname DATA#1\endcsname} +%\MyDatROWS{} rows of data read. + +\newcounter{datacount} +\setcounter{datacount}{0}% +\whiledo{\value{datacount} < \MyDatROWS}{% + \stepcounter{datacount}% + \expandafter\xdef\csname DATA\MyDat[\arabic{datacount},1]\endcsname{% + \MyDat[\arabic{datacount},3]}% +} + + + +%\newcommand{\pathtoexercise}[1]{\path{/lustre/project/m2_jgu-ngstraing/workflows/#1}} +%\newcommand{\pathtoexercise}[1]{\path{ \DTLfetch{data}{thekey}{#1}{thevalue} }} +%\newcommand{\pathtoclozure}[1]{\path{/lustre/project/hpckurs/bash-course/cloze/#1}} +%\newcommand{\pathtosolution}[1]{\path{/lustre/project/hpckurs/bash-course/solutions/#1}} + +\setcounter{tocdepth}{1} + +% this allows turning of footlines for particular slides +\setbeamertemplate{footline}[frame number] +% to use it, perform: + +% \begin{frame} +% normal frame +% \end{frame} +% +% \begingroup +% \setbeamertemplate{footline}{} +% \begin{frame} +% without footline +% \end{frame} +% \endgroup + +%--------------------% +% Meta-Info +%--------------------% + + + +\title[Introduction to Workflow Programming]{An Introduction to HPC-conformant Scientific Workflows} +%TODO: What should the subtitle be like? Should there be an Edition? How to keep track? +\subtitle{Workflow Course - Edition 3} +\author[Snakemake Teaching Alliance]{The "Snakemake Teaching Alliance"} +% TODO: How do we insert a date, which is up to date? Should we insert one, here? +\date{September 2023} + +\hypersetup{colorlinks,linkcolor=,urlcolor=links} + +\graphicspath{{../images/}{../logos}} + + +% Passe captions an +\setbeamertemplate{caption}{\insertcaption} +% \setbeamerfont{caption}{size=\scriptsize} +\setlength\abovecaptionskip{-2.5pt} +\setlength\belowcaptionskip{0pt} + + + +% For every picture that defines or uses external nodes, you'll have to +% apply the 'remember picture' style. To avoid some typing, we'll apply +% the style to all pictures. +\tikzstyle{every picture}+=[remember picture] +\tikzstyle{na} = [baseline=-.5ex] diff --git a/slides/common/software_environment.tex b/slides/common/software_environment.tex index 08ec3e1..2eb2f85 100644 --- a/slides/common/software_environment.tex +++ b/slides/common/software_environment.tex @@ -1,3 +1,4 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Software Environment} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -13,7 +14,6 @@ \section{Software Environment} \end{columns} \end{frame} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{What is this about?} @@ -90,18 +90,17 @@ \subsection{Software on HPC Systems} \end{task} \end{frame} -%TODO: this slides works with the naming scheme on Mogon - not necessarily on other clusters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] - {Modules with easybuild\newline Or: What is this fuzz at the end of module names?} - You will have seen modules like: + \frametitle{Module Naming Schemes} + You might have seen module names like: \begin{lstlisting}[language=Bash, style=Shell] numlib/FFTW/3.3.10-gompi-2021b \end{lstlisting} + Actual module naming schemes differ from cluster to cluster. \pause - \begin{block}{Easybuild Naming Scheme} - We are building our modules with \lhref{https://easybuilders.github.io/easybuild/}{easybuild} and adopted the following naming scheme for modules:\newline - \footnotesize \verb+//--+ + \begin{block}{Using Modules with \texttt{Snakemake}} + We will learn how to use modules with \end{block} \pause \begin{task}[Look inside a module to know what will be loaded and set] @@ -109,13 +108,12 @@ \subsection{Software on HPC Systems} \end{task} \end{frame} -%TODO: should we offer more or less on modules? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{That's all Folks} \vspace{-0.8em} \begin{alertblock}{Why we will not go in depth now} -You can learn more about modules in 101-HPC courses. Later, we will learn how to use \texttt{Snakemake} workflows, particularly curated ones, available on the web. We \emph{could} re-write and adapt them for Mogon, it is better to only parameterize them for Mogon and do leave the workflow itself unaltered. This is less cumbersome and as workflow systems, including \texttt{Snakemake}, rely on Conda, we will have an in-depth intro to Conda, instead. +You can learn more about modules in 101-HPC courses. Later, we will learn how to use \texttt{Snakemake} workflows, particularly curated ones, available on the web. We \emph{could} re-write and adapt them for a specific cluster, it is better to only parameterize them and do leave the workflow itself unaltered, portable. This is less cumbersome and as workflow systems, including \texttt{Snakemake}, rely on Conda, we will have an in-depth intro to Conda, instead. \end{alertblock} \vfill \begin{alertblock}{Do not mix Conda with Modules} @@ -291,36 +289,8 @@ \subsection{Using Conda} \end{lstlisting} \end{frame} - -%TODO: the webproxy might be different or non-existing elsewhere. -%TODO: program a cluster switch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame}[fragile] - \frametitle{Reducing Search Overhead - the \texttt{.condarc}-File} - On many HPC clusters the number of Conda channels (the repositories) is reduced by the whitelisting. Nevertheless, it helps to reduce the search time with a resource file, including a number of definitions, \emph{before} starting: - \begin{lstlisting}[language=Bash, style=Shell, basicstyle=\tiny] -$ cat .condarc -create_default_packages: - - setuptools # since Python is often needed -# these channels cover most of the required software -channels: - - conda-forge - - bioconda - - defaults - - r -proxy_servers: # in case a proxy server is present - http: http://webproxy.zdv.uni-mainz.de:8888 -ssl_verify: false -auto_update_conda: false -always_yes: true # avoid confirmation(s) -env_prompt: '($(basename {default_env})) ' - \end{lstlisting} - To obtain the same resource file, run: - \begin{lstlisting}[language=Bash, style=Shell, basicstyle=\footnotesize] -$ cp ../setup/condarc ~/.condarc - \end{lstlisting} - More on \altverb{.condarc} on the \lhref{https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html}{official Conda documentation site} -\end{frame} +\input{\configparam{condarcfile}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] diff --git a/slides/config/config.dat b/slides/config/config.dat index a704cce..70e4d8c 100644 --- a/slides/config/config.dat +++ b/slides/config/config.dat @@ -1,5 +1,11 @@ editorfile = "common/editor_gedit_mainz.tex" - +% The next line indicates the slides explaining +% a condarc file on a cluster, copy and adjust +% for your cluster. +condarcfile = "common/condarc_mogon.tex" +% these are the path names to contain sample data +% see the README for explanations. +>>>>>>> main pathtoexercise = "/lustre/project/hpckurs/workflows/" pathtoclozure = "/lustre/project/hpckurs/cloze/" pathtosolution = "/lustre/project/hpckurs/solutions/" diff --git a/slides/creators/Decorating_the_Workflow.tex b/slides/creators/Decorating_the_Workflow.tex index 85ebb56..7eba5a0 100644 --- a/slides/creators/Decorating_the_Workflow.tex +++ b/slides/creators/Decorating_the_Workflow.tex @@ -386,8 +386,8 @@ \subsection{The Command Line} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{Executor Selection} - \texttt{Snakemake} lets you select various executors. Not happy with \mogon? Take another cluster or \lhref{https://snakemake.readthedocs.io/en/stable/executor_tutorial/tutorial.html}{Google Lifescience, Tibanna, Kubernetes, \ldots} \newline - We may happily select the most prominent HPC batch system, the one running on \mogon, too: + \texttt{Snakemake} lets you select various executors. Not happy with HPC clusters? Pay for a cloud \lhref{https://snakemake.readthedocs.io/en/stable/executor_tutorial/tutorial.html}{Google Lifescience, Tibanna, Kubernetes, \ldots} \newline + Meanwhile we select the most prominent HPC batch system by: \begin{lstlisting}[language=Bash, style=Shell] $ snakemake --slurm \end{lstlisting} diff --git a/slides/creators/Finishing_and_Execution.tex b/slides/creators/Finishing_and_Execution.tex index 3ca5cf0..874108a 100644 --- a/slides/creators/Finishing_and_Execution.tex +++ b/slides/creators/Finishing_and_Execution.tex @@ -161,7 +161,7 @@ \subsection{Running the final Workflow} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{\HandsOn{Visualising the Output}} - On \mogon{} the linux distro is CentOS (or now AlmaLinux), which provides the \altverb{display}-program to display simple images. We shall invoke: + On Mogon the Linux distro is CentOS (or now AlmaLinux), which provides the \altverb{display}-program to display simple images. We shall invoke: \begin{lstlisting}[language=Bash, style=Shell] $ display plots/quals.svg \end{lstlisting}