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 :

Parseur de regexp


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut Parseur de regexp
    Bonjour, j' ai un petit souci comme je suis nouveau en perl:
    Voila, tout d'abord j'ai un fichier suivant:
    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
     
    # Colonne 1: scaffold
    #         2: gene id
    #         3: start
    #         4: dir
    #         5: origine gene model
    #         6: proteinId
    #         7: ex-nom
    #         8: coordonnees genomiques
    #         9: structure intron/exon
    #        10: segments du CDS couvert par EST
    C169-scaffold_1	C169v2-00001	3777	-	ORIGINAL JGI	55057	Genemark1.1_g	3777..3857,4046..4192,4443..4561,4940..5234,5406..5540,5734..5847,6009..6098,6421..6492
    C169-scaffold_1	C169v2-00002	12682	-	ORIGINAL JGI	55058	Genemark1.2_g	12682..12691,13195..13445,13694..13711
    C169-scaffold_1	C169v2-00003	18095	+	ORIGINAL JGI	31905	fgenesh1_kg.1_#_1_#_4092_1_CBOZ_CBPA	18095..18097,18280..18410,18690..18972
    C169-scaffold_1	C169v2-00004	20452	+	ORIGINAL JGI	6968	gw1.1.615.1	20452..20496,20636..20726,20881..21046,21194..21382,21567..21735
    C169-scaffold_1	C169v2-00005	21893	-	ORIGINAL JGI	34662	fgenesh1_pm.1_#_3	21893..22051,22201..22293,22590..22747,22864..23102,23192..23364
    C169-scaffold_1	C169v2-00006	24500	+	ORIGINAL JGI	38811	fgenesh1_pg.1_#_4	24500..24674,25216..25503,25746..25907,26012..26196,26516..26752,26951..27159,27373..27550,27728..27961,28207..28371,28619..28890,29131..29389
    Je voudrais mettre dana sun hash le debut de chaque id, exemple:
    pour C169v2-00006 je voudrait dire que le debut cest 24500 et la fin 29389, cest ca mon souci je ne sais pas comment "splite pour avoir ces infos merci
    J'ai pense pour que j'ai les deux infos a chaque fois separement de creer deux hashs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/local/bin/perl
     
    my %genocoord1 = ();
    my %genocoord2 = ();
     
     
    open (DESC2, "coco_cds");
    while(<DESC2>){
    	next if /^\#/;
    	chomp;
    	 %genocoord1{$id}=$coordonne 1;
             %genocoord2$id}=$coordonne 2;

    ensuite, mon second souci j'ai un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C169v2-03065	Aster-04711	C169v2-03066	Aster-04710
    C169v2-02882	Aster-02471	C169v2-02883	Aster-02472
    C169v2-02880	Aster-02469	C169v2-02881	Aster-02470
    C169v2-01286	Aster-00794	C169v2-01287	Aster-00793
    C169v2-05054	Aster-06211	C169v2-05055	Aster-06212
    je voudrais recuperer les chiffres entre les Aster-

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    open my $fh, '<', 'mamoud.txt' or die;
     
    while (<$fh>){
    	chomp;
    	my ($A,$C,$B,$D)=split(/\t/);
    	print my ($astC,$astD)=~ m/C169v2-\d+\tAster-(\d+)C169v2-\d+\tAster-(\d+)/;
    mon code ne marche pas, est ce que vous pourriez m'aider

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ton premier problème se résout facilement avec un seul hash contenant lui-même des hash :

    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
    my %gene;
    while (my $ligne = <DATA>) {
      next if $ligne =~ /^#/;
      chomp($ligne);
      my (undef, $gene_id, $start, undef, undef, undef, undef, $end) = split /\t/, $ligne;
      ($end) = $end =~ /(\d+)$/;
     
      $gene{$gene_id} = { start => $start, end => $end };
    }
     
    print "$_: start $gene{$_}->{start}, end $gene{$_}->{end}\n" foreach keys %gene;
     
    __DATA__
    # Colonne 1: scaffold
    #         2: gene id
    #         3: start
    #         4: dir
    #         5: origine gene model
    #         6: proteinId
    #         7: ex-nom
    #         8: coordonnees genomiques
    #         9: structure intron/exon
    #        10: segments du CDS couvert par EST
    C169-scaffold_1	C169v2-00001	3777	-	ORIGINAL JGI	55057	Genemark1.1_g	3777..3857,4046..4192,4443..4561,4940..5234,5406..5540,5734..5847,6009..6098,6421..6492
    C169-scaffold_1	C169v2-00002	12682	-	ORIGINAL JGI	55058	Genemark1.2_g	12682..12691,13195..13445,13694..13711
    C169-scaffold_1	C169v2-00003	18095	+	ORIGINAL JGI	31905	fgenesh1_kg.1_#_1_#_4092_1_CBOZ_CBPA	18095..18097,18280..18410,18690..18972
    C169-scaffold_1	C169v2-00004	20452	+	ORIGINAL JGI	6968	gw1.1.615.1	20452..20496,20636..20726,20881..21046,21194..21382,21567..21735
    C169-scaffold_1	C169v2-00005	21893	-	ORIGINAL JGI	34662	fgenesh1_pm.1_#_3	21893..22051,22201..22293,22590..22747,22864..23102,23192..23364
    C169-scaffold_1	C169v2-00006	24500	+	ORIGINAL JGI	38811	fgenesh1_pg.1_#_4	24500..24674,25216..25503,25746..25907,26012..26196,26516..26752,26951..27159,27373..27550,27728..27961,28207..28371,28619..28890,29131..29389
    Cela dit, il semble qu'il manque les colonnes 8 et 9 de ton fichier d'entrée.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Pour ton deuxième problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while (<DATA>){
    	chomp;
    	my ($geneA,$asterC,$geneB,$asterD) = map { /(\d+)$/ } split(/\t/);
     
    	print "GeneA $geneA, asterC = $asterC\n", "GeneB $geneB, asterD = $asterD\n";
    }
     
    __DATA__
    C169v2-03065	Aster-04711	C169v2-03066	Aster-04710
    C169v2-02882	Aster-02471	C169v2-02883	Aster-02472
    C169v2-02880	Aster-02469	C169v2-02881	Aster-02470
    C169v2-01286	Aster-00794	C169v2-01287	Aster-00793
    C169v2-05054	Aster-06211	C169v2-05055	Aster-06212

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    Ok merci beaucoup pour votre aide

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

Discussions similaires

  1. parseur de fichier
    Par ronan99999 dans le forum C
    Réponses: 10
    Dernier message: 10/02/2004, 12h46
  2. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29
  3. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 18h05
  4. [debutant???] Parseur & portabilté
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 24/07/2003, 13h20
  5. Réponses: 3
    Dernier message: 04/09/2002, 09h42

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