Menu

Script à faire [Résolu/Fermé]

Messages postés
6
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
Bonjour, j'ai un script à écrire, consistant à déterminer à quel groupe appartient la séquence donnée, en fonction de motifs qu'elle contient

pour déterminer les groupes, j'ai deux motifs pour chacun
groupe 1 :
AMRRVVTLSYNHLPSHLKPCFLYLSIFPEDFEIQRKRLVDRWIAEGFVRA
YDIEDCLDEFMVHVKSQSLSRQLMKLKDRHRIAIQIRBLKSRVEEVSNRN

groupe 2 :
DHQVKDWMKQVRDVAYDIEDCIDDFAHRL
VKSLVGKLGSLLAQEYTLIRGVRGDIQYJNDELASMQAFLR

groupe 3 :
SYNNLPHHLKTCLLYLGMYPEDYIIWKDDLVKQWIAEGFISAVEGLDAEE
EQKLKVVSIVGFGGLGKTTLAKZVYRKJ

Pour l'instant j'essaie de faire qu'avec le premier groupe ceux qui donne ceux ci :
#!/usr/bin/perl

use strict;
my $seq;
my $nb=0;


open (FILE,"$ARGV[0]")||die"cannot open$_";
while(<FILE>)
{
 if(/^[^>]/)
 {
  chomp; 
  $seq.=$_;
  #print "$seq";
 }
}
print "$seq\n";
if ($seq==~ m/AMRRVVTLSYNHLPSHLKPCFLYLSIFPEDFEIQRKRLVDRWIAEGFVRA/ || m/YDIEDCLDEFMVHVKSQSLSRQLMKLKDRHRIAIQIRBLKSRVEEVSNRN/)
{
 $nb ++;
 print "la séquences appartient au groupe $nb\n";
}
 else 
 {
  print "la sequence n'appartient pas au groupe 1\n";
 }

Sauf le probléme c'est qu'en testant n'importe qu'elle séquence, il me retourne qu'elle appartient toute au groupe 1, alors que certaines n'en font pas partis, où serai mon erreur ?
Afficher la suite 

2 réponses

Messages postés
25945
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2019
1709
0
Merci
Bonjour,

Cela fait longtemps que je n'ai pas fait de PERL ...
mais quand on fait un IF avec plusieurs conditions... il faut mettre les conditions "en entier" !
if ($seq==~ m/AMRRVVTLSYNHLPSHLKPCFLYLSIFPEDFEIQRKRLVDRWIAEGFVRA/ || $seq==~ m/YDIEDCLDEFMVHVKSQSLSRQLMKLKDRHRIAIQIRBLKSRVEEVSNRN/)

lypso15
Messages postés
6
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
effectivement vous avez raison mais cela ne règle pas le problème
Messages postés
5163
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
10 juillet 2019
785
0
Merci
Je ne comprends pas très bien ce que tu testes et comment du veux tester.

Un exemple de ce qui peut se trouver dans $seq et qui remplit ta condition permettrait d'y voir plus clair.

Si la condition est remplie si $seq comprend "AMRRVVTLSYNHLPSHLKPCFLYLSIFPEDFEIQRKRLVDRWIAEGFVRA" ou "YDIEDCLDEFMVHVKSQSLSRQLMKLKDRHRIAIQIRBLKSRVEEVSNRN", tu dois indiquer la deuxième partie de la condition comme le dit Jordane.

Cependant, je pense que tu veux plutôt faire
if ($seq=~ 
et non
if ($seq==~
.

Tu devrais mettre
use warnings;
après
use strict;
, qui t'aurait avertit d'un code anormal.

Dal
[Dal]
Messages postés
5163
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
10 juillet 2019
785 -
sauf erreur, dans cet exemple $seq n'est pas du tout identique et ne comprend pas non plus l'un quelconque des motifs

comme indiqué, l'opérateur
eq
permet de vérifier que deux chaînes sont (exactement) identiques

par exemple :

my $st = "toto";

if ($st eq "toto") {
    print "C'est bien toto\n";
}


si tu cherches si une chaîne est contenue dans une autre, tu peux utiliser une regexp, comme tu sembles vouloir le faire, par exemple :

my $st = "tititototutu";

if ($st =~ m/toto/) {
    print "Il y a bien toto dedans\n";
}
lypso15
Messages postés
6
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
Oui c'est une séquence qui n'est pas du groupe un, du coup ce que je voudrais faire, c'est rechercher la présence de mes deux motifs, dans cette séquence, et qui me donne comme réponse qu'elle n'appartient pas au groupe 1 puisque qu'il n'aura pas trouver les motifs
[Dal]
Messages postés
5163
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
10 juillet 2019
785 -
ce que as posté et que tu indiques comme étant le contenu de $seq (c'est bien le contenu de $seq et non pas du fichier, hein ?) ne contient, à mon sens aucun des 6 motifs que tu as posté.

cela dit, tu as tous les éléments pour corriger et faire fonctionner ton code désormais.
lypso15
Messages postés
6
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
Oui merci votre deuxième exemple avec toto m'as permit de faire fonctionner mon script, merci beaucoup
[Dal]
Messages postés
5163
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
10 juillet 2019
785 -
Super !

Bon courage pour la suite de ton script :-)