import matplotlib.pyplot as plt
import numpy as np
from urllib.request import urlopen

print("TP 3 - Jeudi 14 Octobre 2021")


print(3*" ")
print("# 1 - Listes")
print(3*" ")

animaux = ["giraphe","tigre","singe","souris"]
tailles = [5,2.5,1.75,0.15]
mixte = ["giraphe",5,"souris",0.15]
print(mixte)
print(tailles)
print(animaux[0])
print(animaux[1])
print(animaux[2:4]) # Attention, pour toute liste L, L[i:j] va afficher les éléments de i à j-1 !!!
print(len(animaux))


print(3*" ")
print("# 2 - Boucle 'for' ")

animaux = ["giraphe","tigre","singe","souris"]

print(3*" ")
print("   Exemple sur les animaux")
print(3*" ")
for i in range(0,len(animaux)): # Attention, ne pas oublier les deux points (:) à la fin de for...  !!!
    print(animaux[i])
    
print(3*" ")

for i in animaux:
    print(i)

print(3*" ")
print("   Exemple sur l'ADN")
print(3*" ")
adn = "atcacgtta"

for i in range(0,len(adn)):
    print("La base n°",i,"est",adn[i])
    
print(3*" ")
i = 0
for a in adn:
    print("La base n°",i,"est",a)
    i=i+1
    
print(3*" ")
for i,a in enumerate(adn):        # enumerate(adn) va donner la liste des couples (indice,contenu) de la liste adn (une chaîne de caractères est une liste)
    print("La base n°",i,"est",a) # Taper list(enumerate(adn)) pouir visualiser les couples (indice,contenu), l'indice est la position dans la liste

print(3*" ")
print("   Combinaison entre boucles 'for' et boucles conditionnelles comme 'if' ")
print(3*" ")

y = [-1,0,-2,2,4]
for t in y:
    if t<0:
        print(t) # On parcourt la liste y, et seuls les éléments négatifs de y sont affichés
        
print(3*" ")
print("# 3 - Exercices dans le domaine de la biologie")
print(3*" ")
print("   Question 1-a")
print(3*" ")

proteine = "CVAPGPMCAWCDSTAC"
nombreC = 0
for p in proteine:
    if p=="C":
        nombreC = nombreC + 1
print("Le nombre de Cytésines est",nombreC)


print(3*" ")
print("   Question 1-b")
print(3*" ")

proteine = "CVAPGPMCAWCDSTAC"
nombreSoufre = 0
for p in proteine:
    if p=="C" or p=="M":
        nombreSoufre = nombreSoufre + 1
print("Le nombre d'atomes de soufre est",nombreSoufre)


print(3*" ")
print("   Question 2-a")
print(3*" ")

chat = "MWDRTLIILLKVCWT"
chien = "MYERTIIILLKVTTL"

nombrePosId = 0 # Va compter le nombre de positions identiques entre les deux séquences

for i in range(0,len(chat)): # On peut remplacer len(chat) par len(chien) car les deux listes ont la même longueur
    if chat[i] == chien[i]:
        nombrePosId = nombrePosId + 1
        
print("Le nombre de positions identiques entre les deux listes est",nombrePosId)

print(3*" ")
print("   Question 2-b")
print(3*" ")

print("Le pourcentage d'identité entre les 2 séquences est de",nombrePosId/len(chat)*100,"%")


print(3*" ")
print("   Question 3-a")
print(3*" ")

print("Selection du fichier sur internet...")
url = "https://perso.univ-rennes1.fr/valerie.monbet/DATA/Antennipedia_A.txt"
droso_A_liste = np.genfromtxt(urlopen(url),dtype="str") # Attention à remplacer 'str' par "str" !!!


liste_intermediaire = []
print("Création d'une liste contenant les groupes de caractères car droso_A_liste n'est pas une liste...")
for sublist in droso_A_liste:
    for item in sublist:
        liste_intermediaire.append(item)
        
droso_A = []
print("Conversion de liste_intermediaire en une liste de chaînes de caractères...")
for sublist in liste_intermediaire:
    for item in sublist:
        droso_A.append(item)
        
print(3*" ")
print("   Question 3-b")
print(3*" ")

print("Le nombre d'acides aminés dans la séquence protéique de la drosophile A est de",len(droso_A))


print(3*" ")
print("   Question 3-c")
print(3*" ")

print("Selection du fichier sur internet...")
url = "https://perso.univ-rennes1.fr/valerie.monbet/DATA/Antennipedia_B.txt"
droso_B_liste = np.genfromtxt(urlopen(url),dtype="str") # Attention à remplacer 'str' par "str" !!!


liste_intermediaire = []
print("Création d'une liste contenant les groupes de caractères car droso_A_liste n'est pas une liste...")
for sublist in droso_B_liste:
    for item in sublist:
        liste_intermediaire.append(item)
        
droso_B = []
print("Conversion de liste_intermediaire en une liste de chaînes de caractères...")
for sublist in liste_intermediaire:
    for item in sublist:
        droso_B.append(item)
        
print(3*" ")
print("   Question 3-d")
print(3*" ")

print("Le nombre d'acides aminés dans la séquence protéique de la drosophile B est de",len(droso_B))


print(3*" ")
print("   Question 3-e")
print(3*" ")

nombreMut = 0 # Va compter le nombre de mutations (différences) entre les deux séquences

for i in range(0,len(droso_A)): # On peut remplacer droso_A par droso_B car les deux listes ont la même longueur (comme pour chat et chien)
    if droso_A[i] != droso_B[i]:
        nombreMut = nombreMut + 1

print("Le pourcentage de mutations entre les deux drosophiles est",0.01*int(nombreMut/len(droso_A)*10000),"%") # Ecriture du pourcentage avec deux chiffres après la virgule
    
    
    