giacpy

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

giacpy

Message par frederic han » jeu. juin 13, 2013 10:55 pm

Salut,
je poursuis le fil suivant http://xcas.e.ujf-grenoble.fr/XCAS/view ... f=1&t=1308
ici car ca me semble plus approprie de le mettre dans devel.

J'ai enfin reussi a avoir mes premieres images avec giacpy et qcas compile en librairie.

l'archive est la http://www.math.jussieu.fr/~han/xcas/gi ... y-qcas.tgz

pour l'instant c'est juste une premiere impression...
Cette libqcas rale (pb avec rdiv) avec giac1.1, mais pour moi elle compile bien avec giac 1.0
ensuite on peut faire des trucs du genre:

Code : Tout sélectionner

from giacpy import *
x=giac('x')
s=plot(sin(x))
s2=(s+1).color(117)
giac([s,s2]).qcas()
s3=histogram(classes(randvector(100),0,30))
s3.qcas()
s4=[ line(x+y-t) for t in range(10) ]
giac(s4).qcas()
(le probleme du = dans les equations est genant car pour l'instant on ne peut passer que des equation avec des ' '
Ex: giac('x+y=3') d'ou le pb avec t, heureusement que les equations en =0 n'ont pas besoin de ce symbole.

Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » sam. juin 15, 2013 8:09 am

Il y a un problème avec les includes:
python setup.py build_ext
running build_ext
building 'giacpy' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c giacpy.cpp -o build/temp.linux-i686-2.7/giacpy.o
cc1plus: attention : command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default]
In file included from giacpy.cpp:262:0:
qcas/qt/giacpy.h:20:24: erreur fatale: QApplication : Aucun fichier ou dossier de ce type

Evidemment je peux rajouter des -I/usr/include/qt/... mais il y a l'air d'en avoir besoin de beaucoup, il y a pas autre chose à faire?

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » sam. juin 15, 2013 11:30 am

oui pour les tests j'utilisais le setup-auto.py

j'ai mis a jour la http://www.math.jussieu.fr/~han/xcas/gi ... cas100.tgz

(sur une machine je n'ai plus les icones)

Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » sam. juin 15, 2013 1:04 pm

ah bon, ça va mieux avec setup-auto :-) (n'oublie pas que je n'y connais rien en python!)
Mais il faut aussi recompiler libqcas (vu que on n'a pas la même architecture), tu devrais cleaner le source dans l'archive. C'est nettement plus compliqué que le module sans qcas!

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » sam. juin 15, 2013 1:37 pm

oui ca n'est pas encore au point, c'est juste une preview.

j'ai essaye de mettre dans le repertoire qcas une libqcas.a pour amd64 elle semble marcher pour ma debian stable et ubuntu 12.04.

Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » lun. juin 17, 2013 1:15 pm

bon, je n'y arrive toujours pas:
>>> from giacpy import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./giacpy.so: wrong ELF class: ELFCLASS64

Pourtant,
file /usr/local/lib/python2.7/site-packages/giacpy.so
me renvoie:
/usr/local/lib/python2.7/site-packages/giacpy.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

Sinon, j'ai mis a jour qcas avec giac 1.1. Tu devrais pouvoir l'utiliser apres mise a jour de quelques headers comme rdiv.

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » mar. juin 18, 2013 6:49 am

J'ai aussi essayé sur un linux 64 bits, mais j'ai une erreur, même en recompilant libqcas.a:
>>> from giacpy import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./giacpy.so: undefined symbol: _ZNK10QTabWidget14heightForWidthEi

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » mar. juin 18, 2013 7:34 am

C'est bizarre je referai des essais sur une autre distrib (je n'ai teste que 2 amd64: ubuntu 12.04 et debian stable mise a jour),
je suis par exemple en ubuntu 12.04 avec les paquets qt du depot.
dans le repertoire qcas, apres avoirt fait
make clean
rm libqcas.a
et make
tu dois avoir
une nouvelle libqcas.a et aussi un qcas qui devrait marcher aussi.

ensuite dans giacpy rm giacpy.so puis make fonctionnent pour moi.

si tu as cython tu peux aussi essayer rm giacpy.cpp

a suivre

Fred

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » mar. juin 18, 2013 10:06 pm

Salut,
J'ai refait une version plus stable. Cette fois elle est construite sur debian stable amd64 et QT4.8. (Sur ma ubuntu 12.04 j'ai realise que j'avais aussi des version i386 ca t'a peut etre pose des pb.)

Si le giacpy.so ne marche pas tu peux le reconstruire avec Makefile.auto.
Si ca ne marche pas tu peux alors tenter de reconstruire la libqcas.a ou eventuellement les .so en enlevant le
CONFIG+=staticlib de libqcas.pro , puis qmake libqcas.pro puis make, puis refaire le giacpy.

http://www.math.jussieu.fr/~han/xcas/gi ... cas100.tgz

(il faut encore giac 100 amd64)

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » mer. juin 19, 2013 1:23 pm

Ca avance, mais j'ai le message d'erreur
>>> from giacpy import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/python2.7/dist-packages/giacpy.so: undefined symbol: _ZN4giac4rdivERKNS_3genES2_
Et c'est surement parce que giacpy.so est linké dynamiquement avec la libgiac, et que j'ai la 1.1 installée. Je vais attendre que tu passes à giac 1.1...

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » mer. juin 19, 2013 8:32 pm

oui je pense aussi que c'est ca, car c'est comme cela que je me suis rendu compte du changement de prototype de rdiv.

J'ai mis une version pour giac 1.1 et amd64 debian stable la:

http://www.math.jussieu.fr/~han/xcas/gi ... cas110.tgz

il y a un exemple:

testplotqt.py

J'espere que ca ira
Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » jeu. juin 20, 2013 12:41 pm

Ce coup-ci bingo! Les graphes sont super bien!
Par contre ça risque de pas être de la tarte à compiler sous windows...

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » jeu. juin 20, 2013 1:47 pm

Oui ce sont ceux de qcas, je n'ai rien change.
Il me semble que loic avait fait une version de qcas pour windows que je ne trouve plus sur internet, mais qui a ces fichiers:

qcas-win32/libgcc_s_dw2-1.dll
qcas-win32/mingwm10.dll
qcas-win32/pthreadGC2.dll
qcas-win32/qcas.exe
qcas-win32/QtCore4.dll
qcas-win32/QtGui4.dll
qcas-win32/QtXml4.dll

Je ne sais pas comment il avait compile.

Pour la geometrie interactive, je suis gene par la syntaxe python car qcas a besoin du code en syntaxe giac avant evaluation pour la geo interactive, donc ca ne deviendrait vraiment pas naturel de tout faire en giac entre des guillemets pour tout envoyer

a+
Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giacpy

Message par parisse » jeu. juin 20, 2013 3:18 pm

pour win32, il faudra lui demander!
Sinon, pour la géométrie interactive, peut-etre que tu peux faire comme j'avais fait pour le plugin texmacs, où en tapant geo2d("nom_fichier") ça t'ouvre une fenêtre fltk de géométrie (avec les instructions de la figure dans le fichier qu'on peut sauver à la sortie).
Il y a des sorties possibles vers les formats graphiques standard dans qcas? Je n'ai rien vu dans les menus.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giacpy

Message par frederic han » jeu. juin 20, 2013 8:03 pm

Pour les formats de sortie dans qcas il faut cliquer sur l'image (gauche? ou droit? selon que l'on est en mode interactif ou pas) pour faire apparaitre un menu.
Les sorties latex et svg n'ont pas l'air d'etre connectee, mais la sortie png,jpg... marche bien. Y at'il une fonction giac toute prete pour ca? Le probleme est que l'on risque de perdre tout ce qui est ajoute via qt et la souris. (modif des couleurs, transparence...)

Pour la geo interactive, le probleme n'est pas de transmettre du code giac car j'avais prepare une fonction sendtext qui est par exemple utilisee pour charger un .xws

elle supporte par exemple des trucs de ce genre (ou A peut bouger et fait bien bouger ses enfants):

Code : Tout sélectionner

A:=point([-2.77273,2.72727]);
translation(1+i,A);
tt :=  element(0..1,0.1,0.2);
B:=point([3.43182,2.22727]);TT:=point(tt+3*i);
TA:=[2+A,3+A,4+A];a:=[cercle(A,B)+1,cercle(A,B)+2];
c:=cercle(B,1);
[c+1,c+2];
D:=element(c);
on peut meme y ajouter des points, et aussi les fixer sur les objets qui ont un nom. Ex ajouter un point element du cercle c avec la souris

le probleme que j'ai est plutot de respecter les dependances: en python c'est naturel de faire:

a=point(1)
b=point(2)
d=line(a,b)
alors le gen de d n'a aucune memoire des lettres a et b et pour que qcas pense a modifier d si l'on bouge a il lui faut en memoire une syntaxe giac. (Ex dans le code ci dessus qcas pourra reevaluer la ligne TA:=[2+A,3+A,4+A]

et ca ne me semble pas raisonnable de demander aux gens sous python de faire des trucs du genre:

Code : Tout sélectionner

giac('a:=point(1);b:=point(2);d:=droite(a,b)')
Ce que j'aime bien dans xcas et qui me manque dans geogebra et qcas (c'etait ma motivation pour sendtext) c'est de pouvoir faire un peu de geometrie interactive melange avec du code clairement ecrit et modifiable, car je trouve qu'ainsi le raisonnement de la construction est bien visible.

voila il faudra y reflechir
a+
Fred

Répondre