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

Langage Perl Discussion :

Comment faire une matrice?


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Comment faire une matrice?
    Bonjour a tous
    je suis nouveau et je debute en perl.
    alors ne vous moquer pas trop de moi si les question sont stupide
    j'aimerai realiser des comparaisons entre des sequence et connaitre le meilleur alignement du coups j'aimerai faire une matrice.
    je voulais savoir si il existe une fonction qui mettrai chaque lettre d'une phrase dans une case du tableau ou dois je faire ca comme en c sachant que la phrase est donner par un stdin?

    c'est a dire que si ma phrase est abcde j'ai:

    _ a|b|c|d|e|
    a
    b
    c
    d
    e



    merci pour votre aide

  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
    Bonjour,


    Je ne connais aucune fonction faisant directement cela. A ta place, je récupèrerais la séquence puis j'effectuerais un split. Ensuite, je créerais un tableau.
    $Table{$lettre1}{$lettre2}=0;
    Par exemple $lettre1 serait la ligne et $lettre2 la colonne.

    $Table{"0_A"}{"0_A"} $Table{"0_A"}{"1_B"} $Table{"0_A"}{"2_C"}

    $Table{"1_B"}{"0_A"} $Table{"1_B"}{"1_B"} $Table{"1_B"}{"2_C"}

    $Table{"2_C"}{"0_A"} $Table{"2_C"}{"1_B"} $Table{"2_C"}{"2_C"}
    Avec un chiffre autoincrémenté afin d'être certain de ne pas avoir de clés identiques dans le tableau.


    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
    use strict;
    use warnings;
    # use Data::Dumper;
     
    my $seq = "ABC";
    my %Table;
    my @seq = split ("",$seq);
     
    for (my $i = 0; $i < @seq; $i++)
    {
            my $L1 = $i."_".$seq[$i];
            for (my $j = 0; $j < @seq; $j++)
            {
                my $L2 = $j."_".$seq[$j];
                $Table{$lettre1}{$lettre2}=0;
            }
    }
     
    # print Dumper %Table;
    $VAR1 = '2_C';
    $VAR2 = {
    '2_C' => 0,
    '1_B' => 0,
    '0_A' => 0
    };
    $VAR3 = '1_B';
    $VAR4 = {
    '2_C' => 0,
    '1_B' => 0,
    '0_A' => 0
    };
    $VAR5 = '0_A';
    $VAR6 = {
    '2_C' => 0,
    '1_B' => 0,
    '0_A' => 0
    };
    Pour visualiser les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach my $L1 (sort keys%Table)
    {
            foreach my $L2 (sort keys %{$Table{$L1}})
            {
                    print $L1."\t".$L2."\t".$Table{$L1}{$L2}."\n";
            }
    }


    Il y a peut-être plus simple, mais je ne sais pas.


    Jasmine,

Discussions similaires

  1. [Débutant] Comment faire une interpolation de matrice afin de créer un contour
    Par sydneya dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/06/2007, 11h22
  2. Réponses: 2
    Dernier message: 03/05/2004, 12h13
  3. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  4. Réponses: 10
    Dernier message: 10/10/2003, 14h25

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