Se connecter avec
S'enregistrer | Connectez-vous

Probleme dans pgme perl :lecture fichier FASTA

Dernière réponse : dans Programmation

Coucou :) 
Voilà j'ai un programme qui traite un gros fichier de séquences d'ADN au format FASTA, il permet de trier les séquences dans 3 tableaux associatifs différents (%tab5, %tab3 et %tabref) en fonction du type de séquence .
Ces tableaux associatifs contiennent la ligne de commentaire (commencant par un >) en clé et la séquence correspondante en valeur.

Le soucis est que le fichier de séquence n'est pas véritablement au format FASTA il possede des lignes vides et des lignes commentées (commencant par un #), ce qui explique la présence du :
  1. if ($_ =~ /^[^\s+\#]/


Ce programme fonctionne correctement sur chacun des quatres quarts du fichier et ceci rapidement (de ll'ordre de 2 minutes) mais quand j'essaye sur le fichier entier je n'en ai jamais vu la fin en sachant que j'ai attendu pratiquement 2heures d'execution...
Ce fichier contient 507 629 sequences...

Je met le code ci dessous:
  1. my (%tab5, %tab3, %tabref);
  2. my ($defline, $seq, $defline5, $defline3, $deflineref);
  3. my $numtot=0;
  4. my $num5=0;
  5. my $num3=0;
  6. my $numref=0;
  7.  
  8. #=========================================================================================================================================
  9. # Lecture du fichier à traiter (UNIGENE)
  10. #=========================================================================================================================================
  11.  
  12. my $seq_file = $ARGV[0];
  13. my $seq_res = $ARGV[1];
  14.  
  15. chomp ($seq_file);
  16.  
  17. # ouvrir le fichier en lecture
  18. open (SEQ,"$seq_file") || die "cannot open '$seq_file' : $!";
  19. open (RES,">$seq_res") || die "cannot open '$seq_res' : $!";
  20.  
  21.  
  22. #=========================================================================================================================================
  23. # Repartition des sequences
  24. #=========================================================================================================================================
  25.  
  26. # lire le fichier
  27. while (<SEQ>) {
  28. chomp;
  29.  
  30. # prendre la defline: elle devient la clef de chacun des tableaux associatifs %tab5, %tab3 et %tabref
  31. if ($_ =~ /^[^\s+\#]/){ #evite les lignes vides et les lignes commencant par un #
  32. if ($_ =~ /^>.*/x) { #si la ligne commence par un >
  33. $numtot++;
  34. $defline = $_;
  35.  
  36.  
  37. if ($defline =~ "clone_end=5'") { #selection des sequences 5'
  38. # put_tab(\%tab5, $defline);
  39. $num5++;
  40. $defline5 = $defline;
  41. $tab5{$defline5} ="";
  42. }
  43.  
  44. elsif ($defline =~ "clone_end=3'") { #selection des sequences 3'
  45. $num3++;
  46. $defline3 = $defline;
  47. $tab3{$defline3}="";
  48. }
  49.  
  50. else {
  51. $numref++;
  52. $deflineref = $defline; #selection des sequences ref
  53. $tabref{$deflineref}="";
  54. }
  55. }
  56.  
  57. # attibuer la séquence pour sa defline correspondante
  58.  
  59. elsif ($defline =~ "clone_end=5'") {
  60.  
  61. $tab5{$defline} .= $_;
  62. }
  63.  
  64. elsif ($defline =~ "clone_end=3'") {
  65. $tab3{$defline} .= $_;
  66. }
  67.  
  68. elsif ($defline) {
  69.  
  70. $tabref{$defline} .=$_;
  71. }
  72. }
  73. print1 "$numtot\n";
  74. }
  75. print2 "$numtot\n";
  76.  
  77. close (SEQ);


Si je fais le print1 je vois bien l'evolution du traitement...mais le print2 je ne le vois pas en attendant pratiquement 2heures ... j'estime que c'est pas normal et donc je peux pas savoir si ca bug a un endroit ou si le pgme tourne tjs...

Merci d'avance pour votre aide,

:wahoo:  Perlgirl :wahoo: 
Lassé par la pub ? Créez un compte

salut perlgirl
tas penser a un cycle auto roll cellullaire...a la fin il recommence...

jai telecharger les chromosone a partir de ebi / sanger...
en fasta, j essai de les lire et mon serveur plante meme a plus d 1 gig de ram...sur un chromosone de 50 mg b...

jai eds amis chez Merck frost...ils travaille sur les reseaux...il y a des rumeurs...des chiffres entre >< qui correspont a l age du patient
un genre de parametre variable...ils preparerait la theraphy genique...

tu travaille encore sur les codes ADN?

xxxxxxxxxxxx@hotmail.com ( néo 37)
Expert Programmation

Salut Neo,

"Tas penser a" regarder la date du message ?
Et à écrire correctement ?

Bon, comme je suis bon, j'ai aussi viré ton adresse mail, ça évitera de te faire pourrir de spams. Ou plus exactement, ce ne sera pas parce que tu l'auras laissé ici que tu te feras pourrir de pourriels.
Lassé par la pub ? Créez un compte