Quantcast
Channel: Archives des Didacticiel - Bioinfo-fr.net
Viewing all 68 articles
Browse latest View live

Organiser une conférence en ligne : trucs et astuces

$
0
0
Télétravail et visioconférence, notre nouveau quotidien (source: pixabay)

Organiser une conférence est complexe. Mais organiser une conférence en ligne... c'est TRÈS complexe. Si l'ordinateur qui diffuse la conférence plante... comment prévenir l'audience ? La moindre erreur technique fait d'avantage peur car il devient plus difficile de rebondir et d’expliquer l'issue à la 'salle'. Aujourd'hui je vous propose un partage de toutes les stratégies envisagées pour l'organisation de Meet-4EU+. Voyons donc deux stratégies gagnantes pour organiser une conférence en ligne.

Avant d'aller plus loin dans cet article je tiens à remercier l'association E-bigo de Rennes à qui j'ai largement piqué les astuces que je vous explique aujourd’hui !

Les questions à se poser avant tout

Combien d'organisateurs êtes vous ? Plus vous êtes nombreux et bien organisés dans l'équipe plus il se sera possible d'envisager une gestion lourde.

Avez vous l'habitude des streams Youtube ? de Discord ? OBS ? Zoom ? Bien souvent utiliser l'outil que vous connaissez déjà évite les mauvaises surprises. Mieux vaut faire simple sur ce que vous connaissez que de se lancer sur plusieurs inconnues techniques qui pourront réserver des surprises.

Avez-vous un assez bon débit internet pour diffuser en direct ? Si non, mieux vaut éviter les streams en direct et préférer un Zoom/Teams ou un Discord !

Combien de participants espérez-vous ? Si plus de 100 il faudra peut-être investir dans un abonnement particulier (Zoom demande un compte spécial pour plus de 100 participants).

Vos présentateurs acceptent-ils le direct ? Soyez prudent et anticipez cette question. Il est impératif d'envoyer les autorisations de stream en direct public une bonne semaine en avance pour être sûr d'avoir tout le monde et bien prévenir tout le monde que c'est en direct ou que ce sera enregistré et mis sur une plateforme.

Stratégie 1 : Le Zoom de groupe

Quand votre équipe technique est en faible nombre (3-4) ou que vos compétences techniques sont limitées, la solution la plus commune reste un bon vieux Zoom de groupe pour la journée. Quelques points importants à regarder pour choisir cette solution.

Combien de participants à la conférence ? Regarder la taille de votre abonnement en fonction.

L'identifiant de la réunion est-il le bon ? Petite anecdote personnelle où nous avions partagé le mauvais identifiant de réunion pour une conférence et donc dû la re-paramétrer le matin même...

Bien paramétrer le Zoom : Voici les paramètres important à regarder pour une conférence en ligne fluide à mon sens. Couper le micro de tout le monde par défaut en arrivant sur la réunion, la webcam aussi. Autoriser le partage d'écran à tous. Choisir si les gens peuvent entrer avec ou sans autorisation de l'hôte.

Enregistrement ou non ? Détail un peu innocent, mais une vidéo prend de la place, s'assurer la veille d'avoir de la place sur son disque dur pour l'enregistrement est pas un mal, j'ai failli perdre un cours comme ça (oups ?).

Les avantages de cette solution : Assez facile à la mise en place, tout le monde connais l'outil ou presque après une année de galère et donc le minimum de soucis technique en échange d'une conférence privée efficace. Malheureusement la conférence sera peu accessible au public et il faudra ensuite éventuellement poser les vidéos quelque part pour les gens ayant loupé le direct.

Stratégie 2 : Le stream Youtube/Facebook

Si jamais vous voulez faire du direct, la logistique à mettre en place est plus compliquée et demande une équipe soudée et bien organisée. Pour cela un noyau de 5/6 personnes habituées me semble absolument indispensable. Il vous faudra alors 3 outils : un canal pour faire la vidéo, un outil pour l'envoyer en ligne et enfin une plateforme d'hébergement en direct type Youtube. Pour cela voici les possibilités conseillées par les copains de E-bigo.

Le canal pour faire la vidéo : Zoom ou Discord sont les deux meilleurs candidats pour cela. Si vous voulez que tout le monde puisse poser des questions Zoom à un coté pratique avec tout le monde au même endroit. Si Discord il y aura alors un petit salon vocal enregistré en ligne avec une vingtaine d'élus. Les autres participants de la journée seront alors sur Youtube. Il faudra alors plusieurs personnes pour relayer les questions. Cette seconde option a un coté pratique pour les évènements avec beaucoup de participants mais demande beaucoup plus de logistique et de mise en place. Tout dépend de votre capacité.

Un outil pour l'envoie en ligne du flux vidéo : les candidats pour faire cette opération sont nombreux mais beaucoup de gens convergent vers OBS. Ce petit outil est un véritable chef d'orchestre virtuel. Vous devez créer des scènes dans lesquelles mettre l'audio et la vidéo arrivant à votre PC et l'envoyer à Youtube/Facebook. L'avantage de ce type d'outil est qu'il facilite la mise en place du canal entre votre machine et ces plateformes en ligne. Il vous reste alors à bien le paramétrer (créer des transitions entre les intervenants) et se former à ces pratiques du direct un peu technique au premier abord. A noter qu'un logiciel comme celui-là demande un minimum de capacité numérique, un bon PC est donc fortement recommandé.

Un diffuseurs de vidéo en ligne : Youtube ou Facebook ou Twitch ou équivalent tel que notre bon vieux Dailymotion. Tout dépend de vos habitudes humaines. A noter que Twitch est très sélectif et demande une certaine activité pour faire un stream en haute qualité donc.. ne sera pas la bonne option pour vous. Youtube ou Dailymotion sont alors les deux meilleurs candidats pour un maximum de simplicité.

Voila, avec tout cela, vous pouvez passer à l'aire des conférences en ligne et savoir comment vous lancer !

Les avantages de cette solution : professionnelle, offre le plus d'option de présentation après un lourd cap technique à surmonter. Les vidéos sont mises sur l’hébergeur directement et donc peu d'effort à faire après la conférence. Demande une équipe technique et un peu plus de matériel mais rend l'ensemble plus accessible au grand public.

Les liens vers toutes les technos que je cite :

Je ne cite pas tout dans l'article juste des solutions simples et connues que je résume ici.

Pour créer des réunions de groupes : Zoom / Discord / Teams

Pour enregistrer les flux vidéo de votre PC : OBS studio, avec le tutos ici.

Pour diffuser le stream : Youtube / Dailymotion / Facebook

Merci aux relecteurs de la semaine : Guillaume Devailly, Zazo0o et Yoann M (deux de mes trois admins préférés hihihi).

Ps : je le jure, la capture d'écran sous mac ne vient pas de mon ordinateur.

Des bisous!

L’article Organiser une conférence en ligne : trucs et astuces est apparu en premier sur blog bioinformatique communautaire scientifique.


Installer JupyterHub pour des Notebooks hébergés sur votre serveur

$
0
0

Vous connaissez sans doute déjà les notebooks Jupyter [1], ces documents web où l'on peut rédiger du contenu en Markdown, pouvant contenir des formules mathématiques en LaTeX, mêlées à des cellules de code Python, (ou R, Julia etc.) que l'on peut exécuter au cas par cas de façon interactive. Ils sont pas mal utilisés en data science pour explorer un jeu de données où créer un modèle de machine learning progressivement, par exemple.

Il existe de nombreux outils en ligne comme Google Colab, Kaggle, CoCalc ou encore Binder qui implémentent leur versions de Jupyter.

Installer JupyterHub sur votre serveur rendra vos notebooks accessibles aux gens avec qui vous travaillez et vous permettra d'avoir un accès complet sur les paramètres. Cela sera peut être l'occasion de convaincre votre labo ou votre université d'en créer une instance ouverte à tous (étudiants compris ;-).

Comment Installer JupyterHub ?

Il y a différentes façons d'installer JupyterHub sur votre serveur, j'ai choisi une façon relativement standard, mais si cela ne vous convient pas n'hésitez surtout pas à aller voir la documentation de JupyterHub [3] pour vous renseigner davantage.

On distingue deux techniques légèrement différentes, suivant le gestionnaire de paquets python que vous utilisez : Anaconda ou pip.

Pour la présente démonstration, j'ai choisi une installation sur Debian. Il vous faudra adapter les commandes en fonction de l'OS, ou de la distribution que vous avez sous la main...

Les droits administrateur sur la machine sont requis pour installer JupyterHub.

Anaconda

Pour installer Anaconda3 [2], entrez les commandes suivantes dans votre terminal:

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
sudo bash Anaconda3-2020.11-Linux-x86_64.sh

Préférez une installation globale dans /opt/anaconda3 pour qu'il n'y ait pas de problème de droit (ce qui peut arriver avec l'option par défaut /root/anaconda3).

conda install -c conda-forge jupyterhub  # installe jupyterhub et le proxy nodejs http
conda install notebook  # utile si vous lancez des notebooks en local

Pip

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash # installe le gestionnaire de version de nodejs
sudo nvm install v12.0.0 # choisir une version qui va bien...
sudo apt install npm # installe le gestionnaire de packet de nodejs
sudo python3 -m pip install jupyterhub
sudo npm install -g configurable-http-proxy
sudo python3 -m pip install notebook # utile si vous lancez des notebooks en local

Comment créer le fichier de configuration jupyterhub_config.py ?

Dans tous les cas, générez le fichier de configuration dans /etc/jupyterhub en entrant les commandes suivante dans le terminal:

sudo mkdir /etc/jupyterhub
cd /etc/jupyterhub
sudo jupyterhub --generate-config

Comment gérér JupyterHub à l'aide d'un service Systemd ?

Pareillement, le service diffère suivant la procédure que vous avez menée jusqu'alors.

Pour éditer le fichier de configuration du service, tapez la commande suivante (pour les fan de Vim 😉 )

sudo vim /etc/systemd/system/jupyterhub.service

Puis copiez l'une de configurations suivantes, en fonction de votre installation.

Anaconda

[Unit]
Description=Jupyterhub
After=syslog.target network.target

[Service]
User=root
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/anaconda3/bin"
ExecStart=/opt/anaconda3/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py

[Install]
WantedBy=multi-user.target

Pip

[Unit] 
Description=Jupyterhub
After=multi-user.target  
[Service] 
User=root 
ExecStart=/usr/local/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
Restart=on-failure  
[Install] 
WantedBy=multi-user.target

Comment lancer le service Systemd ?

sudo systemctl daemon-reload # recharge les services disponibles après leur édition
sudo systemctl start jupyterhub.service # lance le service jupyterhub
sudo systemctl enable --now jupyterhub.service # ajoute le service jupyterhub aux applications se lançant au démarrage du serveur et lance le service
systemctl status jupyterhub.service # Vérifie que le service s'est bien lancé et qu'il est actif

Comment installer et configurer un serveur proxy HTTP avec Nginx ?

Pour accéder au notebooks depuis une URL spécifique, il vous faudra enregistrer un nouveau nom de domaine, ou de sous-domaine chez votre registrar, et configurer votre serveur pour renvoyer cette adresse vers le port où écoute JupyterHub.

sudo apt install -y nginx
sudo systemctl enable --now nginx
sudo vim /etc/nginx/sites-available/jupyterhub.example.com.conf

Contenu du fichier de configuration du serveur:

# top-level http config for websocket headers
# If Upgrade is defined, Connection = upgrade
# If Upgrade is empty, Connection = close
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# HTTP server to redirect all 80 traffic to SSL/HTTPS
server {
    listen 80;
    server_name HUB.DOMAIN.TLD;

    # Tell all requests to port 80 to be 302 redirected to HTTPS
    return 302 https://$host$request_uri;
}

# HTTPS server to handle JupyterHub
server {
    listen 443;
    ssl on;

    server_name HUB.DOMAIN.TLD;

    ssl_certificate /etc/letsencrypt/live/HUB.DOMAIN.TLD/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/HUB.DOMAIN.TLD/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;

    # Managing literal requests to the JupyterHub front end
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # websocket headers
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Scheme $scheme;

        proxy_buffering off;
    }

    # Managing requests to verify letsencrypt host
    location ~ /.well-known {
        allow all;
    }
}

N'oubliez pas de remplacer 'HUB.DOMAIN.TLD' par le nom de domaine que vous avez enregistrer dans votre DNS, et qui pointe vers l'IP publique du serveur, par exemple dans mon cas, c'est hub.ortion.xyz.

Si vous préférez utiliser Apache, allez voir la configuration recommandée sur la doc de jupyterhub [4].

Comment générer les certificat SSL avec Letsencrypt ?

sudo add-apt-repository ppa:certbot/certbot # ajoute le dépôt PPA de certbot
sudo apt-get install certbot
sudo systemctl stop nginx
certbot certonly --standalone # génère les certificats; nginx ne doit pas fonctionner en parallèle

Relancer Nginx

sudo systemctl restart nginx

Et voilà, normalement, si tout s'est déroulé comme prévu vous pouvez dorénavant accéder à votre serveur JupyterHub via le domaine que vous avez spécifié avec Nginx, ou via http://localhost:8000 si vous êtes en local, et commencer à créer des cellules et coder dans vos notebooks.

Les identifiants de connection sont ceux des utilisateurs UNIX de votre serveur.

Notebook Jupyter pour la classification de photos d'oiseaux sur mon serveur hub.ortion.xyz

Si l'installation s'est mal passée et que vous n'arrivez pas à cette page, n'hésitez pas à demander du support sur le forum de JupyterHub [5].

Bonus : Comment installer le Kernel R - IRKernel ?

Pour exécuter du code R dans vos notebooks, il faut installer le Kernel R.

Il faut installer une version de R >= 3.5.0 pour le paquet pbdZMQ.

sudo apt install -y r-base
sudo apt install -y libssl-dev # requis pour installer dev-tools
R # lance l'interpréteur de commande R

Si vous travailler avec Anaconda, il est peut être plus simple d'installer R avec la commande suivante: (qui installe la version 3.5.1)

conda install -c r r
R
install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()  # pour enregistrer le Kernel R dans l'installation actuelle de R

Pour plus de détail rendez vous sur la doc de IRKernel [6] .

sudo systemctl restart jupyterhub

Rendez vous sur la liste complète des Kernels disponibles sur Jupyter [7] pour voir l’étendue des possibilités.

Nota bene

Malheureusement, JupyterHub ne permet pas l'édition collaborative en simultané des notebooks. Cette fonctionnalité est encore en développement.

Pour accéder à cette fonctionnalité, il faudra plutôt se diriger vers une solution alternative telle que CoCalc.

J'ai installé Open CoCalc sur le serveur de Liness, (Linux Essonne, un GULL -- Groupe d'Utilisateurs de Logiciels Libres), et ça marche bien [8]. Il y a même un éditeur de document LaTeX intégré ainsi que de nombreux langages de programmations supportés par défaut.

Merci beaucoup aux relecteurs (azerin, Olivier Dameron et Yoann M.) pour leurs avis éclairés et leur suggestions !


Références

L’article Installer JupyterHub pour des Notebooks hébergés sur votre serveur est apparu en premier sur blog bioinformatique communautaire scientifique.

Installer Overleaf pour des documents LaTeX collaboratifs sur votre serveur

$
0
0

Overleaf est le successeur de ShareLaTeX, il résulte de la fusion de l'ancienne version d'Overleaf avec ShareLaTeX.

Il permet d'éditer des documents LaTeX en collaboratif [1].

L'interface se divise en trois parties. Un bandeau pour naviguer dans les fichiers du projet, un éditeur de texte avec coloration syntaxique, et suggestion de commandes LaTeX au fur et à mesure de la saisie, et enfin, un visionneur de pdf pour voir le rendu du code source.

Comment installer Overleaf sur son serveur ?

Overleaf se présente comme un conteneur docker. Je prendrais l'exemple d'une installation sur Debian et distributions GNU/Linux dérivées avec Nginx et Systemd.

Vous pouvez retrouver la documentation de l'installation sur le dépôt GitHub du projet [2].

Comment installer le conteneur ?

Pour utiliser Overleaf, il faut installer quelques dépendances.

# Installer Docker et Docker compose
sudo apt install -y docker docker-compose
# Lancer Docker
sudo systemctl daemon reload
sudo systemctl enable --now docker.service
# Cloner le dépôt toolkit
git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
cd overleaf-toolkit
# Copier les fichiers de conf
./bin/init

Il vous faut dorénavant modifier la config dans config/variables.env et config/overleaf.rc, pour s'adapter à votre situation et personnaliser l'instance.

Parmis les paramètres important à configurer se trouvent notamment le port d'écoute d'Overleaf.
Si il y a déjà un serveur http sur votre machine, il faudra le changer, car le port 80 est déjà occupé.

# Télécharger et lancer le conteneur
./bin/up

Comment configurer le daemon systemd ?

Si la commande précédente lance overleaf correctement, il est temps de créer un service daemon systemd dans /etc/systemd/system/overleaf.service.

[Unit]
Description=Overleaf Community Edition

[Service]
User=root
WorkingDirectory=/opt/overleaf-toolkit
ExecStart=/opt/overleaf-toolkit/bin/up
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Vous pouvez désormais lancer le service avec les commandes systemctl habituelles...

systemctl daemon-reload 
# recharger les fichier de configuration précédemment édités
# deux en une: lancer le service et ajouter ce lancement au démarrage
# automatique lors des reboot
systemctl enable --now overleaf.service
# respectivement stopper, lancer ou relancer le service   
systemctl stop / start / restart overleaf.service 
# verifier l'état du service
systemctl status overleaf.service
# regarder les log émis par le service en continu (utile pour vérifier
# le bon fonctionnement du service).
journalctl -feu overleaf

Il faut dorénavant installer les paquets LaTeX, avec TeX Live.

docker exec sharelatex tlmgr update --self
# Mise à jour de texlive manager
docker exec sharelatex tlmgr install scheme-full
# Installation complète de texlive

Bon, maintenant, vous pouvez aller vous chercher un café...

... Parce qu'il y a plus de 4000 paquets à installer, et ça va prendre du temps.

Je vous conseille donc d'ouvrir un autre terminal ssh, pour qu'on avance pendant ce temps.

Comment accéder à Overleaf depuis son nom de domaine ?

En principe, vous pouvez déjà accéder à votre install' depuis http://<ADRESSE_IP_DE_VOTRE_SERVEUR>:8877, si tant est que vous ayez ouvert le port; mais vous conviendrez que ce n'est pas des plus pratiques...

Je vous conseille donc d'ajouter une entrée dans votre DNS qui pointe vers l'IP publique de votre serveur, à partir d'un sous-domaine, par exemple.

Pour que ce nom de domaine redirige vers le port d'écoute d'Overleaf, nous allons utiliser un proxy Nginx (cela fonctionne de façon similaire avec Apache2 / httpd).

Comment configurer Nginx en proxy ?

La configuration du serveur Nginx reprends le même fonctionnement que celle utilisée lors de l'install' de JupyterHub.

sudo apt install nginx
# si vous n'avez pas encore installé nginx sur votre serveur

Elle se passe dans /etc/nginx/sites-available/overleaf.conf [3].

server {
    listen 80;
    server_name sharelatextest.com;
    return 302 https://$host$request_uri;
}


server {
    listen 443 ssl;
    server_name sharelatextest.com;
    ssl_certificate /etc/letsencrypt/live/sharelatextest.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sharelatextest.com/privkey.pem;

    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;

    # used cloudflares ciphers https://github.com/cloudflare/sslconfig/blob/master/conf
    ssl_ciphers                 EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
    # to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping	
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

    server_tokens off;

    add_header X-Frame-Options SAMEORIGIN;

    add_header X-Content-Type-Options nosniff;

    client_max_body_size 50M;

    location / {
        proxy_pass http://localhost:8877; # change to whatever host/port the docker container is listening on.
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 3m;
        proxy_send_timeout 3m;
    }
}

Dans cet exemple, on a considéré que votre nom de domaine était sharelatextest.com, n'oubliez pas de modifier ce paramètre, ainsi que le port dans http://localhost:8877, si vous n'avez pas choisi le même que moi.

Dès lors, il faut faire un lien symbolique dans /etc/nginx/sites-enabled/ pour que la configuration précédente soit prise en compte:

ln -s /etc/nginx/sites-available/overleaf.conf /etc/nginx/sites-enabled/overleaf.conf

Enfin, il est nécessaire de relancer nginx, avec les commandes systemd habituelles:

nginx -t
# vérifie la syntaxe du fichier de conf.
systemctl restart nginx.service
# redémare le serveur nginx
systemctl enable --now nginx.service
# si vous voulez autorisé le démarrage automatique de nginx, 
# en même temps que le redémarrage.

Et voilà !

Rendez-vous dès maintenant sur https://sharelatextest.com/launchpad pour configurer les identifiants administrateur de votre instance, connectez-vous, et vous pouvez commencer à rédiger vos documents, et inviter vos collaborateurs à travailler avec vous ;-)...

Malheureusement les nouvelles versions d'Overleaf Community Edition n'intègrent plus le module d'inscription, ça se passe par invitation via l'interface admin. Il doit y avoir un moyen de se bricoler un formulaire, avec la ligne de commande en backend....

Bonus:

Comment installer Pygmentize pour inclure des morceaux de codes stylés ?

Dans l'instance officielle d'Overleaf [1], il est possible d'utiliser le package minted pour obtenir une coloration syntaxique du code source inclus plutôt sympathique:

\usepackage{minted}
[...]
\begin{minted}{python}
import this
\end{minted}

Il est possible, pour nous aussi, d'installer le paquets python pygmentize, pour obtenir le même résultat.

docker ps -a # retrouver le nom du conteneur
docker exec -it sharelatex sh 
# entrer dans le conteneur docker en ligne de commande
apt update
apt-get upgrade
apt-get install python3-pip
pip install pygments # installer l'outil pygmentize
# mettre à jour les paquets et installer pygmentize
vim /usr/local/texlive/2022/texmf.cnf
# ouvrir un éditeur de texte pour éditer la conf de pdflatex

Et ajouter la ligne suivante dans /usr/local/texlive/2022/texmf.cnf (dans le conteneur).

shell_escape = t

Plus qu'à relancer le service overleaf, et à vous les coloration syntaxique dans vos pdf LaTeX !

Et voilà, c'est tout pour moi ;-).
Merci beaucoup au relecteurs (ZaZo0o, Pierre Marijon, David Picard, et Yoann) pour leur conseils et suggestions !

Références

L’article Installer Overleaf pour des documents LaTeX collaboratifs sur votre serveur est apparu en premier sur blog bioinformatique communautaire scientifique.

Créer une documentation automatique avec Doxygen et Sphinx en CI/CD GitLab

$
0
0

Je me suis amusé à écrire une mini librairie C++ pour l'algèbre linéaire (matrices et vecteurs, ...) et j'ai eu envie de générer une documentation à partir du code source.

Je me suis renseigné un peu et j'ai découvert Doxygen, un outil écrit en C++ qui permet de générer de la documentation à partir des codes sources de différents langages (C++, Java, etc.).

Cela fonctionne bien, mais la sortie HTML n'est vraiment pas terrible. J'ai donc décidé, avec l'avis du forum Discord de l'association des Jeunes Bioinformaticiens de France (JeBif) de me pencher sur Sphinx, un générateur de documentation Python, qui produit des sites plus élégants.

Sphinx ne permet pas d'extraire la documentation des codes sources C++, mais génère du HTML à partir de fichiers au format ReStructuredText ou Markdown. Je continue ainsi d'utiliser Doxygen pour l'extraction des commentaires et des signatures des fonctions. Avec l'extension Breathe de Sphinx, on peut en effet extraire la documentation générée au format XML par Doxygen pour en faire un jolie petite documentation dans le style ReadTheDoc.

Prêt ? Alors c'est parti !

Comment configurer Doxygen ?

Commençons tout d'abord par installer Doxygen :

sudo apt-get install doxygen

Nous allons nous baser pour notre exemple sur un projet fictif : une classe C++ représentant un chat.

mkdir -p monprojet/include
cd monprojet/include

Créons maintenant un header C++, avec quelques blocs de commentaires :

// monprojet/include/cat.hpp

/**
 * @brief This is a cat
 */
class Cat {
public:
    Cat() {
        say("I'm a cat");
    }
    /**
     * @brief the cat is saying meow 
     */
    void meow()
    {
        say("meow");
    }

    /**
     * @brief the cat is saying something 
     * @param message the message to say
     */
    void say(const std::string& message)
    {
        std::cout << message << std::endl;
    }
};

On peut maintenant générer le fichier de configuration de doxygen à la racine du projet :

doxygen -g Doxyfile

On peut changer quelques paramètres dans ce fichier, dont notamment INPUT, le dossier où se trouve les sources, et surtout GENERATE_XML pour obtenir les fichiers xml nécessaire à Sphinx.

INPUT = "./include"

EXTRACT_ALL = YES

RECURSIVE = YES

OUTPUT_DIRECTORY  =  "./doc/"

GENERATE_XML = YES

On peut aussi désactiver les sorties HTML et LaTeX de doxygen, activées par défaut et qui ne nous sont pas utiles.

GENERATE_HTML = NO

GENERATE_LATEX = NO

Voilà, c'est fini pour la configuration du Doxyfile, maintenant, c'est au tour de Sphinx !

Comment configurer Sphinx ?

Pareillement, il faut installer Sphinx, par exemple avec le gestionnaire de paquet de votre distribution Linux (on pourrait aussi utiliser Pip):

sudo apt-get install python-sphinx

Dans le dossier du projet, on peut maintenant créer un dossier doc qui contient la configuration Sphinx et la documentation générée:

mkdir doc
cd doc

Dès lors on peut utiliser sphinx-quickstart pour générer la structure de la documentation Sphinx:

sphinx-quickstart

Il faut maintenant configurer Sphinx afin qu'il puisse importer le xml de doxygen.

En premier lieu, il faut installer Breathe, une extension qui permet justement d'importer la doc depuis les fichiers xml :

pip install breathe

Dans le fichier conf.py , on doit ajouter ces quelques lignes :

# in doc/source/conf.py
extensions = ['breathe']
breathe_projects = {'monprojet': '../xml'}
breathe_default_project = 'monprojet'

Puis, dans index.rst, on demande à Sphinx de faire le rendu de la documentation :

// in `doc/source/index.rst`
.. doxygenclass:: Cat
    :members:

Si vous appréciez le thème de ReadTheDocs, vous pouvez l'installer :

pip install sphinx_rtd_theme

et l'utiliser :

# in doc/source/conf.py
html_theme = 'sphinx_rtd_theme'

Maintenant que tout est mis en place, il est temps de générer la documentation.

Générer la doc

Dans la racine du projet, on commence par lancer doxygen :

doxygen Doxyfile

Puis on lance sphinx :

cd doc
make html

La documentation est ensuite disponible dans le dossier doc/build/html.

Voici ce que j'obtiens :

Intégration et Déploiement continus avec GitLab CI/CD

Lancer ces deux petites commandes, c'est sympa mais, si c'est à faire à chaque nouvelle version du code source, cela peut vite devenir lourd ...

C'est là qu'interviennent les pipelines CI/CD (Continuous Integration / Continuous Deployment) de GitLab : vous faites un push de vos modifications de codes sources et cela met à jour votre documentation en conséquence. Génial, non ?

Voici un exemple de .gitlab-ci.yml

image: python:3.10-alpine

docs:
  script:
  - apk update && apk add doxygen make
  - doxygen Doxyfile
  - pip install sphinx
  - pip install sphinx_rtd_theme
  - pip install breathe
  - cd docs && make html
  artifacts:
    paths:
      - ./docs/build/html
  only:
  - main

pages:
  stage: deploy
  script:
  - cp -r ./docs/build/html/* ./public/
  artifacts:
    paths:
      - public

Ainsi, la règle docs génère la documentation en utilisant la méthode présentée précédemment, et la règle pages déploie la documentation générée sur GitLab Pages (ici sur frama.io).

Bonus: Générer la documentation avec une règle Cmake

Dans le billet de blog Microsoft, la méthode présentée est intégrée au processus de build de Cmake pour le projet C++ concerné.
Voici donc une solution, si vous souhaitez que la gestion de la documentation se fasse avec le CMakeLists.txt.

Il faut commencer par créer un fichier CMakeLists.txt.
CMake est un système assez complet, et il faudrait une article dédié pour le présenter plus en détail (avis aux amateurs 😉 ), mais je vais reprendre ici un exemple simpliste de configuration, adapté à notre chère librairie féline...

cmake_minimum_required(VERSION 3.14)
project(autodoc)

set(CMAKE_CXX_STANDARD 17)

file(GLOB_RECURSE HEADERS "include/*.hpp")
file(GLOB_RECURSE SOURCES "include/*.cpp")

set(EXECUTABLE_NAME "autodoc")

add_executable(${EXECUTABLE_NAME} ${HEADERS} ${SOURCES})

install(TARGETS ${EXECUTABLE_NAME} DESTINATION bin)

#
# DOCUMENTATION
#

# Auto documentation
## Doxygen
find_program(DOXYGEN
  NAMES doxygen
  DOC "Path to doxygen executable"
)

## Sphinx
find_program(SPHINX
  NAMES sphinx-build
  DOC "Path to sphinx-build executable"
)

if(DOXYGEN AND SPHINX)
  add_custom_target(
    doc
    COMMAND ${DOXYGEN} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
    COMMAND cd docs && make html
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    COMMENT "Generating API documentation with Doxygen"
    VERBATIM
  )
endif()

La partie qui nous intéresse se situe après le "# DOCUMENTATION". On y retrouve les deux config pour les deux outils que l'on utilise. CMake commence par vérifier que les deux outils sont installés avec find_program` puis on ajoute une règle "doc" au ficher Makefile généré plus tard par CMake avec "add_custom_target".

Pour compiler tout ce beau monde, dans un dossier "build":

mkdir build
cd build
cmake ..
make # Compiler le binaire C++ si ça vous chante...
make doc # Compiler la doc avec Doxygen + Sphinx

Et voilà: vous trouverez la sortie html de Sphinx dans même dossier qu'auparavant, que vous pourrez visionner en local, ou téléverser sur le web.

Remerciements

Merci beaucoups aux relecteurs : Jonathan, Sebastien et Yoann.

Références

L’article Créer une documentation automatique avec Doxygen et Sphinx en CI/CD GitLab est apparu en premier sur blog bioinformatique communautaire scientifique.

Synchronisez vos PDF Zotero sur Android

$
0
0

Après un an d'errance, j'ai enfin réussi à synchroniser ma collection d'articles en PDF entre mon pc et ma liseuse, et surtout les annotations faites depuis ma liseuse. Bon, j'avais lâché l'affaire pendant longtemps, mais un message de @sebgra sur notre serveur Discord m'a fait remettre les mains dans le cambouis.

Comme vous le savez, Zotero est un gestionnaire de références bibliographiques libre, gratuit, et multiplate-forme. L'application pour [insérez votre OS ici] vous permet non seulement de synchroniser votre bibliothèque entre plusieurs ordinateurs, mais aussi de lire et annoter vos articles à l'aide du lecteur PDF intégré.

Capture d'écran du lecteur PDF de Zotero avec une note et du texte surligné.

Si vous êtes l'heureux possesseur d'une tablette ou tout autre liseuse basée sur Android, vous aimeriez bien pouvoir lire vos publies confortablement installé au fond d'un canapé moelleux, un train, un avion, une chaise longue… surligner et griffonner le PDF au fil de votre lecture, et retrouver vos annotations sur votre PC plus tard. Premier réflexe, on se précipite dans notre boutique d'application préféré (Google Play pour ne pas la citer), et on tape gaîment "Zotero" dans la barre de recherche. Et PAF, surprise, zéro résultat ! En effet, bien qu'il existe une application pour iOS, Zotero a abandonné le développement d'une application pour Android. Ô rage ! Ô désespoir ! Ô… Vous connaissez la suite.

Si vous vous rendez sur la page concernant les supports mobiles sur le site officiel de Zotero, vous vous verrez proposer 3 applications tierces:

  • Zoo for Zotero
  • ZotDroid
  • ZotEZ2

Il en existe encore une autre, mais qui est en fait un plugin pour votre Zotero sur ordi, pas une application mobile, je ne la décrirai pas ici.

Applications tierces

Zoo for Zotero

Zoo for Zotero est une application Android sous licence GPLv3 disponible gratuitement et sans publicité dans Google Play. Bien que son interface ne soit pas très moderne, cette application permet de parcourir votre bibliothèque, d'accéder aux métadonnées de vos articles, et de télécharger les PDF des publication pour pouvoir les lires avec le lecteur de votre tablette.

Capture d'écran de Zoo for Zotero affichant une de mes catégories de bibliographie.

ZotDroid

Ça va être court, l'application n'est plus maintenue et a été retirée de Google Play. On trouve encore en ligne le GitHub du projet, mais il n'a pas bougé depuis 6 ans, donc nous pouvons définitivement enterrer cette solution.

ZotEZ2

Tout comme Zoo for Zotero, ZotEZ2 est disponible dans Google Play et vous permet de parcourir votre bibliothèque, d'accéder aux métadonnées de vos articles, et de télécharger les PDF des publications. Par contre, cette application n'est pas libre (je n'ai pas trouvé de trace de licence sur le site officiel), et vous devrez passer à la version pro (payante) pour accéder à toutes les fonctionnalités (recherche et tri avancé des publications). Mon avis personnel: bien que l'interface semble plus moderne (quoi que) que Zoo for Zotero, la navigation entre les différentes catégories de bibliothèques n'est pas très ergonomique.

Capture d'écran de ZotEZ2 affichant la bibliographie de démonstration de l'application.

Les protocoles de synchronisation

Zotero permet de synchroniser ses bibliothèques via différentes manières. Par défaut, vos références et PDF sont synchronisées sur les serveurs Zotero, et vous avez à votre disposition un espace de stockage gratuit de 300Mb, ce qui est assez vite limitant il faut bien le dire. Si vous avez besoin de plus d'espace, il vous faudra souscrire à un abonnement allant de 20 à 120€ par an selon vos besoins en espace. À titre d'exemple, ma bibliothèque fait un peu plus de 1,400 publications, et pèse 2,7Gb, ce qui me reviendrait à 60€/an en souscrivant au plan de stockage de 6Gb. Le prix n'est pas exorbitant et permet de soutenir financièrement le développement de Zotero, mais quand on est étudiant ou CDD, il n'est pas très agréable de devoir débourser son argent personnel pour conserver ses références.

Heureusement, il existe d'autres alternatives pour pouvoir stocker sa librairies en dehors des serveurs de Zotero, notamment via WebDav (Web Distributed Authoring and Versioning). WebDav est un protocole standard qui permet d'accéder et d'éditer directement des fichiers présents sur un serveur web HTTP, un peu comme les protocoles FTP ou SMB si cela vous parle. Zotero supportant nativement ce protocole, il vous suffit d'avoir accès à un serveur web et de configurer un WebDav pour pouvoir synchroniser votre bibliographie et les PDF associés. Si vous n'avez pas accès à un tel serveur chez vous (ce qui est normal, on a pas tous un serveur dans son placard), il existe des solutions gratuites, je vous en présente une un peu plus bas.

La seconde solution, mais qui est peu recommandée, est de synchroniser uniquement les référencessur le serveur de Zotero, et de placer les fichiers PDF de Zotero dans un dossier, que vous partagez entre plusieurs de vos ordinateurs via votre service de stockage préféré (type Dropbox, NextCloud, OwnCloud, OneDrive, etc…). Pourquoi n'est-ce pas recommandé ? Bien qu'a priori cela fonctionne, vous n'êtes pas à l’abri d'une corruption de fichiers qui rendra vos PDF inaccessibles dans Zotero.

Ci-dessous, je vais vous montrer comment accéder à un serveur gratuit (2Gb d'espace de stockage gratuit), supportant WebDav, et où vous pourrez synchroniser votre bibliographie entre vos ordinateurs, mais aussi votre tablette ou liseuse Android.

Ma solution: Zoo for Zotero + Nextcloud + Webdav

L'objectif de cet article est de proposer un moyen de non seulement accéder à sa bibliographie et ses PDFs depuis un appareil Android, mais aussi de pouvoir annoter ses PDF depuis son appareil et de les synchroniser afin de pouvoir les lire une fois de retours sur un ordinateur.

Comme indiqué dans le titre, la solution qui a fonctionné pour moi repose sur la synchronisation de ma bibliothèque par WebDav sur un serveur NextCloud, et l'application Zoo for Zotero sur ma liseuse Android.

Le serveur NextCloud

Je ne possède pas de serveur dans un placard, et ça ne m'intéresse pas d'en avoir un parce que cela implique de le sécuriser correctement et de le maintenir à jour, ce qui réclame des connaissances et du temps, sans compter la facture d'électricité. En France, nous avons la chance d'avoir un vivier actif d'associations de promotion et de défense des logiciels libres très soucieuses de la vie privée. La plus connue est sûrement Framasoft, qui a lancé depuis une dizaine d'année la campagne "dégooglisons internet". Cette initiative a vu naître un réseau d'associations (les chatons) avec des infrastructures informatiques hébergeant des services libres et gratuits afin d'inciter les gens à moins dépendre des outils proposés par les GAFAM qui utilisent les données des utilisateurs à des fins commerciales.

Parmi les chatons, Zaclys propose la mise à disposition d'un espace de 2Go gratuit sur leurs serveurs NextCloud, qui est un système d'hébergement de fichiers un peu comme Dropbox, mais qui supporte les standards du web, et en l'occurrence WebDav. Pour bénéficier de cet espace, il suffit de vous créer un compte sur le site, et de réclamer votre accès dans l'interface de votre profil:

Capture d'écran montrant le menu pour accéder à son profil sur le site de Zaclys.

Une fois dans votre profil, cliquez sur l'onglet "Cloud perso", puis activez l'option cloud gratuit et générez votre mot de passe:

Capture d'écran montrant les options d'activation de l'espace gratuit.

Il vous suffit alors de vous rendre à l'adresse du cloud qui vous est donnée juste en dessous du formulaire de mot de passe, et de rentrer les identifiants. C'est tout, votre espace de 2Go est créé ! Si vous souhaitez avoir plus d'espace, vous pouvez adhérer à Zaclys pour seulement 10€ par an et ainsi obtenir un espace de 10Go.

Pour obtenir l'adresse WebDav de votre serveur, cliquez sur "Paramètres" en bas à gauche:

Capture d'écran du menu "Paramètre" de Nextcloud montrant l'adresse du WebDav.

Configuration de la synchronisation de Zotero par WebDav

Dans votre logiciel Zotero sur PC, rendez-vous dans Outils -> Préférences, onglet Synchronisation, choisissez la synchronisation par WebDav, et renseignez l'adresse et vos identifiants NextCloud:

Capture d'écran du panneau de configuration de la synchronisation de Zotero sur PC.

Vous devrez régler ces paramètres sur tous les PC que vous souhaitez synchroniser. Une fois fait, normalement votre bibliothèque ainsi que les fichiers PDF seront envoyés directement sur votre espace Nextcloud et plus sur le serveur de Zotero.

Configuration de Zoo for Zotero sur Android

Une fois que vous aurez installé Zoo for Zotero, dirigez-vous dans les paramètres, et activez l'option "Use webdav to access attachments":

Ensuite, configurez l'adresse WebDav et les identifiants de votre serveur Nextcloud, et c'est tout !

Capture d'écran de la configuration du serveur WebDav dans Zoo for Zotero.

Vous pourrez ainsi avoir accès à votre bibliographie et aux PDF depuis votre appareil Android.

Une fois le PDF d'une publie téléchargée, vous pourrez l'ouvrir avec votre lecteur PDF, dans mon cas Boox Neo Reader sur ma liseuse Boox, et l'annoter/surligner avec votre stylet:

Capture d'écran de mon lecteur PDF sur liseuse e‑Ink Boox Nova Air C (les couleurs sont cramée sur les captures d'écrans de la liseuse, je ne sais pas pourquoi).

Quand le fichier PDF est modifié, Zoo for Zotero le détecte et propose de synchroniser la nouvelle version sur votre serveur:

Capture d'écran de Zoo for Zotero ayant détecté une modification du fichier PDF d'une publication éditée sur l'appareil Android.

Et c'est ainsi que vos notes et griffonnages faits sur votre appareil vont pouvoir être accessibles une fois de retours sur votre ordinateur :

Capture d'écran du PDF synchronisé dans Zotero sur PC.

Limitation

Si vous avez l'habitude d'annoter vos publications depuis le lecteur PDF de Zotero sur PC, vous ne pourrez pas avoir accès à ces annotations depuis votre appareil Android. En effet, Zotero a fait comme choix technique de sauvegarder vos annotations dans un fichier à part du fichier PDF, et c'est un choix assumé de leur part, malgré les demandes des utilisateurs de ce que j'ai pu voir sur les forum de Zotero.…

Conclusion

Voilà j'espère que cet article vous sera aussi utile qu'il l'est pour moi. Je trouve assez étrange qu'il soit si difficile de gérer sa bibliographie depuis une tablette alors que ces appareils sont aujourd'hui très répandus.

Bonne lecture !

Je remercie Samuel Orion, azerin et Léopold Carron pour la relecture.

L’article Synchronisez vos PDF Zotero sur Android est apparu en premier sur Bioinfo-fr.net.

Coder sous Windows avec WSL2

$
0
0

Quand on n'a pas le choix que de coder sous Windows alors qu'on aimerait pouvoir coder sous Unix/Linux, peu d'offres sont disponibles pour développer dans des conditions correctes. Il y en a globalement 2 : soit on crée une machine virtuelle qui fait tourner son OS préféré (ce qui consomme pas mal de ressources du PC & de réglages en amont, et est interdit dans la plupart des entreprises), soit on utilise un outil Windows (qui jusqu'à il y a 2 ans était suffisamment peu fiable pour que je ne fasse pas d'article sur le sujet).
La bonne nouvelle c'est que Microsoft a beaucoup amélioré son outil interne, le sous-système Windows pour Linux (WSL pour les intimes, on en est à la version 2 donc WSL2) qui permet d’exécuter (en théorie) n'importe quelle distribution GNU/Linux sur Windows (comme un dualboot mais sans avoir à rebooter pour passer de l'un à l'autre), ainsi que sa documentation. Pour exemple, il y a 2 ans, j'ai mis 2 mois à avoir un environnement sans avoir de gros problèmes avec (j'avais surtout des soucis de certificats); la dernière fois que je l'ai installé, je n'ai eu aucun soucis.

Installer WSL2

Il faut avoir les droits administrateurs et une version Windows supérieur à 10 (si vous avez un OS plus vieux mettez le à jour. Non seulement c'est mieux au niveau de la sécurité, ça vous changera également la vie, WSL1 n'étant vraiment pas conseillé).

Ouvrez l'invite de commande PowerShell ou Windows en mode administrateur donc, puis lancez la commande suivante :

$ wsl --install <nom de la distribution Linux de votre choix>

Si vous n'ajoutez aucun nom de distribution, la dernière version stable d'Ubuntu sera installée. Pour vérifier les distributions officielles disponibles (pour les autres distributions, il faudra suivre la documentation officielle Microsoft), tapez cette ligne dans l'invite de commande :

$ wsl --list --online

Lorsque l'installation est finie, redémarrez votre ordinateur. WSL2 est installé et prêt à l'emploi. Pour vérifier qu'il est bien installé vous pouvez ouvrir le command prompt (via le raccourcis clavier windows‑R, tapez cmd et la touche enter) et lancer la commande wsl. Vous devriez voir une ligne de prompt différente. Pour savoir quelle version d'OS est installée, tapez cette commande (vous trouverez mes résultats actuels comme exemple) :

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Vous pourrez tout de même constater qu'il s'agit de WSL2 via la commande uname -r.

Le terminal fonctionne exactement comme un terminal de la distribution choisie, il est donc approprié de le customiser selon vos habitudes.

Si vous avez besoin d'utiliser des applications graphiques, il vous faudra installer un groupe d'outil supplémentaire (qui contient plusieurs outils) :

$ sudo apt install x11-apps -y

Puis vous pourrez lancer l'application (par exemple gimp) via le terminal (à condition de l'avoir installé sur WLS2).

Quel éditeur de code utiliser

Sous Windows, je conseille la solution Microsoft : Visual Studio Code (ou VScode). Il permet le switch entre WSL2 et Windows (selon ce qu'on veut faire) et la prise en main très simplement, et a pas mal de plugins spécialisés dans les différents langages et usages possibles. Pour utiliser VScode sous WSL2, cliquez en bas à gauche de la fenêtre de VScode :

Puis en haut cliquez sur "Se connecter à WSL" :

Vous verrez en bas une indication de la distribution qu'il lance et/ou est en cours :

Vous pourrez voir visuellement vos dossiers en ouvrant le dossier "source" de votre choix via l'explorer, avoir un terminal (de la distribution en cours) fonctionnel dans la même fenêtre, et avoir plusieurs fichiers ouverts côte à côte si le besoin s'en fait sentir.

En pratique

VScode contient un terminal intégré :

Il vous permet de garder tous vos alias/habitudes de terminal bash/shell et votre prompt PS1 préféré. Vous pouvez par exemple directement copier-coller votre fichier .bash_aliases dans votre $HOME WSL2.

Votre $HOME se trouve généralement dans

\wsl$\[OS, e.g.: Ubuntu]-[version, e.g.: 22.04]\home\[username]

via le navigateur de fichier Windows (mais vous pouvez également le trouver directement sur le terminal de WSL2 en tapant ce qui suit :

explorer.exe .

dans le dossier de votre choix, et l'explorateur de fichier Windows s'ouvrira dans le dossier en question). Vous pouvez aussi faire l'inverse : le chemin vers vos fichiers Windows peuvent être accédés du terminal WSL2 via ce chemin :

/mnt/[disque, e.g.: C]/[reste du chemin du dossier ou fichier voulu]

Conclusion

Il est maintenant possible de coder sous Windows sans perdre toutes ses habitudes ni perdre tout son CPU, grâce à WSL2. À titre personnel, l'OS Linux/Unix est préférable en natif (ça évite les surcouches) mais la version actuelle fait bien le café, que ce soit parce que vous n'avez pas le choix de l'OS ou que vous vouliez éviter le dualboot.

L’article Coder sous Windows avec WSL2 est apparu en premier sur Bioinfo-fr.net.

R : Convertir des Ensembl IDs en symboles de gènes

$
0
0

Lorsque l'on traite des données de RNA-seq, il arrive très souvent de se retrouver avec une matrice de quantification de l'expression des gènes (un tableau avec le nombre de reads par gène) dont le nom des gènes est représenté par leur identifiant (ou ID) de chez Ensembl (ex. : "ENSG00000128573") et non par leurs symboles […]

L’article R : Convertir des Ensembl IDs en symboles de gènes est apparu en premier sur Bioinfo-fr.net.

Chronique d'une soumission de données à GEO

$
0
0

Je vais vous raconter étape par étape ma soumission de données de séquençage à la base de données de génomique GEO (Gene Expression Omnibus) d'un projet en cours de finition. Sommaire GEO, Qu'est-ce que c'est ? Lorsque l'on veut publier les résultats d'une étude comprenant du séquençage haut débit, nous devons publier les données brutes […]

L’article Chronique d'une soumission de données à GEO est apparu en premier sur Bioinfo-fr.net.


Viewing all 68 articles
Browse latest View live