source: Sophya/trunk/SophyaLib/Manual/modifs.tex@ 3037

Last change on this file since 3037 was 2993, checked in by ansari, 19 years ago

MAJ fichier modifs.tex apres les corrections / ameliorations SkyMap SphericalTransform , Reza 23/6/2006

File size: 55.3 KB
RevLine 
[2632]1\documentclass[twoside,11pt,A4]{article}
2\usepackage[french]{babel}
3
4% \usepackage[T1]{fontenc}
5\usepackage[applemac]{inputenc}
6\usepackage{palatino}
7% \usepackage{times}
8% package pour ecrire DRAFT en fond de page
[2716]9% \usepackage[light,all,draft]{draftcopy}
[2632]10
11% \usepackage{epsfig}
12\usepackage{graphicx}
13\usepackage{amsmath}
14\usepackage{amssymb}
15
16\setlength{\textwidth}{16cm}
17\setlength{\textheight}{23 cm}
18\setlength{\topmargin}{0.5cm}
19\setlength{\oddsidemargin}{0.cm}
20\setlength{\evensidemargin}{0.cm}
21\setlength{\unitlength}{1mm}
22
23\newcommand{\rond}{$\bullet \ $}
24\newcommand{\etoile}{$\star \ $}
25\newcommand{\cercle}{$\circ \ $}
26\newcommand{\carre}{$\Box \ $}
27
28\begin{document}
29\begin{titlepage}
30\begin{center}
31{\Large \bf Liste de modifications de SOPHYA } \\[5mm]
32{ \large (fait ou ˆ faire ) } \\
[2829]33{\large Janvier 2003 - Novembre 2005 } \\[25mm]
[2632]34Liste des tags et dates : \\[5mm]
35{\large
36\begin{tabular}{lcl}
37V = 0.727 & \hspace{10mm} & Octobre 1999 \\
38V = 0.8 & \hspace{10mm} & FŽvrier 2000 \\
39V = 1.1 & \hspace{10mm} & FŽvrier 2001 \\
40V = 1.2 & \hspace{10mm} & Juillet 2001 \\
41V = 1.3 & \hspace{10mm} & Novembre 2001 \\
42V = 1.5 & \hspace{10mm} & DŽcembre 2002 \\
43V = 1.7 & \hspace{10mm} & Septembre 2003 \\
[2829]44V = 1.9 & \hspace{10mm} & Juin 2005 - SANS tag CVS \\
[2911]45V = 1.9xx & \hspace{10mm} & en cours (09/2005 ...) \\
[2829]46
[2632]47\end{tabular}
48}
49\end{center}
50\end{titlepage}
51
52\newpage
53\tableofcontents
54\newpage
55
[2829]56\section{BuildMgr}
[2905]57\begin{itemize}
[2971]58\item[\rond] Juin 2006 : Ajout targets cleanobj prgall tests prgutil
59\item[\rond] Avril 2006 : suppression de libextsophya.so pour fabriquer libPI.so
60(PIext rendu independant de FitsIOServer)
61\item[\rond] Dec 2005/Jan 2006 : Portage sur AIX - xlC
[2905]62\item[\rond] Dec 2005 : check Compil avec icc , compil avec gcc-4
63\item[\rond] Avril-Mai 2005 : Introduction de la nouvelle version de
[2829]64scripts de gestion du code - avec un script principal configure. \\
65Variable d'environnement {\bf SOPHYABASE } - \\
66Pour les makefiles, l'ensemble des dŽfinitions se trouve dans : \\
67SOPHYABASE/include/sophyamake.ic \\
[2905]68\end{itemize}
[2829]69\section{BaseTools}
70\subsection{Modifs}
[2632]71
[2829]72\begin{itemize}
[2835]73\item[\rond] Octobre-Novembre 2005 : \\
[2829]741/ Correction bug TimeStamp::ToDays() + petites amelioration \\
752/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
763/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
[2911]774/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
[2835]785/ Gestionnaire PPersist pour TimeStamp
[2829]79%
80\item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
[2632]81Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
82Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
83ainsi que lors de la gŽnŽration automatique du code (runxx, c++exec)
[2829]84\end{itemize}
[2632]85
86\subsection{PPF}
87\begin{itemize}
88\item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
89Classes RawInOutStream , RawInFileStream , RawOutFileStream
90\item[\rond] DŽcembre 2003 - Ajout ppfbinstream.h .cc \\
91Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
[2716]92\item[\rond] DŽcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
[2632]93PPF V3 \\
94- Ecriture nombre complexes r4, r8 avec tag spŽcifique. \\
95Tag de positionnement sous forme de \\
96\centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
97- Ecriture PosTagTable \\
98- Ecriture Statistiques en fin de fichier \\
99- Voir BaseTools/ppfbinstream.h: \\
100\centerline{\tt GotoPositionTag(int\_8 pos) , }
101\centerline{\tt GetPosTagTable(...) }
102\centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
103- Ajout programme de test Tests/ppftswap.cc
[2716]104\item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
[2717]105la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
[2716]106\item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$
107(fichiers ppftpointer.h .cc)
108\item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
109\item[\rond] scanppf.cc revision 1.8 (2005/04/05)
110modification programme scanppf: ajout option -lh -lho pour lister les classes PP
111ersist handler
112
[2632]113\end{itemize}
114
[2716]115
[2717]116\subsection{Nouvelles classes}
117\begin{itemize}
118\item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure -
119calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2003)
120\item[\rond] { \bf Segmented Data Block :} \\
[2716]121Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
122de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
[2717]123et de classes (template pour tout type T).
124\begin{enumerate}
125\item Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
[2716]126pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
[2717]127gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
128\item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
129de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
[2716]130ppfswapper.h et swsegdb.h)
[2717]131\item Ajout programme de test Tests/tstsegdb.cc
132\end{enumerate}
133\end{itemize}
[2716]134
135
[2632]136\section{TArray}
[2942]137Il s'agit essentiellement des ameliorations en terme de performances et
138de correction d'erreur.
139
[2632]140\begin{itemize}
[2942]141\item[\rond] Avril 2006 \\
142- Instanciation explicite des tableaux , matrices et vecteurs en types \\
143{\tt int\_2 uint\_2 uint\_4 uint\_8 } \\
144- Optimisation du code (ds tarray.cc) des operations sur tableaux \\
145{\tt (TArray::Add/Mul/Sub/DivCst TArray::Add/Mul/Sub/DivElt ) } \\
146a travers le choix entre Share() ou Allocation si le tableau resultat est non alloue.
147D'apres les tests de performances (TCPU), {\bf (tjet , spar)}, il ne semble pas y
148avoir de cas de pertes, et on a en general des gains de l'ordre de 20\% dans la plupart
149des cas de tests, et un ou deux cas avec des gains de 50-80\%. \\
150- Declaration de l'operateur / entre tableaux (DivElt) et l'operateur \& \& pour la
151multiplication element par element (MulElt)
[2919]152\item[\rond] Janvier, FŽvrier 2006 \\
153- AmŽlioration des fonctionalitŽs de la classe {\bf Range} et des mŽthodes d'extraction
154de sous-tableaux (+ correction bugs et amŽlioration documentation) \\
[2911]155- Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au
156niveau de la conversion de type (r\_4 r\_8 ...) des tableaux \\
157- Compil avec g++ 4 : ajouts fichiers declarations privees tmatrix\_tsnl.h tvector\_tsnl.h
158
[2971]159\item[\rond] Juillet 2004 \\
160- Optimisation de la multiplication matricielle (CMV) - Extrait du
[2716]161message (from CMV) du 30 Juillet 2004: \\
[2632]162\begin{verbatim}
163- on definit un flag d'optimisation
164 Contrairement a ce qu'on avait dit, je n'ai pas ajoute
165 un argument a Multiply car on ne peut pas jouer
166 avec qiand on utilise l'operateur * surcharge.
167 Or au vu des performance il'ma parut interessant que l'utilisateur
168 meme lambda puisse choisir le niveau d'optimisation
169 --> donc j'ai ajoute une methode statis dans BaseArray::
170 void BaseArray::SetMatProdOpt(uint_2);
171 uint_2 BaseArray::GetMatProdOpt();
172
173- Je n'ai refait les test de rapidite que sur OSF:
174
1751./ pour les matrices 1000x1000 (grosses)
176 on arrive effectivement au meme temps pour les 4 cas
177 si on copie dans le cas lent (FxC)
178 ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
179 devient
180 ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
181 exactement comme les copains:
182 La copie prend de la place mais ne prend absolument
183 pas de temps pour les grosses matrices
184
1852./ pour les matrices 10x10 (1000000 multiplications par cas)
186 on a bien ce que l'on attend a savoir que
187 la copie faites 100000 fois finie par nous faire perdre du temps
188 ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
189 devient
190 ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
191 dans ce cas on perd un gros facteur 2 a cause de la copie
192 mais rien de surprenant la dedans.
193
194-----------------------------------------------------------------------
195- ensuite j'ai implemente une prise de decision au niveau de
196l'optimisation pour les petites matrices:
197le test est simple mais me semble OK:
198je calcule sza taille du NDataBlock de A
199 szb B
200si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
201IDEE: on pifometre que raisonnablement il y a 100 koctets
202 de disponible pour les matrices A et B dans le cache processeur
203 et que dans ce cas elles sont copiees toutes les 2 dans le cache
204 par l'optimiseur du compilo qui est tres malin et surtout qui
205 veux absolument nous faire plaisir......
206
207-----------------------------------------------------------------
208===> Les resultats sont dans le fichier toto.calc en attached
209.. En tete tu as l'explication des flags d'optimisation
210...Avec les 2 sections:
211 GROSSE MATRICE
212 et
213 PETITE MATRICE
214\end{verbatim}
215
[2971]216\item[\rond] Juillet 2004 : Optimisation operations diverses, en particulier \\
[2632]2171) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
218 Add/Sub/Mul/DivElt(TArray a, TArray res) \\
2192) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
[2911]220\item[\rond] Extrait de {\tt cvs log tarray.cc }
[2632]221{\small \begin{verbatim}
222----------------------------
223revision 1.38
224date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
225Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
226----------------------------
227----------------------------
228revision 1.36
229date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
230Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
231----------------------------
232revision 1.35
233date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
234Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
235----------------------------
236\end{verbatim} }
237
[2911]238\item[\rond] Extrait de {\tt cvs log tarray.cc }
[2632]239{\small \begin{verbatim}
240----------------------------
241revision 1.27
242date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
243- Intro decision auto d'optimisation produit de matrices
244- Possibilite a l'utilisateur pour choisir l'optimisation
245- cas FxC optimise par copie
246 cmv 30/07/04
247----------------------------
248revision 1.26
249date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
2501/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
251 Add/Sub/Mul/DivElt(TArray a, TArray res)
2522/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
2533/ Ajout methode TArray::ScalarProduct()
2544/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
2555/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
256 ReSize() de TMatrix et TVecteur.
257 Reza 29/07/2004
258----------------------------
259revision 1.25
260date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
261Optimisation produit de matrice a la sauce cmv 29/07/04
262----------------------------
263\end{verbatim} }
264
265\end{itemize}
266
267\section{HiStats}
268\subsection{Classe HistoErr }
269Ajout classe HistoErr (Septembre-Octobre 2004)
270
[2716]271\subsection{NTuple}
272la classe NTuple peut maintenant avoir des colonnes float ou double.
273Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
274Les noms ne sont plus limites a 8 caracteres.
275
276
277\subsection{ Les DataTable (SuperNTuple) }
278
[2835]279{\bf Octobre-Novembre 2005 } \\
280\begin{itemize}
[2854]281\item[\rond] Ajout classe {\bf DataTableRow} pour manipulation d'une ligne de la table.
282Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow()
[2835]283\item[\rond] Gestion des types {\tt complex<r\_4> , complex<r\_8> , TimeStamp } par
284BaseDataTable, DataTable et SwPPFDataTable
285\item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier
286text) dans BaseDataTable.
287\item[\rond] Codage mŽthode BaseDataTable::GetColumnD() pour recuperer
288une colonne de la table en {\tt TVector<r\_8>} - NON TESTE
289\end{itemize}
290
[2632]291\begin{verbatim}
[2716]292BaseDataTable
293 -------- DataTable
294 -------- SwPPFDataTable
295\end{verbatim}
[2717]296
297\noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
[2716]298pures, implementent la presque totalite des fonctionalites, en particulier
299celles de l'interface NTupleInterface.
[2632]300
[2717]301\noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
302memoire \\
303(utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
[2632]304
[2717]305\noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
306en swap sur stream PPF (POutPersist)- \\
307Utilise (SwSegDataBlock$<$T$>$ avec
308un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
[2632]309
[2716]310DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
311constructeur de copie avec partage ou copie de donnees, operateur =
312Datatable : partage et copie , = : fait une copie
313SwPPFDataTable : C'est toujours partage (presque par definition)
314Autre point, compte tenu de la structure des streams PPF ,
315les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
316pas les deux a la fois.
[2632]317
[2716]318Classe de gestion de persistence commune : \\
[2717]319{\bf ObjFileIO$<$BaseDataTable$>$ }
[2632]320
[2716]321Lit et ecrit les DataTable et SwPPFDataTable
322Actuellement, on ne peut les relires que dans le meme type,
323cad on ne peut relire avec un SwPPFDataTable un objet
324ecrit comme DataTable - mais cette possibilite pourra
325peut-etre codee ulterieurement (d'ou l'interet en particulier
[2717]326d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
[2632]327
[2716]328(les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
[2632]329
[2716]330
[2911]331Les merges et copie sont prevues,
[2716]332on doit en principe pouvoir ecrire par exemple:
[2717]333\begin{verbatim}
[2716]334SwPPFDataTable swdt;
335PInPersist pis("swdt.ppf");
336pis >> swdt;
337DataTable dt;
338dt = swdt; // Pour tout charger en memoire
[2717]339\end{verbatim}
[2716]340
[2911]341{\it On pourra aussi ajouter des methodes d'acces aux variables
342membres pour enrichier l'interface. }
[2716]343
344
[2717]345{\bf DataTable cote PIAPP :} \\
[2716]346Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
[2717]347{\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
348Il faudrait peut-etre rajouter deux commandes : \\
[2716]349newdt ou newdatatable
[2717]350newdt ncol col1 [col2 .... ] \\
[2716]351avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
352et puis dtfromascii ...
353
354Voir Tests/tnt.cc pour exemple d'utilisation :
[2717]355\begin{verbatim}
[2716]356DataTable dt(64);
357dt.AddIntegerColumn("line");
358dt.AddDoubleColumn("x");
359dt.AddFloatColumn("f_sin");
360MuTyV rec[10];
361for(int k = 0; k<1000; k++) {
362 rec[0] = k;
363 double x = M_PI*k/100.;
364 double fx = sin(x)*cos(x);
365 rec[1] = x;
366 rec[2] = sin(x);
367}
368 POutPersist po("dtable.ppf");
369 po << dt;
[2717]370\end{verbatim}
[2716]371
372Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
[2717]373ouvert tant que le SwPPFDataTable est actif: \\
374\begin{verbatim}
[2716]375 POutPersist po("swdtable.ppf");
376 SwPPFDataTable dt(po, 64);
[2632]377\end{verbatim}
378
[2717]379
[2993]380\section{SkyMap}
[2971]381
[2993]382\begin{itemize}
383\item[\rond] Juin 2006: Prise en charge du rangement mŽmoire {\bf NESTED} dans
384les SphereHEALPix , + I/O PPF et FITS
385\item[\rond] Juin 2006: Nettoyage et amŽliorations diverses dans les classes
386Vector3d, UnitVector, LongLat \ldots et les cartes sphŽriques, en particulier :
387\begin{enumerate}
388\item Nettoyage/uniformation mŽthodes {\tt Print()} des cartes, et
389 ajout de la mŽthode {\tt Show()} dans PixelMap
390 \item Ajout mŽthodes {\tt HasSymThetaSlice() , GetSymThetaSliceIndex() }
391 dans les cartes sphŽriques (SphericalMap)
392 \item Ajout methode {\tt ResolToSizeIndex() SizeIndexToResol() }
393 ds SphereThetaPhi , SphereHEALPix et SphereECP
394 \item Petites optimisations dans {\tt GetThetaSlice()} + methode {\tt GetThetaSliceDataPtr() }
395 \end{enumerate}
396
397\item[\rond] Juin 2006: Introduction de la classe {\bf Angle} - pour conversion d'angle.
[2971]398\begin{verbatim}
[2993]399 // Example to convert 0.035 radians to arcsec
400 double vr = 0.035;
401 cout << "Angle rad= " << vr << " ->arcsec= " << Angle(vr).ToArcSec() << endl;
402 // Example to convert 2.3 arcmin to radian - we use the conversion operator
403 double vam = 2.3;
404 cout << "Angle arcmin= " << vam << " ->rad= "
405 << (double)Angle(vam, Angle::ArcMin) << endl;
406\end{verbatim}
407%
[2971]408
[2632]409
[2993]410\item[\rond] {\bf SphereECP} - Septembre 2004 \\
[2632]411Extrait du message du 7 Septembre 2004
412\begin{verbatim}
413 J'ai mis dans la base (module SkyMap) le code de la classe
414SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
415+ gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
416
417Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
418Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
419le Resize de la sphereECP
420ylmserver.GenerateFromCl(map, -1, clin, 0.);
421
422Dans piapp, c'est visualise par defaut en projection Molleweide
423On peut ajouter dans les options d'affichage :
424ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
425Si option ecparray, on peut preciser en plus
426 - ecpscaledeg: echelle des axes en degres au lieu de pixels
427 - ecpscalerad: echelle des axes en radians au lieu de pixels
428Exemple:
429Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
430\end{verbatim}
431
[2993]432\item[\rond] Bug non corrigŽ ds classe Circle
[2632]433\begin{verbatim}
434From: Laurence Perotto <perotto@cdf.in2p3.fr>
435Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
436To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
437Subject: un bug dans sophya...
438
439 Bonjour et bonne annee a tous les deux...
440
441 Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
442s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
443utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
444oubliee...
445 Voila...
446 Bonne journee.
447
448 Laurence.
449\end{verbatim}
[2993]450\end{itemize}
[2632]451
[2993]452\section{Samba }
453
454\begin{itemize}
455\item[\rond] {\bf Juin 2006:} correction bug de calcul $a_{lm} \rightarrow$ SphereHEALPix
456(zones polar cap): le problme venant du choix de taille lors du calcul de la transformŽ
457de Fourier complex $\rightarrow$ rŽel (n/2 - 1 ou n/2 -2) .
458Correction dans {\tt RfourierSynthesisFromB } et utilisation de cette mŽthode
459pour tout type de carte.
460On gagne un peu encore en temps de calcul - sur asc (OSF1-cxx) , avec
461SphereThetaPhi(m=400), $l_{max} = 511$ \\[2mm]
462\begin{tabular}{|l|c|c|}
463\hline
464OpŽration & TCPU Avant & TCPU Aprs OPT \\
465\hline
466map $\rightarrow a_{lm}$ & 10 s & 3.6 s. \\
467$a_{lm} \rightarrow$ map & 26 & 10.5 s. \\
468\hline
469\end{tabular} \\[1mm]
470%
471\item[\rond] {\bf Mai 2006:} Optimisation calcul transformŽ en harmoniques sphŽriques
472{\bf SphericalTransformServer}. \\
473Au lieu de calculer un tableau de $\lambda_{lm}$ dans LambdaLMBuilder
474et utiliser ensuite ce tableau, on calcule les sommes nŽcessaires au vol,
475dans des mŽthodes spŽcifiques de la classe LambdaLMBuilder qui
476sont utilisŽes dans SphericalTransformServer (pour les transformŽs
477scalaire/tempŽrature) - PAS fait pour la polarisation pour le moment.
478On peut encore gagner un facteur 2 en utilisant la symŽtrie
479en $\theta <> \pi-\theta$. \\
480Extrait de cvs log :
481\begin{verbatim}
482revision 1.8
483date: 2006/06/01 11:34:50; author: ansari; state: Exp; lines: +147 -12
4841/ passage en sa_size_t (au lieu de int) dans Alm<T> et Bm<T>
4852/ Ajout des methodes optimisees (statiques) pour calcul transforme Ylm
486ds LambdaLMBuilder et utilisation ds SphericalTransformServer
487 Reza , 1/06/2006
488\end{verbatim}
489
490\item[\rond] Tests et vŽrifications des polynomes de Legendre CMV ???
491\end{itemize}
492
493%%%%%%%%%%%
[2632]494\section{SysTools}
[2971]495{\bf Mai-Juin 2006 } classe ZThread - petites modifs/amŽliorations liŽes
496ˆ la gestion des signaux et mŽthodes kill
497
[2632]498\subsection{Classe SOPHYA::Commander (module SysTools) }
[2971]499Mai-Juin 2006:
500Debug (?) de gestion/controle des threads dans la classe Commander -
501Extrait de cvs log :
502\begin{verbatim}
503date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +62 -11
504Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
505s (killthr) dans Commander - Reza 29 mai 2006
506----------------------------
507revision 1.7
508date: 2006/04/26 15:22:09; author: ansari; state: Exp; lines: +13 -0
509ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
510ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
511----------------------------
512revision 1.22
513date: 2006/05/31 12:30:13; author: ansari; state: Exp; lines: +20 -11
514correction gestion & pour ThrExec ds Commander - Reza 31/05/2006
515----------------------------
516revision 1.21
517date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +37 -16
518Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
519s (killthr) dans Commander - Reza 29 mai 2006
520----------------------------
521revision 1.20
522date: 2006/04/26 15:22:08; author: ansari; state: Exp; lines: +55 -15
523ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
524ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
525lioration documentation , Reza 26/4/2006
[2632]526
[2971]527\end{verbatim}
528
[2717]529Mars-Avril 2004 :
[2632]530Classe d'interprŽteur de ligne de commande inspire de C-Shell,
531destine a etre incluee dans des applications C/C++. \\
[2717]532( Programme test Test/tcmd.cc ) \\
533Avril 2005 : Introduction de la possibilite d'execution de commandes
534en multithreads \\
535Avril 2005 : Controle strict sur les noms de variables, limites
536aux caracteres alphanumeriques + underscore - Adaptation
537de l'algorithme de substitution en consequence.
[2632]538
539{\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
540
541\begin{itemize}
542
543\item[\rond] {\bf Gestion des variables } \\
544 - Les variables sont non typees toutes traitees comme des chaines
545de caracteres.
546 - Acces aux variables d'environnement -
547 - Un niveau variable d'environnement application est aussi prevu
548 - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
549extensibles automatiquement (difference avec le C-Shell)
550
551\item[\rond] {\bf Creation / initialisation de variables } \\
552\begin{verbatim}
553Cmd> set sv StringValue
554# Suppression d'une variable : unset ou clearvar
555Cmd> unset sv
556
557# Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
558Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
559#Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
560Cmd> a = 2+3*sqrt(4)
561# Le signe egal peut etre utilise pour attribuer une chaine de caracteres
562Cmd> a = 'Bonjour Madame'
563# Un element de tableau peut etre specifie avant le signe egal
564Cmd> vecv[2] = 'coucou'
565# Ou bien
566Cmd> i = 3
567Cmd> vecv[i] = 'Ooohhh'
568\end{verbatim}
569
570A droite du signe egal (membre de droite), les variables doivent etre
571adressees a l'aide du signe \$.
572
573Une chaine peut etre cassee en mots a l'aide de la commande var2words
574\begin{verbatim}
575Cmd> var2words varname wordvarname [separateur]
576\end{verbatim}
577
578\item[\rond] {\bf Acces aux variables } \\
579L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
580Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
581Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
582mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
583{\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
584
585\begin{verbatim}
586Cmd> x = 'Hello'
587Cmd> echo $x
588# Taille d'une variable de type vecteur $#vname
589Cmd> set vx ( 111 2222 3333 444444 )
590Cmd> echo $#vx
591# Acces aux elements de tableau
592Cmd> echo $vx[0] $vx[1]
593# ou bien indexe par une variable
594Cmd> i = 2
595Cmd> echo $vx[i]
596# Une syntaxe particuliere: $[vname] retourne le contenu de
597# la variable dont le nom est ds vname
598Cmd> zzz = 'Commander'
599Cmd> xxx = 'zzz'
600Cmd> echo '$[xxx]= ' $[xxx]
601$[xxx]= Commander
602\end{verbatim}
603
604Variables d'environnement: L'acces aux variables d'environnement
605se fait simplement par{\tt \$varenvname}. Attention, les variables locales
606de l'interpreteur sont prioritaires.
607
608\item[\rond] {\bf Variables particulieres: } \\
609{\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
610{\tt \$status} : code de retour de la derniere commande executee.
611(variable existe et est rempli - mais il faudra se donner une regle
612plus claire ...)
613Arguments des fichiers .pic appeles par la commande exec
614{\tt \$\# } : nombre d'arguments, a part \$0
615{\tt \$0} nom du fichier ou du script
616{\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
617
618
619\item[\rond] {\bf Structures de controle } \\
620\begin{verbatim}
621foreach f ( w1 w2 w3 ... )
622 ...
623 echo $f
624end
625\end{verbatim}
626
627Espace avant/apres '(' et avant ')' obligatoire.
628
629\begin{verbatim}
630foreach v vecname
631 ...
632 echo $v
633end
634\end{verbatim}
635
636Boucle de type integer:
637\begin{verbatim}
638for i startInt:endInt[:stepInt]
639 ....
640 echo $i
641end
642\end{verbatim}
643
644Boucle de type float
645\begin{verbatim}
646for f startFloat:endFloat[:stepFloat]
647 ....
648 echo $f
649end
650\end{verbatim}
651
652Boucle sur les lignes d'un fichier:
653\begin{verbatim}
654forinfile line FileName
655 ...
656 echo $line
657end
658\end{verbatim}
659
660Instruction {\tt break} pour casser une boucle
661
662\item[\rond] {\bf Les tests }
663\begin{verbatim}
664if ( test ) then
665endif
666
667if ( test ) then
668 ....
669else
670 ....
671endif
672\end{verbatim}
673
674Espace avant/apres '(' et avant ')' obligatoire.
675
676test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
677OU {\tt a <= b} OU {\tt a >= b}
678les espaces avant l'operateur de comparaison sont obligatoires.
679{\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
680{\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
681
682\item[\rond] {\bf Definition de script } \\
683\begin{verbatim}
684defscript scriptname [description ]
685 ....
686endscript
687\end{verbatim}
688
689L'appel a un script se fait simplement a l'aide
690du nom de script (contrairement aux fichiers
691de commande qui sont executes a l'aide de la
692commande {\tt exec} )
693\begin{verbatim}
694Cmd> scriptname arg1 arg2 arg3 ....
695\end{verbatim}
696
697L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
698script ou d'un fichier de commandes.
699Commandes {\bf listscript }et {\bf clearscript scriptname}
700 permettet d'avoir la liste des scripts
701 definis / supprimer la definition d'un script
702
703\item[\rond] {\bf Autres commandes}
704\begin{itemize}
705\item Instruction {\bf echo } pour ecrire sur cout/stdout
706\item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
707\item Instruction {\bf sleep nsec} (attente de nsec seconds )
708\item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
709%
710\item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
711\item Commandes {\bf help et help keyword/commandname }
712\item Commandes {\bf listvars , listcommands }
713\item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
714\end{itemize}
[2717]715
716\item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
717Possibilite de lancer des commandes (autre que les commandes
718 de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \&
719 a la fin de la commande) \\
720 Commandes des gestion des threads : \\
721 {\bf thrlist ; cleanthrlist ; cancelthr ThId ; waitthr } \\
722 Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
723pour des commandes "thread-safe".
724La plupart de nos commandes de piapp sont \\
725 - soit trop rapide, \\
726 - soit non "thread-safe" \\
727
728 \item[\rond] controle d'execution : \\
729Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
730 ou dans dans un fichier .pic ...
731 Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
732
[2632]733\end{itemize}
734
735\subsection{Classes CExpressionEvaluator et RPNExpressionEvaluator }
736\begin{itemize}
737\item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
738d'Žvaluation d'expressions numŽriques en notation polonaise inverse
739et avec la syntaxe C . Utilise dans la classe Commander.
740\item[\rond] Programme test Test/tcmd.cc
741\item[\rond] extrait de {\tt cvs log cexpre.cc }
742{\small \begin{verbatim}
743----------------------------
744revision 1.3
745date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
746Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
747----------------------------
748revision 1.2
749date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
750suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
751----------------------------
752revision 1.1
753date: 2004/03/15 22:19:43; author: ansari; state: Exp;
754Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
755\end{verbatim} }
756
757\item[\rond] Extrait du message du 3 Mars 2004
758\begin{verbatim}
759Le code est base sur une hierarchie de classe d'expression :
760 Expr -------- NumberExp
761 --------- BinExp ------ AddExp
762 ------ MulExp
763 ------ SubExp
764 ------ DivExp
765 --------- FuncExp
766 --------- CExpressionEvaluator
767
768NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
769 tres facile d'ajouter d'autres constantes
770BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
771 avec gestion de niveau de priorite des operateurs
772 On peut facilement ajouter d'autres operateurs binaires (par exemple
773 puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
774FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
775 actuellemenent, n=0 a n=3 arguments et quelques fonctions
776 usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
777 atan2, pow ) - voir ds le code
778
779CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
780 la fonction de decodage de la chaine ASCII (qui utilise
781 les fonctionalites des differentes classes est la dedans
782 et ce n'est pas tres long.
783(+ une classe d'exception specifique).
784\end{verbatim}
785
786\end{itemize}
787
[2829]788\section{FitsIOServer}
[2971]789Juin 2006 : \\
790Ajout verification/correction noms de colonne lors de lecture FITS / DataTable,
791et remplacement throw par un warning lors de lecture fits-healpix avec $nbcols > 1$ \\[1mm]
[2905]792Septembre-Novembre 2005 : Refondation totale du module
[2829]793\begin{itemize}
[2905]794\item[\rond] Amelioration du programme PrgUtil/scanppf -
795(scanfits -V1 -lh -rd -header filename)
796\item[\rond] La classe FitsFile (et donc FitsInFile FitsOutFile) heritent de FitsInOutFile.
797(Jan 2006)
798\item[\rond] Fonctionalites classe {\bf FitsManager } etendues - en particulier ScanFile()
799\item[\rond] Les FitsIOHandler (ancien) heritent de FitsHandlerInterface -
800Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006)
801\item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
802fichiers fiosinit.h .cc (Dec 2005)
803\item[\rond] Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute
804 + classe FitsHandler<BaseDataTable> modifie pour prise
805en charge de SwFitsDataTable (Dec 2005 - Jan 2006)
806\item[\rond] Classes {\bf FITSDataSwapper$<$T$>$} modifies (Dec 2005)
[2854]807\item[\rond] Prise en charge de types TSTRING et TCOMPLEX et TDBLCOMPLEX
808lors de lecture/ecriture de colonnes FITS.
809\item[\rond] Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
810de DataTable
[2829]811\item[\rond] Classe {\bf FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
812classe d'exception spŽcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
813\item[\rond] Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/Žcriture (tableaux de donnŽes)
814sur IMGHDU et Tables.
815\item[\rond] Classes gestionnaires I/O Fits pour les objets {\bf FitsHandler$<$T$>$} et {\bf FitsManager}
816\item[\rond] Classes gestionnaire pour les tableaux : {\bf FitsArrayHandler$<$T$>$}
817\item[\rond] Classes gestionnaire pour les DataTable {\bf FitsHandler$<$BaseDataTable$>$}
818\item[\rond] Mai 2005 : Classe {\bf FITSDataSwapper$<$T$>$} pour la gestion des
819SwSegDataBlock sur fichiers FITS
820\end{itemize}
821
[2717]822\section{LinAlg}
823Extension des fonctionalitŽs de la classe {\tt LapackServer<T>} :
824(Juillet 2004 / cmv , FŽvrier 2005 / Reza)
825\begin{itemize}
[2911]826\item[\rond] Ajout lancement d'exception sur renvoi de code d'erreur par lapack
827(desactivable par flag au niveau du constructeur de la classe serveur)
[2717]828\item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
829\item[\rond] Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
830 (cas general, symetrique et hermitique) (21/7/2004)
831\item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
832 (ilaenv\_) (21/7/2004)
833\item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
834\item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
835\item[\rond] Ajout Least Square with SVD DC
836\item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la
837resolution de systemes (07/02/2005)
838\end{itemize}
839
[2854]840\section{IFFTW}
[2911]841Nov 2005 : Correction du bug dans le cas de FFT-1D Backward(complex -> reel)
[2854]842in(1).imag() pouvait etre ecrase.
843
[2632]844\section{PI,PIext,piapp}
[2717]845\subsection{PI: Classes modifiees - ameliorees}
846\begin{itemize}
847\item[\rond] {\bf PIImageNavigator } \\
[2911]848Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image
[2717]849avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
850Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
851\item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
8521/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\
853 2/ Correction positionnement curseur lors de rappel de commande,
854 Si possible en fin de commande - mais toujours avec le
855 debut de commande visible. \\
8563/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
857 ds PIConsole
[2905]858\item[\rond] Codage Options graphiques en text (string) pour PIGraphicAtt (Nov-Dec 2005)
859\item[\rond] Corrections diverses trace d'axes etc ... (Dec 2005)
[2971]860\item[\rond] PIext rendu indŽpendant de FITS (Avril 2006) - commandes spŽcifiques dans
861ProgPI/fitsbtadapter.cc
[2905]862
[2717]863\end{itemize}
864%
865%
[2632]866\subsection{ Codage texte des options graphiques (11 Mars 2004)}
867\begin{verbatim}
868// Methode retournant un vecteur de string a partir des options
869virtual int PIDrawer::OptionToString(vector<string> & opt) const
870qui vient completer les deux methodes
871virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
872virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
873Ces methodes s'occupent de decoder les options graphiques (et l'aide
874associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
875une serie de chaine de caracteres a partir des options graphiques.
876Il y a aussi la methode
877virtual int PIWdgGen::OptionToString(vector<string> & opt) const
878que j'ai ajoute (rien a faire pour le moment) - ainsi que
879int PIGraphicAtt::AttToStrings(vector<string> & att) const.
880
881Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
882L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
883appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
884
885par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
886PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
887DecodeOptionString(vector<string> & opt, bool ...) est modifie,
888rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
889Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
890derriere (push_back()) afin de pouvoir cumuler les options de base + options
891specifiques.
892
893Comment tester ?
894Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
895[GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
896graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
897<Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
898\end{verbatim}
899
900\subsection{ Trace des axes (11 Mars 2004)}
901 Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
[2911]902lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer. FAIT
[2632]903
904\subsection{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
905\begin{verbatim}
906J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
907// Renvoie une distance au point x,y
908// 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
909// La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
910(ymin+ymax)/2)
911 virtual double PIDrawer::GetDistanceToPoint(double x, double y);
912
913ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
914methode + code permettant le test ds PIScDrawWdg.
915(virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
916 virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
917Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
918qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
919distance raisonnable au point (x,y) en argument.
920J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
921partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
922completer.
923
924Comment tester ?
925J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
926<Shift>Button-1 choisit le drawer le plus proche (base sur la
927valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
928comme drawer actif. Ce drawer est passe en 'highlight' pendant que
929le bouton est appuye.
930\end{verbatim}
931
932\subsection{ Manipulation interactive des drawers (3 Juin 2004) }
933La manipulation interactive des drawers (ˆ l'aide d'un menu) a
934ŽtŽ finalisŽe pour les PIImage PIScDrawWdg PI3DWdg .
935
936\begin{verbatim}
937 o <Alt>D affiche le menu avec les differentes option
938 o Move/Resize: Affichage du rectangle + rectangle milieu
939 (deplacement) + coin bas-droite (deplacement) -
940 clicker ailleurs pour finir
941 o Mouse Select : Le mouse select des drawers est gere
942 maintenant par un PIEventHandler (comme pour Move/ReSize)
943 Drawer actif affiche par le rectangle muni d'un petit coin
944 (petit carre + rond dedans, en bas a droite).
945 Click souris change eventuellement le drawer actif.
946 On termine en clickant ds le petit [carre+rond]
947\end{verbatim}
948
949\subsection{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
950Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
951et commande {\tt bargraph} ds PIext/basexecut.cc .
952La commande bargraph ne gere pas encore toutes les possibilites
953de la classe PIBarGraph. \\
954Exemple d'utilisation:
955\begin{verbatim}
956Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
957Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
958Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
959Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
960Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
961Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
962 -10. 15. 2 2. 8. 33. 7 -4.
963Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
964 -10. 15. 22. 8. 33. 7 -4.
965\end{verbatim}
966
967\subsection{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
968
969Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
970{\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
971doivent etre completes. \\
972Exemple d'utilisation:
973\begin{verbatim}
974# On affiche qque chose
975Cmd> openppf demo.ppf
976Cmd> disp h1d
977Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
978 ' Christophe ' ' Reza Ansari' ' SOPHYA '
979\end{verbatim}
980
981\subsection{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
982
983Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
984avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
985les limites de la boites 3D.
986cela a ete une grosse prise de tete de tout un apres-midi.
987J'ai eu ensuite mal a la tete une partie de la soiree ! \\
988Exemple d'utilisation:
989
990\begin{verbatim}
991
992# On ouvre le fichier demo.ppf
993Cmd> openppf demo.ppf
994Cmd> surf mtx1 'colbr32'
995Cmd> surf mtx1 'colbr32 noautoscale'
996Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
997# Affichage avec superposition
998Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
999Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1000# Ou bien :
1001Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
1002Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
1003
1004\end{verbatim}
1005\subsection{piapp}
1006\begin{itemize}
[2971]1007\item[\rond] Avril 2006: Ajout possibilite de lecture des commandes sur le terminal (stdin)
1008et flag en argument de commande {\tt -small} \\
1009Extrait de cvs log :
1010\begin{verbatim}
1011revision 1.16
1012date: 2006/04/26 15:53:18; author: ansari; state: Exp; lines: +20 -11
10131/ Ajout classe de lecture sur stdin (terminal) avec thread separe pour
1014piapp - incluant la possibilite d'utilisation de la librairie GNU readline
1015(fichiers piacmdrdr.cc piacmdrdr.h + fichier makfile specifique makefile_wgrdl
1016 pour compil+link avec GNU readline)
10172/ MAJ Makefile et modif programme principal piapp.cc avec flag -small
1018et activation thread de lecture sur terminal
1019 Reza , 26/04/2006
1020
1021----------------------------
1022\end{verbatim}
1023
[2905]1024\item[\rond] Jan 2006 : commandes readfits writefits scanfits ont ete ajoutees
1025dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS -
1026Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
1027\item[\rond] PossibilitŽ d'execution de commandes en multithread (Avril 2005)
1028\item[\rond] Le multithreading a ŽtŽ mis en oeuvre dans piapp (janvier 2004).
[2717]1029\item {\bf BUG } a corriger pour {\tt imagvav}:
1030La destruction de l'objet et/ou widget pascorrectement geres -
1031provoque des plantages lors de la sortie de l'application.
1032
[2905]1033\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
[2632]1034\begin{verbatim}
[2717]1035revision 1.77
1036date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
10371/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
1038nomhistadapter.cc et piiinit.cc
10392/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
1040fichier PPF sans nametag.
10413/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
1042 Reza , 27 Avril 2005
1043----------------------------
1044revision 1.76
1045date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
1046Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de
1047<Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp
1048et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
1049----------------------------
1050revision 1.75
1051date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
1052Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
1053Reza 19/4/2005
1054----------------------------
1055revision 1.74
1056date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
1057Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
1058) - Reza 18 Fev 2005
1059----------------------------
1060revision 1.73
1061date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
1062Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
1063----------------------------
[2632]1064revision 1.71
1065date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
1066Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
1067methode process, thread boucle d'evts) - Reza 07/09/2004
1068----------------------------
1069revision 1.70
1070date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
1071 Suite debugging gestion lock entre threads ds piapp - A l'air de
1072marcher sur OSF1 et Linux ... Reza 06/01/2004
1073----------------------------
1074revision 1.69
1075date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
1076Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
1077 appele de suite) - Reza 06/01/2004
1078----------------------------
1079revision 1.68
1080date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
1081Suite des modifs pour piapp multi-threads
10821) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
10832) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
1084la classe elle-meme, a travers le NamedObjMgr
10853) Modification de la boucle d'evenements, avec un thread de reveil
1086periodique
1087 Reza, 4 Janvier 2004
1088\end{verbatim}
[2905]1089\item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
[2632]1090\begin{verbatim}
1091----------------------------
1092revision 1.62
1093date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
1094Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
1095mmander - Reza 27/11/2003
1096----------------------------
1097revision 1.61
1098date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
1099Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
1100ander (de SysTools) - Reza 26/11/2003
1101----------------------------
1102revision 1.60
1103date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
1104- introduction notion de numero de ligne dans expression ntuple
1105 modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
1106 modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
1107 PrepareNTExpressionCFile, LinkExprFunc,...)
1108- doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
1109 (rz + cmv 21/7/2003)
1110----------------------------
1111\end{verbatim}
1112\end{itemize}
1113
1114\section{Documentation (Manual/) }
1115Documentation des classes de SysTools. \\
1116Extrait message du 12 Aout 2004 : \\
1117\begin{verbatim}
1118---> Au sujet de la doc (Manual/)
1119 J'ai installe doxygen sur le Mac, version 1.3.8 -
1120 Il faut updater le fichier de config de depart (dox_sophya.conf)
1121 Pour ma part, j'ai du modifier mkmf (en version privee) -
1122 En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
1123 ou specifique Mac.
1124
1125 J'ai aussi modifie certaines options de doxygen (en version privee)
1126 EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
1127 DETAILS_AT_TOP ---> YES (au lieu de No)
1128 SORT_MEMBER_DOCS ---> NO (au lieu de YES)
1129
[2829]1130 Si on est d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
[2632]1131 utiliser la fonction update de doxygen (doxygen -u)
1132\end{verbatim}
1133
[2829]1134\section{Mgr}
[2911]1135{\Large Avril-Mai 2005 : Basculement vers la nouvelle version de scripts
1136de gestion du code (module {\bf BuildMgr/ } )
1137On n'a plus a se preoccuper des indications de cette section
1138}
[2829]1139
1140\subsection{Variables d'environnement SOPHYAxxx (17/9/2003) }
1141Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
1142en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
1143
1144\subsection{Modifs Makefile - Message du 3 Mars 2004 }
[2911]1145Modifs effectuees - m nouveau module BuildMgr
[2829]1146
1147\subsection{ Modifs Makefile - Message du 8 Juillet 2004 }
1148\begin{verbatim}
1149A/ Makefile(s) (voir aussi mon message du 3 mars 2004)
1150A-1/ Structures des repertoires
1151>> On garde la structuration avec
1152+ un Makefile par module 'librairie'
1153+ un ensemble de modules librairies sans lib externe -> libsophya.slb
1154+ un ensemble de modules librairies avec lib externe -> libextsophya.slb
1155+ Des modules programmes (PrgUtil/ PrgMap/ ) avec un makefile par module programme
1156+ un Makefile de haut niveau (actuellement ds Mgr/Makefile
1157 Ce Makefile de haut niveau sera aussi simplifiŽ - en particulier la partie
1158concernant la fabrication des shared-libs (.slb) et Makefile.slb
1159+ On garde aussi la convention de generation automatique des GNUmakefile, qui sont
1160ensuite renommes eventuellement en Makefile, conserves ds la base
1161- Plus d'inclusion automatique du nom du system-compilo (Linux-g++ OSF1-cxx ...)
1162dans les noms de repertoires
1163- Plus de structure ExtLibDir obligatoire (remplace par des -Ipath -Lpath pour les
1164compils/links
1165- Si besoin, on fait subir le meme sort que Makefile.h a Makefile.slb
1166
1167 On aura donc : (message du 3 mars 2004)
1168il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
1169SOPHYARACINE) par exemple
1170$SOPHYAROOT/Include
1171Attention le repertoire Include/ NE sera donc PLUS commun pour plusieurs
1172systemes-compilo.
1173 /Libs
1174 /ShLibs
1175 /Exec
1176 /Objs
1177Un fichier Makefile.h ds $SOPHYAROOT/Include
1178contiendra les flags de compilation dŽfinis pour un systme/compilo.
1179A la base, on aura ds Mgr/ un fichier Makefile.h pour chaque combinaison
1180compilo-compilo;
1181Mgr/makef_osf1_cxx.h
1182Mgr/makef_linux_g++.h
1183Mgr/makef_linux_KCC.h
1184Mgr/makef_darwin_g++.h (Mac)
1185Mgr/makef_sgi_CC.h
1186 etc ...
1187C'est ce fichier qui est copiŽ en Include/Makefile.h, Žventuellement
1188complete/modifie
1189
1190----- Fichier Makefile.h
1191# Section generale
1192SOPHYAROOT =
1193SOPHYACXX=
1194...
1195# Section compilation
1196CC_COMPILER (nom du compilo cc)
1197CXX_COMPILER ( c++)
1198CPPFLAGS , (flag du preprocesseur), en particulier
1199les -Iincludepath (chemin pour les includes SOPHYA
1200CFLAGS flag de compilation c
1201CXXFLAGS flags de compilation c++
1202# Section Link
1203LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
1204LIBLIST -lm -lcfitsio ... (les librairies)
1205
1206Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
1207Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
1208du meme genre) avec la syntaxe C/C++ de chaines de caracteres
1209pouvant etre include (par #include) ds cxxcmplnk.cc
1210
1211le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
1212machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
1213plusieurs morceaux si necessaire) et contiendra en entete les flags
1214qui modifie la generation du code
1215
1216exemple
1217#define Linux
1218#define SOPHYA_DEBUG
1219....
1220
1221Dans les fichier Makefile pour chaque module, on abandonnera
1222les regles (et repertoire) de compilation par defaut et on aura
1223donc:
1224INC= $SOPHYAROOT/Include
1225OBJ = $SOPHYAROOT/Objs
1226LIB=...
1227$(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
1228 $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
1229....
1230
1231\end{verbatim}
1232
1233
[2911]1234\section{Plan de modifs pour SOPHYA V 2.0 PI/piapp V 4.0 }
1235
1236{\Large {\bf Dec 2005} : La majorite des modifs ont ete mise en oeuvre -
1237Il faut nettoyer la liste et la transformer en liste pour la version 2.2 ou 2.4 ...} \\
1238
1239{\bf Plan Žtabli en septembre 2003 : }
1240
[2632]1241\subsection{Gestion du code (Mgr/ ) }
1242\begin{verbatim}
1243
1244 o Chemins/variables d'environnement
1245 - Remplacer DPCDEVREP DPCBASEREP par SOPHYADEVREP et SOPHYABASEREP
1246 - Remplacer EROSCXX par SOPHYACXX (?)
1247 o Simplifier/rationaliser les makefiles
1248 - Mettre les flags de compils pour chaque compilo-systeme dans un fichier au lieu
1249 d'avoir tout Makefile.h
1250 Exemple fichier Mgr/linux_g++.flags
1251 CPPFLAGS = ...
1252 CXXFLAGS = ...
1253 LIBS = ...
1254
1255o Mettre un script pour chercher les lib externes (c-fitsio, FFTW, ...) et creer
1256 eventuellement l'arborescence ExtLibs
1257
1258o Inclure la definition des flags influant sur le code (comme
1259 -DOSF1/Linux/Darwin/IRIX64
1260 SO_BOUNDCHECKING a la fin du fichier machdefs.h que l'on fabriquera a
1261 partir de du machdef_mkmf.h )
1262 PB-> ce fichier deviendra alors dependant du systeme et de l'installation !
1263 Faut-il deplacer alors Include/ sous uname-$EROSCXX (Linux-g++)
1264 ou carrement considerer que la separation pour differents systemes doit se faire au
1265 niveau de SOPHYADEV/BASE/REP ?
1266
1267o Abandonner (?) les regles de compilation par defaut
1268 Inclure dans les Makefile la ligne de commande :
1269 $(OBJ)toto.o : toto.cc toto.h titi.h ...
1270 $(COMPILECXX) -$(CPPFLAGS) $(CXXFLAGS) -c -o $(OBJ)toto.o toto.cc
1271
1272o Garder les Makefile simple (eviter trop de tests et syntaxe complique)
1273
1274\end{verbatim}
1275
1276\subsection{Code/Librairie SOPHYA $\rightarrow$ V 2.0)}
1277\begin{verbatim}
1278
1279o Fichiers PPersist (BaseTools) :
1280 - Ajouter la possibilite d'ecrire des complex(r_4> complex<r_8>
1281 (actuellement c'est ecrit sous forme de 2*r_4 ou 2*r_8)
1282 - Ajouter des tag de positionnement qui pourrait servir au cas
1283 ou on utiliserait le fichier PPF comme fichier de swap
1284 Ces tags ne peuvent pas etre les memes que les name-tag
1285 existant actuellement.
1286 Une utilisation annexe de ces tags peut etre alors un moyen
1287 de verifier que le fichier n'est pas corrompu
1288 Ce tag se presente alors sous forme de
1289 <tag (1 byte)><FilePosition (8 byte, long int)>
1290 On peut alors parcourir le fichier et verifier la coherence de
1291 ces tags.
1292 - Il faut aussi ajouter au niveau de POutPersist et PInPersist
1293 les services pour ecrire et lire une collection de tag de
1294 positionnement, afin qu'un objet puisse utiliser une liste de
1295 tag pour se positionner
1296
1297o BaseTools/ Voir autres remarques ds fichier Manual/sophya_afaire.txt
1298 concernant en particulier les NDataBlock<T> DataBlock<T> ...
1299
1300o Les tableaux : TArray/
1301 - Ajouter une classe de base abstraite GenericMatrix<T>
1302 avec methode d'acces aux elements, nb de lignes, nb de colonnes,
1303 ...
1304 - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
1305 avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
1306
1307 - Introduire des matrices creuses simples SpareMatrix<T>
1308
1309 - Introduire les DiagonalMatrix<T>
1310
1311 Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
1312
1313o HiStats
1314 - Faire une classe SuperNTuple (!), facile a utiliser, sachant swaper sur les
1315 PPF, avec des champs de differents type
1316
1317o IFFTW/
1318 - Passage a FFTW 3.x ?
1319
1320o Voir autres remarques pour l'ensemble des modules ds Manual/sophya_afaire.txt
1321\end{verbatim}
1322
1323\subsection{Code/Librairie PI ($\rightarrow$ V 4.0)}
1324\begin{verbatim}
1325
1326o Menu contextuel pour les Drawers
1327 - Ajouter a PIImage, PIScrDrawWdg(2D), PIDraw3DWdg(3D) un menu obtenu
1328 sur <Shift><Bouton-1> par exemple, avec la liste de tous les Drawers
1329 permettant d'afficher la fenetre des options graphiques, ou le fenetre
1330 des options ou la fenetre des options texte, activer deplacement/resize
1331 des drawers, suppression (delete) ou detach des drawers, et en fonction
1332 du widgets, la fenetre des axes ou de controle d'image
1333
1334o Mettre l'option auto-scale (rapport entre axes X,Y,Z) pour les Drawers3D
1335 verifer/debugger la definition de la boite 3D au niveau des Drawers3D
1336
1337o Traceur d'histos, NTuples, ...
1338 Remplacer le trace des lignes par morceau fait par appel multiples
1339 a DrawLine a un seul appel a DrawPolygon (si les lignes sont connectes
1340 bien sur) --> Ca ameliore sensiblement l'aspect pour le trace en pointille
1341
1342o Ajouter un traceur de Bar-chart 2D OU ApplePie (facile !)
1343 On donne une serie de nombres, serie de couleur, + serie de strings
1344 et on trace alors une sorte d'histo, avec des barres (rectangles) espaces
1345 Ou bien on trace un cercle divise en zones
1346
1347o Ajouter un traceur de Lego-Plot
1348
1349o PIImageWindow (Une fenetre avec une PIImage, un Zoom et une vue globale)
1350 Assemblage
1351
1352o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
1353
1354\end{verbatim}
1355
1356\subsection{(s)piapp ($\rightarrow$ V 4.0)}
1357\begin{verbatim}
1358
1359o Verifier l'interpreteur et introduire le type de variable vecteur
1360 qui peut etre detecte par exemple lors de l'initialisation par set
1361 set a 'Bonjour CMV' # -> variable scalaire
1362 set va [ 12 14 hello ... ] # variable de type vecteur $va[]
1363
1364o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
1365 pour pouvoir plotter des objets, l'un vs l'autre
1366
1367o Separer la classe PIACmd en une classe de base (CShellLikeInterpreter)
1368 (a mettre ds SysTools) et la classe PIACmd a laisser ds PIext
1369
1370o (???) Introduire quelque chose du style
1371 AddDialogue("Cmd", "dialogue-description)
1372 qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
1373 pour les commandes usuelles (???)
1374
1375o Voir les autres commentaires ds Manual/spiapp_afaire.txt
1376
1377\end{verbatim}
1378
1379
1380\end{document}
Note: See TracBrowser for help on using the repository browser.