Bonjour,
Je voudrais compter le nombre d'occurences d'un motif par ligne d'un fichier. le format du fichier est le suivant:
> Agrobacterium tumefaciens str. C58 [gi 15891781 |hypothetical protein AGR_L_3324 ] : WalkerA (36)
Bonjour,
Je voudrais compter le nombre d'occurences d'un motif par ligne d'un fichier. le format du fichier est le suivant:
> Agrobacterium tumefaciens str. C58 [gi 15891781 |hypothetical protein AGR_L_3324 ] : WalkerA (36)
oui et ?????
t'as fait quoi comme script, ou est ton souci? quel est ton motif??:
:
![]()
![]()
:
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
désolée, jai zappé de préciser! trop de boulot tue mon petit cerveau...
je recherche différent motif en fait. le script de recherche est déjà fait. c'est juste qu'on me demande de faire une analyse statistique des résultast et que ce que je fais ne marche pas très très bien. je fais une analyse du fichier d'output du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (($output =~ m/WalkerA/g) and ($output =~ m/LSGGQ/g) and ($output =~ m/LLPED/g)){ $nb_WLP ++; }
Le format du fichier de sortie est le suivant:
> Acinetobacter sp. ADP1 [gi 50083328 |alkanesulfonate transport protein (ABC superfamily, atp_bind) ] : WalkerA (67) LSGGQ (159) LLDEP (181)
et jaimerais par exemple savoir le nombre de séquences qui contiennent ces 3 motifs en même temps (la plupart du temps, elles ne les contiennent pas en même temps).
Edité par GLDavid. On utilise les balises code et non quote pour le codePrière aussi de décocher la case "Désactiver le BBCode dans ce message" pour vos threads.
Salut
Ta condition est mal écrite. D'autre part, ce que tu veux, c'est tester la présence de ces 3 séquences et d'en tirer des stats. Je te propose le code ci-dessous qui testera à la manière d'un switch la présence simultnée ou non de tes séquences.
Je pense que tu pourras en écrire une fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #!/usr/bin/perl -w use strict; use Carp; my $output = "> Acinetobacter sp. ADP1 [gi 50083328 |alkanesulfonate transport protein (ABC superfamily, atp_bind) ] : WalkerA (67) LSGGQ (159) LLDEP (181) "; if ($output =~ m/WalkerA/g){ print "WalkerA présent\n"; if($output =~ m/LSGGQ/g){ print "LSGGQ présent aussi\n"; if ($output =~ m/LLDEP/g){ print "Les 3 séquences sont présentes !\n"; } } elsif ($output =~ m/LLDEP/g){ print "LLDEP présent aussi\n"; } } elsif ($output =~ m/LSGGQ/g){ print "LSGGQ présent\n"; if ($output =~ m/LLDEP/g){ print "LLDEP présent aussi\n"; } } elsif($output =~ m/LLDEP/g){ print "LLDEP présent\n"; } else { print "Y a rien dedans !\n"; }
En espérant t'avoir aidé, amie bioinformaticienne
@++
GLDavid, qui veut lancer L'Amicale des bioinformaticiens de dvp.com.
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code :tagcode: ni le tag :resolu:
Je ne répond à aucune question technique par MP.
merci!!
ca marche!
jai juste une question pourquoi ton if($output =~ m/LSGGQ/g) n'a pas de else?? je croyais ke yavait forcement un else avec les elsif.......
Euh lequel ? Car il y en a beaucoup
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code :tagcode: ni le tag :resolu:
Je ne répond à aucune question technique par MP.
Ca va pas !! On va pas mettre un else si y a rien à mettre dedans !je croyais ke yavait forcement un else avec les elsif.......
Encore heureux que Perl soit assez souple pour qu'on ne soit pas obligé de mettre des trucs inutiles comme ça : tous les langages de programmation font pareil. On peut mettre un if puis autant de elsif qu'on veut (on peut en mettre 0), puis un else si on veut (mais on est pas obligé !!!).![]()
--
Jedaï
ok, ben je savais pas! pour moi kan tu mets un elsif yavait forcement un else... c bon a savoir!!
Au passage, un petit tag Résolu si c'est bon.
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code :tagcode: ni le tag :resolu:
Je ne répond à aucune question technique par MP.
Partager