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 :

synthese de données


Sujet :

Bioinformatique Perl

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut synthese de données
    Bonjour
    Au cours de mon stage j'ai réalisé un pipeline permettant d'analyser des variations génomiques. Pour chaque région génomique et chaque échantillon, des fichiers txt et des graphiques sont générés permettant cette analyse. Plusieurs analyses sont lancées en parallèle. pour faciliter l'analyse des résultats, il faudrait que je fasse un script perl permettant de faire une synthèse des résultats par région génomique étudiée. Malheureusement je ne sais pas comment m'y prendre.Quelqu'un pourrait il m'aiguiller?
    Merci

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    hum que veux-tu dire par faire une synthèse ? tu peux préciser un peu plus ?
    puisque tes résultats sont liés à une position, tu peux l'utiliser pour retrouver les infos concernées non ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut re
    Par exemple pour chaque échantillon et chaque région génomique donnés, des fichiers txt contenant la région génomique, les positions de la variation structurale et ses caractéristiques sont générés en parallèle.
    Ce que j’appelle faire une synthèse par région génomique, c'est regrouper les variations structurales détectées dans cette région dans un même fichier quelque soit les échantillons.
    Et je ne peut pas faire un copier coller avec les commandes perl ou linux car comme les échantillons sont traités en parallèle je ne peut opier plusieurs choses en même temps dans le même fichier. De plus il faut que rajoute le nom de l’échantillon dans les caractéristiques (le nom de l'échantillon est dans le nom du fichier txt).

  4. #4
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    de ce que j'ai compris, chaque fichier de résultat est spécifique d'un échantillon et d'une position ? par contre il y a plusieurs types de fichiers pour un même échantillon et une même position ?

    si tu peux savoir quand un job se termine, alors tu peux ensuite transférer les infos vers un support centralisé, comme un fichier spécifique pour une position.
    plusieurs jobs en parallèle, plusieurs fichiers de résultat, mais 1 seul "contrôleur" qui exécutera une simple copie une fois le job terminé.
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut re
    Mon pipeline se réalise en plusieurs étapes, et pour cela je contrôle le déroulement des jobs. Une fois que tous les jobs d'une étape sont terminés je lance la seconde étape. Donc je peux savoir quand mes jobs se terminent. En revanche un simple copier coller des résultats dans un même fichier ne fonctionne pas à l'intérieur du pipeline. Il fonctionne seulement quand il est réalisé "a la main" après que le pipeline ait fini de tourner. De plus, une simple copie ne me suffit pas, j'ai besoin de récupérer le nom du fichier a chaque copie d'une variation structurale dans le fichier centrale afin de savoir a quel échantillon elle appartient.

  6. #6
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    comment démarre-tu le pipeline ?
    y a-t-il un contrôleur qui gère les jobs ?
    peux-tu montrer des exemples de fichiers de résultats et de fichiers finaux ?

    je n'arrive pas à me faire une idée de ce que tu veux au final
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Tu pourrais donner une idée de tes données en entrée (et de ce que tu veux en sortie)?

    Là, pour l'instant, on n'a pas une idée claire de ce que tu veux.

  8. #8
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut re
    Mon pipeline commence par la définition de toutes les options a mettre en ligne de commandes et gestion des erreurs allant avec. Ensuite commencent les étapes d'analyse.
    Je gère mes jobs de la façon suivante :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    if ($submit eq "yes") {
    	print STDERR "Launching individual bam file jobs";
    }
    my (%pileup_jobs_id,$ref_bam_pileup_job,@prefix_list);
    foreach my $bam (@bamfiles) {
    	#create a directory for each bam
    	my @nn=split(/\./,$bam); 
    	my $prefix=$nn[0];
    	my $command = "mkdir $prefix";
    	qx{$command};
     
    	push(@prefix_list,$prefix);
    	#create qsub for each chr
     
    	foreach my $chr (@chrs) {
    		$command = "mkdir $prefix/$chr";
    		qx{$command};
    		#generate qsub file and launch it
    		my $qsuboutfile = "$bam\_$chr\_bam2cnv.qsub";
    		open (QSUB,">$prefix/$chr/$qsuboutfile")or die "\nError : $qsuboutfile file could not be created: $!\n";
    		print QSUB qq(#!/bin/bash
    #\$ -S /bin/bash
    #\$ -V
    #\$ -M $users{$user}
    #\$ -m e
    #\$ -o $qsuboutfile.out
    #\$ -e $qsuboutfile.err
    #\$ -cwd
    #\$ -q long.q
    #\$ -pe thread 5
     
    # command(s):
    hostname >&2
     
    XXX : commandes a effectuer en bash
    );
    		close QSUB;
     
    		#launch qsub job if asked
    		my $jobid;
    		if ($submit eq "yes") {
    			my $dependencies = "";
    			if (defined $hold_jid) {
    				$dependencies = "-hold_jid $hold_jid";
    			}
    			my $instruction = "cd $prefix/$chr; qsub $dependencies $qsuboutfile | awk '{print \$3}' ";
    			$jobid=qx{$instruction};
    			chomp $jobid;
    			if ($bam ne $refbam) {
    				$pileup_jobs_id{$bam} = $jobid;
    			} else {
    				$ref_bam_pileup_job =  $jobid;
    			}
    			print STDERR ".";
    		} else {
    			$pileup_jobs_id{$bam} = "";
    		}
    	}
    }
    Sinon voici l'exemple d'un fichier de sortie généré par le pipeline
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XXXX	        12900	13076	0.828	      1.45e-07	2.290
    XXXX 	14610	14760	1.412       1.44e-10	4.10
    XXXX	        15890	16002	1.049       7.10e-12	2.85
    Voici trois variations structurales provenant d'un échantillon Y sur une région génomique XXXX.

    Et j'aimerai obtenir un fichier du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    XXXX	      Y1       12900	13076	0.828	      1.45e-07	2.290
    XXXX	      Y8       12900	13076	0.828	      1.45e-07	2.290
    XXXX       Y2       12950        13076       0.589       3.02e-03      1.960
    XXXX       Y5       12950        13076       0.589       3.02e-03      1.960
    En fait je veux regrouper toutes les variations structurales provenant de différents échantillons mais de la même région génomique dans un même fichier en ajoutant la provenance de la variation détectée..

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Si je comprends bien, tu veux regrouper toutes les lignes commençant par le même mot.

    Est-ce ça?

  10. #10
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    C'est une partie de ce que j'aimerai bien faire effectivement.

  11. #11
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Je ne comprends toujours pas.

    Je regarde tes données en sortie du pipeline et celles que tu voudrais avoir. Et je suppose que les données en sortie du pipeline doivent être triturées pour obtenir ce que tu voudrais avoir au final. Déjà, est-ce que c'est ça?

    Entre les deux séries de données, le premier enregistrement est reconnaissable, mais je ne sais pas d'où vient le "Y1" que tu as ajouté, il ne semble venir de nulle part. Quant aux trois lignes suivantes, je ne vois pas du tout d'où elles viennent.

    Je précise que je te parle en termes de données (en termes informatiques, donc), parce que je n'y connais rien en génétique: la dernière fois que j'ai fait de la biologie en fac, la génétique en était à ses tous premiers balbutiements, tout cela a énormément changé. Et comme je n'ai jamais eu l'occasion de travailler dans ce domaine, j'en suis resté à ce niveau proche de 0 (j'ai même probablement oublié le peu que je savais à l'époque).

    Bref il faudrait quelles sont données en entrée et comment tu les veux en sortie. Pour l'instant, je ne suis même pas sûr que ce soit clair dans ton esprit.

  12. #12
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    Effectivement, les données doivent être un peu "triturées". Les Y sont les différents échantillons d'ou proviennent les variations structurales.
    Les données d'entrées (variations) sont classées en fonction de l'échantillon et de la région génomique étudier. La région génomique est présente dans les données ce qui correspond a XXXX. En revanche les Y (échantillons) sont présents dans le nom du fichier. Donc pour avoir le nom de l'échantillon il faut récupérer le nom du fichier d'ou les variations sont issues.

  13. #13
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    OK, j'ai compris maintenant.

    Voici une solution possible: tu lis toutes tes données en entrée en prenant soin de les enrichir avec le nom de l'échantillon, et stokes toutes ces lignes dans un hash dont la clé est la région génomique (xxxx).

    A la fin, quand tu as lus tous tes fichiers, tu parcours la hash pour l'imprimer dans un fichier.

  14. #14
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Quelque chose comme cela (non testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    my %hash;
    $nom_echantillon = "Y1";
    while (my $line = <FILI_IN>) {
         chomp $line;
         my ($region, @reste_de_la_ligne) = split /\s/, $line;
         my $newline = join "\t", $region, $nom_echantillon, @reste_de_la_ligne, "\n";
         if (defined $hash{$region}) {
              $hash{$region} .= $newline;
         }
         else {
              $hash{$region} = $newline;
         }
    }
    A la fin de ce processus, quand tu as lu tous tes fichiers, $hash{XXXX} va contenir un enregistrement multi-ligne regroupant toutes les lignes relatives à XXXX.

    Il suffit alors de balayer le hash et d'imprimer les valeurs:

    Par exemple, si l'ordre dans lequel les régions apparaissent n'a pas d'importance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print foreach values %hash;
    Si tu veux les régions par ordre alphabétique (ou plutôt "ASCIIbétique"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach my $region (sort keys %hash) {
         print OUTFILE $hash{$region};
    }

  15. #15
    Membre du Club
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    Merci
    Effectivement c'est une idée qui ne m'était pas venu à l'esprit, je vas la tester.
    En tout cas merci de votre patience et de votre aide.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2012, 15h46
  2. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  3. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51
  4. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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