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 :

requete Genbank sur des accessions


Sujet :

Bioinformatique Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut requete Genbank sur des accessions
    Mail reçu de Sara

    bonjour jasmine,
    j'ai vu que ta tres bien repondu à notre amie sur ces bactereie en biopel.
    moi aussi je debut en bioinformatique et je suis entrain de me former en biopel et je dois te dire que c pas facile.
    mon problem est que je dois recupere des sequence d'une part du gene et d'autre part de son ARNm chez la souris.
    je te donne un exemple :
    mon fichier est celui la:
    http://www.mirz.unibas.ch/ElMMo2/Bul...ullList.tab.gz

    il ce compose des information suivant:
    NM_001001565|TR(1..3100)CDS(832..2670) 7 14 GCACCTGT .....
    NM_001001565|TR(1..3100)CDS(832..2670) 87 94 TAGGGCAG .....
    NM_001001565|TR(1..3100)CDS(832..2670) 179 186 TGTCCAGT

    je dois donc chercher la sequence de NM_001001565 entre autre.
    j'ai trouver la sequence sur ce line :
    http://www.ncbi.nlm.nih.gov/entrez/v...re&id=48525358

    je ne sais pas sur quel base appller; et quelle requet faire;

    toute information est la bien venu...

    merci
    sarah
    1) lis ton fichier ligne par ligne et récupère les accession number
    2) interroge GenBank

    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
    #!/usr/local/bin/perl
     
    use strict;
    use Bio::DB::GenBank;
     
    # Lecture du fichier et récupération des acc
    #----------------------------------------------
    my $file = "P:/Perl/scripts/Files/acc.txt";
    open(FICH, $file) or die "impossible d'ouvrir le fichier";
    my $line;
    my @request;
    while ($line = <FICH>){
        if($line =~ /^(\w+)|TR/){
            push (@request, $1);
        }
    }
    close(FICH);
     
     
    my $gb = new Bio::DB::GenBank;
     
    foreach my $acc (@request){
        # Recherche dans Genbank
        #--------------------------
        my $info = $gb->get_Seq_by_acc($acc);
        my $seq = $info->seq();
        print $seq;
    }
    Tu auras le message, c'est normal
    MSG: [NM_001001565] is not a normal sequence database but a RefSeq entry. Redirecting the request.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    j'ai pas encor essyer le tien mais je te montre le mien.
    par la suit je veux faire un blat ou un sim4 entre les sequence de ma propre base de donnée et les sequence que j'aurai trouvé avec la base de donnée bioperl
    c'est pour cela que je laisse la requet dans le while

    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
    #!/usr/local/bin/perl -w
    use strict;
     
     
    use Bio::SeqIO ;
    use Bio::DB::GenBank;
    use Bio::DB::RefSeq;
     
     
    open (LIRE, "acc.txt") || die "Pbl ouverture fichier LIRE";
     
    my ($ligne,$sequence,$db);
    while ($ligne = <LIRE>)
    {	
    	my ($acc,$cds,$start_mir,$end_mir,$seq_mir,$mir);
    	$acc="";$cds="";$start_mir="";$end_mir="";$seq_mir="";$mir="";
    	chomp $ligne;
    	$ligne=~ s/ +/ /g;
    	for ($ligne=~ m/.+/)
    	{	
    		for ($ligne=~ m/^(.+)\|TR\(.+\)CDS\(\d+\.\.(\d+)\) (\d+) (\d+) ([ATGC]+) .+ (.+) [0-9]+ .+ [0-9]+/)
    		{	
    			$acc=$1;$cds=$2;$start_mir=$3 + $cds;$end_mir=$4 + $cds;$seq_mir=$5;$mir=$6;
    		}
    		open (ECRIR, ">>full.txt");
    		$db = Bio::DB::RefSeq -> new();
    		$sequence = $db -> get_Seq_by_id($acc);
    		print ECRIR "> " ;
    		print ECRIR $sequence -> desc(), "\n" ;
    		print ECRIR $sequence -> seq(), "\n" ;
    		close ECRIR; close LIRE;
    	}
     
    }
    et voila ce qu'il me revoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -------------------- WARNING ---------------------
    MSG: id () does not exist
    ---------------------------------------------------
    Can't call method "desc" on an undefined value at bioperl.pl line 31.


    une remarque: je trouve que tu est rapide, chapo

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut rappel
    avant de faire mon code j'ai essyer celiu la et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    use Bio::SeqIO ;
    use Bio::DB::GenBank;
    use Bio::DB::RefSeq;
     
    $db = Bio::DB::RefSeq -> new();
     
    $sequence = $db -> get_Seq_by_id("XM_981806");
     
    print "> " ;
    print $sequence -> display_id(), "\n" ; #refseq accession
    print $sequence -> accession_number(), "\n" ;
    print $sequence -> desc(), "\n" ;
    print $sequence -> seq(), "\n" ;

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    C'est normal que tu ne trouves rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sequence = $db -> get_Seq_by_id($acc);
    Tu lui demandes une recherche d'id et tu lui passes un accession !!!

    Fais comme je l'ai expliqué plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sequence = $db -> get_Seq_by_acc($acc);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut cool
    c super ça merche
    merci
    et en plus j trouver mon erreur sur mon script
    j'ai mal matcher ma ligne dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($ligne=~ m/^(.+)\|TR\(.+\)CDS\(\d+\.\.(\d+)\) (\d+) (\d+) ([ATGC]+....
    je l'es remplacer par un split


    merci merci et à bientôt

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Si tu n'as plus de questions, indique que ce sujet est résolu en cochant la case ci-dessous.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Oui, normalment c bon, cette question est résolue
    le programme je l'ai lancer hier, et jusqu'a aujourd'hui il tourne encore.
    es-que c normal que ça prend tout ce temps?

    pour finir je ne voie pas le case à coche, désolé

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Citation Envoyé par sarah.c.g Voir le message
    Oui, normalment c bon, cette question est résolue
    le programme je l'ai lancer hier, et jusqu'a aujourd'hui il tourne encore.
    es-que c normal que ça prend tout ce temps?

    pour finir je ne voie pas le case à coche, désolé
    C'est normal si tu as 2000 séquences de 2000000 nucléotides à récupérer mais pas si tu n'en as que 2 de 500 nucléotides

    La case à cocher est juste sous ce post

    Je vais tester ton script sur mon pc et je te dis quoi

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    C'est incorrect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $db = Bio::DB::RefSeq -> new();
     
    $sequence = $db -> get_Seq_by_id("XM_981806");


    Voila comment procéder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use Bio::DB::GenBank;
     
    my $gb = new Bio::DB::GenBank;
    my $sequence = $gb -> get_Seq_by_acc('AF267901');
     
     
    print "> " ;
    print $sequence -> primary_id(), "\n" ; # Gi
    print $sequence -> accession_number(), "\n" ;
    print $sequence -> desc(), "\n" ;
    print $sequence -> seq(), "\n" ;

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    justement c'est pas le code acc ('AF267901') que je dois recuperer
    mais c'est plutot celui du fichier
    http://www.mirz.unibas.ch/ElMMo2/Bul...ullList.tab.gz
    et le acc ('AF267901') n'est pas present dans le fichier
    Citation Envoyé par Jasmine80 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use Bio::DB::GenBank;
     
    my $gb = new Bio::DB::GenBank;
    my $sequence = $gb -> get_Seq_by_acc('AF267901');
     
     
    print "> " ;
    print $sequence -> primary_id(), "\n" ; # Gi
    print $sequence -> accession_number(), "\n" ;
    print $sequence -> desc(), "\n" ;
    print $sequence -> seq(), "\n" ;
    d'où le DB::RefSeq
    les sequence que je dois récupere sont (un exemple est XM_981806)
    http://www.ncbi.nlm.nih.gov/entrez/v...re&id=94409763
    regarde tout a fai en bas ya la sequnce
    et bien c'est celle la que je doi récupere

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    mon code est le suivant :
    je sais je fais tjr trop compliquer.

    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
     
    #!/usr/local/bin/perl -w
    use strict;
    use Bio::SeqIO ;
    use Bio::DB::GenBank;
    use Bio::DB::RefSeq;
     
    # Lecture du fichier et récupération des acc
    # # ----------------------------------------------
     
    open (LIRE, "mm_targets_FullList.txt") || die "Pbl ouverture fichier LIRE";
    my @liste;
    my $ligne;
    while ($ligne = <LIRE>)
    {	#je dois recuperer tous les champ pour plutard
            my ($acc,$cds,$start_mir,$end_mir,$seq_mir,$mir);
    	$acc="";$cds="";$start_mir="";$end_mir="";$seq_mir="";$mir="";
    	chomp $ligne;
    	$ligne=~ s/ +/ /g;
    	$ligne=~ s/\|TR.+CDS/ CDS/g;
    	for ($ligne=~ m/.+/)
    	{	my $lig;
    		my @lig= split(' ',$ligne);
    		$acc=$lig[0];$cds=$lig[1];$start_mir=$lig[2];$end_mir=$lig[3];$seq_mir=$lig[4];$mir=$lig[6];
    		push(@liste,$acc);
    	}
    }
    close LIRE;
     
    my $db = new Bio::DB::RefSeq;
    foreach my $id (@liste)
    {	
    	my $sequence = "";
            # comme les acc se répètent dans le fichier de départ
            #je redirection pour chaque seq de chaque acc dans un fichier propre
    	open (ECRIR, ">/home/sarah/miR_epissage/projet_db_mir/mirz/gene/$id.txt");
    	$sequence = $db -> get_Seq_by_id($id);
    	if ($sequence ne "")
    	{	print ECRIR "> " ;
    		print ECRIR $sequence -> display_id(), ", " ; #refseq accession
    		print ECRIR $sequence -> desc(), "\n" ;
    		print ECRIR $sequence -> seq(), "\n" ;
    	}
     
            else 
           #je recuper les sequence quil a pas trouver et jairai les chercher manuellement
    	{	print "$id\n" ;}
    }
    close ECRIR;
    # apres avoir tous recuperer je fait un cat de tout les fichier obtenu 
    #en sort d'avoir toute les sequence dans un seul fichier.fa 
    #et chaque sequence est separer par > nom acc.

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    que contient $id? un acc? un Gi?
    Tu peux faire directement une seule requête et récupérer un groupe d'identifiants

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

Discussions similaires

  1. ADO.NET Requete SQL sur fichier Access
    Par doc_tah dans le forum ADO.NET
    Réponses: 4
    Dernier message: 09/08/2010, 09h18
  2. requete sql sur des dates
    Par dcaille dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/10/2009, 10h00
  3. requete sql sur des dates
    Par dcaille dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2009, 16h52
  4. requete update sur base access
    Par neuneu1 dans le forum Bases de données
    Réponses: 13
    Dernier message: 23/09/2009, 17h47
  5. Requetes portant sur des champs vides
    Par Pucho dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 18/10/2007, 21h44

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