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

Bioinformatique Perl Discussion :

Probleme code lie a la bioinformatique


Sujet :

Bioinformatique Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme code lie a la bioinformatique
    Bonjour a tous

    J' ai un probleme qui regarde la bioinformatique, mais c'est un probleme de code de traitement de file txt.

    Brevement

    J'ai un file txt de dbsnp pour sortir tous les SNPs d'un gene. Apres j'ai un file txt avec le genotypage de 1050 individus avec des pouces (je peux avoir le file globale avec tous le chromosomes ou chromosome par chromosome). Je veux sortir tous les SNPs qui sont dans mon file 1 sur le file 2 enfin d'avoir tous le ligne de genotypage pour les SNPs que j'ai choisi dans le file 1.

    Le file 1 est un file txt voila des lignes:

    169: rs60465173 has merged into rs8057341 Homo sapiensCAGCTGACTGAGGCAGCGGGAGTTGAA/GAAGAAACGATATTAGTTCATGGTGA ABI, AFFY, ILLUMINA-UK, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA170: rs17312781 has merged into rs8057341 Homo sapiensCAGCTGACTGAGGCAGCGGGAGTTGAA/GAAGAAACGATATTAGTTCATGGTGA ABI, AFFY, ILLUMINA-UK, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA, ILLUMINA171
    Le file 2 est un autre file text avec premiere ligne les individus et les lignes suivantes les SNPs.

    First row XXX XXX XXX XXX XXX XXX XXX XXX (1050 cells)

    rsnumber AA AG AG AG AA AG AG AG (1050 times)

    rsnumber TT AT AA AT AT .....
    Je voudrais avoir comme resultat final le file 2 mais seulment avec les SNPs qui j'ai dans le file 1

    Avec ce code la j'ai un file 1 avec tous les rs extrait du file 1. Je voudrais outiliser l' array output pour chercher pour chacun element de cet array le lignes dans le file 2 et la printer dans un nouveau fichier. Est ce que ca peut marcher? Je sais que peut etre mieux de utiliser des hachages, mais je ne vois pas bien ou les utiliser....Le file 2 est un file de gb ainsi que je ne puex pas utiliser excel pour l'ouvrir....
    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
    #!/usr/bin/perl -w
    use strict;
    my$line;
    my@fields;
    my@output;
    open (FILE, 'XXXX.txt') or die "can't open the file: $!";
    open (FD, '>XXXX.txt') or die "can't open the file: $!";
                 while (defined ($line= <FILE>)) {
                             my@fields= split (/\s/ ,$line);
                             my@output = grep /rs\d{5,}\b/ ,@fields;
                             my$rs = join (':' , @output);
                               $rs=~ s/:/\n/g;
                               print FD "$rs";
    }
    close FILE;
    close FD;
    Quelqun m'a dit d'utiliser DBM::Deep mais je dois trouver un key commun et je ne sais pas ou je peux la trouver....je ne suis pas tres familier avec le hachages....

    Merci pour votre aide

    Bonne journee

    Micky

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Tes explications ne sont pas très claires.

    Quand tu as dans le premier fichier :
    rs60465173 has merged into rs8057341 Homo sapiens
    Tu veux donc récupérer les valeurs de rs60465173 et de rs8057341 et retrouver les valeurs qui y sont associées dans ton second fichier?

    je dois trouver un key commun et je ne sais pas ou je peux la trouver
    Tu dois bien avoir un identifiant commun entre les 2 fichiers, c'est le rsnumber non?

    Si c'est bien cela, que ton but est d'écrire dans un fichier de sortie les valeurs des lignes du fichier 2 (rsnumber AA AG AG AG AA AG AG AG (1050 times)) dont les rsnumber sont présents dans le fichier 1, tu peux essayer d'apter le code 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/usr/bin/perl -w
     
    use strict;
     
     
    # tableau indexé provisoir contenant les rsnumber
    my @output
     
    # fichier1
    open my $file, '<', 'XXXX.txt' or die "can't open the file: $!";
     
    while ( my $line = <$file>)) {
    	# récupération des identifiants rsnumber
    	push @output, ($line =~ m/(rs\d{5,})\b/g);
    }
    close $file;
     
    # mise des valeurs rsnumber dans un tableau associatif
    my %output_tab;
    map {$output_tab{$_} = 1} @output;
     
    # fichier de sortie
    open my $fh_out, '>', 'XXXX.txt' or die "can't open the file: $!";
     
    # fichier2
    open my $fd, '<', 'XXXX.txt' or die "can't open the file: $!";
    while ( my $line = <$file>)) {
    	# récupération des identifiants rsnumber
    	if ($line =~ m/(rs\d{5,})\b/){
    		if (exists $output_tab{$1}){
    			# écriture dans le fichier de sortie
    			print $fh_out $line;
    		}
    	}
    }
    close $fd;
    close $fh_out;
    -- Jasmine --

  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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Ecrit plus simplement :

    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
    #!/usr/bin/perl -w
    use strict;
    use warnings;
     
    # tableau indexé provisoir contenant les rsnumber
    my %output;
     
    # fichier1
    open my $file, '<', 'XXXX.txt' or die "can't open the file: $!";
     
    # lecture de fichier1 et mise des valeurs rsnumber dans un tableau associatif
    while ( my $line = <$file>)) {
    	# récupération des identifiants rsnumber
    	$output{$_} foreach $line =~ m/(rs\d{5,})\b/g;
    }
    close $file;
     
    # fichier de sortie
    open my $fh_out, '>', 'XXXX.txt' or die "can't open the file: $!";
     
    # fichier2
    open my $fd, '<', 'XXXX.txt' or die "can't open the file: $!";
    print $fh_out grep { my ($rs) = m/(rs\d{5,})\b/; exists $output{$rs} } <$file>;
    close $fd;
    close $fh_out;
    J'aime bien utiliser grep pour greper
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Ecrit plus simplement :

    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
    #!/usr/bin/perl -w
    use strict;
    use warnings;
     
    # tableau indexé provisoir contenant les rsnumber
    my %output;
     
    # fichier1
    open my $file, '<', 'XXXX.txt' or die "can't open the file: $!";
     
    # lecture de fichier1 et mise des valeurs rsnumber dans un tableau associatif
    while ( my $line = <$file>)) {
    	# récupération des identifiants rsnumber
    	$output{$_} foreach $line =~ m/(rs\d{5,})\b/g;
    }
    close $file;
     
    # fichier de sortie
    open my $fh_out, '>', 'XXXX.txt' or die "can't open the file: $!";
     
    # fichier2
    open my $fd, '<', 'XXXX.txt' or die "can't open the file: $!";
    print $fh_out grep { my ($rs) = m/(rs\d{5,})\b/; exists $output{$rs} } <$file>;
    close $fd;
    close $fh_out;
    J'aime bien utiliser grep pour greper
    c'est vrai que c'est plus concis, merci pour cette remarque. C'est ça que j'aime sur ce forum, c'est que j'apprends en essayant d'aider les autres. Enfin, il faut encore voir si c'est vraiment ce qu'il veut faire car je ne suis pas certaine d'avoir bien compris ses explications .
    -- Jasmine --

  5. #5
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    J'ai compris la même chose que toi. Je suppose que micky n'est pas francophone. Au fait, bienvenu micky744.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    J'ai compris la même chose que toi. Je suppose que micky n'est pas francophone. Au fait, bienvenu micky744.
    Bonjour et excuse moi pour n'avoir ecrit depuis longtemps, mais j'etais une semaine en vacance!

    Merci our votre aide. J'ai reflechi un peu et avec un peu d'aide j'ai ecrit un code en untilisant le rs comme keys et la position (en utilisant tell) comme valeur, donc s'il y a la key je vais a la position et je print la ligne. Je vais attacher le code plus tard et je vais regradre votre code!!

    Merci encore

Discussions similaires

  1. Probleme code sql
    Par Micavk dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 25/01/2006, 14h28
  2. probleme code vba ne s'execute pas apres instruction sql
    Par arnogef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/12/2005, 12h34
  3. [TP] Problème code touche clavier
    Par phildeb dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 02/12/2005, 22h44
  4. Probleme code asm dans .c
    Par sorry60 dans le forum C
    Réponses: 5
    Dernier message: 18/04/2005, 13h15
  5. [langage] probleme code
    Par louisis dans le forum Langage
    Réponses: 5
    Dernier message: 30/06/2004, 17h43

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