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
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
- 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
- Introduction to docker/singularity.
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: