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 :

convertir fichier embl en fasta (embl2fasta)


Sujet :

Bioinformatique Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut convertir fichier embl en fasta
    Je débute en bioinformatique et en particulier sur Perl. Je cherche à realiser un script pour transformer des données en format embl en format fasta.

    Format embl:

    ID AF205856; SV 1; linear; mRNA; STD; HUM; 1911 BP.
    XX
    AC AF205856;
    XX
    DT 29-DEC-1999 (Rel. 62, Created)
    DT 07-OCT-2008 (Rel. 97, Last updated, Version 3)
    XX
    DE Homo sapiens potassium ionic channel Kv4.3 short isoform mRNA, complete
    DE cds.
    XX
    KW .
    XX
    OS Homo sapiens (human)
    OC Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; Mammalia;
    OC Eutheria; Euarchontoglires; Primates; Haplorrhini; Catarrhini; Hominidae;
    OC Homo.
    XX
    RN [1]
    RP 1-1911
    RA Calmels T.P.G., Faivre J.-F., Javre J.-L., Cheval B., Rouanet S., Bril A.;
    RT "Long and Short Human Isoforms of the Kv4.3 Channel: Cloning, Expression,
    RT Electrophysiology, Pharmacology and Phosphorylation by Protein Kinase C";
    RL Unpublished.
    XX
    RN [2]
    RP 1-1911
    RA Calmels T.P.G., Faivre J.-F., Javre J.-L., Bril A.;
    RT ;
    RL Submitted (17-NOV-1999) to the EMBL/GenBank/DDBJ databases.
    RL Cardiovascular Pharmacology, SmithKline Beecham, 4 Rue du Chesnay
    RL Beauregard, Saint Gregoire 35760, France
    XX
    DR ASTD; TRAN00000115283.
    DR Ensembl-Gn; ENSG00000171385; Homo_sapiens.
    DR Ensembl-Tr; ENST00000302127; Homo_sapiens.
    DR Ensembl-Tr; ENST00000315987; Homo_sapiens.
    DR Ensembl-Tr; ENST00000369697; Homo_sapiens.
    DR H-InvDB; HIT000073868.
    DR RFAM; RF00485; K_chan_RES.
    XX
    FH Key Location/Qualifiers
    FH
    FT source 1..1911
    FT /organism="Homo sapiens"
    FT /mol_type="mRNA"
    FT /tissue_type="heart"
    FT /db_xref="taxon:9606"
    FT CDS 1..1911
    FT /codon_start=1
    FT /product="potassium ionic channel Kv4.3 short isoform"
    FT /function="transient outward potassium channel"
    FT /note="similar to cardiac ITO1"
    FT /db_xref="GOA:Q9UK17"
    FT /db_xref="HGNC:6239"
    FT /db_xref="InterPro:IPR000210"
    FT /db_xref="InterPro:IPR003091"
    FT /db_xref="InterPro:IPR003131"
    FT /db_xref="InterPro:IPR003968"
    FT /db_xref="InterPro:IPR003975"
    FT /db_xref="InterPro:IPR004056"
    FT /db_xref="InterPro:IPR005821"
    FT /db_xref="InterPro:IPR011333"
    FT /db_xref="PDB:1S1G"
    FT /db_xref="PDB:2NZ0"
    FT /db_xref="UniProtKB/Swiss-Prot:Q9UK17"
    FT /protein_id="AAF20924.1"
    FT /translation="MAAGVAAWLPFARAAAIGWMPVANCPMPLAPADKNKRQDELIVLN
    FT VSGRRFQTWRTTLERYPDTLLGSTEKEFFFNEDTKEYFFDRDPEVFRCVLNFYRTGKLH
    FT YPRYECISAYDDELAFYGILPEIIGDCCYEEYKDRKRENAERLMDDNDSENNQESMPSL
    FT SFRQTMWRAFENPHTSTLALVFYYVTGFFIAVSVITNVVETVPCGTVPGSKELPCGERY
    FT SVAFFCLDTACVMIFTVEYLLRLFAAPSRYRFIRSVMSIIDVVAIMPYYIGLVMTNNED
    FT VSGAFVTLRVFRVFRIFKFSRHSQGLRILGYTLKSCASELGFLLFSLTMAIIIFATVMF
    FT YAEKGSSASKFTSIPASFWYTIVTMTTLGYGDMVPKTIAGKIFGSICSLSGVLVIALPV
    FT PVIVSNFSRIYHQNQRADKRRAQKKARLARIRVAKTGSSNAYLHSKRNGLLNEALELTG
    FT TPEEEHMGKTTSLIESQHHHLLHCLEKTTNHEFIDEQMFEQNCMESSMQNYPSTRSPSL
    FT SSHPGLTTTCCSRRSKKTTHLPNSNLPATRLRSMQELSTIHIQGSEQPSLTTSRSSLNL
    FT KADDGLRPNCKTSQITTAIISIPTPPALTPEGESRPPPASPGPNTNIPSIASNVVKVSA
    FT L"
    XX
    SQ Sequence 1911 BP; 416 A; 632 C; 499 G; 364 T; 0 other;
    atggcggcag gagttgcagc ctggctgcct tttgcccggg ctgcggccat cgggtggatg 60
    ccggtggcca actgccccat gcccctggcc ccggccgaca agaacaagcg gcaggatgag 120
    ctgattgtcc tcaacgtgag tgggcggagg ttccagacct ggaggaccac gctggagcgc 180
    tacccggaca ccctgctggg cagcacggag aaggagttct tcttcaacga ggacaccaag 240
    gagtacttct tcgaccggga ccccgaggtg ttccgctgcg tgctcaactt ctaccgcacg 300
    gggaagctgc actacccgcg ctacgagtgc atctctgcct acgacgacga gctggccttc 360
    tacggcatcc tcccggagat catcggggac tgctgctacg aggagtacaa ggaccgcaag 420
    agggagaacg ccgagcggct catggacgac aacgactcgg agaacaacca ggagtccatg 480
    ccctcgctca gcttccgcca gaccatgtgg cgggccttcg agaaccccca caccagcacg 540
    ctggccctgg tcttctacta cgtgactggc ttcttcatcg ctgtctcggt catcaccaac 600
    gtggtggaga cggtgccgtg cggcacggtc ccgggcagca aggagctgcc gtgcggggag 660
    cgctactcgg tggccttctt ctgcctggac acggcgtgcg tcatgatctt caccgtggag 720
    tacctcctgc ggctcttcgc ggctcccagc cgctaccgct tcatccgcag cgtcatgagc 780
    atcatcgacg tggtggccat catgccctac tacatcggtc tggtcatgac caacaacgag 840
    gacgtgtccg gcgccttcgt cacgctccgg gtcttccgcg tcttcaggat cttcaagttt 900
    tcccgccact cccagggcct gcggatcctg ggctacacac tgaagagctg tgcctccgaa 960
    ctgggctttc ttctcttctc cctcaccatg gccatcatca tctttgccac tgtgatgttt 1020
    tatgccgaga agggctcctc ggccagcaag ttcacaagca tccctgcctc gttttggtac 1080
    accattgtca ccatgaccac actgggatac ggagacatgg tgcctaagac gattgcaggg 1140
    aagatcttcg gctccatctg ctccttgagt ggcgtcctgg tcattgccct gccagtccct 1200
    gtgattgttt ccaactttag ccggatttac caccagaatc agagagctga taaacgcagg 1260
    gcacaaaaga aggcccgcct tgccaggatc cgtgtggcca aaacaggcag ttcgaatgca 1320
    tacctgcaca gcaagcgcaa cgggctcctc aacgaggcgc tggagctgac gggcacccca 1380
    gaagaggagc acatgggcaa gaccacctca ctcatcgaga gccagcatca tcacctgctg 1440
    cactgcctgg aaaaaaccac taaccacgag tttattgatg agcagatgtt tgagcagaac 1500
    tgcatggaga gttcaatgca gaactaccca tccacaagaa gtccctcact gtccagccac 1560
    ccaggcctca ctaccacctg ctgctcccgt cgtagtaaga agaccacaca cctgcccaat 1620
    tctaacctgc cagctactcg cctgcgcagc atgcaagagc tcagcacgat ccacatccag 1680
    ggcagtgagc agccctccct cacaaccagt cgctccagcc ttaatttgaa agcagacgac 1740
    ggactgagac caaactgcaa aacatcccag atcaccacag ccatcatcag catccccact 1800
    cccccagcgc taaccccaga gggggaaagt cggccacccc ctgccagccc aggccccaac 1860
    acgaacattc cttccatagc cagcaatgtt gtcaaggtct ccgccttgta a 1911
    //

    Format fasta:

    >AY232553.1/1231-1344
    GUGGGGUACGGAGACAUGC.GUCCCGUGGGAGUGUGGGGUAAGAUUGUGGGCUCAU.UAU
    GUGCUAUCGCAGGCGUGCUAACAAUAGCGCUUCCGGUUCCAGUGAUAGUUUCUAAU
    J'ai dejà réaliser une partie de mon script, mais ça coince losque je veux éditer ma séquence (SQ). Je pense que j'ai du me tromper qq part au niveau de ma Regex mais j'arrive pas à trouver. Si qq1 avait un avis.


    Voila mon script:

    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
    #!/usr/bin/perl
     
     
    use warnings;
    use strict;
     
    while (<>) {
     
     
    	my $title = "";
    	my $sequence = "";
            my $file = $_;
     
     
    	if ($file =~ m/^AC\s+(\S+);/m) { 
                     my $id = $1 ; 
    		print ( ">$id, ");
     
    	}
     
    		if ($file =~ m/^DE\s\s\s([^\n]+)/mg) {
    		    $title = $1;
    		 print "$title \n";
    		}
     
    		if ($file =~ m/^SQ\s\s\s[^\n]+\n([^\/])\/\//m) {
    		    my $sequence = $1;
    		    $sequence =~ s/[^A-Za-z]//g;
    		    print "$sequence \n";
    		}
     
             }
    Merci d'avance.

  2. #2
    Membre confirmé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Points : 600
    Points
    600
    Par défaut
    Salut,

    Tu veux garder seulement la séquence fasta, c'est ça?

    Pourrais-tu penser aux balises CODE (la touche dièze quand tu rédiges un message) quand tu postes du code?
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    oui, c'est tout a fait ça

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Donc voila ce que j'ai fais jusqu'à present:


    Le problème qu'il me reste à résoudre est de mettre toute la sequence sur la meme ligne, c'est à dire enlever les espaces.

    Si vous avez des idées.
    Fichiers attachés Fichiers attachés

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Veuillez utilisez les balises codes autour de votre code pour la lisibilité du forum.
    Pour faire cela, sélectionner votre code et cliquez sur #.
    De même si vous affichez un long fichier, utilisez les balises quote.

    Merci

  6. #6
    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
    Essaie avec le module Bio-seqIO qui est prévu pour cela avant d'écrire ton propre code.
    http://search.cpan.org/~birney/bioperl-1.4/Bio/SeqIO.pm
    The Bio::SeqIO system can be thought of like biological file handles. They are attached to filehandles with smart formatting rules (eg, genbank format, or EMBL format, or binary trace file format) and can either read or write sequence objects (Bio::Seq objects, or more correctly, Bio::SeqI implementing objects, of which Bio::Seq is one such object).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        use Bio::SeqIO;
     
        $in  = Bio::SeqIO->new(-file => "inputfilename" , '-format' => 'EMBL');
        $out = Bio::SeqIO->new(-file => ">outputfilename" , '-format' => 'Fasta');
     
        while ( my $seq = $in->next_seq() ) {
            $out->write_seq($seq);
        }
    -- Jasmine --

  7. #7
    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
    Sinon, tu peux aussi directement récupérer les informations de Genbank sans passer par des fichiers.

    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
     
     
    use warnings;
    use strict;
     
     
    use Bio::DB::GenBank;
     
     
    my $gb = new Bio::DB::GenBank;
    my  $seq = $gb->get_Seq_by_acc('AF205856'); # Accession Number
     
    print '>'.$seq->accession."\n";
    print $seq->desc."\n";
    print $seq->seq."\n";
    -- Jasmine --

  8. #8
    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
    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
    #!/usr/bin/perl
     
     
     
    use warnings;
    use strict;
     
     
    my $seq = 0;
    my $sequence;
     
     
    open FILE, "/infile.txt" or die $!;
    while (my $line =<FILE>) {
     
     
    	if ($line =~ m/^AC\s+(\S+);/m) { 
                     my $id = $1 ; 
    		print ( ">$id, ");
     
    	}
     
            elsif ($line =~ m/^DE\s+([^\n]+)/mg) {
                my $title = $1;
                 print "$title \n";
            }
     
            # quand on arrive à la séquence on met $seq à 1
            # afin de récupérer les lignes suivantes
            elsif ($line =~ m/^SQ/) {
                $seq = 1;
            }
     
            # si $seq est à 1, cela signifie que nous sommes dans la séquence
            # donc on récupère la ligne dans la variable $sequence
            elsif ( ($seq) && ($line =~ /([\sa-z]+)\d+/)){
                $sequence .= $1; 
            }
     
    }  
     
    close FILE;
     
     
    # suppression des espaces
    $sequence =~ s/\s//g;
     
    print $sequence."\n";
    Pour ce qui est de ton script, utilise des elsif au lieu de if.
    Pour ce qui est de récupérer les lignes suivant celle contenant le motif SQ, ce que je fais, c'est que je crée la variable $seq que je mets à 1 dès que je rencontre ce motif. Quand $seq est à 1, je récupère les séquences des lignes suivantes. Remarque que $sequence est crée avant la lecture du fichier.

    Ceci est juste pour information car je pense qu'il est préférable d'utiliser un module existant. Je n'ai jamais utilisé Bio::SeqIO sur des fichier EMBL mais sur des fichiers fasta, il fonctionne très bien.
    -- Jasmine --

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour votre aide

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Points : 58
    Points
    58
    Par défaut
    Bonjour moi je dois faire en python sans utiliser bio seq je voulais savoir si il fallait d'abord tout parser et mettre dans une liste ensuite recher dans la liste la sequence ou bien y a t-il un moyen plus simple??
    merci

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Si tu te prends la tête avec perl pour faire ça, j'imagine que tu es sous Windows ?

    Sur Linux il existe une suite logicielle extrêmement complète pour tout ce qui est bioinformatique (ça tombe bien c'est le sujet de ce sous-forum lol) : EMBOSS (http://emboss.sourceforge.net/download/).

    Parmi les près de 300 programmes proposés, existe "seqret".

    l'utilisation est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seqret embl::my_input_embl fasta::my_output_fasta
    c'est fini.

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

Discussions similaires

  1. [z/OS] Convertir fichier SLR
    Par mimit73 dans le forum Cobol
    Réponses: 2
    Dernier message: 25/09/2006, 08h21
  2. [XML] Convertir fichier XLS en deux fichiers XML
    Par Kornoman dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/03/2006, 15h30
  3. Convertir fichier OGM
    Par Johnny P. dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 27/03/2006, 22h02
  4. Convertir fichier.ISS en fichier.INF
    Par Furius dans le forum Windows
    Réponses: 9
    Dernier message: 15/10/2005, 11h53
  5. convertir fichier access97 en 2003
    Par seb53 dans le forum Access
    Réponses: 1
    Dernier message: 11/10/2005, 23h11

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