TousAntiCovid

Projet Final pour l'UE Mise à Niveau en Informatique I

This project is maintained by gmagannaDevelop

Note for the evaluation : Download release 6 (v1.0.1). This is our final version containing the project report.

TousAntiCovid

Faculté des Sciences de l’Université Paris-Saclay

Master en BioInformatique

FR : Projet Final pour l’UE Mise à Niveau en Informatique I

EN : Final project for Mise à Niveau en Informatique I course.

Étudiants (Students)

Preview

Compile and run

  1. Clone the repo to your machine

  2. Install the dependencies

  3. Compile the program

    cd src
    make clean
    make
    
  4. Run the program (see bin/README.md for more in-depth explanation)

    cd ../bin # if you're still within src/
    cd bin    # if you are at the repo's root
    ./viral-simulation    
    

Dependencies

This project leverages GSL (GNU Scientific Library) and SDL (Simple Directmedia Layer). These are used in order to get beter quality random numbers than those directly available in plain C, and create an interface to visualise the simulation’s evolution, respectively.

In order to compile and run the C code present in this repository, you must install the dependencies beforehand (if you have not already installed them).

Project Structure

The main project source is located at src. The directory bin stores the executable (it is needed as the recipe in the makefile expects it to exist.

.
├── bin
├── covid-simu
├── experiments
├── ideas
├── images
├── metrics
├── reference
│   ├── 09_singly_linked_list
│   │   ├── bin
│   │   └── src
│   ├── 13_binary_tree
│   │   ├── bin
│   │   │   └── removing_nodes_example
│   │   └── src
│   ├── 21_SDL_ppm_graphics
│   │   ├── bin
│   │   └── src
│   └── 26_Mersenne_Twister
│       ├── bin
│       └── src
├── src
└── stray
    ├── graphics
    ├── original
    └── random

Explanation of the files found in src/ directory.

src
├── aux_math.c  # Auxiliary math operations (float comparisons)
├── aux_math.h
├── constants.h # Miscellaneous simulation constants
├── datastructures.h # Person, Coordinate, and other custom datatypes
├── dev_random.c # Functions to initialise gsl's rng.
├── dev_random.h
├── display.c # Functions to display on console (legacy)
├── display.h
├── dynamics.c # Physical displacement rules and utility functions
├── dynamics.h 
├── libraries.h # All of our headers and needed libraries.
├── main_program.c # MAIN PROGRAM
├── Makefile 
├── mersenne_twister.c # High-quality pseudo random number generation
├── mersenne_twister.h
├── parsing.c # Get parameters from the command line
├── parsing.h
├── probabilities.c  # Utility functions for random experiments
├── probabilities.h # Probabilities which are internal params
├── SDL_datastructure.h  # datastructures needed for graphics
├── simulation.c # instantiation, iteration and epochs
├── simulation.h 
├── singly_linked_list.c # Sinlgy linked list implementation
├── singly_linked_list.h
├── visualization.c # Functions used to render the simulation
└── visualization.h # via SDL

Acknowledgements

We would like to thank Ouriel Grynszpan and Stéphanie Chevalier for their instruction and support during this course.

We would also like to thank Marco Heinen for his explanations and example codes on the topics of pseudo-random number generators and data structures during his 2017 Numerical Methods Course at Universidad de Guanajuato, Mexico. This repository relies on some of the beforementioned codes to build the simulation.

We would also like to thank Mathis Delehouzée for his help finding the matrix indexation bug.