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
- Sujet: Traitement du texte
- Sujet: Les conteneurs
- Sujet·s: les librairies python
- Sujet: Les environnements conda et python
- Sujet: Snakemake
- Sujet: HPC/Slurm/Cluster [pas encore de support]
- Sujet: MBB Workflows
- Sujet: Awk, un langage de programmation
- LaTeX
- Sujet: Inkscape
- Sujet: Mathematica, une introduction
- Sujet: C++, usage et dangers
Sujet: Linux/Bash/Zsh
- Il y a une machine linux avec laquelle tu interagis ou avec laquelle tu vas bientôt interagir.
- 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 :
- 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
- 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.
- 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
- 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.
- 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
À 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.
- 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.
- Automatise ton pipeline avec des recettes Snakemake.
Sujet : HPC/Slurm/Cluster [pas encore de support]
- 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.
- Interagis avec les ressources de calcul partagées.
Sujet : MBB Workflows
<TODO>
- Automatise tes pipelines avec WAW/SubWAW.
Sujet : Awk, un langage de programmation
- Tu es à l'aise avec les commandes de base linux / bash.
- Tu veux en savoir plus au sujet de
awk
.
- Un fichier texte selon awk.
- Structure d'un script awk.
- Puissance et limites.
- Les expressions régulières (regexes).
Ressources :
LaTeX
Sujet: introduction à LaTeX
- Tu as déjà écrit un document LaTeX.
- Tu veux apprendre LaTeX.
- 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
- Tu es à l'aise avec l'écriture / la compilation des documents LaTeX basiques.
- Dessine des graphiques parfaits avec ton clavier, au pixel près.
- Écris tes graphiques.
Ressources :
Sujet : Inkscape
- 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
- Licence payante.
- Calculation symbolique avec l'ordinateur.
- Documentation.
- Graphiques.
- Programmation fonctionnelle.
- Sucre syntactique.
- Graphiques manipulables.
- Performances et Compilation.
Sujet: C++, Usage et Dangers
- 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)
- Introduction.
- Ressources pour l'apprentissage.
- Variables, références et pointeurs.
- Les dangers de l'héritage du langage :
- Bizarreries lexicales.
- Sémantiques implicites.
- Types entiers.
- Sémantique de mouvement.
- Macros lexicales.
- Sécurité mémoire :
- Compile avec Cmake.
- Teste avec Catch2.
Ressources :