Magazine High tech

Lire une séquence SwissProt, compiler le programme

Publié le 28 novembre 2008 par Lbloch

#Sommaire-

Tout d'abord, lire le manuel de référence de la banque SwissProt. Regarder une séquence.

Lire et mettre en forme une séquence

Ce petit programme se propose de lire une séquence dans une copie locale d'un extrait de la banque, la première séquence du fichier par exemple, et de placer les lignes successives dans une liste. La seule mise en forme sera de produire la séquence proprement dite sous forme d'une unique chaîne de caractères, sans espaces ni sauts de ligne.

(define (lire-une-sequence flux) (let boucle ((L '()) (ligne (read-line flux))) (if (eof-object? ligne) ligne (let ((type-ligne (substring ligne 0 2))) (cond ((string=? type-ligne "//") (reverse (cons ligne L))) ((string=? type-ligne " ") (aligne-aa ligne L flux)) (else (boucle (cons ligne L) (read-line flux)))))))) (define (aligne-aa ligne L flux) (let boucle ((source ligne) (L2 L) (sequence "")) (if (string=? (substring source 0 2) "//") (reverse (cons source (cons sequence L2))) (do ((i 3 (+ 1 i)) (les-aa "" (let ((le-char (substring source i (+ 1 i)))) (if (string=? " " le-char) les-aa (string-append les-aa le-char))))) ((= i (string-length source)) (boucle (read-line flux) L2 (string-append sequence les-aa)))))))

Répéter l'action pour toutes les séquences du fichier

Si l'on veut répéter la même action pour toutes les séquences du fichier :

(define (lire-des-sequences flux) (let boucle ((sequence (lire-une-sequence flux))) ; (if (eof-object? sequence) #f (begin (print sequence) (boucle (lire-une-sequence flux))))))

Compiler le tout

Pour obtenir un programme compilable par Bigloo, placer en tête du fichier qui contient les procédures ci-dessus les lignes suivantes :

(module sequences (main choisir-le-fichier)) (define (choisir-le-fichier Args) (let ((un-fichier (cadr Args))) (call-with-input-file un-fichier lire-des-sequences)))

Retour à La Une de Logo Paperblog

A propos de l’auteur


Lbloch 52 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte