Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🇬🇧 🇫🇷

Outils d'informatique pour la Biologie/Écologie/Évolution

Ces sujets ne sont pas tout à fait adaptés pour apprendre à programmer, mais ils sont tout à fait utiles au quotidien ou à l'occasion quand il s'agit d'utiliser un ordinateur en Biologie/Écologie/Évolution.

Sujet: Linux/Bash/Zsh

Prérequis:

  • Il y a une machine linux avec laquelle tu interagis ou avec laquelle tu vas bientôt interagir.

À propos:

  • Ce qu'est un système d'exploitation (OS) : Windows, Unix, MacOs, Linux.. Du recul vis-à-vis de ton matériel.
  • Le shell : interagis avec l'OS. Sh, Bash, Zsh..
  • Les commandes de base : ls, cd, echo, cat, mkdir, rm, less, etc.
  • Ton terminal doit être confortable : aménage-le :
    • Abuse des raccourcis : <tab>, <c-r>, <c-u>..
    • Alias personnalisé.
    • Thèmes et autocomplétion sophistiquées : OhMyZsh/p10k.
    • Fichiers de configuration : comme à la maison, partout, .bashrc, .zshrc, source.
  • Comment linux est organisé : /home, /, /usr, /dev, /mnt, lsblk, /opt, etc.
  • Propriété et permissions : l'utilisateur root, su, sudo, chown, chmod, etc.
  • Réfléchis avant de taper.
  • Les différentes entrées de commandes :
    • Les arguments.
    • L'entrée standard (stdin).
    • L'environnement.
  • Les différentes sorties de commandes :
    • Le code de retour.
    • Les sorties standards (stdout, stderr).
    • Les effets de bord : (affichage, opérations..)
  • Redirections et chaînage : >, |, &>, >>, <<, tee, etc.
  • Synchronicité et parallélisme : &, sleep, etc.
  • Un langage de programmation :
    • Variables et interpolations.
    • Branches et court-circuits, &&, ||, () sous-shells.
    • Écrire un script shell.
    • Fonctions et arguments.
    • Les boucles.. mais à ce stade peut-être qu'il te faut un meilleur langage?
  • Des variables d'environnement système importantes : $PATH, $PWD, $LANG, etc.
  • Comment le shell fonctionne et le sens de which/type.

Sujet : Traitement du texte

Prérequis:

  • Tu as déjà utilisé des commandes sous Linux / Bash / Zsh.
  • Tu as besoin de faire beaucoup d'opérations simples sur des fichiers textes très grands ou très nombreux.

À propos:

  • Des commandes de base orientées texte : cat, head, tail, tac, etc.
  • Les expressions régulières (regexes)
    • Exercices/apprentissage avec Regex101.
    • Correspondances, jokers, alternatives, répétitions..
    • Substitution, captures, gloutonnerie/fainéantise..
    • Les différents parfums de regexes.
    • La limite des regexes : utilise un parser proprement dit pour faire plus.
  • Programmes orientés texte :
    • grep/rg: trouve l'aiguille dans la botte de foin.
    • sed/perl: transforme les aiguilles dans la botte de foin.
    • awk/frawk: transforme la botte de foin.

Sujet : Les conteneurs

Prérequis:

  • Tu connais le terminal.
  • Tu connais les outils en ligne de commande.
  • Tu sais comment installer/compiler des programmes sur linux.
  • Parfois pour toi, c'est un cauchemar de rassembler correctement toutes les dépendances dont tu as besoin, leurs versions exactes, les librairies systèmes qui correspondent, etc., pour chaque projet.
  • Tu es content·e de ton pipeline mais tu n'est pas tout à fait sûr·e de comment le partager de sorte qu'il puisse tourner sur un cluster / sur une autre machine / sur la machine de n'importe qui.

À propos:

  • Introduction aux conteneurs, images, recettes.
  • Introduction à Docker/Podman.
  • Introduction à Singularity/Apptainer.
  • Lance tes propres conteneurs.
  • Construis ta propre image.
  • Écris ta propre recette.

Sujet(s): Les librairies python

Prérequis:

À propos (au choix):

  • numpy/scipy: calcul scientifique avec Python.
  • pandas/polars: des tableaux de données en python.
  • matplotlib: des graphiques avec python.
  • pytorch: l'apprentissage machine pret-à-l'emploi.
  • pathlib: manipuler les systèmes de fichiers avec python.
  • subprocess: lancer des commandes externes depuis python.

Sujet: Conda et les environnements python

Prérequis (au choix):

  • Tu as déjà été ennuyé·e par des incompatibilités de versions de python ou de ses modules.
  • Tu n'est pas sûr·e de comment distribuer ton programme python au mieux.

À propos:

  • Gère tes divers environnements python.

Sujet : Snakemake

Prérequis (au choix):

  • Tu peux tranquillement lancer des programmes linux les uns à la suite des autres.
  • C'est compliqué de (re)lancer tout ton pipeline encore et encore.
  • Tu n'es pas sûr·e de comment distribuer ton pipeline au mieux.

À propos:

  • Automatise ton pipeline avec des recettes Snakemake.

Sujet : HPC/Slurm/Cluster [pas encore de support]

Prérequis:

  • Tu es à l'aise avec les commandes de base linux/bash.
  • Tu n'es pas sûr·e de comment soumettre des travaux sur un machine de calcul partagée.

À propos:

  • Interagis avec les ressources de calcul partagées.

Sujet : MBB Workflows

Prérequis:

  • <TODO>

À propos:

  • Automatise tes pipelines avec WAW/SubWAW.

Sujet : Awk, un langage de programmation

Prérequis:

  • Tu es à l'aise avec les commandes de base linux / bash.
  • Tu veux en savoir plus au sujet de awk.

À propos:

  • Un fichier texte selon awk.
  • Structure d'un script awk.
  • Puissance et limites.
  • Les expressions régulières (regexes).

Ressources :

LaTeX

Sujet: introduction à LaTeX

Prérequis:

  • Tu as déjà écrit un document LaTeX.
  • Tu veux apprendre LaTeX.

À propos:

  • Préparer ton ordinateur.
  • Ce qu'est LaTeX, comment l'utiliser.
  • Écrire/compiler ton premier document LaTeX.
  • Personnaliser la typographie.
  • Les environnements flottants, les compteurs et les références.
  • La bibliographie.
  • Définis tes propres commandes pour factoriser ton document.

Sujet: Tikz

Prérequis:

  • Tu es à l'aise avec l'écriture / la compilation des documents LaTeX basiques.

À propos:

  • Dessine des graphiques parfaits avec ton clavier, au pixel près.
  • Écris tes graphiques.

Ressources :

Sujet : Inkscape

À propos:

  • Installe Inkscape.
  • Ce qu'est Inkscape, les graphiques vectorisés vs. matriciels.
  • Dessine des graphiques parfaits avec ta souris, au pixel près.
  • Les fonctionalités sophistiquées d'inkscape.

Sujet : Mathematica, une introduction

Prérequis:

  • Licence payante.

À propos:

  • Calculation symbolique avec l'ordinateur.
  • Documentation.
  • Graphiques.
  • Programmation fonctionnelle.
  • Sucre syntactique.
  • Graphiques manipulables.
  • Performances et Compilation.

Sujet: C++, Usage et Dangers

Prérequis:

  • Tu es à l'aise avec la programmation dans un autre langage (genre sujet 5 ou sujet 6).
  • Tu as compris que Rust est tout aussi rapide et puissant mais bien plus sûr et moderne.
  • Tu as besoin de plonger dans un projet C++ hérité. (genre, il n'y a vraiment pas d'autre option)

À propos:

  • Introduction.
  • Ressources pour l'apprentissage.
  • Variables, références et pointeurs.
  • Les dangers de l'héritage du langage :
  • Sécurité mémoire :
    • Comportement Indéterminé (UB).
    • L'acquisition d'une ressource est son initialisation (RAII).
    • « Un pointeur est plus qu'il n'en a l'air » [1] [2] [3].
  • Compile avec Cmake.
  • Teste avec Catch2.

Ressources :