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]
|
---|
44 | Liste des tags et dates : \\[5mm]
|
---|
45 | {\large
|
---|
46 | \begin{tabular}{lcl}
|
---|
47 | V = 0.727 & \hspace{10mm} & Octobre 1999 \\
|
---|
48 | V = 0.8 & \hspace{10mm} & F\'evrier 2000 \\
|
---|
49 | V = 1.1 & \hspace{10mm} & F\'evrier 2001 \\
|
---|
50 | V = 1.2 & \hspace{10mm} & Juillet 2001 \\
|
---|
51 | V = 1.3 & \hspace{10mm} & Novembre 2001 \\
|
---|
52 | V = 1.5 & \hspace{10mm} & D\'ecembre 2002 \\
|
---|
53 | V = 1.7 & \hspace{10mm} & Septembre 2003 \\
|
---|
54 | V = 1.9 & \hspace{10mm} & Juin 2005 - SANS tag CVS \\
|
---|
55 | V = 1.9xx & \hspace{10mm} & 09/2005 ... 09/2006 \\
|
---|
56 | V = 2.0 & \hspace{10mm} & Septembre 2006 - tag CVS \\
|
---|
57 | V = 2.135 & \hspace{10mm} & Juin 2007 - NO tag \\
|
---|
58 |
|
---|
59 | \end{tabular}
|
---|
60 | } \\[8mm]
|
---|
61 | %%%%%%
|
---|
62 | \begin{tabular}{ll}
|
---|
63 | R. Ansari & ansari@lal.in2p3.fr \\
|
---|
64 | C. 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 : Amlioration du script configure, qui prend en charge
|
---|
81 | la gestion des diffrents flags de compilation (mis dans fichier machdefs.h gnr
|
---|
82 | ou dans sophyamake.inc (pour les flags du compilateur) - Nettoyage du fichier
|
---|
83 | BaseTools/machdefs\_mkmf.h et des fichiers osname\_compilo.inc
|
---|
84 | \begin{verbatim}
|
---|
85 | csh> cd BuildMgr/
|
---|
86 | csh> ./configure -h
|
---|
87 | configure [-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}
|
---|
105 | Les oprations de partage de rfrence 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 mthodes {\tt lock() , unlock() } utilisant
|
---|
109 | un mutex.
|
---|
110 | \item Ces mthodes 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
|
---|
113 | constructeurs de copie et l'extraction de sous-tableaux pour TArray, TMatrix,TVector.
|
---|
114 | (programme de vrification Tests/zthr.cc - option sync ).
|
---|
115 | \item En ce qui concerne les classes SegDataBlock , SwSegDataBlock, l'efficacit
|
---|
116 | de la protection n'a pas t teste. Les oprations d'criture sur les DataTable
|
---|
117 | devront aussi tre protges pour l'utilisation multi-thread.
|
---|
118 | \end{itemize}
|
---|
119 | \item[\rond] Avril 2007 : Nettoyage du fichier machdefs\_mkmf.h, suppression des flags
|
---|
120 | de compilation optionnelle MacOS 8.x 9.x / compilo CodeWarrior
|
---|
121 | \item[\rond] Fev 2007 : Ajout methode NDataBlock::RenewObjId() , et Dealloc() (alias de Delete())
|
---|
122 | et 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
|
---|
140 | de Histo et devient stand-alone avec des TVector comme support des donne\'ees. \\
|
---|
141 | Introduction de la classe Histo2DErr qui fait la meme chose que HistoErr
|
---|
142 | mais \`a $2$ dimensions. \\
|
---|
143 | Modifs des adaptateurs: NOMAdapter\_Histo ne contient plus HistoErr,
|
---|
144 | et 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
|
---|
153 | et 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
|
---|
161 | ajout 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
|
---|
170 | la 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 mthodes
|
---|
177 | {\tt PIGraphicAtt::ColNameToColor() , ColIndexToColor()} et possibilit d'utiliser le contenu
|
---|
178 | d'une colonne d'une table comme nom de couleur ou numro de couleur pour le trac
|
---|
179 | des markers par PINTuple {\tt PINTuple::SelectColorByName() , SelectColorByIndex()}.
|
---|
180 | Ajout des commandes {\bf nt2dcn} et {\bf nt2dci} et {\bf plot2dc} ds piapp.
|
---|
181 | \item[\rond] Avril 2007 {\bf (PI)}: La source des problmes sur MacOS/PowerPC (G4/G5)
|
---|
182 | et AIX (architecture Power) a finalement t identifi et corrig/
|
---|
183 | Parmi ces problmes: des pull-down menus mal placs (MenuBar), ou encore des
|
---|
184 | dysfonctionnement de boutons dans les fentres de dialogues. \\
|
---|
185 | Source 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}
|
---|
190 | pour la prise en charge des objets DVList.
|
---|
191 | Accs aux variables par {\tt \$\{dvlName.varName\} }
|
---|
192 | \item Accs 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'accder 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 spcifique
|
---|
198 | {\tt NOMAdapter\_Image<T> }
|
---|
199 | \end{itemize}
|
---|
200 | \item[ \rond] Janvier 2007 {\bf (PI)}: modification des trac\'es des histogrammes PIHisto.
|
---|
201 | La classe PIHisto prend en entr\'ee un wrapper P1DHistoWrapper.
|
---|
202 | Les wrappers HistoWrapper et HistoErrWrapper sont cr\'ees.
|
---|
203 | Ainsi les HistoErr peuvent \^etre dessin\'es sous forme d'histogrammes.
|
---|
204 | Mise en place des options graphiques permettant de dessiner les
|
---|
205 | valeurs (``val''), erreurs (``err'') et le nombre d'entr\'ees par bin (``nb'')
|
---|
206 | pour 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
|
---|
213 | differentes 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
|
---|
228 | scripts de gestion du code - avec un script principal configure. \\
|
---|
229 | Variable d'environnement {\bf SOPHYABASE } - \\
|
---|
230 | Pour les makefiles, l'ensemble des dfinitions se trouve dans : \\
|
---|
231 | SOPHYABASE/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)
|
---|
242 | ListModules(ostream\& os) } a la classe de base SophyaInitiator. \\
|
---|
243 | - Enregistrement des modules avec leur nom et un numero de version par module,
|
---|
244 | independante du numero de version SOPHYA \\
|
---|
245 | - le programme scanppf peut donner la liste des modules enregistrees et leur numero
|
---|
246 | de version.
|
---|
247 | \item[\rond] Octobre-Novembre 2005 : \\
|
---|
248 | 1/ Correction bug TimeStamp::ToDays() + petites amelioration \\
|
---|
249 | 2/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
|
---|
250 | 3/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
|
---|
251 | 4/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
|
---|
252 | 5/ Gestionnaire PPersist pour TimeStamp
|
---|
253 | %
|
---|
254 | \item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
|
---|
255 | Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
|
---|
256 | Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
|
---|
257 | ainsi que lors de la gnration 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
|
---|
263 | la 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)
|
---|
268 | modification programme scanppf: ajout option -lh -lho pour lister les classes PP
|
---|
269 | ersist handler
|
---|
270 | \item[\rond] Dcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
|
---|
271 | PPF V3 \\
|
---|
272 | - Ecriture nombre complexes r4, r8 avec tag spcifique. \\
|
---|
273 | Tag 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] Dcembre 2003 - Ajout ppfbinstream.h .cc \\
|
---|
283 | Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
|
---|
284 | \item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
|
---|
285 | Classes 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 -
|
---|
293 | calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2003)
|
---|
294 | \item[\rond] { \bf Segmented Data Block :} \\
|
---|
295 | Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant
|
---|
296 | de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
|
---|
297 | et 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>} )
|
---|
300 | pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
|
---|
301 | gestionnaire PPF {\tt FIO\_SegDataBlock<T>} (fichier fiosegdb.h )
|
---|
302 | \item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
|
---|
303 | de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
|
---|
304 | ppfswapper.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 | %%
|
---|
312 | Il s'agit essentiellement des ameliorations en terme de performances et
|
---|
313 | de 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 ) } \\
|
---|
321 | a travers le choix entre Share() ou Allocation si le tableau resultat est non alloue.
|
---|
322 | D'apres les tests de performances (TCPU), {\bf (tjet , spar)}, il ne semble pas y
|
---|
323 | avoir de cas de pertes, et on a en general des gains de l'ordre de 20\% dans la plupart
|
---|
324 | des 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
|
---|
326 | multiplication element par element (MulElt)
|
---|
327 | \item[\rond] Janvier, Fvrier 2006 \\
|
---|
328 | - Amlioration des fonctionalits de la classe {\bf Range} et des mthodes d'extraction
|
---|
329 | de sous-tableaux (+ correction bugs et amlioration documentation) \\
|
---|
330 | - Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au
|
---|
331 | niveau 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
|
---|
336 | message (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 |
|
---|
350 | 1./ 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 |
|
---|
360 | 2./ 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
|
---|
371 | l'optimisation pour les petites matrices:
|
---|
372 | le test est simple mais me semble OK:
|
---|
373 | je calcule sza taille du NDataBlock de A
|
---|
374 | szb B
|
---|
375 | si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
|
---|
376 | IDEE: 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 \\
|
---|
392 | 1) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
|
---|
393 | Add/Sub/Mul/DivElt(TArray a, TArray res) \\
|
---|
394 | 2) 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 | ----------------------------
|
---|
398 | revision 1.38
|
---|
399 | date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
|
---|
400 | Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
|
---|
401 | ----------------------------
|
---|
402 | ----------------------------
|
---|
403 | revision 1.36
|
---|
404 | date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
|
---|
405 | Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
|
---|
406 | ----------------------------
|
---|
407 | revision 1.35
|
---|
408 | date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
|
---|
409 | Remplacement 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 | ----------------------------
|
---|
416 | revision 1.27
|
---|
417 | date: 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 | ----------------------------
|
---|
423 | revision 1.26
|
---|
424 | date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
|
---|
425 | 1/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
|
---|
426 | Add/Sub/Mul/DivElt(TArray a, TArray res)
|
---|
427 | 2/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
|
---|
428 | 3/ Ajout methode TArray::ScalarProduct()
|
---|
429 | 4/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
|
---|
430 | 5/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
|
---|
431 | ReSize() de TMatrix et TVecteur.
|
---|
432 | Reza 29/07/2004
|
---|
433 | ----------------------------
|
---|
434 | revision 1.25
|
---|
435 | date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
|
---|
436 | Optimisation 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.
|
---|
451 | C'est un Histo qui garde le nombre d'entr\'ees dans chaque bin) \\
|
---|
452 | \soustitre{NTuple}
|
---|
453 | la classe NTuple peut maintenant avoir des colonnes float ou double.
|
---|
454 | Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
|
---|
455 | Les 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.
|
---|
463 | Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow()
|
---|
464 | \item[\rond] Gestion des types {\tt complex<r\_4> , complex<r\_8> , TimeStamp } par
|
---|
465 | BaseDataTable, DataTable et SwPPFDataTable
|
---|
466 | \item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier
|
---|
467 | text) dans BaseDataTable.
|
---|
468 | \item[\rond] Codage mthode BaseDataTable::GetColumnD() pour recuperer
|
---|
469 | une colonne de la table en {\tt TVector<r\_8>} - NON TESTE
|
---|
470 | \end{itemize}
|
---|
471 |
|
---|
472 | \begin{verbatim}
|
---|
473 | BaseDataTable
|
---|
474 | -------- DataTable
|
---|
475 | -------- SwPPFDataTable
|
---|
476 | \end{verbatim}
|
---|
477 |
|
---|
478 | \noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
|
---|
479 | pures, implementent la presque totalite des fonctionalites, en particulier
|
---|
480 | celles de l'interface NTupleInterface.
|
---|
481 |
|
---|
482 | \noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en
|
---|
483 | memoire \\
|
---|
484 | (utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
|
---|
485 |
|
---|
486 | \noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees
|
---|
487 | en swap sur stream PPF (POutPersist)- \\
|
---|
488 | Utilise (SwSegDataBlock$<$T$>$ avec
|
---|
489 | un data-swapper PPF (classe PPFDataSwapper$<$T$>$ )
|
---|
490 |
|
---|
491 | DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA ,
|
---|
492 | constructeur de copie avec partage ou copie de donnees, operateur =
|
---|
493 | Datatable : partage et copie , = : fait une copie
|
---|
494 | SwPPFDataTable : C'est toujours partage (presque par definition)
|
---|
495 | Autre point, compte tenu de la structure des streams PPF ,
|
---|
496 | les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
|
---|
497 | pas les deux a la fois.
|
---|
498 |
|
---|
499 | Classe de gestion de persistence commune : \\
|
---|
500 | {\bf ObjFileIO$<$BaseDataTable$>$ }
|
---|
501 |
|
---|
502 | Lit et ecrit les DataTable et SwPPFDataTable
|
---|
503 | Actuellement, on ne peut les relires que dans le meme type,
|
---|
504 | cad on ne peut relire avec un SwPPFDataTable un objet
|
---|
505 | ecrit comme DataTable - mais cette possibilite pourra
|
---|
506 | peut-etre codee ulterieurement (d'ou l'interet en particulier
|
---|
507 | d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
|
---|
508 |
|
---|
509 | (les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
|
---|
510 |
|
---|
511 |
|
---|
512 | Les merges et copie sont prevues,
|
---|
513 | on doit en principe pouvoir ecrire par exemple:
|
---|
514 | \begin{verbatim}
|
---|
515 | SwPPFDataTable swdt;
|
---|
516 | PInPersist pis("swdt.ppf");
|
---|
517 | pis >> swdt;
|
---|
518 | DataTable dt;
|
---|
519 | dt = swdt; // Pour tout charger en memoire
|
---|
520 | \end{verbatim}
|
---|
521 |
|
---|
522 | {\it On pourra aussi ajouter des methodes d'acces aux variables
|
---|
523 | membres pour enrichier l'interface. }
|
---|
524 |
|
---|
525 |
|
---|
526 | {\bf DataTable cote PIAPP :} \\
|
---|
527 | Cote piapp, les DataTable et SwPPFDataTable sont pris en charge par
|
---|
528 | {\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
|
---|
529 | Il faudrait peut-etre rajouter deux commandes : \\
|
---|
530 | newdt ou newdatatable
|
---|
531 | newdt ncol col1 [col2 .... ] \\
|
---|
532 | avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
|
---|
533 | et puis dtfromascii ...
|
---|
534 |
|
---|
535 | Voir Tests/tnt.cc pour exemple d'utilisation :
|
---|
536 | \begin{verbatim}
|
---|
537 | DataTable dt(64);
|
---|
538 | dt.AddIntegerColumn("line");
|
---|
539 | dt.AddDoubleColumn("x");
|
---|
540 | dt.AddFloatColumn("f_sin");
|
---|
541 | MuTyV rec[10];
|
---|
542 | for(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 |
|
---|
553 | Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
|
---|
554 | ouvert 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 mmoire {\bf NESTED} dans
|
---|
566 | les SphereHEALPix , + I/O PPF et FITS
|
---|
567 | \item[\rond] Juin 2006: Nettoyage et amliorations diverses dans les classes
|
---|
568 | Vector3d, UnitVector, LongLat \ldots et les cartes sphriques, en particulier :
|
---|
569 | \begin{enumerate}
|
---|
570 | \item Nettoyage/uniformation mthodes {\tt Print()} des cartes, et
|
---|
571 | ajout de la mthode {\tt Show()} dans PixelMap
|
---|
572 | \item Ajout mthodes {\tt HasSymThetaSlice() , GetSymThetaSliceIndex() }
|
---|
573 | dans les cartes sphriques (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 \\
|
---|
592 | Extrait du message du 7 Septembre 2004
|
---|
593 | \begin{verbatim}
|
---|
594 | J'ai mis dans la base (module SkyMap) le code de la classe
|
---|
595 | SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
|
---|
596 | + gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
|
---|
597 |
|
---|
598 | Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
|
---|
599 | Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
|
---|
600 | le Resize de la sphereECP
|
---|
601 | ylmserver.GenerateFromCl(map, -1, clin, 0.);
|
---|
602 |
|
---|
603 | Dans piapp, c'est visualise par defaut en projection Molleweide
|
---|
604 | On peut ajouter dans les options d'affichage :
|
---|
605 | ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
|
---|
606 | Si 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
|
---|
609 | Exemple:
|
---|
610 | Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
|
---|
611 | \end{verbatim}
|
---|
612 |
|
---|
613 | \item[\rond] Bug non corrig ds classe Circle
|
---|
614 | \begin{verbatim}
|
---|
615 | From: Laurence Perotto <perotto@cdf.in2p3.fr>
|
---|
616 | Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
|
---|
617 | To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
|
---|
618 | Subject: 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
|
---|
623 | s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
|
---|
624 | utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
|
---|
625 | oubliee...
|
---|
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 problme venant du choix de taille lors du calcul de la transform
|
---|
638 | de Fourier complex $\rightarrow$ rel (n/2 - 1 ou n/2 -2) .
|
---|
639 | Correction dans {\tt RfourierSynthesisFromB } et utilisation de cette mthode
|
---|
640 | pour tout type de carte.
|
---|
641 | On gagne un peu encore en temps de calcul - sur asc (OSF1-cxx) , avec
|
---|
642 | SphereThetaPhi(m=400), $l_{max} = 511$ \\[2mm]
|
---|
643 | \begin{tabular}{|l|c|c|}
|
---|
644 | \hline
|
---|
645 | Opration & TCPU Avant & TCPU Aprs OPT \\
|
---|
646 | \hline
|
---|
647 | map $\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 sphriques
|
---|
653 | {\bf SphericalTransformServer}. \\
|
---|
654 | Au lieu de calculer un tableau de $\lambda_{lm}$ dans LambdaLMBuilder
|
---|
655 | et utiliser ensuite ce tableau, on calcule les sommes ncessaires au vol,
|
---|
656 | dans des mthodes spcifiques de la classe LambdaLMBuilder qui
|
---|
657 | sont utilises dans SphericalTransformServer (pour les transforms
|
---|
658 | scalaire/temprature) - PAS fait pour la polarisation pour le moment.
|
---|
659 | On peut encore gagner un facteur 2 en utilisant la symtrie
|
---|
660 | en $\theta <> \pi-\theta$. \\
|
---|
661 | Extrait de cvs log :
|
---|
662 | \begin{verbatim}
|
---|
663 | revision 1.8
|
---|
664 | date: 2006/06/01 11:34:50; author: ansari; state: Exp; lines: +147 -12
|
---|
665 | 1/ passage en sa_size_t (au lieu de int) dans Alm<T> et Bm<T>
|
---|
666 | 2/ Ajout des methodes optimisees (statiques) pour calcul transforme Ylm
|
---|
667 | ds LambdaLMBuilder et utilisation ds SphericalTransformServer
|
---|
668 | Reza , 1/06/2006
|
---|
669 | \end{verbatim}
|
---|
670 |
|
---|
671 | \item[\rond] {\bf Fin 2004} : Tests et vrifications des polynomes de Legendre.
|
---|
672 | La classe LambdaLMBuilder donne les bons r\'esultats mais calcule les Plm
|
---|
673 | pour tous les $l,m$.
|
---|
674 | Introduction d'une routine (C-like) ``HarmSph\_array\_teta'' qui calcule
|
---|
675 | les Plm pour $m$ fix\'e et $l\in [0,l_{max}]$ comme ce qui est fait
|
---|
676 | dans 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/amliorations lies
|
---|
682 | la gestion des signaux et mthodes kill
|
---|
683 |
|
---|
684 | \soustitre{Classe SOPHYA::Commander (module SysTools) }
|
---|
685 | Mai-Juin 2006:
|
---|
686 | Debug (?) de gestion/controle des threads dans la classe Commander -
|
---|
687 | Extrait de cvs log :
|
---|
688 | \begin{verbatim}
|
---|
689 | date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +62 -11
|
---|
690 | Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
|
---|
691 | s (killthr) dans Commander - Reza 29 mai 2006
|
---|
692 | ----------------------------
|
---|
693 | revision 1.7
|
---|
694 | date: 2006/04/26 15:22:09; author: ansari; state: Exp; lines: +13 -0
|
---|
695 | ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
|
---|
696 | ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
|
---|
697 | ----------------------------
|
---|
698 | revision 1.22
|
---|
699 | date: 2006/05/31 12:30:13; author: ansari; state: Exp; lines: +20 -11
|
---|
700 | correction gestion & pour ThrExec ds Commander - Reza 31/05/2006
|
---|
701 | ----------------------------
|
---|
702 | revision 1.21
|
---|
703 | date: 2006/05/29 17:27:35; author: ansari; state: Exp; lines: +37 -16
|
---|
704 | Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
|
---|
705 | s (killthr) dans Commander - Reza 29 mai 2006
|
---|
706 | ----------------------------
|
---|
707 | revision 1.20
|
---|
708 | date: 2006/04/26 15:22:08; author: ansari; state: Exp; lines: +55 -15
|
---|
709 | ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
|
---|
710 | ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
|
---|
711 | lioration documentation , Reza 26/4/2006
|
---|
712 |
|
---|
713 | \end{verbatim}
|
---|
714 |
|
---|
715 | Mars-Avril 2004 :
|
---|
716 | Classe d'interprteur de ligne de commande inspire de C-Shell,
|
---|
717 | destine a etre incluee dans des applications C/C++. \\
|
---|
718 | ( Programme test Test/tcmd.cc ) \\
|
---|
719 | Avril 2005 : Introduction de la possibilite d'execution de commandes
|
---|
720 | en multithreads \\
|
---|
721 | Avril 2005 : Controle strict sur les noms de variables, limites
|
---|
722 | aux caracteres alphanumeriques + underscore - Adaptation
|
---|
723 | de 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
|
---|
731 | de 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.
|
---|
735 | extensibles automatiquement (difference avec le C-Shell)
|
---|
736 |
|
---|
737 | \item[\rond] {\bf Creation / initialisation de variables } \\
|
---|
738 | \begin{verbatim}
|
---|
739 | Cmd> set sv StringValue
|
---|
740 | # Suppression d'une variable : unset ou clearvar
|
---|
741 | Cmd> unset sv
|
---|
742 |
|
---|
743 | # Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
|
---|
744 | Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
|
---|
745 | #Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
|
---|
746 | Cmd> a = 2+3*sqrt(4)
|
---|
747 | # Le signe egal peut etre utilise pour attribuer une chaine de caracteres
|
---|
748 | Cmd> a = 'Bonjour Madame'
|
---|
749 | # Un element de tableau peut etre specifie avant le signe egal
|
---|
750 | Cmd> vecv[2] = 'coucou'
|
---|
751 | # Ou bien
|
---|
752 | Cmd> i = 3
|
---|
753 | Cmd> vecv[i] = 'Ooohhh'
|
---|
754 | \end{verbatim}
|
---|
755 |
|
---|
756 | A droite du signe egal (membre de droite), les variables doivent etre
|
---|
757 | adressees a l'aide du signe \$.
|
---|
758 |
|
---|
759 | Une chaine peut etre cassee en mots a l'aide de la commande var2words
|
---|
760 | \begin{verbatim}
|
---|
761 | Cmd> var2words varname wordvarname [separateur]
|
---|
762 | \end{verbatim}
|
---|
763 |
|
---|
764 | \item[\rond] {\bf Acces aux variables } \\
|
---|
765 | L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
|
---|
766 | Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
|
---|
767 | Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
|
---|
768 | mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
|
---|
769 | {\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
|
---|
770 |
|
---|
771 | \begin{verbatim}
|
---|
772 | Cmd> x = 'Hello'
|
---|
773 | Cmd> echo $x
|
---|
774 | # Taille d'une variable de type vecteur $#vname
|
---|
775 | Cmd> set vx ( 111 2222 3333 444444 )
|
---|
776 | Cmd> echo $#vx
|
---|
777 | # Acces aux elements de tableau
|
---|
778 | Cmd> echo $vx[0] $vx[1]
|
---|
779 | # ou bien indexe par une variable
|
---|
780 | Cmd> i = 2
|
---|
781 | Cmd> echo $vx[i]
|
---|
782 | # Une syntaxe particuliere: $[vname] retourne le contenu de
|
---|
783 | # la variable dont le nom est ds vname
|
---|
784 | Cmd> zzz = 'Commander'
|
---|
785 | Cmd> xxx = 'zzz'
|
---|
786 | Cmd> echo '$[xxx]= ' $[xxx]
|
---|
787 | $[xxx]= Commander
|
---|
788 | \end{verbatim}
|
---|
789 |
|
---|
790 | Variables d'environnement: L'acces aux variables d'environnement
|
---|
791 | se fait simplement par{\tt \$varenvname}. Attention, les variables locales
|
---|
792 | de 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
|
---|
798 | plus claire ...)
|
---|
799 | Arguments 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}
|
---|
807 | foreach f ( w1 w2 w3 ... )
|
---|
808 | ...
|
---|
809 | echo $f
|
---|
810 | end
|
---|
811 | \end{verbatim}
|
---|
812 |
|
---|
813 | Espace avant/apres '(' et avant ')' obligatoire.
|
---|
814 |
|
---|
815 | \begin{verbatim}
|
---|
816 | foreach v vecname
|
---|
817 | ...
|
---|
818 | echo $v
|
---|
819 | end
|
---|
820 | \end{verbatim}
|
---|
821 |
|
---|
822 | Boucle de type integer:
|
---|
823 | \begin{verbatim}
|
---|
824 | for i startInt:endInt[:stepInt]
|
---|
825 | ....
|
---|
826 | echo $i
|
---|
827 | end
|
---|
828 | \end{verbatim}
|
---|
829 |
|
---|
830 | Boucle de type float
|
---|
831 | \begin{verbatim}
|
---|
832 | for f startFloat:endFloat[:stepFloat]
|
---|
833 | ....
|
---|
834 | echo $f
|
---|
835 | end
|
---|
836 | \end{verbatim}
|
---|
837 |
|
---|
838 | Boucle sur les lignes d'un fichier:
|
---|
839 | \begin{verbatim}
|
---|
840 | forinfile line FileName
|
---|
841 | ...
|
---|
842 | echo $line
|
---|
843 | end
|
---|
844 | \end{verbatim}
|
---|
845 |
|
---|
846 | Instruction {\tt break} pour casser une boucle
|
---|
847 |
|
---|
848 | \item[\rond] {\bf Les tests }
|
---|
849 | \begin{verbatim}
|
---|
850 | if ( test ) then
|
---|
851 | endif
|
---|
852 |
|
---|
853 | if ( test ) then
|
---|
854 | ....
|
---|
855 | else
|
---|
856 | ....
|
---|
857 | endif
|
---|
858 | \end{verbatim}
|
---|
859 |
|
---|
860 | Espace avant/apres '(' et avant ')' obligatoire.
|
---|
861 |
|
---|
862 | test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
|
---|
863 | OU {\tt a <= b} OU {\tt a >= b}
|
---|
864 | les 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}
|
---|
870 | defscript scriptname [description ]
|
---|
871 | ....
|
---|
872 | endscript
|
---|
873 | \end{verbatim}
|
---|
874 |
|
---|
875 | L'appel a un script se fait simplement a l'aide
|
---|
876 | du nom de script (contrairement aux fichiers
|
---|
877 | de commande qui sont executes a l'aide de la
|
---|
878 | commande {\tt exec} )
|
---|
879 | \begin{verbatim}
|
---|
880 | Cmd> scriptname arg1 arg2 arg3 ....
|
---|
881 | \end{verbatim}
|
---|
882 |
|
---|
883 | L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
|
---|
884 | script ou d'un fichier de commandes.
|
---|
885 | Commandes {\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)} \\
|
---|
903 | Possibilite 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
|
---|
909 | pour des commandes "thread-safe".
|
---|
910 | La plupart de nos commandes de piapp sont \\
|
---|
911 | - soit trop rapide, \\
|
---|
912 | - soit non "thread-safe" \\
|
---|
913 |
|
---|
914 | \item[\rond] controle d'execution : \\
|
---|
915 | Possibilite 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
|
---|
924 | d'valuation d'expressions numriques en notation polonaise inverse
|
---|
925 | et 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 | ----------------------------
|
---|
930 | revision 1.3
|
---|
931 | date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
|
---|
932 | Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
|
---|
933 | ----------------------------
|
---|
934 | revision 1.2
|
---|
935 | date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
|
---|
936 | suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
|
---|
937 | ----------------------------
|
---|
938 | revision 1.1
|
---|
939 | date: 2004/03/15 22:19:43; author: ansari; state: Exp;
|
---|
940 | Ajout 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}
|
---|
945 | Le 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 |
|
---|
954 | NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
|
---|
955 | tres facile d'ajouter d'autres constantes
|
---|
956 | BinExp: 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.
|
---|
960 | FuncExp: 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 |
|
---|
965 | CExpressionEvaluator : 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.
|
---|
980 | Les Histo2D et leurs projections 1D associ\'ees sont lus et \'ecrits
|
---|
981 | sur plusieurs HDU cons\'ecutifs.
|
---|
982 | \item[\rond] Juin 2006 : Ajout verification/correction noms de colonne lors de lecture FITS / DataTable,
|
---|
983 | et 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 -
|
---|
992 | Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006)
|
---|
993 | \item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
|
---|
994 | fichiers fiosinit.h .cc (Dec 2005)
|
---|
995 | \item[\rond] Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute
|
---|
996 | + classe FitsHandler<BaseDataTable> modifie pour prise
|
---|
997 | en 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
|
---|
1000 | lors de lecture/ecriture de colonnes FITS.
|
---|
1001 | \item[\rond] Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
|
---|
1002 | de DataTable
|
---|
1003 | \item[\rond] Classe {\bf FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
|
---|
1004 | classe d'exception spcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
|
---|
1005 | \item[\rond] Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/criture (tableaux de donnes)
|
---|
1006 | sur 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
|
---|
1011 | SwSegDataBlock sur fichiers FITS
|
---|
1012 | \end{itemize}
|
---|
1013 | \end{itemize}
|
---|
1014 |
|
---|
1015 | \titre{LinAlg}
|
---|
1016 | Extension des fonctionalits de la classe {\tt LapackServer<T>} :
|
---|
1017 | (Juillet 2004 / cmv , Fvrier 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
|
---|
1030 | resolution 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)
|
---|
1037 | in(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 } \\
|
---|
1043 | Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image
|
---|
1044 | avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
|
---|
1045 | Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
|
---|
1046 | \item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
|
---|
1047 | 1/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. \\
|
---|
1051 | 3/ 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 indpendant de FITS (Avril 2006) - commandes spcifiques dans
|
---|
1056 | ProgPI/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
|
---|
1063 | virtual int PIDrawer::OptionToString(vector<string> & opt) const
|
---|
1064 | qui vient completer les deux methodes
|
---|
1065 | virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
|
---|
1066 | virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
|
---|
1067 | Ces methodes s'occupent de decoder les options graphiques (et l'aide
|
---|
1068 | associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
|
---|
1069 | une serie de chaine de caracteres a partir des options graphiques.
|
---|
1070 | Il y a aussi la methode
|
---|
1071 | virtual int PIWdgGen::OptionToString(vector<string> & opt) const
|
---|
1072 | que j'ai ajoute (rien a faire pour le moment) - ainsi que
|
---|
1073 | int PIGraphicAtt::AttToStrings(vector<string> & att) const.
|
---|
1074 |
|
---|
1075 | Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
|
---|
1076 | L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
|
---|
1077 | appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
|
---|
1078 |
|
---|
1079 | par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
|
---|
1080 | PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
|
---|
1081 | DecodeOptionString(vector<string> & opt, bool ...) est modifie,
|
---|
1082 | rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
|
---|
1083 | Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
|
---|
1084 | derriere (push_back()) afin de pouvoir cumuler les options de base + options
|
---|
1085 | specifiques.
|
---|
1086 |
|
---|
1087 | Comment tester ?
|
---|
1088 | Pour 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
|
---|
1090 | graphiques <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)
|
---|
1096 | lorsque 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}
|
---|
1100 | J'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 |
|
---|
1107 | ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
|
---|
1108 | methode + 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) ...)
|
---|
1111 | Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
|
---|
1112 | qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
|
---|
1113 | distance raisonnable au point (x,y) en argument.
|
---|
1114 | J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
|
---|
1115 | partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
|
---|
1116 | completer.
|
---|
1117 |
|
---|
1118 | Comment tester ?
|
---|
1119 | J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
|
---|
1120 | <Shift>Button-1 choisit le drawer le plus proche (base sur la
|
---|
1121 | valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
|
---|
1122 | comme drawer actif. Ce drawer est passe en 'highlight' pendant que
|
---|
1123 | le bouton est appuye.
|
---|
1124 | \end{verbatim}
|
---|
1125 |
|
---|
1126 | \soustitre{ Manipulation interactive des drawers (3 Juin 2004) }
|
---|
1127 | La manipulation interactive des drawers ( l'aide d'un menu) a
|
---|
1128 | t finalise 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) }
|
---|
1144 | Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
|
---|
1145 | et commande {\tt bargraph} ds PIext/basexecut.cc .
|
---|
1146 | La commande bargraph ne gere pas encore toutes les possibilites
|
---|
1147 | de la classe PIBarGraph. \\
|
---|
1148 | Exemple d'utilisation:
|
---|
1149 | \begin{verbatim}
|
---|
1150 | Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
|
---|
1151 | Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
|
---|
1152 | Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
|
---|
1153 | Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
|
---|
1154 | Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
|
---|
1155 | Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
|
---|
1156 | -10. 15. 2 2. 8. 33. 7 -4.
|
---|
1157 | Cmd> 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 |
|
---|
1163 | Ajout 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)
|
---|
1165 | doivent etre completes. \\
|
---|
1166 | Exemple d'utilisation:
|
---|
1167 | \begin{verbatim}
|
---|
1168 | # On affiche qque chose
|
---|
1169 | Cmd> openppf demo.ppf
|
---|
1170 | Cmd> disp h1d
|
---|
1171 | Cmd> 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 |
|
---|
1177 | Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
|
---|
1178 | avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
|
---|
1179 | les limites de la boites 3D.
|
---|
1180 | cela a ete une grosse prise de tete de tout un apres-midi.
|
---|
1181 | J'ai eu ensuite mal a la tete une partie de la soiree ! \\
|
---|
1182 | Exemple d'utilisation:
|
---|
1183 |
|
---|
1184 | \begin{verbatim}
|
---|
1185 |
|
---|
1186 | # On ouvre le fichier demo.ppf
|
---|
1187 | Cmd> openppf demo.ppf
|
---|
1188 | Cmd> surf mtx1 'colbr32'
|
---|
1189 | Cmd> surf mtx1 'colbr32 noautoscale'
|
---|
1190 | Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
|
---|
1191 | # Affichage avec superposition
|
---|
1192 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
|
---|
1193 | Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
|
---|
1194 | # Ou bien :
|
---|
1195 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
|
---|
1196 | Cmd> 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
|
---|
1211 | Cmd> objaoper matrixname row 23
|
---|
1212 | Cmd> objaoper matrixname col 148
|
---|
1213 | # Extracting plane from 3D array (slicexy slicexz sliceyz)
|
---|
1214 | Cmd> objaoper arr3dname slicexy 14
|
---|
1215 | \end{verbatim}
|
---|
1216 | %%%%
|
---|
1217 | \item[\rond] Avril 2006: Ajout possibilite de lecture des commandes sur le terminal (stdin)
|
---|
1218 | et flag en argument de commande {\tt -small} \\
|
---|
1219 | Extrait de cvs log :
|
---|
1220 | \begin{verbatim}
|
---|
1221 | revision 1.16
|
---|
1222 | date: 2006/04/26 15:53:18; author: ansari; state: Exp; lines: +20 -11
|
---|
1223 | 1/ Ajout classe de lecture sur stdin (terminal) avec thread separe pour
|
---|
1224 | piapp - 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)
|
---|
1227 | 2/ MAJ Makefile et modif programme principal piapp.cc avec flag -small
|
---|
1228 | et 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
|
---|
1235 | dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS -
|
---|
1236 | Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
|
---|
1237 | \item[\rond] Avril 2005: Possibilit d'execution de commandes en threads separes, en
|
---|
1238 | ajoutant {\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}:
|
---|
1241 | La destruction de l'objet et/ou widget pascorrectement geres -
|
---|
1242 | provoque des plantages lors de la sortie de l'application.
|
---|
1243 |
|
---|
1244 | \item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
|
---|
1245 | \begin{verbatim}
|
---|
1246 | revision 1.77
|
---|
1247 | date: 2005/04/27 11:55:00; author: ansari; state: Exp; lines: +26 -10
|
---|
1248 | 1/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
|
---|
1249 | nomhistadapter.cc et piiinit.cc
|
---|
1250 | 2/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
|
---|
1251 | fichier PPF sans nametag.
|
---|
1252 | 3/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
|
---|
1253 | Reza , 27 Avril 2005
|
---|
1254 | ----------------------------
|
---|
1255 | revision 1.76
|
---|
1256 | date: 2005/04/19 09:13:49; author: ansari; state: Exp; lines: +3 -1
|
---|
1257 | Ajout 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
|
---|
1259 | et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
|
---|
1260 | ----------------------------
|
---|
1261 | revision 1.75
|
---|
1262 | date: 2005/04/19 06:56:52; author: ansari; state: Exp; lines: +5 -4
|
---|
1263 | Remis en marche la possibilite d'execution d'un .pic au lancement de piapp -
|
---|
1264 | Reza 19/4/2005
|
---|
1265 | ----------------------------
|
---|
1266 | revision 1.74
|
---|
1267 | date: 2005/02/18 14:09:47; author: ansari; state: Exp; lines: +62 -37
|
---|
1268 | Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
|
---|
1269 | ) - Reza 18 Fev 2005
|
---|
1270 | ----------------------------
|
---|
1271 | revision 1.73
|
---|
1272 | date: 2004/11/19 17:41:07; author: ansari; state: Exp; lines: +26 -0
|
---|
1273 | Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
|
---|
1274 | ----------------------------
|
---|
1275 | revision 1.71
|
---|
1276 | date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
|
---|
1277 | Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
|
---|
1278 | methode process, thread boucle d'evts) - Reza 07/09/2004
|
---|
1279 | ----------------------------
|
---|
1280 | revision 1.70
|
---|
1281 | date: 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
|
---|
1283 | marcher sur OSF1 et Linux ... Reza 06/01/2004
|
---|
1284 | ----------------------------
|
---|
1285 | revision 1.69
|
---|
1286 | date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
|
---|
1287 | Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
|
---|
1288 | appele de suite) - Reza 06/01/2004
|
---|
1289 | ----------------------------
|
---|
1290 | revision 1.68
|
---|
1291 | date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
|
---|
1292 | Suite des modifs pour piapp multi-threads
|
---|
1293 | 1) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
|
---|
1294 | 2) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
|
---|
1295 | la classe elle-meme, a travers le NamedObjMgr
|
---|
1296 | 3) Modification de la boucle d'evenements, avec un thread de reveil
|
---|
1297 | periodique
|
---|
1298 | Reza, 4 Janvier 2004
|
---|
1299 | \end{verbatim}
|
---|
1300 | \item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } :
|
---|
1301 | \begin{verbatim}
|
---|
1302 | ----------------------------
|
---|
1303 | revision 1.62
|
---|
1304 | date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
|
---|
1305 | Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
|
---|
1306 | mmander - Reza 27/11/2003
|
---|
1307 | ----------------------------
|
---|
1308 | revision 1.61
|
---|
1309 | date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
|
---|
1310 | Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
|
---|
1311 | ander (de SysTools) - Reza 26/11/2003
|
---|
1312 | ----------------------------
|
---|
1313 | revision 1.60
|
---|
1314 | date: 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 | %%%%
|
---|
1327 | Documentation des classes de SysTools. \\
|
---|
1328 | Extrait 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
|
---|
1349 | de gestion du code (module {\bf BuildMgr/ } )
|
---|
1350 | On n'a plus a se preoccuper des indications de cette section
|
---|
1351 |
|
---|
1352 | \item
|
---|
1353 | Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
|
---|
1354 | en 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
|
---|
1362 | effectu\'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>
|
---|
1372 | Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
|
---|
1373 | \end{verbatim}
|
---|
1374 |
|
---|
1375 | \item PI/ piapp
|
---|
1376 | \begin{verbatim}
|
---|
1377 | o Ajouter un traceur de ApplePie (BarChart fait )
|
---|
1378 | o Ajouter un traceur de Lego-Plot
|
---|
1379 | o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
|
---|
1380 | o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
|
---|
1381 | pour pouvoir plotter des objets, l'un vs l'autre
|
---|
1382 | o (???) 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}
|
---|