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

Interfaces Graphiques Perl Discussion :

Afficher chaine avec différentes couleurs


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut Afficher chaine avec différentes couleurs
    Bonjour,
    J'écris dans ce post car j'ai un problème similaire.
    J'ai en fait une séquence, et je souhaiterai colorer seulement certaines lettres.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AGTAATTGTAGTTCATTAGTGTCAGAAAATATCAGAAAAAGAGCATAAAGTGCTTAATTCCGTGAGACAAAAATGGTTGTTGGCACAGCCACAATGCCCCCGGAAATATTGCAAGTGCCCGCGATAAAAAAAGAGCACTCGGAGCTGCTGGAAAACCCTGCGAACTCTAAACCTTGTGATCCCGACGAAACTGCTGAGGAGGG
    et je voudrais colorer en rouge les lettres en rouge sur l'exemple sachant que pour chaque séquence que j'aurais, ce ne sera jamais la même place ... J'ai un fichier à part m'indiquant la position de la lettre (nucléotide) dans la séquence.
    Comment puis je réaliser cela ?

  2. #2
    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 : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Montre nous ce que tu as fais.
    Si tu écris dans un Widget Text, c'est à toi au moment de l'affichage de ta séquence de jouer avec les tags.

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    Pour le moment j'ai fait quelque chose de très basique
    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 strict;
    use warnings;
     
    use Tk;
     
    my $phrase ='CGGAAATATTGCAAGTGCCCGCGATAAAAAAAGAGCACTCGGAGCTGCTGGAAAACCCTGCGAACTCTAAACCTTGTGATCCCGACGAAACTGCTGAGGAGGGCGGAAATATTGCAAGTGCCCGCGATAAAAAAAGAGCACTCGGAGCTGCTGGAAAACCCTGCGAACTCTAAACCTTGTGATCCCGACGAAACTGCTGAGGAGGG';
     
    my $fenetre_principale = MainWindow->new( -title => 'Text' );
    my $widget_texte = $fenetre_principale->Text( )->pack( );
     
    $widget_texte->insert('end', $phrase);
     
     
     
    MainLoop;
    Juste pour écrire la séquence ...

  4. #4
    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 : 499 184
    Points
    499 184
    Par défaut
    Du moment où tu as les positions, il devient simple de jouer avec les tags.

    Tu te crées un tag rouge par exemple et tu l'applique sur ta séquence au bon index. Voici un exemple de programme :

    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;  
     
    my $sequence ='CGCGATAAAAAAAGAGCACTCGGAGCTGCTGGAAAACCCTGCGAACTCTAAACCTTGTGATCCCGACGAAACTGCTGAGGAGGG';
     
    my $fenetre_principale = MainWindow->new( -title => 'Text' );
    $fenetre_principale->fontCreate( 'FontSequence', 
      -family =>'helvetica', 
      -size   =>'14', 
      -weight =>'bold'
    );
     
    my $widget_texte = $fenetre_principale->Scrolled('Text', 
      -scrollbars => 's',
      -wrap => 'none',
      -font       => 'FontSequence',
    )->pack( qw/ -expand 1 -fill both /);
     
    $widget_texte->tagConfigure('ROUGE', 
      -background => '#E3E3E3',
      -foreground => 'red',
      -font       => 'FontSequence',
    );
     
    $widget_texte->insert('end', $sequence);
     
    # Mutation à mettre en rouge dans la séquence
    my @PositionsMutation = (10,25,30); 
    foreach my $position ( @PositionsMutation ) {
      $widget_texte->tagAdd('ROUGE',"1.$position"); 
    }
     
    MainLoop;
    Je te recommande de lire la documentation de Tk::Text.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoup,
    Ce scroll est très pratique car j'ai des séquences de tailles variables, mais est il possible de créer un fichier .ps ? Car en fait j'ai énormément de séquences et le plus pratique pour les biologistes est de créer des .ps ou .txt (1 pour chaque séquence) qu'ils puissent ouvrir et regarder pour chacune de leur séquences d’intérêt ...

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    J'ai modifié le script avec ce que je souhaite faire, mais lorsque j’essaie de le sauvegarder dans un fichier, cela me retourne l'erreur 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
    60
    61
    62
    63
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Carp qw(confess);
     
    use Getopt::Long;
    use Tk;
    use Bio::SeqIO;
     
    my $fasta_file;
    GetOptions("fasta=s" => \$fasta_file);
     
    my $in = Bio::SeqIO->new( -file => $fasta_file, '-format' => 'Fasta' );
     
     
     
     # récupération de la séquence
     
    while ( my $seq = $in->next_seq()){
     
    	my $sequence = $seq->seq ;
    	my $fenetre_principale = MainWindow->new( -title => 'Text' );
    	$fenetre_principale->resizable( 0, 0 );
    	$fenetre_principale->fontCreate( 'FontSequence', 
      		-family =>'helvetica', 
      		-size   =>'14', 
      		-weight =>'bold'
    	);
    	my $widget_texte = $fenetre_principale->Text( -padx=>70, -pady=>70 )->pack( );
     
    	$widget_texte->tagConfigure('ROUGE', 
      		-foreground => 'red',
      		-font       => 'arial',
    	);
    	$widget_texte->tagConfigure('YELLOW', 
      		-foreground => 'YELLOW',
      		-font       => 'arial',
    		-underline => 1,
    	);
     
     
    	$widget_texte->insert('end', $sequence);
     
    	# Mutation à mettre en rouge dans la séquence
    	my @PositionsMutation = (10,25,30); 
    	my @PositionPi =(55,56,57,58,59,60,61,62,63,64,65,66,1001,1002,1003,1004,1005,1006,1007);
    	foreach my $position ( @PositionsMutation ) {
      		$widget_texte->tagAdd('ROUGE',"1.$position"); 
    	}
     
    	foreach my $value(@PositionPi){
    		$widget_texte->tagAdd('YELLOW',"1.$value");
     
    	}
     
     	my $postscript = $fenetre_principale->postscript();
     
    	$fenetre_principale->postscript(-file => "tmp.ps",-width => "1000" , -height => "500");
    	#MainLoop;
     
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Failed to AUTOLOAD 'MainWindow::postscript' at test_tmp.pl line 51.
    Le fichier contient la séquence
    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
     
    >nos
    TTAGTTGGCGCGTAGCTTTACCACAAAATTCCTGGAATTGCCGTACGCTT
    CGCAGTTGTTTCAAGTTGTCTAAGGGACATACGATTTTTTTTGCCTCTGC
    GTCACGATTTTAACCCAAAAGCGAGTTTAGTTACATGTACATTATTATTA
    GATAAAGAAGTATCGCGAATACTTCAGTTGAATAAACTGTGCTTGGTTTT
    TGGGTGAGGATTTGTGGAAAGTAGAGTGCGCGATAACCGTAACTTTCGAC
    CCGGATTTTCGCCATGTTCCGCAGCAACTTGGAGGGCAGTGGCGCAGCAG
    CAGTAGGTGTTGCAAATCCCCCCTCGTTGGCTCAGTCTGGAAAGATTTTC
    CAATTGCAGGATAACTTTTCTGCTTTTCACGCCAGAGGAGGGCTCAACAT
    TCTGGGCCTGCAGGACATGTATTTGGATACCAGTGGGGCCAACTCGTCGG
    CCACTTTGAGTCCGCCCATTACGCCGGTGACCCCTGACCCGTCGACGTCT
    GCGCAGTCGACGCACTTCCCTTTTCTGGCCGACAGCGCAGCCACCGCCAA
    TTCGCTCCTTATGCAGCGACAGTACCACTACCACTTGCTGCTCCAGCAGC
    AGCAGCAACTGGCCATGGCGCAGCACCAATTGGCGCTGGCTGCATCAGCG
    GCAGCGGCTAGTGCGAGTCACCAGCAAACGGACGAGATTGCGCGATCCTT
    GAAAATCTTTGCGCAGGTGACGACGGGCGCAGCAGAAAATGCGGCTGGCT
    CGATGCAGGATGTGATGCAGGAGTTCGCGACCAATGGCTATGCCAGCGAT
    GATCTCGGTCGCATGTCCTACGGGAGTGCTCCGCCACAGGTGCAAATGCC
    ACCGCAGCAGCAGCATCAGCAACAGCAGGGGCTGCACCTGCCACTGGGCC
    GCAATCCTGCCCAGCTGCAGACCAATGGCGGCAACTTAATGCCCATTCCA
    CTCGCCACCCACTGGCTGAACAACTACCGGGAGCATCTGAACAACGTGTG
    GCGAAACATGTCGTATATACCAGCCGCTCCCAATACAATGGGTTTGCAGG
    CCCAAACAGCGGCCACTGTGTCCACCAATCTCGGCGTGGGAATGGGTCTG
    GGATTGCCCGTGCAGGGCGAACAGCTGCGCGGAGCTTCCAATTCCAGTAA
    CAATAATAACAACAACAACAAGGTGTACAAGCGTTACAACAGCAAGGCCA
    AAGAGATCAGCCGCCACTGCGTCTTTTGTGAGAATAACAACGAACCAGAG
    GCGGTTATCAATAGCCACTCAGTGCGAGATAACTTTAACCGAGTGCTGTG
    CCCCAAACTACGCACCTACGTGTGCCCCATCTGCGGGGCATCTGGGGACT
    CGGCGCACACGATTAAGTACTGCCCCAAGAAGCCGATCATCACCATGGAG
    GATGCGATCAAGGCGGAATCGTTCCGCCTAGCCAAGAGCAGTTACTACAA
    GCAACAGATGAAGGTTTAGAGAGGGCGAATCCAGCTCTGGAGCAGAGGCT
    CTGGCAGCTTTTGCAGCGTTTATATAACATGAAATATATATACGCATTCC
    GATCAAAGCTGGGTTAACCAGATAGATAGATAGTAACGTTTAAATAGCGC
    CTGGCGCGTTCGATTTTAAAGAGATTTAGAGCGTTATCCCGTGCCTATAG
    ATCTTATAGTATAGACAACGAACGATCACTCAAATCCAAGTCAATAATTC
    AAGAATTTATGTCTGTTTCTGTGAAAGGGAAACTAATTTTGTTAAAGAAG
    ACTTACAATATCGTAATACTTGTTCAATCGTCGTGGCCGATAGAAATATC
    TTACAATCCGAAAGTTGATGAATGGAATTGGTCTGCAACTGGTCGCCTTC
    ATTTCGTAAAATGTTCGCTTGCGGCCGAAAAATTTCGATATATCTACAAT
    TGATCTACAATCTTTACTAAATTTTGAAAAAGGAACACTTTGAATTTCGA
    ACTGTCAATCGTATCATTAGAATTTAATCTAAATTTAAATCTTGCTAAAG
    GAAATAGCAAGGAACACTTTCGTCGTCGGCTACGCATTCATTGTAAAATT
    TTAAATTTTGACATTCCGCACTTTTTGATAGATAAGCGAAGAGTATTTTT
    ATTACATGTATCGCAAGTATTCATTTCAACACACATATCTATATATATAT
    ATATATATATATATATATATATATATATATATGTTATATATTTATTCAAT
    :

  7. #7
    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 : 499 184
    Points
    499 184
    Par défaut
    La méthode postscript ne s'applique uniquement que pour les Widgets CANVAS.

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    D'accord, y a t'il une autre façon de procéder ?

  9. #9
    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 : 499 184
    Points
    499 184
    Par défaut
    Non. Pour avoir un postscript, il faut faire du Canvas, donc dessiner et ça devient plus compliqué.

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Points : 81
    Points
    81
    Par défaut
    Oui je ne peux même pas générer une image ou autre ?

Discussions similaires

  1. Comment réaliser un mug avec différentes couleurs
    Par slider973 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 16/06/2015, 22h38
  2. Tracer des individus dans un plan avec différentes couleurs
    Par stefsas dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 19/09/2008, 10h12
  3. Réponses: 2
    Dernier message: 07/06/2007, 16h07
  4. [Calendrier] Différentes couleurs si réservé
    Par laurent2 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 12/04/2007, 13h39
  5. Lignes avec différentes couleurs
    Par hbzied dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/05/2006, 09h30

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