Traitement de données en tables

Fichiers txt

Certaines données en informatique sont "volumineuses"

Il faut trouver une façon relativement "légère" de les stocker

Les fichiers .txt (texte) très utilisés répondent à cette contrainte

Questions

  1. Le site Rosalind propose des problèmes de programmation autour de la bioinformatique

    La plupart des programmes traitent des séquences avec des lettres A,C,G et T contenues dans des fichiers texte, car les séquences peuvent parfois contenir des milllions de lettres!

    Télécharger le fichier rosalind_gc.txt et ouvrer le avec un éditeur de textes

    On observe un certain nombre de séquences identifiées par un code. Les deux premières sont Rosalind_5587 et Rosalind_0630. Le problème est de trouver la séquence contenant le taux de lettres G et C le plus élevé

    Maintenant on va ouvrir ce fichier en lecture avec Python

    Copier le code suivant, enregistrer le et exécuter le qu'observez vous ?

    
    genomes = ''
    with open('rosalind_gc.txt',"r",encoding='utf-8') as fichier:
        genomes = fichier.read()
    print(genomes)
    
    
  2. Maintenant à la console faire

    
    >>>genomes
    
    

    Vous allez observer ceci

    Alors que précédemment on voyait plutôt ceci

    En observant bien les deux copies d'écran précédentes dire à quoi sert le caractère \n ?

    Ce caractère va fausser le calcul de fréquences. Comment faire ?

  3. Copier le code suivant, enregistrer le et exécuter le qu'observez vous ?

    
    genomes = []
    with open('rosalind_gc.txt',"r",encoding='utf-8') as fichier:
        genomes = fichier.read().splitlines()
    print(genomes)
    
    

    Maintenant à la console faire

    
    >>>genomes
    
    

    Conclure

  4. Vous pouvez maintenant résoudre le problème et donner le nom de la séquence contenant le taux de GC le plus élevé

Fichiers csv

Certaines données en informatique sont "volumineuses"

Il faut trouver une façon relativement "légère" de les stocker

Les fichiers .csv (comma separated value) très utilisés répondent à cette contrainte

Python a une bibliothèque permettant de lire ce type de fichier

Questions

  1. Aller sur ce site
  2. Sur quelles données travaille-t-on?
  3. Est ce que les données concernent uniquement la France métropolitaine ?
  4. Quelle est la taille du fichier usagers-2018.csv ?
  5. Télécharger le fichier pdf description base de données 2005-2018 et prévisualiser le fichier usagers-2018.csv puis répondre aux questions suivantes
  6. Quel est l'âge du conducteur du véhicule du premier accident ?
  7. A-t-il été hospitalisé ?
  8. Que signifie 0 pour le champ "Trajet" ?
  9. Télécharger le fichier usagers-2018.csv puis essayer de l'ouvrir avec un tableur comme libreOffice Calc, est ce possible ?
  10. Essayer de l'ouvrir avec Notepad ++ est-ce possible ?
  11. Télécharger le fichier Python suivant puis l'éxécuter il affiche les 10 premières lignes du fichier en dehors des champs
  12. Quel est le type des éléments des listes ?
  13. Quel est l'indice du champs an_nais ?Quel est le type de usagers[1][10]? Quelle est sa valeur ?
  14. Définir la fonction age(caractere) (Attention ! à l'usage il faudra peut être prévoir des données manquantes)
  15. On veut définir une fonction frequence(seuilAge,tableau) qui calcule la fréquence des accidents concernant les usagers dont l'âge est supérieur ou égal à seuiAge

    Spécifier la fonction

    Puis la définir

  16. On veut définir une fonction frequenceAccidentsGraves(seuilAge,tableau) qui calcule la fréquence des accidents concernant les usagers dont l'âge est supérieur ou égal à seuiAge et tel que l'accident est considéré comme grave

    Spécifier la fonction

    Puis la définir

Quelques algorithmes sur les images

Une image numérique enregistrée dans la mémoire (morte) des ordinateurs, une fois chargée dans la mémoire vive des ordinateurs peut être vue comme un tableau de nombres que l'on peut transformer avec des algorithmes.

On peut voir le résultat de ces transformations sans forcément enregistrer en mémoire (mais on peut le faire si on le veux)

On peut faire des transformations sur les intensités par exemple transformer une image Noir et Blanc en son négatif

Mais on peut aussi faire des transformations géométriques comme faire tourner une image de 90 degrés

Par ailleurs ces transformations sont déjà intégrées dans un éditeur d'images comme GIMP

Questions

  1. Télécharger les deux images suivantes dans le dossier où vous avez vos programmes Python

    Télécharger chat.png une image au format png (pour Portable Network Graphics)

    Télécharger lena.png une image en couleurs au format png

    Ouvrir EduPython

  2. Copier coller le code Python suivant qui crée le négatif d'une image en nuances de gris donnée et exécuter le

       	
       	#from lycee import *
        from PIL import Image
    
        def creeNegatifImageNB(img):
            largeur, hauteur = img.size
            for y in range(hauteur): 
                for x in range(largeur):
                    intNB = img.getpixel((x, y))
                    img.putpixel( (x, y), 255 - intNB)
                    
        #----------main--------------
    
        img=Image.open("chat.png")
        img.show()
    
        creeNegatifImageNB(img)
        img.show()
    
    

    Vous devez obtenir le négatif de l'image

  3. Maintenant on va enregistrer le traitement fait sur l'image de départ dans une nouvelle image de même dimension

    Modifier le programme Python précédent pour "renverser" l'image du chat pour obtenir l'image suivante

    Compléter les pointillés dans le code ci-dessous

    
    from PIL import Image
    
    def renverse(img,img2):
        largeur, hauteur = img.size
        for y in range(hauteur): 
            for x in range(largeur):
                img2.putpixel( (x, y), .......)
    #-------------main------------           
    img=Image.open("chat.png")
    img.show()
    
    largeur, hauteur = img.size
    img2 = Image.new('L', (largeur, hauteur))
    renverse(img,img2)
    img2.save("chat2.png")
    img2.show()
    
    
  4. Proposer un algorithme qui transforme une image en couleurs en noir et blancs
  5. On veut extraire le "contour" des formes apparaissant dans une image. Par exemple le contour du chat.

    Voilà comment on va procéder : On crée une nouvelle image img2 de même dimension que celle du chat puis pour chaque pixel (x,y) du l'image img1 du chat on regarde les intensités des voisins "droit" (x+1,y) et "bas" (x,y+1)

    On se fixe un seuil de détection de contour SEUIL ensuite si la différence d'intensité entre le pixel (x,y) et l'un de ses voisins "droit" ou "bas" est au delà du seuil on met un point noir dans l'image img2 en (x,y) et un point blanc sinon

    Ecrire la fonction en Python

  6. A partir d'une image carrée dont le côté est une puissance de 2 on veut créer quatre images identiques comme ceci

    On parcourt l'image de départ comme précédemment et on lit les pixels par groupe de 4, les pixels (2i,2j), (2i + 1,2j), (2i, 2j + 1) (2i + 1,2j + 1) pour i variant de 0 à largeur//2 et j variant de 0 à largeur//2 et ensuite

    • le pixel (2i,2j) est affecté à la place (i,j) dans la nouvelle image
    • le pixel (2i + 1,2j) est affecté à la place (i + largeur//2,j) dans la nouvelle image
    • le pixel (2i,2j + 1) est affecté à la place (i,j + hauteur//2) dans la nouvelle image
    • le pixel (2i + 1,2j + 1) est affecté à la place (i + hauteur//2,j + hauteur//2) dans la nouvelle image
  7. On peut continuer et obtenir