RStudio
Pour les exercices du cours, nous utilisons RStudio dans une machine virtuelle.
Aller directement à ma ressource Saturn Cloud du cours dans l’organisation EcoNum
Sinon, voyez comment créer votre ressource ci-dessous.

Création de votre ressource Saturn Cloud
Saturn Cloud, notre partenaire pour la science de données dans le « cloud », va vous permettre d’exécuter R et RStudio confortablement dans des infrastructures dédiées et puissantes, quelles que soient les capacités de votre ordinateur. Nous proposons, uniquement aux étudiants inscrit aux cours de Science des Données biologiques à l’Université de Mons, une machines complètement configurée dans l’organisation EcoNum de Saturn Cloud : svbox2025sdd. Vous ne pourrez créer cette ressource que suite à une invitation envoyée par vos enseignants. La ressource svbox2025sdd doit obligatoirement être utilisée pour les exercices du cours par les étudiants de l’UMONS qui y sont inscrits. Par contre, elle ne peut pas servir à d’autres tâches.
Pour les autres utilisateurs, ou pour un usage en dehors des cours, vous pouvez utiliser svbox2025fr que vous créez dans un compte Saturn Cloud personnel gratuit. Utilisez cette ressource pour vos projets personnels, rédiger vos rapports de stages, votre mémoire de fin d’études, ou pour les autres cours que ceux de science des données à l’UMONS. Vous pouvez aussi installer les logiciels nécessaires aux exercices de ce cours en mode natif, voir à la fin de la page. Les utilisateurs non inscrits à l’un des cours à l’UMONS peuvent utiliser svbox2025fr ou la SciViews Box en mode natif pour réaliser les exercices, mais il faudra installer les packages BioDataScience|1|2|3 du cours par vous-mêmes. Saturn Cloud vous offre des conditions intéressantes qui vous permettent d’utiliser une machine sur le cloud pour seulement quelques dollars par mois, voir leurs conditions tarifaires.
Enregistrement et création de svbox2025sdd ou svbox2025fr
- Étape 1 : compte Saturn Cloud. Vous devez déjà avoir créé votre compte GitHub, comme expliqué à la page d’accueil avant d’aller plus loin.
Attention : pour les étudiants inscrit au cours UMONS, la suite ne pourra fonctionner que lorsque vous aurez rejoint l’organisation EcoNum dans Saturn Cloud. Ceci se fait sur base d’une invitation envoyée par mail par vos enseignants lors de la séance d’installation. Voyez les messages dans votre boite mail UMONS et acceptez cette invitation en cliquant sur le bouton Join EcoNum avant de poursuivre.

Pour les autres, ou pour créer une ressource dans votre espace personnel, cette étape 1 ne passe pas par une invitation, et vous pouvez directement créer un compte dans Saturn Cloud à partir de la page https://saturncloud.io où vous cliquez sur Login dans le menu supérieur (remarque : le site étant très fréquenté, il se peut que vous soyez d’abord mis•e sur liste d’attente dans ce cas).
Il est très important de vous enregistrer en utilisant votre compte GitHub, comme illustré ci-dessous, à l’exclusion de toute autre méthode. C’est crucial pour être bien reconnu•e ensuite.



Étape 2 : si votre compte est nouveau (les étudiants qui ont déjà utilisé Saturn Cloud l’an dernier ne doivent pas la refaire, de même que l’étape 3, et peuvent passer directement à l’étape 4), vous allez créer une clé SSH d’identification (Git SSH Key) pour permettre l’interaction avec GitHub. Naviguez jusqu’à la page de gestion de votre compte Saturn Cloud : https://app.community.saturnenterprise.io/users/profile. Vous pouvez aussi cliquer sur les trois points verticaux à côté de User dans le menu de gauche et puis sélectionner User Profile dans le menu déroulant qui apparaît. Descendez jusqu’à la section Git SSH Key et cliquez sur le bouton à droite Create Key ou Replace Key, selon (1). Laissez Saturn Cloud générer la clé et cliquez Submit (2).

Une fois la clé créée, copiez-là dans le presse-papier à l’aide du bouton indiqué par la flèche rouge dans la copie d’écran ci-dessous. Il se peut que la présentation diffère par rapport à la copie d’écran, mais le principe reste le même. Il faut une clé copiée dans le presse-papier à la fin de l’opération.

Naviguez à présent vers votre profil GitHub, section SSH and GPG keys à l’adresse https://github.com/settings/keys que vous ouvrez dans un nouvel onglet de votre navigateur Web. Cliquez sur le bouton vert New SSH Key. Indiquez comme titre Saturn-Cloud et collez votre clé dans le champ Key depuis le presse-papier. Ensuite, cliquez sur le bouton vert Add SSH key. Authentifiez-vous si c’est demandé.

- Étape 3 : uniquement pour les étudiants UMONS qui n’ont jamais utilisé Saturn Cloud et pour la ressource svbox2025sdd du cours, sinon, passez à l’étape 4. Vous vous enregistrez dans le serveur Posit Connect du cours à partir d’un second mail envoyé par vos enseignants. Choisissez un mot de passe pour ce compte lorsque cela vous est demandé (et retenez-le, bien entendu, vous en aurez besoin plus tard mais ne le placez pas dans un document type Word, ou dans votre messagerie par sécurité -vous pouvez par contre, le noter sur une feuille de papier que vous conservez, ou utiliser un coffre-fort électronique comme Keeweb, ce que nous vous conseillons fortement-). Une fois dans votre compte sur le serveur, cliquez sur votre login en haut à droite de la page (1) et sélectionnez Manage Your API Keys dans le menu déroulant (2).

Cliquez sur New API Key dans la section consacrée aux API Keys.

Ensuite, entrez sdd comme nom. Cliquez sur le bouton Create Key.

Il se peut que votre mot de passe du compte vous soit demandé. Entrez-le. Enfin, dans la boite de dialogue API Key: sdd, cliquez sur le bouton Copy pour copier votre clé dans le presse-papier.

Ensuite, ouvrez la page qui permet de créer un nouveau secret dans votre compte Saturn Cloud en cliquant sur ce lien ou en naviguant vers Secrets dans le menu de gauche. Dans cette page, vous cliquez sur le bouton New en haut à droite, et vous indiquez dans Name « connect-api-key » (1) tout en vérifiant que c’est bien votre login qui est affiché dans le champ Owner. Vous collez le contenu du presse-papier dans le champ Value (2) : placez le curseur dans ce champ et utilisez le raccourci clavier Ctrl-V ou Cmd-V sous macOS, ou cliquez bouton droit et sélectionnez coller dans le menu contextuel. Ne changez surtout rien dans le champ Access : laissez « Only the owner can use this secret ». Enfin, cliquez sur le bouton Submit (3).

- Étape 4 : pour les étudiants qui suivent un cours de Science des Données à l’UMONS, une fois l’organisation EcoNum rejointe, vous pourrez récupérez la définition de votre ressource (« recipe » svbox2025sdd) ci-dessous. Cliquez sur le bouton Copier Dans le Presse-papier dans la boite rouge.
# svbox2025sdd (pour le cours SDD)
# [recipe]
schema_version: 2024.04.01
type: workspace
spec:
name: svbox2025sdd
description: SciViews Box 2025 with R 4.4.1 for the BioDataScience course at UMONS
image: community/saturncloud/saturn-r:2024.08.01
instance_type: medium
environment_variables:
LANG: fr_FR.UTF-8
R_LIBS: >-
/home/jovyan/shared/sdd/svbox2025/.R/library/4.4:/usr/local/lib/R/site-library:/usr/local/lib/R/library
TIMEOUT: '60'
working_directory: /home/jovyan/workspace
extra_packages:
apt:
install: >-
pandoc-citeproc sqlite3 optipng nano net-tools xclip libglu1-mesa-dev
libsecret-1-dev libudunits2-0 libmagick++-dev libgit2-dev libxslt1-dev
odbc-postgresql libsqliteodbc libproj-dev libgdal-dev libapparmor-dev
fonts-firacode
start_script: . /home/jovyan/shared/sdd/svbox2025/.start_script
git_repositories: []
secrets:
- location: CONNECT_API_KEY
type: environment_variable
description: Api key for Posit Connect
owner: EcoNum/phgrosjean
name: connect-api-key
- location: SCIVIEWS_CHATBOT_URL
type: environment_variable
description: URL for the SDD course chatbot
owner: EcoNum/sdd
name: sciviews-chatbot-url
- location: SDD_PASSWORD_2025
type: environment_variable
description: >-
Password to record its activity in Biological Data Science Courses at
UMONS - provided by the teacher (academic year 2025-2026)
owner: EcoNum/sdd
name: sdd-password-2025
- location: SDD_USER_2025
type: environment_variable
description: >-
Crypted string with the student identity and role copied from
https://wp.sciviews.org/saturncloud_user_config.html?configure=1
- location: EMAIL
type: environment_variable
description: >-
Institutional email like XXXXXX@umons.ac.be with XXXXXX, your UMONS id
(not needed if it is the same as your SaturnCloud email)
- location: NAME
type: environment_variable
description: >-
Student name as 'Firstname_Lastname' in case it cannot be guessed from
the login.
shared_folders:
- owner: EcoNum/sdd
path: /home/jovyan/shared/sdd/svbox2025
name: svbox2025
ide: rstudio
disk_space: 2Gi
auto_shutoff: 1 hour
start_ssh: false
use_spot_instance: false
routes:
- container_port: 8888
visibility: owner
viewers: []
Pour une ressource SaturnCloud équivalente à utiliser hors organisation EcoNum dans votre compte personnel (utilisation hors cours SDD, ou utilisateur hors UMONS), cliquez sur Copier Dans le Presse-papier dans la boite bleue svbox2025fr ci-dessous.
# svbox2025fr (hors cours SDD)
# [recipe]
schema_version: 2024.04.01
type: workspace
spec:
name: svbox2025fr
description: SciViews Box 2025 with R 4.4.1 in French
image: community/saturncloud/saturn-r:2024.08.01
instance_type: medium
environment_variables:
LANG: fr_FR.UTF-8
TIMEOUT: '60'
working_directory: /home/jovyan/workspace
extra_packages:
apt:
install: |-
pandoc-citeproc sqlite3 optipng nano net-tools xclip libglu1-mesa-dev
libsecret-1-dev libudunits2-0 libmagick++-dev libgit2-dev libxslt1-dev
odbc-postgresql libsqliteodbc libproj-dev libgdal-dev libapparmor-dev
fonts-firacode
start_script: >-
if [[ $LANG != en* ]]; then
echo "Adding locale $LANG..."
sudo locale-gen $LANG
sudo update-locale
fi
echo "Writing config file ${R_HOME}/etc/Rprofile.site..."
cat >tmp.site <<EOL
options(repos = c(
SciViews = 'https://sciviews.r-universe.dev',
CRAN = 'https://packagemanager.posit.co/cran/__linux__/jammy/2025-04-10'))
# Set user-agent from
https://docs.rstudio.com/rspm/1.1.2/admin/binaries.html
options(HTTPUserAgent = sprintf("R/%s R (%s)", getRversion(), paste(
getRversion(), R.version$platform, R.version$arch, R.version$os)))
# Make sure there is no working-dir.sh file in /etc/profile.d
try(system("sudo rm -f /etc/profile.d/working-dir.sh"), silent = TRUE)
# Make sure the personal lib, then the SciViews lib are on .libPaths()
.libPaths(c("/home/jovyan/R/x86_64-pc-linux-gnu-library/4.4",
"/usr/local/lib/R/sciviews-library"))
# The temp environment
.temp_env <- (function() {
pos <- match("SciViews:TempEnv", search())
if (is.na(pos)) {
tmp <- list()
attach_env <- function(...) get("attach", mode = "function")(...)
attach_env(tmp, name = "SciViews:TempEnv", pos = length(search()) - 1L)
rm(tmp)
pos <- match("SciViews:TempEnv", search())
}
pos.to.env(pos)
})()
# Install an activity tracker to stop the SaturnCloud machine after a
timeout
assign('saturn_timeout', function(timeout_min = NULL, verbose = TRUE) {
if (!missing(timeout_min)) {
stopifnot(is.numeric(timeout_min), length(timeout_min) == 1)
timeout_min <- as.integer(timeout_min)
writeLines(as.character(timeout_min), "/home/jovyan/.timeout")
} else {# Get current value
timeout_min <- readLines("/home/jovyan/.timeout")[1]
timeout_min <- try(as.numeric(timeout_min), silent = TRUE)
if (inherits(timeout_min, "try-error")) {
# Use default value
timeout_min <- Sys.getenv("TIMEOUT", unset = "60")
timeout_min <- try(as.numeric(timeout_min), silent = TRUE)
if (inherits(timeout_min, "try-error")) {
Sys.setenv(TIMEOUT = "60")
timeout_min <- 60
}
# Since the timeout was wrong, we reset it
writeLines(as.character(timeout_min), "/home/jovyan/.timeout")
}
}
# Set the time out
if (isTRUE(verbose)) {
msg <- paste("SaturnCloud time out is now", timeout_min, "minutes.")
timeout_def <- Sys.getenv("TIMEOUT", unset = "60")
timeout_def <- try(as.numeric(timeout_def), silent = TRUE)
if (inherits(timeout_def, "try-error"))
timeout_def <- 60
if (timeout_min < timeout_def)
msg <- paste(msg, "It will be reset to", timeout_def,
"minutes next time.")
message(msg)
}
fs::file_touch("/home/jovyan/.timeout", Sys.time() + timeout_min * 60)
invisible(timeout_min)
}, envir = .temp_env)
saturn_timeout(verbose = FALSE)
assign('.set_prompt', function(expr, value, succeeded, visible) {
timeout_min <- saturn_timeout(verbose = FALSE)
timeout_def <- Sys.getenv("TIMEOUT", unset = "60")
timeout_def <- try(as.numeric(timeout_def), silent = TRUE)
if (inherits(timeout_def, "try-error")) {
Sys.setenv(TIMEOUT = "60")
timeout_def <- 60
}
# Only display timeout if it differs from the default
if (timeout_min == timeout_def) {
timeout_msg <- ""
} else {
timeout_msg <- paste0("[", timeout_min, "min] ")
}
branch <- try(gert::git_branch(), silent = TRUE)
if (inherits(branch, "try-error")) {
# Either not a git repo or gert is not installed (2nd is unlikely)
options(prompt = paste0(timeout_msg, "> "))
} else {
to_commit <- NROW(gert::git_status()) != 0
if (to_commit) {
options(prompt = paste0(timeout_msg, branch, "* > "))
} else {
options(prompt = paste0(timeout_msg, branch, " > "))
}
}
# Make sure timeouts <= timeout_def are transients
if (timeout_min < timeout_def) {
writeLines(as.character(timeout_def), "/home/jovyan/.timeout")
fs::file_touch("/home/jovyan/.timeout", Sys.time() + timeout_min * 60)
}
TRUE
}, envir = .temp_env)
invisible(addTaskCallback(.set_prompt, name = "saturn_track_activity"))
# Change the prompt right now
invisible(.set_prompt())
# Reset timeout on activity, that is: save a file or knit a document
later::later(function() {
if (rstudioapi::isAvailable() &&
!exists('.handle_saveSourceDoc', envir = .temp_env, inherits = FALSE)) {
assign('.handle_saveSourceDoc',
rstudioapi::registerCommandCallback("saveSourceDoc",
function() saturn_timeout(verbose = FALSE)),
envir = .temp_env)
}
}, 5)
later::later(function() {
if (rstudioapi::isAvailable() &&
!exists('.handle_knitDocument', envir = .temp_env, inherits = FALSE)) {
assign('.handle_knitDocument',
rstudioapi::registerCommandCallback("knitDocument",
function() saturn_timeout(verbose = FALSE)),
envir = .temp_env)
}
}, 5)
# Check the currently edited document
# If it is outside the repo & not in a BioDataScience-Course project -> nag
# otherwise (outside only) display a one time message
assign('.test_doc', function() {
if (!rstudioapi::isAvailable())
return()
# Check if timeout is close (note, display warning only once)
timeout <- file.mtime("/home/jovyan/.timeout")
cur_time_5min <- Sys.time() + 5 * 60
will_stop_5min <- try(cur_time_5min > timeout - 5 &&
cur_time_5min <= timeout + 5, silent = TRUE)
if (isTRUE(will_stop_5min)) {
rstudioapi::showDialog("Machine consid\u00e9r\u00e9e inactive",
paste0("<b>Attention:</b> sans r\u00e9action de votre part, la machine ",
"va bient\u00f4t s'\u00e9teindre automatiquement. Souhaitez-vous ",
"la maintenir active <i>(cliquez OK) ?</i>"))
saturn_timeout(verbose = FALSE)
}
later::later(.test_doc, 10)
return()
})
# Function to kill the virtual machine from within R
assign('.saturn_cloud_shutdown', function() {
message("Shutting down the SaturnCloud machine (you have to restart it to continue using it)...")
saturn_timeout(0, verbose = FALSE)
}, envir = .temp_env)
# Hook it up to quitSession
later::later(function() {
if (rstudioapi::isAvailable() &&
!exists('.handle_quitSession', envir = .temp_env, inherits = FALSE)) {
assign('.handle_quitSession',
rstudioapi::registerCommandCallback("quitSession", .saturn_cloud_shutdown),
envir = .temp_env)
}
}, 5)
# Do we want R in another language?
if (Sys.getenv("LANG", unset = "en") != "en")
try(Sys.setLanguage(Sys.getenv("LANG")), silent = TRUE)
# Keep a permanent track of our temporary environment... in itself
.temp_env$.temp_env <- .temp_env
rm(.temp_env)
EOL
R_HOME=$(Rscript --vanilla -e "cat(Sys.getenv('R_HOME'))")
RPROFILE_LOCATION=${R_HOME}/etc/Rprofile.site
sudo mv tmp.site ${RPROFILE_LOCATION}
sudo rm -f /etc/R/Rprofile.site
echo "Configuring git (pull rebase -> false)..."
# TODO: set email from EMAIL if provided?
git config --global pull.rebase false
echo "Installing SciViews and user libraries for R..."
mkdir -p /home/jovyan/R/x86_64-pc-linux-gnu-library/4.4
sudo mkdir -p /usr/local/lib/R/sciviews-library
sudo chown -R jovyan:jovyan /usr/local/lib/R/sciviews-library
if [ ! -d ~/shared/sdd/svbox2025/.R/library/4.4 ]; then
echo "Downloading and installing R packages for SciViews..."
mkdir -p ~/shared/sdd/svbox2025/.R/library
cd ~/shared/sdd/svbox2025/.R/library
curl -o ~/shared/sdd/svbox2025/.R/library/packages.tar.xz "https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/sciviews-library2025_saturn.tar.xz"
tar -xf ~/shared/sdd/svbox2025/.R/library/packages.tar.xz
rm ~/shared/sdd/svbox2025/.R/library/packages.tar.xz
cd -
fi
echo "Linking R packages for SciViews..."
if [ -d ~/shared/sdd/svbox2025/.R/library/4.4 ]; then
sudo ln -s /home/jovyan/shared/sdd/svbox2025/.R/library/4.4/*
/usr/local/lib/R/sciviews-library
fi
echo "Configuring RStudio..."
if [ ! -f
/home/jovyan/.config/rstudio/dictionaries/languages-system/fr_FR.dic ]; then
mkdir -p /home/jovyan/.config/rstudio/dictionaries/languages-system
cd /home/jovyan/.config/rstudio/dictionaries/languages-system
curl -o fr_dic.tar.gz
"https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/fr_dic.tar.gz"
tar xf fr_dic.tar.gz
rm -rf ._* # Just in case there are such files... (e.g., when compressed in
macOS)
rm fr_dic.tar.gz
cd -
fi
if [ ! -f /home/jovyan/.config/rstudio/snippets/r.snippets ]; then
mkdir -p /home/jovyan/.config/rstudio/snippets
if [[ $LANG = fr* ]]; then
curl -o /home/jovyan/.config/rstudio/rstudio-prefs.json
"https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/rstudio-prefs-fr.json"
else
curl -o /home/jovyan/.config/rstudio/rstudio-prefs.json "https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/rstudio-prefs.json"
fi
curl -o /home/jovyan/.config/rstudio/snippets/r.snippets
"https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/r.snippets"
fi
# Make extra fonts available to RStudio
sudo ln -s /usr/share/fonts/truetype/firacode /etc/rstudio/fonts/FiraCode
export SDD_PASSWORD_2025=$(Rscript -e
"cat(learnitdown::encrypt(Sys.getenv('SDD_PASSWORD_2025'),
Sys.getenv('SATURN_TOKEN'), base64 = TRUE, url.encode = TRUE))")
echo "Installing tinytex files..."
if [ ! -d /home/jovyan/.TinyTeX ]; then
if [ -f /home/jovyan/shared/sdd/svbox2025/.config/tinytex.tar.gz ]; then
cp /home/jovyan/shared/sdd/svbox2025/.config/tinytex.tar.gz
/home/jovyan/tinytex.tar.gz
else
curl -o /home/jovyan/tinytex.tar.gz "https://filedn.com/lzGVgfOGxb6mHFQcRn9ueUb/svbox2025/files/tinytex.tar.gz"
fi
cd /home/jovyan
tar xf tinytex.tar.gz
rm tinytex.tar.gz
mkdir -p /home/jovyan/.local/bin
ln -sf /home/jovyan/.TinyTeX/bin/x86_64-linux/* /home/jovyan/.local/bin
cd -
fi
echo "Installing an activity timeout checker..."
[ -n "$TIMEOUT" ] || export TIMEOUT=60
echo "$TIMEOUT" > /home/jovyan/.timeout
if [ ! -f /etc/profile.d/sciviews.sh ]; then
cat >tmp.sh <<EOL
function saturn_timeout() {
if [ -z "\$1" ]; then
# No new timeout provided
timeout_min=\$(cat /home/jovyan/.timeout)
else
# A new number is provided
if [[ \$1 =~ ^[0-9]+\$ ]]; then
timeout_min=\$1
echo "\$1" > /home/jovyan/.timeout
else
echo "Error: timeout is not a nul or positive integer"
return 1
fi
fi
echo "SaturnCloud time out is now \${timeout_min} minutes."
touch /home/jovyan/.timeout -d"\${timeout_min}min"
}
export -f saturn_timeout
PROMPT_COMMAND='touch /home/jovyan/.timeout -d"+\$(cat
/home/jovyan/.timeout)min" &>/dev/null;echo -ne "\033]0;\${PWD/#\${HOME}/~}
- \${SATURN_USER}@\${SATURN_PROJECT_NAME}\007\e[0;35m"'
PS0='\$(touch /home/jovyan/.timeout -d"+\$(cat /home/jovyan/.timeout)min"
&>/dev/null)\e[0m'
PS1='[\$(cat /home/jovyan/.timeout)min]\
\$(git branch &>/dev/null; if [ \$? -eq 0 ]; then \
echo " \$(git branch | grep ^* | sed s/\*\ //)\
\$(echo \`git status\` | grep "nothing to commit" > /dev/null 2>&1; if [
"\$?" -ne "0" ]; then \
echo "* \\\$ "; else echo " \\\$ "; fi)"; else echo " \\\$ "; fi)'
touch /home/jovyan/.timeout -d"+\$(cat /home/jovyan/.timeout)min"
&>/dev/null
echo -ne "\033]0;\${PWD/#${HOME}/~} -
\${SATURN_USER}@\${SATURN_PROJECT_NAME}\007\e[0;35m"
EOL
# Note unreadable for the Vibrant Ink and Idle Fingers RStudio themes
# but OK for the other themes
sudo mv tmp.sh /etc/profile.d/sciviews.sh
fi
# Also inactivate the forcing to workspace as initial dir
#if [ -f /etc/profile.d/working-dir.sh ]; then
sudo rm -f /etc/profile.d/working-dir.sh
#sudo touch /etc/profile.d/working-dir.sh
#fi
cat >tmp.sh <<EOL
#!/bin/sh
[ -n "\$TIMEOUT" ] || export TIMEOUT=60
while sleep 1m; do
if [ ! -f /home/jovyan/.timeout ]; then
echo "\$TIMEOUT" > /home/jovyan/.timeout
touch /home/jovyan/.timeout -d"\$TIMEOUT+min"
fi
touch /home/jovyan/.timeout_check
if [ /home/jovyan/.timeout -ot /home/jovyan/.timeout_check ]; then
echo "Closing the machine with $BASE_URL/api/jupyter_servers/$(echo
$HOSTNAME | awk -F'-' '{print $4}')/stop"
curl -s -X POST -H "Authorization: token $SATURN_TOKEN"
"$BASE_URL/api/jupyter_servers/$(echo $HOSTNAME | awk -F'-' '{print
$4}')/stop"
fi
done
EOL
sudo mv tmp.sh /home/jovyan/.local/bin/check_timeout
sudo chmod +x /home/jovyan/.local/bin/check_timeout
/home/jovyan/.local/bin/check_timeout &
git_repositories: []
secrets: []
shared_folders: []
ide: rstudio
disk_space: 10Gi
auto_shutoff: 1 hour
start_ssh: false
use_spot_instance: false
routes:
- container_port: 8888
visibility: owner
viewers: []
Allez maintenant à Compute Resources en naviguant vers ce lien ou en cliquant dans le menu de gauche (1), puis cliquez sur New R Server (2).

La boite de création de la ressource s’ouvre. Cliquez sur Use a recipe.

Collez le contenu du presse-papier dans la zone Recipe (1). Sélectionnez votre login pour Owner (2) et nommez votre ressource (3). Si vous suivez le cours 1, 2, 3 ou 4 de science des données à l’UMONS, indiquez ce nombre à la fin du nom de la machine avant de cliquer sur Submit (par exemple, si vous êtes étudiant•e en Bab3 et que votre cours est « Science des données II : modélisation », vous indiquez comme nom de machine svbox2025sdd2, c’est important pour un bon enregistrement de votre activité dans R/RStudio). Pour les autre, nommez votre ressource comme vous voulez. Cliquez enfin sur Submit (4).

- Étape 5: nous allons maintenant configurer quelques éléments dans notre ressource. Dans la page de la ressource qui s’est ouverte à sa création, sélectionnez l’onglet Manage.

Descendez jusqu’à la boîte API Token et cliquez sur Edit.

Dans Edit Resource Token, faites glisser le curseur vers la gauche pour qu’il soit indiqué « Unscoped tokens… ». C’est important pour arriver à fermer votre machine proprement en cas de non utilisation. Cliquez sur Submit.

Uniquement pour les étudiants suivant un cours de Science des données à l’UMONS, vérifiez que vos secrets sont bien attachés à la ressource. Cliquez sur l’onglet Secrets and Roles.

Dans cette section, vérifiez que CONNECT_API_KEY, SCIVIEWS_CHATBOT_URL et SDD_PASSWORD_2025 sont bien associés à des secrets (les trois autres n’en ont pas, et c’est normal). En cas de divergence, appelez un enseignant pour qu’il contrôle avec vous.

Voilà, vous avez installé la machine qui servira à faire les exercices du cours et vous avez créé et lié les différents comptes requis pour vos travaux. Vous pouvez refermer les fenêtre et les onglets qui ont été ouverts lors de ces différentes manipulations. Testez le bon fonctionnement de votre machine Saturn Cloud en suivant les instructions à la section suivante.
Utilisation d’une ressource Saturn Cloud
Rejoignez la page Resources de votre compte Saturn Cloud en naviguant vers https://app.community.saturnenterprise.io/dash/o/EcoNum/resources. Sélectionnez svbox2024sdd(1|2|3|4) ou svbox2023fr en cliquant sur son lien.

- Cliquez sur le gros bouton vert Start. Une barre de progression apparait. Le processus peut prendre 10 à 15 min la première fois, mais il devrait se faire plus rapidement (quelques minutes tout de même) les fois suivantes.


- Quand votre machine est prête, un rectangle vert Running apparaît en dessous de R Server et un gros bouton gris R Server a remplacé la barre de progression. Cliquez sur ce bouton R Server pour accéder à votre logiciel. Une nouvelle page s’ouvre avec l’interface de RStudio. Votre machine virtuelle est opérationnelle. Bon travail !


Pour refermer une machine Saturn Cloud lorsque vous avez fini, vous pouvez cliquer sur le bouton On/OFF orange en haut à droite de la fenêtre de RStudio (indiqué par une flèche rouge dans la copie d’écran ci-dessous). Une boite de fin de session R s’affiche. La machine se ferme dans les deux ou trois minutes qui suivent. Pour plus de sécurité, vous pouvez aussi cliquer sur le bouton rouge Stop directement dans l’interface Saturn Cloud.


Pensez bien à refermer votre machine virtuelle quand vous avez terminé d’utiliser le logiciel. Sinon, elle continuera de fonctionner pendant encore une heure avant d’être fermée automatiquement… mais cela fera une heure de perdu inutilement soit dans votre compte personnel, soit dans celui du service EcoNum (où les ressources sont payantes à l’heure d’utilisation). C’est l’Université qui paye, mais autant être parcimonieux pour ne pas dépenser inutilement !
Identité dans svbox2025sdd pour le cours
Ceci concerne uniquement les étudiants UMONS qui suivent un des cours de science des données, et uniquement pour la ressource svbox2025sdd(1|2|3|4) de l’organisation EcoNum, pas svbox2024fr dans le compte personnel. Pour vérifier si votre identité dans RStudio est la bonne, vous avez un « addin » qui vous permet de la visualiser. Déroulez le menu du bouton Addins et sélectionnez User info dans la section BioDataScience. Votre identité telle qu’elle est reconnue dans RStudio s’affiche dans l’onglet Console.

Si votre identité ne s’affiche pas ou est incorrecte, voyez avec vos enseignants pour la corriger. Notez que votre identité n’est pas reconnue au premier démarrage de svbox2024sdd(1|2|3|4). C’est normal. Fermez la machine et redémarrez-là une seconde fois. Cela devrait être correct à présent.
Si le cours renseigné n’est pas le bon, vous avez peut-être oublié de changer le nom de la machine comme expliqué dans la partie création de la ressource. Faites appel à un de vos enseignants pour effectuer la correction.
En cas de problème non résolu, une identification alternative sur base d’un « hash »-code fourni par cette page est possible. La procédure n’est pas détaillée ici : c’est uniquement vos professeurs qui décideront si c’est nécessaire de l’utiliser et qui effectueront alors l’opération pour vous.
Si vous avez encore une SciViews Box 2024, vous n’en aurez plus besoin, vous pouvez l’effacer après avoir vérifié qu’elle ne contient pas de données importantes non sauvegardées (dans la page de la ressource : onglet Manage, puis tout en bas de page, bouton Delete).
Installer la SciViews Box 2025 en mode natif
Pour un usage pendant un cours de Science des données à l’UMONS, nous utiliserons toujours la ressource dédiée Saturn Cloud svbox2025sdd. Dans un contexte différent, et pour utiliser SciViews::R et tous les packages R utiles qui l’accompagnent, voici une procédure simple pour l’installer en mode natif sur votre ordinateur sous Windows 11, ou macOS avec processeur Silicon ou Intel.
- Installez R version 4.4.3 sur votre ordinateur (il faut absolument une version comprise entre 4.4.0 et 4.4.3 pour la SciViews Box 2025, utilisez éventuellement rig pour gérer plusieurs versions simultanées de R si nécessaire). Les utilisateurs de Windows pourront charger l’installeur R-4.4.3-win.exe à partir d’ici. Les utilisateurs de Mac récents avec processeur Silicon M1, 2, 3, 4,… trouveront l’installeur R-4.4.3-arm64.pkg ici. Pour ceux qui utilisent un ancien Mac avec processeur Intel, ils trouveront l’installeur R-4.4.3-x86_64.pkg ici.
- Installez la dernière version de RStudio Desktop à partir d’ici si vous voulez la même interface que celle du cours. Sinon, vous pouvez utiliser bien sûr aussi Positron, Visual Studio Code, ou tout autre IDE (la SciViews Box est indépendante de l’IDE et ne dépend que de R).
- Démarrez RStudio ou votre IDE préféré et entrez ceci dans la console R :
source("https://go.sciviews.org/svbox2025")
Les packages R nécessaires (il y en a plusieurs centaines !) se téléchargent et s’installent et R est reconfiguré… soyez patient. Répondez « yes » lorsque l’on vous demande si vous voulez rendre la SciViews Box permanente. Ensuite, vous entrez SciViews::R
comme première instruction dans vos scripts ou vos documents Quarto ou R Markdown pour configurer votre session R au dialecte SciViews. C’est fait !
Pour installer des anciennes versions de la SciViews Box, voyez le dépôt GitHub SciViews/svbox.
Installation des packages R BioDataScience du cours
Uniquement si vous avez installé la ressource svbox2025fr ou la SciViews Box en mode natif, vous devez encore installer les packages relatifs au cours (les étudiants UMONS ne doivent donc pas faire ceci) ! Dans la console R, entrez ceci :
remotes::install_github("BioDataScience-Course/BioDataScience")
remotes::install_github("BioDataScience-Course/BioDataScience1")
remotes::install_github("BioDataScience-Course/BioDataScience2")
remotes::install_github("BioDataScience-Course/BioDataScience3")
Ceci ne fonctionnera que si vous avez correctement installé la SciViews Box dans R auparavant. Les learnrs et les apps Shiny du cours sont à présent disponibles (voyez l’onglet Tutorials dans RStudio, ainsi que les Addins/Extensions pour y accéder). Votre activité ne sera pas enregistrée, bien entendu (l’enregistrement de l’activité dans les exercices ne concerne que les étudiants inscrits à l’UMONS et uniquement avec la ressource svbox202sdd dans Saturn Cloud, rappelons-le).