Computer Science Tools for Biology/Ecology/Evolution

These topics are not exactly relevant to learn how to program, but they are definitely useful in day-to-day or occasional use of a computer in Biology/Ecology/Evolution.

Topic: Linux/Bash/Zsh

Prerequisites:

  • There is a linux machine that you interact with or are about to interact with.

In scope:

  • What is an OS: Windows, Unix, MacOs, Linux.. Step away from your hardware.
  • The shell: interact with the OS. Sh, Bash, Zsh..
  • Basic commands: ls, cd, echo, cat, mkdir, rm, less, etc.
  • Your terminal should be comfy: make it your own:
    • Abuse shortcuts: <tab>, <c-r>, <c-u>..
    • Custom aliases.
    • Themes and sophisticated autocompletion: OhMyZsh/p10k.
    • Configuration files: be yourself at home, anywhere, .bashrc, .zshrc, source.
  • How linux is organised: /home, /, /usr, /dev, /mnt, lsblk, /opt, etc.
  • Ownership and permissions: the root user, su, sudo, chown, chmod, etc.
  • Think before you type.
  • The multiple command inputs:
    • Arguments.
    • Standard input (stdin).
    • Environment.
  • The multiple command outputs:
    • Return code.
    • Standard outputs (stdout, stderr).
    • Border effects: (print, operations..).
  • Redirections and piping: >, |, &>, >>, <<, tee, etc.
  • Synchronicity and parallelism: &, sleep, etc.
  • A programming language:
    • Variables and interpolations.
    • Branches and short-circuiting, &&, ||, () subshells.
    • Write a shell script.
    • Functions and arguments.
    • Loops.. but at this point maybe you need a better language?
  • Important system environment variables: $PATH, $PWD, $LANG, etc.
  • How the shell works and the meaning of which/type.

Topic: Text-processing

Prerequisites:

  • You have already issued some commands in Linux / Bash / Zsh.
  • You need perform simple operations on large or numerous text files.

In scope:

  • Basic text-oriented commands: cat, head, tail, tac, etc.
  • Regexes
    • Exert/learn with Regex101.
    • Matches, wildcards, alternates, repetitions..
    • Substitution, captures, greediness/lazyness.
    • The different regex flavours.
    • The limit of regexes: use a proper parser for more.
  • Text-oriented programs:
    • grep/rg: find the needle in a haystack.
    • sed/perl: transform needles in a haystack.
    • awk/frawk: transform the haystack.

Topic: Containers

In scope:

  • Introduction to docker/singularity.

Topic(s): Python libraries

Prerequisites:

In scope (either):

Topic: Conda and python environments

Prerequisites (either):

  • You have already become upset because of python/modules versions mismatches.
  • You are not confident how to best distribute your python program.

In scope:

  • Manage your various python environments.

Topic: Snakemake

Prerequisites (either):

  • Your are confident running linux programs one after the other.
  • You are having a hard time running your whole pipeline again and again.
  • You are not confident how to best distribute your pipeline.

In scope:

  • Automated your pipeline recipes with Snakemake.

Topic: HPC/Slurm/Cluster [support not yet ready]

Prerequisites:

  • You are confident with basic Linux/bash.
  • You are not confident how to submit jobs on a shared calculation cluster.

In scope:

  • Interact with shared computing resources.

Topic: MBB Workflows

Prerequisites:

  • <TODO>

In scope:

  • Automate your pipelines with WAW/SubWAW.

Topic: Awk, a programming language

Prerequisites:

  • You are confident running basic linux / bash commands.
  • You want to learn more about awk.

In scope:

  • Awk model of a text file.
  • Structure of the awk script.
  • Power and limitations.
  • Regexes.

Resources:

LaTeX

Topic: Introduction to LaTeX

Prerequisites:

  • You have written a LaTeX document.
  • You want to learn about LaTeX.

In scope:

  • Setup your machine.
  • What is LaTeX, how to use it.
  • Write/compile your first LaTeX document.
  • Customize text typeset.
  • Floating environments, counters and references.
  • Bibliography.
  • Create your own commands to factorize your doc.

Topic: Tikz

Prerequisites:

  • You are confident writing/compiling basic LaTeX documents.

In scope:

  • Draw pixel-perfect vector graphics with your keyboard.
  • Program your graphics.

Resources:

Topic: Inkscape

In scope:

  • Install Inkscape.
  • What is inkscape, vector-graphics vs. bitmaps.
  • Draw pixel-perfect vector graphics with your mouse.
  • Sophisticated inkscape features.

Topic: Mathematica, an Introduction

Requirements:

  • Paid licence.

In scope:

  • Symbolic calculation with the computer.
  • Documentation.
  • Plots.
  • Functional programming.
  • Syntacting sugar.
  • Manipulable graphics.
  • Performances and Compilation.

Topic: C++, Use and Dangers

Requirements:

  • You are fluent in another language, (like topic 5 or topic 6).
  • You have understood that Rust is just as fast and powerful although much safer and modern.
  • You need to dive into a legacy C++ project. (like, there is really no other option)

In scope:

  • Introduction.
  • Resources for learning.
  • Variables, references and pointers.
  • Language legacy pitfals:
  • Memory safety:
    • Undefined Behaviour (UB).
    • Resource Acquisision Is Initialization (RAII).
    • « There is more to a pointer than meets the eye » [1] [2] [3].
  • Build with Cmake.
  • Test with Catch2.

Resources: