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 :

garder description d'un fichier multifasta


Sujet :

Bioinformatique Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 16
    Points
    16
    Par défaut garder description d'un fichier multifasta
    Re bonjour à tout le monde,
    j'ai un fichier multifasta et je veux récupérer le tout pour l'insérer dans ma base de données et notamment la table transcript!
    Ce fichier contient l'identifiant et la description du transcrit suivi de sa séquence! (il ya à peu près 35000 transcrits dans ce fichier).
    Donc je voudrais un peu d'aide pour écrire un script pour pouvoir récupérer l'identifiant dans le champs identifiant, la description dans le champs description, et la séquence dans le champs séquence! Pour vs donner une petite idée du fichier fasta, voilà un exemple de son contenu pour un trancrit :
    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
     
    >gi|124249439|ref|NM_001080875.1| Gallus gallus succinate dehydrogenase Ip (SDHB), mRNA
    AATTCCACTAGTTACGCGACCCCCGGAACCCAAAGACTTGGGTTTCCCGGGAGCTGCCCCGGTACGGCTC
    ATGAGTGGAGGACGTCATCAGCGGTGATGATTACTCGAATGGGGGATTCTATGGGGATTACAATGCGATG
    GTCGACCAAAATGGCGGCGGCCGTGGTGGGAGTCTCCTTGAGGCGCGGCGTCCCCGCGCGGTTCCTGAGG
    GCTGGGCTGCGGCCGGTGAGGGGACTGGAGGCGGTCCACGGGATCTGTCGAGGAGCTCAGACGGCGGCTG
    CAGCTACATCACGTATCAAGAAGTTTTCCATCTACAGATGGGATCCTGATAAGCCTGGGGACAAGCCCCG
    CATGCAGACCTATGAAGTGGATTTAAATAAATGTGGGCCTATGGTACTTGATGCTCTGATTAAGATTAAA
    AACGAGTTGGACTCCACTCTGACCTTCCGCAGGTCATGCAGGGAAGGCATCTGTGGCTCCTGTGCAATGA
    ACATTGCTGGTGGAAACACCCTGGCTTGTACTAAAAAAATTGACCCTGATCTCAGCAAGACCACTAAAAT
    CTACCCTCTCCCCCACATGTATGTGGTGAAGGATCTCGTTCCAGACTTGAGTAACTTCTACGCACAGTAC
    AAATCCATCGAGCCTTACCTGAAGAAGAAGGACGAGTCGAAACAGGGCAAGGAGCAGTACTTGCAATCCA
    TAGAAGACCGTCAGAAACTGGACGGACTCTATGAGTGCATCCTCTGTGCCTGCTGCAGCACCAGCTGTCC
    CAGTTACTGGTGGAATGGGGACAAGTACTTGGGTCCTGCTGTACTCATGCAGGCCTATCGCTGGATGATC
    GACTCCAGAGATGACTACACAGAGGAACGCCTGGCACAACTTCAAGACCCATTTTCTCTCTACCGTTGTC
    ACACTATCATGAACTGCACAAGGACTTGCCCAAAGGGTTTGAACCCTGGCAAAGCAATTGCTGAGATCAA
    GAAGATGATGGCAACTTACAAAGAGAAGGCAGCCGCTGCATAATGCTGTTCCCCGACTGGAAATGTAACA
    CACAAACATGCTTTACCTGGAAGTAACCTGCACTTGATTACACCTGGTTCCAGCAGGAATGTTGGTGTTT
    TTCCCATATGCTTGTGTGTACAATAAATGCTGTAAAGAACAAAAAAAA
    Merci

  2. #2
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    quel est le SGBD que tu utilises et surtout via quel interface (e.g. MySQL via phpmyadmin) ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    Je suis sur linux ubuntu et j'utilise mysql avec le terminal donc voilà tout! Tu penses que tu pourrais m'aider??

  4. #4
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    Bon je ne comprends réellement pas où est le problème surtout que tu utilises MySQL !!! le truc est très simple... Avec MySQL il est possible de charger les données dans une base à partir d'un fichier sachant que les données en question doivent être agencées d'une manière que le SGBD arrive à identifier chacun des enregitrements champs par champs. Pour ceci il existe ce qu'on appel les séparateurs par exemple si un fichier (data.txt) contient les données suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1;data1;data11;data12
    2;data2;data21;data22
    3;data3;data31;data32
    ....
    il est possible de l'utiliser pour charger une table constituée de 4 champs et ce en utilisant le SQL suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA LOCAL INFILE '/home/user/data_files/data.txt' INTO TABLE `ma_table` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
    qui va permettre d'obtenir la table suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    champs1 | champs2 | champs3 | champs4
    1       | data1   | data11  | data12
    2       | data2   | data21  | data22
    3       | data3   | data31  | data32
    Partant de ce principe, il est possible et même judicieux d'utiliser Perl pour mettre en forme ton fichier source.

    Bon avant d'aller plus loin je veux m'assurer que ça correspond bien à ce que tu cherches à faire !!

    @+

  5. #5
    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
    Coucou,

    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
    60
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
    use FileHandle;
     
     
     
    # Fichiers d'entrée et de sortie
    #----------------------------------
     
    my $File_In = "Fasta";
    my $InFile = "P:/Perl/scripts/Files/$File_In.txt";
    my $File_Out = "FichierPourDB";
    my $OutFile = FileHandle->new (">P:/Perl/scripts/Files/$File_Out.txt");
     
     
     
    # Ouverture du fichier fasta
    #----------------------------------
    open (FileFas,"$InFile")  or die "Can't open file\n";
     
     
     
     
    # Lecture du fichier fasta
    #----------------------------------
     
    my $on =0;   # on ne passera pas dans le if lors du 1er passage
    my $LineFas;
    my $SequenceTotale;
    my $gi;
    my $Description;
     
    while ($LineFas=<FileFas>)
    {
     
            if($LineFas =~ /^>gi\|(\d+)\|ref\|[\w.]*\|\s*([\w\s\)\(]*)/)
            {
                     if ($on == 1) {print $OutFile ($gi."\t".$Description."\t".$SequenceTotale."\n")};
                     ($gi) =  $1;
                     ($Description) =  $2;
                     $on = 1;
            }
     
     
            if($LineFas =~ /^(\w*)\n/)
            {
                     my ($Sequence) =  $1;
                     $SequenceTotale = $SequenceTotale.$Sequence;
            }
     
     
    }
     
    # pour la dernière séquence
    print $OutFile ($gi."\t".$Description."\t".$SequenceTotale."\n");
     
     
    close;

    La fonction LOAD DATA LOCAL INFILE prend par défaut le signe de tabulation comme séparateurs. Il te suffit donc de charger le fichier comme Leishmaniose te l'a indiqué sans aucun paramètre à la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE ma_table (Gi VARCHAR(20), Description TEXT, Sequence LONGTEXT, PRIMARY KEY (Gi));
    LOAD DATA LOCAL INFILE 'P:/Perl/scripts/Files/FichierPourDB.txt' INTO TABLE `ma_table`;


    Bon travail,

    Jasmine,



    PS1: Je travaille sous windows, je ne sais pas si cela fonctionnera sous linux pour ce qui est de l'appel des fichiers, peut être faut-il utiliser l'antislash au lieu du slash

    PS2: Sais-tu que tu peux aussi te connecter directement à Genbank, y faire ta requête via BioPerl puis charger les informations renvoyées dans une base de données sans passer par aucun fichier texte?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Points : 14
    Points
    14
    Par défaut editeur perl ?
    bonjour je voudrais tester un programme en perl.quel est l'editeur de perl et comment tester ce programme
    merci d'avance.

  7. #7
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    Citation Envoyé par bigplayer
    bonjour je voudrais tester un programme en perl.quel est l'editeur de perl et comment tester ce programme
    merci d'avance.
    Tout d'abord je ne vois pas de relation entre les multifasta et ton post, il serait donc plus adéquat à l'avenir de créer un nouveau sujet. Ensuite, ce qu'on écrit en perl constitue plutot un script qu'un programme. Enfin, pour ce qui est des éditeurs du langage Perl il en existe une multitude en commençant par le plus bête c'est à dire le notepad et je me rappel même avoir vu sur ce forum un post qui parlait des éditeurs pour perl, note qu'en googlant "editeur perl" tu auras une idée sur la panoplie, tu peux aussi utiliser la fonction recherche de ce forum (je t'assure que ça fonctionne correctement)... En ce qui concerne le test même du script, je suis désolé mais je ne suis pas devin donc je ne peux pas te dire comment faire si je ne connais pas le code, de tout façon commence par vérifier que tu as bien perl sur ta machine en tapant perl -v sur la console, si perl est bien installé tu auras des info. sur la version de perl sinon il faut commencer par le télécharger/installer ensuite tu pourra faire fonctionner tes scripts...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\perl>perl mon_script.pl
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\perl> perl mon_script.pl input.txt output.html
    ...

    ceci dépend de ce qu'on appel le usage du script

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

Discussions similaires

  1. [WD14] Récupérer la description d'un fichier
    Par no_me_entero dans le forum WinDev
    Réponses: 6
    Dernier message: 07/07/2009, 19h59
  2. Description d'un fichier
    Par Daxou31 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2008, 01h01
  3. ajout d'une description pour des fichiers listes avec apache
    Par deny dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 31/10/2007, 10h16
  4. Réponses: 2
    Dernier message: 28/08/2007, 17h12
  5. Garder une trace des fichiers log
    Par Krispy dans le forum Administration système
    Réponses: 2
    Dernier message: 10/05/2006, 19h20

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