PyCoa: un outil d’analyse Python de la Covid19
[show_bokeh path= »http://dadoun.net/wordpress/wp-content/uploads/2021/06/vacc2-1.html »]
PyCoa, pour PYthon COvid Analysis, s’adresse aux personnes souhaitant s’approprier, de manière autonome,les données publiques relatives à la pandémie de la Covid-19 :lycéen·es, étudiant·es, analystes stratégiques, data journalistes, scientifiques.
Contrairement à un tableau de bord classique notre logiciel permet d’accéder facilement et directement aux données depuis leurs sources officielles, et ce avec une licence libre de droits.Puis il permet de travailler ces données, en autonomie : l’utilisateur ou l’utilisatrice choisit ses propres représentations, elles ne sont pas imposées.L’environnement médiatique contemporain place souvent le citoyen ou la citoyenne dans un état de consommation forcé.Nous avons élaboré notre outil avec l’idée contraire : permettre à chacune et chacun d’avoir une démarche active face à l’information,tout en développant la littératie numérique.
Pycoa permet un accès simple aux bases de données sur la Covid-19 (actuellement 22 bases de données mondiales et nationales).Grâce à sa flexibilité de programmation, l’ajout d’autres bases de données se fait aisément.Pycoa est le seul logiciel permettant de comparer des données épidémiologiques à l’échelle des régions ou départements sur une douzaine de pays.Il fournit des outils simples pour représenter et analyser les données de la Covid-19, comme des séries temporelles, des histogrammes, des camemberts ou des cartes et ce en 2 lignes de code seulement, il peut être ainsi utilisé pour enseigner le langage Python, les statistiques, l’épidémiologie clinique et ce dès le lycée.
Vous pouvez trouver une présentation qu’on a faite lors du salon-math (27-30 mai 2021).
Liens
➔ Forge du code avec son wiki : https://gitlab.in2p3.fr/lpnhe/pycoa ou https://github.com/coa-project
➔ Twitter : https://twitter.com/pycoa_fr @pycoa_fr
➔ Exemple sous forme d’un Notebook Jupyter exécutable et modifiable par tous sans installation préalable du logicielhttps://bit.ly/pycoaFDS21binder
➔ Data.gouv https://www.data.gouv.fr/fr/reuses/pycoa-python-covid-analysis
Décès quotidien France depuis 2000
Pour voir les effets des décès dus au COVID-19 j’ai récupéré et superposé les données depuis 2000 des décès en France (toutes causes confondues). J’ai choisi de ne représenter que les mois entre janvier de septembre.
[show_bokeh path= »http://dadoun.net/wordpress/wp-content/uploads/2020/11/insee.html »]On voit un pic au 1er avril 2020 qui correspond aux décès covid (+ autres types décès). De plus on peut voir un pic en vert autour du 12 aout 2003 qui correspondant au décès de la canicule de 2003.
Données sont issues de l’INSEE:
Avant 2020
Pour l’année 2020
Covid-19 Active case
Daily update bokeh chart from Johns Hopkins Covid-19 data. The graphic have been produced using COCOA COVID-19 analyse tool (which will be avalaible very soon)
The chart’s present the Active cases for different countries in EU. The aggregated confirmed cases that have not been resolved is defined by :
Active cases = total cases – total recovered – total deaths
[show_bokeh path= »https://dadoun.net/activecases.html »]To insert bokeh html file inside a WordPress article one can use this .
Installation Linux sur Mac PowerPC G5
J’avais un Mac PowerPC G5 sous OS X 10.5.8 (dernière m.à.j ~2006).
Donc inutile de vous dire qu’il était impossible de l’utiliser même comme un simple navigateur web …
Effet confinement oblige j’ai décidé de prendre le temps qu’il fallait pour mette un Linux dessus.
Voici les specs du Mac en question :
Il existe plusieurs versions de Linux Ubuntu qui sont compatibles MacPPC G5. J’ai installé quand à moi Lunbutu-16.04-Remix (qui m’a été fortement recommandé par un utilisateur du groupe FB Linux and BSD on PowerPC MAC).
Il y a d’autres distribs comme par exemple la Debian …
Voici les étapes de mon installation:
- Télécharger l’image iso de Lunbutu-16.04-Remix (à la date l’article son nom est lubuntu-16.04-remix-v2-ppc.iso)
- Copier l’iso sur votre clef usb en utilisant commande dd depuis un terminal (pour savoir tout du dd je vous renvoie à votre moteur de recherche):
- Redémarrer en Mac en mode OF (OpenFirmeware), pour cela on maintiendra enfoncé au démarrage les touches:
dd if=Downloads/lubuntu-16.04-remix-v2-ppc.iso of=/dev/disk2 bs=4m && sync
alt+cmd+o+f
Une fois sur arrivé sur l’OF il faut trouver le device de la clef usb, et c’est ça le plus reloud …
Depuis l’OF il y a la commande dir (ou encore devalias, dev et ls ) qui peuvent être utile. Si on se trompe dans le nom du device l’ordinateur va rebooter sur l’OS d’origine, du coup ça peut prendre un temps fou …
On vérifie que l’on a donné le bon device de la clef en vérifiant avec dir son contenu:
dir usb2/disk:2,\\
Une fois qu’on a vérifié que le device selectionné correspondait bien à la clef on peut booter dessus en toute quiétude:
boot usb2/disk:2,\\yaboot
Là on arrive sur le yaboot et on tappe la commande:
live-powerpc64
Vous devriez, après quelques minutes (moins de 2), arriver sur le bureau type d’un Linux où vous pourrez démarrer l’installation de votre nouveau super système.
Si vous obtenez un écran noir après la commande live-powerpc64 depuis le yaboot pas de panique c’est peut être que vous vous êtes trompés dans le slot de connection de l’écran dvi (j’ai fait la même erreur et ça m’a fait perdre un temps de fou et pas mal de cheveux en moins). Essayez tout simplement de changer de slot (slot droit lorsqu’on a le doc du mac sous les yeux).
Voily bon courage pour votre installation …
Liens qui peuvent être utiles voir très utiles …
https://lowendmac.com/2018/installing-linux-on-powerpc-macs/
La page FB Linux and BSD on PowerPC MAC
Mon 1er Notebook Jupyter dans WordPress
Bon c’est pas très rejouissant mais je donne ici mon script Python pour plotter l’évolution des cas de Covid (par défaut pour la « France », »Italy », »Spain » et la »Germany ») en utilisant cette base de données
https://github.com/CSSEGISandData/COVID-19
J’ai créé:
https://gist.github.com/odadoun/20680c7aa1a0604b5026895242c3a534#file-covid-data-ipynb
Envoie de sujets par mail avec AMC ?
A cause des réformes des retraites et des grèves qui ont suivi les examens sur table ont été annulés et ont été reprogrammé sous la forme d’un devoir à la maison.
Je devais donc envoyer mon QCM, élaboré avec auto-multiple-choice, à un grand nombre de candidats. Je ne rentrerai pas ici dans l’intérêt de faire un examen QCM à domicile …
Avant de commencer noter que je suis sous Mac Os X Catalina.
Je fournis ici les scripts Python nécessaires pour :
- Séparer le fichier PDF avec tous les sujets en autant de sujets qu’il y a de candidats
- Envoyer les mails avec mutt (installer avec brew) à tous les candidats avec leurs fichiers en attachés
Mon sujet comporte 4 pages. Les N pdf individuels produits sont redirigés vers un dossier PDFSplitted. Je me suis basé sur cette page pour mon script.
Les noms de mes fichier se nomment : DOC-sujet1.pdf et DOC-sujet2.pdf.
Changer la variable « DOC-« +sujet+ ».pdf » en fonction du nom de votre sujet.
#!/usr/bin/env python
from PyPDF2 import PdfFileWriter, PdfFileReader
from multiprocessing import Pool
import glob, sys
sujet="sujet2"
pdfs = glob.glob("DOC-"+sujet+".pdf")
def process_pdfs(pdf):
inputFile = PdfFileReader(open(pdf, "rb"))
print("Processing %s"% pdf)
for i in range(inputFile.numPages // 4):
output = PdfFileWriter()
output.addPage(inputFile.getPage(i * 4))
output.addPage(inputFile.getPage(i * 4 + 1))
output.addPage(inputFile.getPage(i * 4 + 2))
output.addPage(inputFile.getPage(i * 4 + 3))
newname = sujet + "-" + str(i+1) + ".pdf"
outputStream = open("PDFSplitted/"+newname, "wb")
output.write(outputStream)
outputStream.close()
p = Pool(processes=4)
p.map(process_pdfs, pdfs)
Une fois les sujets produits je vais boucler sur l’ensemble des étudiants pour leur envoyer un mail (avec mutt) avec leur sujets individuels en attaché (il y a 2 sujets au choix).
La liste des étudiants avec leurs mails se trouve dans le fichier Emails-L2-1920.xlsx.
Je parse celui-ci avec xlrd.
import xlrd
import subprocess
import os
def body(*arg):
mail_named="BodyMailStudents/"+str(arg[0]).replace(" ","-")+"-"+str(arg[1]).replace(" ","-")+"-N-"+str(arg[2])+".txt"
fichier = open(mail_named, "w")
temp=("Bonjour "+ str(arg[0])+ " " +str(arg[1]) + ",\n\n"\
+"\t veuillez trouver en attaché de ce mail le sujet d'examen: MÉTHODES STATISTIQUES - PY03E300.\n"+\
"Votre sujet n° " + str(arg[2]) +" est associé à votre numéro d'étudiant " + str(int(arg[3])) +".\n"\
"Imprimez dans la mesure du possible votre copie en recto verso. Ne remplissez QUE L'UN DE CES DEUX SUJETS ET PAS UN AUTRE.\n"
"Les copies doivent être rendues en mains propres à la scolarité entre le lundi 27 janvier\n"+\
"et le jeudi 30 janvier en vous munissant de votre carte d’étudiant pour signer la feuille d’émargement.\n"\
"Bon courage.\n\n"\
"\n\t\t\t\t Cordialement,\n"\
"\t\t\t\t\t Olivier Dadoun\n\n ")
fichier.write(temp)
fichier.close()
print(temp)
return mail_named
if __name__ == '__main__':
list_students="Emails-L2-1920.xlsx"
wb = xlrd.open_workbook(list_students,encoding_override="utf_16_le")
print(wb.sheet_names())
sh = wb.sheet_by_name('Feuil3')
num_etu = sh.col_values(0)
nom_pat_etu = sh.col_values(1)
prenom_etu = sh.col_values(2)
mail_etu = sh.col_values(3)
#list_pas_envoye=[18,30,40,41,44,45,51,56,57,100,101,102,103,109,115,119,128,158]
for i in range(1,len(num_etu)):
#for i in list_pas_envoye:
file_body=body(nom_pat_etu[i],prenom_etu[i],i,num_etu[i])
files_attached1="\"PDFSplitted/sujet1-"+str(i)+".pdf\""
files_attached2=files_attached1+" \"PDFSplitted/sujet2-"+str(i)+".pdf\""
#mail="vous-aurez-pas-mon-mail@gmail.com"
mail=mail_etu[i]
mailcc="ni-celui-ci@gmail.com"
bash_command="mutt -s \"Sujets d'examen MÉTHODES STATISTIQUES - PY03E300 \" " + mail + " -c " + mailcc + " -a " + str(files_attached2) + " -- < " + str(file_body)
os.system(bash_command)
print(bash_command)
os.system("sleep 2")
wb.release_resources()
Si pour une raison inconnue l’étudiant n'a pas reçu son sujet on peut lui renvoyer car le corps du mail a été sauvé dans un fichier qui se trouve dans le dossier BodyMailStudents/.
Si cette erreur apparait avec votre pdf
PyPDF2.utils.PdfReadError: Multiple definitions in dictionary at byte 0x9af9 for key /AcroForm
Remplacer
inputFile= PdfFileReader(open(pdf, "rb"))
par
inputFile= PdfFileReader(open(pdf, "rb"),strict=False)
CM Statistiques L2 2019/2020
- 1er cours
- Cours2-L2-2019-Dadoun
- Cours3-L2-2019-Dadoun
- Cours4-L2-2019-Dadoun
- Cours5-L2-2019-Dadoun
- Cours6-L2-2019-Dadoun
Attention le programme n’était pas tout à fait le même (donc il y a des questions pour lesquelles vous allez avoir du mal à répondre).
Le bébé statisticien : les théories bayésiennes de l’apprentissage
OBS probleme avec @rpath
J’ai recompilé OBS Studio sur mon Mac sans gros soucis.
Par contre lors de son execution j’obtenais:
dadounair:bin dadoun$ ./obs
dyld: Library not loaded: @rpath/QtWidgets.framework/Versions/5/QtWidgets
Referenced from: /Users/dadoun/SoftsDivers/obs-studio/build/rundir/RelWithDebInfo/bin/./obs
Reason: image not found
Trace/BPT trap: 5
Problème que j’ai rencontré de nombreuse fois et que j’avais réussi à chaque fois esquiver (sans trop savoir comment).
Après avoir passé pas mal temps de temps j’ai trouvé cette solution simple et efficace: exporter la variable DYLD_FRAMEWORK_PATHdont je ne connaissais pas l’existence.
Donc un
export DYLD_FRAMEWORK_PATH=/usr/local/Qt/5.5/clang_64/lib
a résolu mon problème.
CM Statistiques L2 2018/2019
Bonjour,
Attention: cours n°6 page 157 la formule que j’ai utilisée est fausse
(ca change pas le résultat). Voici la bonne formule:
[latexpage]
\[
\quicklatex{color= »#ff0000″ size=35}
\boxed{s^2=\frac{1}{7}\times(\sum^{i=8}_{i=1}x_i^2-8\times(\frac{1}{8}\sum^{i=8}_{i=1}x_i)^2)}
\]
De plus, veuillez noter aussi un problème de précision qui se ballade dans cet exemple:
pour calculer l’écart-type mieux vaut utiliser cette moyenne là (1623/8) plutôt que sa valeur approchée 202,90 ms (merci à Jennifer).
– Nouvelles mise à jour du cours 6
– J’ai rajouté une transparent p146 cours 6 qui vous donne la formule de la covariance dans le cas d’un échantillon. Vous connaissez la variance dans le cas d’un échantillon ça devrait pas poser trop de problèmes (et oui il faut connaître les formules).
voici les cours de L2 CM Méthodes Statistiques 2018:
- cours1-L2-2018-Dadoun (Introduction)
- Cours2-L2-2018-Dadoun (structure des variables)
- Cours3-L2-2018-Dadoun (Mesures de tendance centrale)
- Cours4-L2-2018-Dadoun(Paramètres de dispersion)
- Cours5-L2-2018-Dadoun(Loi normale, loi normale réduite)
- Cours6-L2-2018-Dadoun(Inférence statistique)
Bonne lecture …
PS: Comme d’hab. n’hésitez pas à donner commentaires, remarques et/ou réflexions diverses et variées …
Annexes