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

Last change on this file since 3286 was 3286, checked in by ansari, 18 years ago

petites correction dans liste modifs/history suite a la mise en ligne sur le web de la version V2.135 - Reza 31/07/2007

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