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
- Topic: Text-processing
- Topic: Containers
- Topic(s): Python libraries
- Topic: Conda and python environments
- Topic: Snakemake
- Topic: HPC/Slurm/Cluster [support not yet ready]
- Topic: MBB Workflows
- Topic: Awk, a programming language
- LaTeX
- Topic: Inkscape
- Topic: Mathematica, an Introduction
- Topic: C++, Use and Dangers
Topic: Linux/Bash/Zsh
- There is a linux machine that you interact with or are about to interact with.
- 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:
- How linux is organised:
/home,/,/usr,/dev,/mnt,lsblk,/opt, etc. - Ownership and permissions:
the
rootuser,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
- You have already issued some commands in Linux / Bash / Zsh.
- You need perform simple operations on large or numerous text files.
- 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
- You are familiar with the terminal.
- You are familiar with command-line tools.
- You are familiar how to install/compile programs on linux.
- It is sometimes a nightmare for you to get all the correct dependencies you need, their exact versions, the corresponding system libraries etc. for every given project.
- You are happy with your pipeline but you are not exactly sure how to best share it so it would work on a cluster / on another machine / on everyone else's machine.
- Introducing containers, images, recipes.
- Introducing Docker/Podman.
- Introducing Singularity/Apptainer.
- Run your own container.
- Build your own image.
- Write your own recipe.
Topic(s): Python libraries
In scope (either):
- numpy/scipy: scientific computing in python.
- pandas/polars: dataframe in python.
- matplotlib: plot graphics with python.
- pytorch: machine learning out-of-the-box.
- pathlib: manipulate filesystems with python.
- subprocess: run external commands with python.
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.
- 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.
- Automated your pipeline recipes with Snakemake.
Topic: HPC/Slurm/Cluster [support not yet ready]
- You are confident with basic Linux/bash.
- You are not confident how to submit jobs on a shared calculation cluster.
- Interact with shared computing resources.
Topic: MBB Workflows
<TODO>
- Automate your pipelines with WAW/SubWAW.
Topic: Awk, a programming language
- You are confident running basic linux / bash commands.
- You want to learn more about
awk.
- Awk model of a text file.
- Structure of the awk script.
- Power and limitations.
- Regexes.
Resources:
LaTeX
Topic: Introduction to LaTeX
- You have written a LaTeX document.
- You want to learn about LaTeX.
- 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
- You are confident writing/compiling basic LaTeX documents.
- Draw pixel-perfect vector graphics with your keyboard.
- Program your graphics.
Resources:
Topic: Inkscape
- Install Inkscape.
- What is inkscape, vector-graphics vs. bitmaps.
- Draw pixel-perfect vector graphics with your mouse.
- Sophisticated inkscape features.
Topic: Mathematica, an Introduction
- Paid licence.
- Symbolic calculation with the computer.
- Documentation.
- Plots.
- Functional programming.
- Syntacting sugar.
- Manipulable graphics.
- Performances and Compilation.
Topic: C++, Use and Dangers
- 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)
- Introduction.
- Resources for learning.
- Variables, references and pointers.
- Language legacy pitfals:
- Lexical quirks.
- Implicit semantics.
- Integral types.
- Move semantics.
- Lexical macros.
- Memory safety:
- Build with Cmake.
- Test with Catch2.
Resources: