urllib.request permet d’ouvrir le fichier mais en format bytes. Ligne par ligne les bytes sont
décodés par la fonction bytes.decode pour obtenir un fichier texte de type string. Chaque
ligne est incorporée dans une chaine de caractère stockée dans la variable fichier et
incorporée dans une liste ou chaque élément est lui-même une liste constituée des chaines
de caractères de la ligne. Ainsi la fonction retourne à la fois une chaine de caractères
destinée à l’utilisateur (fichier) et une liste de listes (data) qui sera utilisée pour la réalisation
des autres fonctions. L’échec du téléchargement est géré par la variable erreur.
Testfile : Cette fonction permet de savoir si le nom du fichier existe déjà. Elle utilise la
fonction isfile du module os.path. et prend en entrée un nom de fichier (string). La fonction
isfile renvoie True si le fichier existe déjà et False s’il est inconnu. Dans le cas ou le nom
existe déjà (True), on demande à l’utilisateur si celui-ci veut écraser le fichier. La fonction
testfile renvoie False lorsque la question de l’écrasement du fichier à été gérée avec
l’utilisateur.
Save : Cette fonction permet d’enregistrer un fichier. Elle prend en entrée une chaine de
caractère. Dans le programme principal on propose à l’utilisateur un nom de fichier. Une
boucle while impose à l’utilisateur de répondre par « oui » ou par « non ». S’il répond
« non », l’utilisateur peut alors proposer un nom de fichier. Afin de s’assurer de la validité du
nom donné par l’utilisateur, on utilise une exception try et une boucle while.
B. Récupération de la séquence dans les différents formats :
Dans cette partie nous avons choisi de prendre en compte le cas des fiches PDB avec
plusieurs modèles : nous avons choisi de n’afficher les données que pour le premier modèle.
Cette stratégie est aussi appliquée aux fiches présentant plusieurs sous-unités. Bien que ces
dernières soient utilisées pour le calcul de distance des acides aminés, dans cette partie ainsi
que pour l’analyse, nous ne tiendrons compte que de la première chaîne.
SeqAA: Cette fonction permet d’extraire la liste des acides aminés au carbone alpha à partir
de la liste de listes data. Ceci nous permet de réduire le temps d’exécution des fonctions
suivantes. Grâce à une boucle while nous créons une liste temporaire temp où nous
enregistrons toutes les lignes du fichier PDB commençant par « ATOM » et contenant « CA »
grâce à la fonction .append(). Puis une autre boucle while nous permet de créer la liste seq
contenant les acides aminés. Afin de traiter le problème des fichiers PDB contenant plusieurs
modèles d’une même protéine, nous avons choisi comme condition d’extraction la
numérotation des acides aminés : ces derniers ne sont ajoutés à la liste que si le numéro qui
leur est associé est supérieur à celui de l’acide aminé précédent. C’est pour cette raison
qu’avant la boucle while le troisième élément de la première sous-liste temp est ajouté à la
liste seq. Ensuite à l’intérieur de la boucle le troisième élément de chaque sous-liste de temp
qui rempli la condition d’exécution est ajouté à la fin de la liste seq.