IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Nombre d'occurence d'un motif par ligne


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Nombre d'occurence d'un motif par ligne
    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)

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    oui et ?????
    t'as fait quoi comme script, ou est ton souci? quel est ton motif?? : :
    :

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    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 code Prière aussi de décocher la case "Désactiver le BBCode dans ce message" pour vos threads.

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 834
    Points
    4 834
    Par défaut
    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.
    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";
    }
    Je pense que tu pourras en écrire une fonction.
    En espérant t'avoir aidé, amie bioinformaticienne

    @++

    GLDavid, qui veut lancer L'Amicale des bioinformaticiens de dvp.com.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    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.......

  6. #6
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 834
    Points
    4 834
    Par défaut
    Euh lequel ? Car il y en a beaucoup

    @++

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    je croyais ke yavait forcement un else avec les elsif.......
    Ca va pas !! On va pas mettre un else si y a rien à mettre dedans !
    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ï

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    ok, ben je savais pas! pour moi kan tu mets un elsif yavait forcement un else... c bon a savoir!!

  9. #9
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 834
    Points
    4 834
    Par défaut
    Au passage, un petit tag Résolu si c'est bon.

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compter le nombre d'occurence d'un caractère donné, par ligne du fichier
    Par Bktero dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 23/03/2011, 15h47
  2. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 17h22
  3. Limiter le nombre de caractère par ligne d'un textarea
    Par rantanplan08 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 04/01/2006, 19h31
  4. nombre de caractères par ligne à l'affichage
    Par trotters213 dans le forum Oracle
    Réponses: 3
    Dernier message: 03/11/2005, 09h51
  5. Réponses: 4
    Dernier message: 02/09/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo