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

C++ Discussion :

C++, RInside et plot3d


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut C++, RInside et plot3d
    Bonjour à tous,

    Je travaille sur une application C++/Qt, depuis laquelle je souhaite appeler et éxécuter des fonction écrites en R (grâce à des packages adéquats).
    J'utilise RInside pour faciliter l'instanciation de R dans C++, et en suivant l'exemple de la doc je me suis créé une classe créant une instance de R et depuis laquelle je fait appel à mes fonctions R.

    Aucun problème pour tracer un simple graphique 2D ; En revanche, lorsque j'appelle la fonction plot3d du package rgl, le programme se ferme instantanément...
    Voici les instructions que j'appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m_R.parseEvalQ(SetWorkingDir.toStdString());
    m_R.parseEvalQ(SourceFile.toStdString());
    où SetWorkingDir est l'instruction R pour choisir le répertoire de travail et SourceFile l'instruction pour sourcer un fichier .r

    Je souhaiterais pouvoir visualiser un nuage de points avec plot3d, exactement comme je le fais sous R...
    Quelqu'un aurai-t-il un conseil là dessus ?!

    Merci!

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    J'avais déjà eu le problème... et je n'avais réussit à le résoudre
    Essaies avec d'autres paquets que rgl. Sinon tu peux faire l'affichage 3D directement dans Qt (module QtOpenGL, cf mon tuto). Par contre, pour obtenir le même rendu, il faudra un peu plus de code ; sinon utilise une autre lib pour la visualisation 3D : VTK par exemple ou Qwt3D)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut
    Merci pour la réponse rapide !
    Ah dommage... J'aimais bien cette fonction plot3d et ce package ! Je vais tout de même regarder les autres packages que tu proposes.

    Si néanmoins quelqu'un a une idée pour utiliser le paquet rgl via RInside en C++... je suis preneur

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Tu as donc un plantage sauvage? Dans quel environnement travailles tu? Une petite sortie de valgrind ou autre aiderait peut-être?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut
    Je ne sais pas vraiment si on peut appeler ça un plantage sauvage ; aucune erreur ne m'est signalée... le programme se ferme simplement brutalement !

    Je travaille sous Windows 7 64bits, avec CodeBlocks 10.05, Qt 4.7.0, et R 2.13.1
    Je ne connais pas Valgrind... désolé

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Citation Envoyé par Pinou08 Voir le message
    Je ne sais pas vraiment si on peut appeler ça un plantage sauvage ; aucune erreur ne m'est signalée... le programme se ferme simplement brutalement !
    Justement, c'est sauvage...il y a sûrement un rapport d'erreur qui n'est pas montré dans tes conditions d'exécution.
    Je travaille sous Windows 7 64bits, avec CodeBlocks 10.05, Qt 4.7.0, et R 2.13.1
    Je ne connais pas Valgrind... désolé
    Pas de quoi, c'est logique si tu est windowsien car c'est un outil *nix. Ceci dit n'y a-t-il rien de visible même sous debugger?

  7. #7
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Le problème est que le plantage doit probablement provenir de R, qui n'est pas compilé en debug. Ca sera difficile de comprendre et modifier le code pour éviter le problème. Il faudrauit recompiler soi même R en débug (et bon courrage dans ce cas )
    Le problème doit probablement venir d'un conflit dans les contextes des fenêtres créés (surtout avec OpenGL) car à la base, R n'est pas destiné (et conçu) pour être intégré dans une autre application (les devs aiment beaucoup des variables static globale, ce qui fait qu'on ne peut pas créer deux instances de R par exemple et qu'il y a des problèmes de conflit de context)

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut
    Voici ce qui apparait sous debugger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Starting debugger: 
    done
    Registered new type: wxString
    Registered new type: STL String
    Registered new type: STL Vector
    Setting breakpoints
    Debugger name and version: GNU gdb 6.8
    Child process PID: 712
    Error in La.svd(x, nu, nv) : lapack routines cannot be loadedProgram exited with code 01.
    Debugger finished with status 0
    Le problème vient peut-être de R, mais sous R pur je n'ai aucun problème avec rgl et plot3d...effectivement c'est sans doute un conflit !
    C'est bien dommage en tout cas, le reste fonctionne bien

  9. #9
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Tu as toujours la possibiltié de lancer R dans un process séparé (avec QProcess puisque tu utilises Qt). Dans ce cas, c'est comme si tu lancais R en ligne de commande.
    Par contre, ça diminue l'intégration de R dans ton application et ça peut compliquer l'échange de données.

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut
    Certes, mais cela nécessite l'installation de R sur le poste utilisateur non ?
    C'est le cas sur mon poste, mais pour diffuser l'application, c'est moyen je pense...

    Je continue à chercher ! Si vous avez des idées/propositions, n'hésitez pas !

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Mais tu peux essayer de créer un process spécial r en l'intégrant comme tu l'aurais intégré dans un process monolithique tout en l'isolant pour qu'il n'aie pas de conflits de configuration avec le reste de ton appli. Je pense que c'est ce que gbdivers te suggère.
    Ça nécessitera de l'IPC pour faire transiter les commandes et récupérer les résultats de calcul, par contre.

  12. #12
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    en pratique, ça veut juste dire qu'il faut fournir R.exe (je crois) en plus de R.dll et des différents paquets. C'est pas non plus un dramede fournir 1 fichier de plus si tu en fournis déjà 50.

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Par défaut
    C'est sûr
    S'il n'y a pas d'autres solutions (à ma portée), je ferai sans doute ça !

    Merci en tout cas !

Discussions similaires

  1. Plot3D sous R
    Par touronster dans le forum R
    Réponses: 3
    Dernier message: 01/03/2011, 17h36
  2. Chargement de de fichier Plot3D sur visIT
    Par arthur C dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 26/03/2010, 14h50
  3. [Débutant] [plot3d, mesh, suf] tracer une courbe en 3d a partir d'une matrice
    Par gps15000 dans le forum MATLAB
    Réponses: 7
    Dernier message: 23/03/2010, 16h24
  4. [plot3D] lissage entre points 3D avec couleur
    Par christophe_halgand dans le forum MATLAB
    Réponses: 11
    Dernier message: 11/06/2009, 09h39
  5. [Maxima] Plot3d et axe z
    Par Sebsheep dans le forum Autres langages
    Réponses: 0
    Dernier message: 18/12/2008, 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