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 Discussion :

Biograph et Callback


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut Biograph et Callback
    Bonjour à tous!

    Je travaille sur un projet de visualisation de pathway biochimique. J'ai découvert la fonction biograph qui me semble correspondre à mes attentes. Celle-ci permet via une matrice et des identifiants de visualiser une cascade biochimique.

    Cet outil de visualisation a pour but dans un premier temps de pouvoir visualiser le pathway et en double cliquant sur le nom d'un gène ou d'un élément de visualiser un certain nombre d'infos. Et c'est là que le bât blesse...

    J'ai compris qu'on pouvait affecter des callbacks sur les noeuds (node) du graph. Ce callback peut appeler une fonction de mon choix. Jusqu'à présent ça va encore. Mon problème est que j'aimerais beaucoup pouvoir récupérer une info du node double-cliquer. Simplement son ID. J'ai réussi après plusieurs test à récupérer le node complet (je crois... je l'ai copié dans un variable a et laisser l'affichage et j'ai eu comme affichage: "a = [1x1 biograph.node]") Pourtant dès que j'essaie d'accèder à a.ID j'ai une erreur me disant que "Attempt to reference field of non-structure array."...

    Est-ce possible de récupérer l'ID du node clique ou non ? Si oui comment ?

    Je colle ci-dessous mes deux codes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    HXK1Fasta = fastaread('HXK1.txt');
    PGI1Fasta = fastaread('PGI1.txt');
    GlycolysisGene = struct('name','HXK1','header',HXK1Fasta.Header,'sequence', HXK1Fasta.Sequence);
    GlycolysisGene(2)= struct('name','PGI1','header',PGI1Fasta.Header,'sequence', PGI1Fasta.Sequence);
    GlycolysisCompound = struct('name','glucose','cofactor','ATP');
    GlycolysisCompound(2) = struct('name','glucose-6-P','cofactor','none');
    GlycolysisCompound(3) = struct('name','fructose-6-P','cofactor','ATP');
     
    id = {GlycolysisCompound(1).name;GlycolysisGene(1).name;GlycolysisCompound(2).name;GlycolysisGene(2).name;GlycolysisCompound(3).name};
    matrice =[0 1 0 0 0; 0 0 1 0 0; 0 0 0 1 0; 0 0 0 0 1; 0 0 0 0 0];
    bg = biograph(matrice, id,'NodeCallback', @(id)test(id));
    h = view(bg);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function[]= test(varargin)
    a = varargin
    b = a.ID
    Merci d'avance de votre aide.

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    a étant un objet tu dois pouvoir accéder à ses méthodes/propriétés de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    methods(a)
    properties(a)
    En fouillant tu devrais trouver ce que tu cherches.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut
    Salut,

    Merci de ta réponse. J'ai essayé de voire le propriétés (y en a pas apprement...) et j'ai aussi regardé les méthodes de cet objet. Il ne semble pas qu'il y ait de méthode get pour récuprer l'ID du node... (Une telle méthode existe pour récupérer les IDs de tout les nodes)

    J'ai essayé de transformer ce cell en struct... Mais rien n'y fait je n'arrive toujours pas à avoir accès aux différents fields...
    En fait dans mon cell2struct je ne peux mettre qu'un field et celui devient mon node.biographe.

    Je me demandais si ça n'avait pas quelque chose à voir avec l'appel de la fonction. Si mon callback est juste ou non ? Si je devrais pas essayer quelque chose d'autres (mais quoi?)??

    Merci d'avance
    Buide

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    As-tu essayé un simple:
    Voir simplement:
    Pour avoir toutes les propriétés dans une structure.

    Bon courage,
    Duf

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut
    J'ai (ou plutôt un bon copain a trouvé la solution) ...
    Il suffit de faire un appel à a{1}.ID...
    Comme quoi des fois c'est tout bête mais ça prends quand même trois jours pour trouver la solution

    Merci beaucoup quand même!

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Pour simplifier la chose, tu aurais aussi pu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function[]= test(obj, varargin)
    b = obj.ID

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

Discussions similaires

  1. Fonction callback
    Par saibe dans le forum Linux
    Réponses: 4
    Dernier message: 19/01/2012, 10h41
  2. [Débutant] fonction CALLBACK
    Par tlt dans le forum MFC
    Réponses: 2
    Dernier message: 29/10/2004, 16h55
  3. Callback
    Par el_diablos dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2004, 08h48
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. [MFC] Un callback dans des MFC ...
    Par elsargento dans le forum MFC
    Réponses: 3
    Dernier message: 18/02/2004, 16h04

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