Wiki
Version 221 (Etienne Pallier, 02/08/2016 04:11 pm)
1 | 1 | Etienne Pallier | h1. Wiki |
---|---|---|---|
2 | 1 | Etienne Pallier | |
3 | 209 | Etienne Pallier | *Traitement batch (Python) faisant l'extraction des HK et les associant à leurs fichiers spectres respectifs dans un fichier résultat de log et en les contextualisant* |
4 | 209 | Etienne Pallier | |
5 | 220 | Etienne Pallier | HELP sur ce wiki : http://www.redmine.org/projects/redmine/wiki/User_Guide |
6 | 1 | Etienne Pallier | |
7 | 211 | Etienne Pallier | |
8 | 8 | Etienne Pallier | {{toc}} |
9 | 3 | Etienne Pallier | |
10 | 105 | Etienne Pallier | |
11 | 1 | Etienne Pallier | --- |
12 | 211 | Etienne Pallier | |
13 | 217 | Etienne Pallier | h2. %{margin-left:0px; font-weight:normal; font-size:150; display:block; background-color:yellow; color:red}STATUT ACTUEL DU LOGICIEL% |
14 | 1 | Etienne Pallier | |
15 | 218 | Etienne Pallier | *Version 2.0 en cours...* |
16 | 218 | Etienne Pallier | |
17 | 221 | Etienne Pallier | [[roadmap]] (puis aller sur la version 2.0) |
18 | 221 | Etienne Pallier | |
19 | 221 | Etienne Pallier | version:Version2.0 (lien direct vers la version 2.0) |
20 | 219 | Etienne Pallier | |
21 | 215 | Etienne Pallier | https://projects.irap.omp.eu/projects/cspechkanalyser/roadmap (puis aller sur la version 2.0) |
22 | 215 | Etienne Pallier | |
23 | 215 | Etienne Pallier | (ou bien cliquer sur l'onglet Roadmap) |
24 | 215 | Etienne Pallier | |
25 | 215 | Etienne Pallier | |
26 | 215 | Etienne Pallier | --- |
27 | 1 | Etienne Pallier | |
28 | 124 | Etienne Pallier | h2. %{margin-left:0px; font-weight:normal; font-size:150; display:block; background-color:yellow; color:red}UTILISATION EFFECTIVE EN SALLE BLANCHE% |
29 | 124 | Etienne Pallier | |
30 | 189 | Etienne Pallier | Ce logiciel est installé sur le Pc Chemcam, en salle blanche : http://planetowiki.irap.omp.eu/do/view/Computers/PcChemcam2Tour |
31 | 124 | Etienne Pallier | |
32 | 106 | Etienne Pallier | http://planetowiki.irap.omp.eu/do/view/Computers/PcChemcam2Tour#Utilisation_du_logiciel_C_SPEC_H |
33 | 105 | Etienne Pallier | |
34 | 105 | Etienne Pallier | |
35 | 105 | Etienne Pallier | --- |
36 | 123 | Etienne Pallier | |
37 | 123 | Etienne Pallier | h2. %{margin-left:0px; font-weight:normal; font-size:150; display:block; background-color:yellow; color:red}DEPOT SVN% |
38 | 123 | Etienne Pallier | |
39 | 35 | Etienne Pallier | |
40 | 35 | Etienne Pallier | (cliquer sur l'onglet Dépôt) |
41 | 35 | Etienne Pallier | |
42 | 35 | Etienne Pallier | * URL du dépôt : https://usvn-chemcam.irap.omp.eu/repo/c-spec-hk/trunk/ |
43 | 35 | Etienne Pallier | |
44 | 35 | Etienne Pallier | * Administration du dépôt : https://usvn-chemcam.irap.omp.eu |
45 | 35 | Etienne Pallier | |
46 | 35 | Etienne Pallier | * Administrateur : Etienne Pallier |
47 | 35 | Etienne Pallier | |
48 | 35 | Etienne Pallier | * Groupes : |
49 | 76 | Etienne Pallier | |
50 | 35 | Etienne Pallier | * grp-admin-chemcam : Admin du dépot CHEMCAM (RW sur racine). |
51 | 35 | Etienne Pallier | * grp-chemcam : Les développeurs de CHEMCAM (RW sur branches). |
52 | 35 | Etienne Pallier | * On peut également créer un groupe grp-readonly-chemcam (et mettre les droits en read-only sur tout le projet) |
53 | 35 | Etienne Pallier | |
54 | 35 | Etienne Pallier | * Ajout d'utilisateurs |
55 | 35 | Etienne Pallier | |
56 | 11 | Etienne Pallier | * On peut ajouter des utilisateurs extérieurs via l'interface web, puis les ajouter dans les groupes (en tant que "Utilisateurs affectés"). |
57 | 42 | Etienne Pallier | * Dans le cas des utilisateurs IRAP, il faut qu'ils se connectent une première fois sur https://usvn-idems.irap.omp.eu avec leur login/mdp IRAP avant de pouvoir être affectés dans les groupes du repository. |
58 | 41 | Etienne Pallier | |
59 | 104 | Etienne Pallier | * Dashboard : le dashboard du projet est https://usvn-chemcam.irap.omp.eu (=interface de gestion des utilisateurs, groupes et droits d'accès sur le repo, et également navigateur/explorateur du repo) |
60 | 104 | Etienne Pallier | |
61 | 104 | Etienne Pallier | * Accès : Le repo SVN est accessible depuis partout dans le monde (svn-over-https only), la racine du repo est https://usvn-chemcam.irap.omp.eu/repo/chemcam/ |
62 | 104 | Etienne Pallier | |
63 | 104 | Etienne Pallier | * TODO: passer sur SourceSup : https://sourcesup.renater.fr, https://sourcesup.cru.fr/ |
64 | 104 | Etienne Pallier | |
65 | 104 | Etienne Pallier | |
66 | 104 | Etienne Pallier | |
67 | 104 | Etienne Pallier | |
68 | 121 | Etienne Pallier | |
69 | 11 | Etienne Pallier | |
70 | 120 | Etienne Pallier | --- |
71 | 120 | Etienne Pallier | |
72 | 193 | Etienne Pallier | h2. %{margin-left:0px; font-weight:normal; font-size:150; display:block; background-color:yellow; color:red}2015 Juin-Juillet - TRANSFORMATION (EN VUE D'UNE COLLABORATION AVEC C-GDL)% |
73 | 122 | Etienne Pallier | |
74 | 134 | Etienne Pallier | Suite aux réunions du 29/4/15 et du 22/5/15 avec OG, WR, AC, PM, et EP, |
75 | 152 | Etienne Pallier | un nouveau besoin a été exprimé qui pourrait être résolu en faisant collaborer 2 outils existants (C-SPEC-HK et [[cgdl:|C-GDL]]), |
76 | 134 | Etienne Pallier | et en leur apportant quelques adaptations. |
77 | 134 | Etienne Pallier | |
78 | 141 | Etienne Pallier | *Actions* : |
79 | 150 | Etienne Pallier | - OG et AC : réfléchir à une simplification éventuelle de l'outil CGDL (en un seul formulaire au lieu de plusieurs onglets) |
80 | 141 | Etienne Pallier | |
81 | 197 | Etienne Pallier | h3. %{margin-left:30px; font-weight:normal; display:block; background-color:lightgrey; color:black;}1. BESOIN% |
82 | 1 | Etienne Pallier | |
83 | 131 | Etienne Pallier | Créer un *contexte* (ensemble d'informations de description) pour décrire chaque *observation* (série de tirs ChemCam) effectuée en salle blanche. |
84 | 131 | Etienne Pallier | A ce contexte, seront automatiquement associés tous les fichiers (spectres, HK, ...) générés à l'occasion des tirs ChemCam. |
85 | 1 | Etienne Pallier | Un nouveau contexte devra être créé à chaque fois qu'on change de roche, de distance de tir, ou bien de type d'atmosphère... |
86 | 1 | Etienne Pallier | |
87 | 198 | Etienne Pallier | h3. %{margin-left:30px; font-weight:normal; display:block; background-color:lightgrey; color:black;}2. SOLUTION TECHNIQUE (updated 3/7/15)% |
88 | 129 | Etienne Pallier | |
89 | 130 | Etienne Pallier | Pour répondre à ce besoin, plutôt que de re-développer un nouvel outil, on doit pouvoir faire collaborer efficacement deux outils existants que sont C-GDL et C-SPEC-HK, |
90 | 130 | Etienne Pallier | et qui devront en outre subir quelques adaptations plus ou moins importantes. |
91 | 126 | Etienne Pallier | *C-GDL* est une IHM Java qui permet de créer manuellement un contexte |
92 | 126 | Etienne Pallier | *C-SPEC-HK* est un script Python qui s'exécute en permanence en arrière-plan, et qui associe automatiquement les fichiers HK (SOH) aux fichiers spectres et crée un fichier LOG quotidien décrivant ces associations (pour la journée), au fur et à mesure des tirs ChemCam |
93 | 126 | Etienne Pallier | Il faut donc faire collaborer ces 2 outils pour qu'un contexte C-GDL soit automatiquement associé aux fichiers générés par les tirs ChemCam et qui sont regroupés par C-SPEC-HK (y-compris le fichier de LOG généré par C-SPEC-HK). |
94 | 126 | Etienne Pallier | |
95 | 198 | Etienne Pallier | h4. 2.1 *Proposition de collaboration entre ces 2 outils* |
96 | 145 | Etienne Pallier | |
97 | 144 | Etienne Pallier | {{thumbnail(Collaboration C-SPEC-HK et C-GDL.jpg, size=300, title=Dashboard_Controller)}} |
98 | 143 | Etienne Pallier | |
99 | 1 | Etienne Pallier | _Document original (Open Office Presentation) : attachment:"Collaboration C-SPEC-HK et C-GDL.odg"_ |
100 | 194 | Etienne Pallier | |
101 | 198 | Etienne Pallier | h4. 2.2 *ALGORITHME GENERAL (en Python, mais lisible pour tout le monde)* |
102 | 194 | Etienne Pallier | |
103 | 205 | Etienne Pallier | <pre><code class="python"> |
104 | 196 | Etienne Pallier | # delay between each iteration (seconds) |
105 | 196 | Etienne Pallier | ITERATION_DELAY=60 |
106 | 194 | Etienne Pallier | |
107 | 194 | Etienne Pallier | # get today date |
108 | 194 | Etienne Pallier | today = getDate() # YYYYMMDD |
109 | 1 | Etienne Pallier | |
110 | 194 | Etienne Pallier | # process past data files if exist |
111 | 194 | Etienne Pallier | processPastDataFiles(getPastDataFiles()) |
112 | 194 | Etienne Pallier | |
113 | 195 | Etienne Pallier | # Every ITERATION_DELAY, process today data files and context files |
114 | 194 | Etienne Pallier | while(True): |
115 | 194 | Etienne Pallier | |
116 | 194 | Etienne Pallier | # if exists new data files for today, re-process ALL today data files according to today context files |
117 | 194 | Etienne Pallier | todayCurrentDataFiles = getTodayCurrentDataFiles() |
118 | 194 | Etienne Pallier | if todayCurrentDataFiles: |
119 | 194 | Etienne Pallier | # Move today current data files from data/ to EQM_DATA/<YYYYMMDD>/ALL/ |
120 | 194 | Etienne Pallier | archiveTodayCurrentDataFiles(todayCurrentDataFiles) |
121 | 194 | Etienne Pallier | # Create/Update <YYYYMMDD>_LOG.csv log file in EQM_DATA/<YYYYMMDD>/, from today current data files in EQM_DATA/<YYYYMMDD>/ALL/ |
122 | 194 | Etienne Pallier | updateTodayLogFile() |
123 | 194 | Etienne Pallier | |
124 | 208 | Etienne Pallier | # (re-)Associate all related data files (from TODAY but also from the PAST) with their context files from cgdl/contexts/ |
125 | 194 | Etienne Pallier | # and put them into EQM_DATA/YYYYMMDD/BY_CONTEXT/<context name>/ |
126 | 208 | Etienne Pallier | bindDataFilesWithContextFilesCreatedOrModifiedOrDeletedToday(getContextFilesCreatedOrModifiedOrDeletedToday()) |
127 | 194 | Etienne Pallier | |
128 | 194 | Etienne Pallier | # wait 60s |
129 | 194 | Etienne Pallier | time.sleep(ITERATION_DELAY) |
130 | 201 | Etienne Pallier | |
131 | 201 | Etienne Pallier | |
132 | 202 | Etienne Pallier | |
133 | 202 | Etienne Pallier | |
134 | 206 | Etienne Pallier | ######################### |
135 | 206 | Etienne Pallier | # FONCTIONS IMPORTANTES # |
136 | 206 | Etienne Pallier | ######################### |
137 | 201 | Etienne Pallier | |
138 | 201 | Etienne Pallier | def copyFilesIntoContextFolderForContextFile(cf): |
139 | 201 | Etienne Pallier | copyContextFileIntoContextFolderForContextFile(cf) |
140 | 201 | Etienne Pallier | copyLogFileIntoContextFolderForContextFile(cf) |
141 | 201 | Etienne Pallier | copyRelatedDataFilesIntoContextFolderForContextFile(cf) |
142 | 201 | Etienne Pallier | |
143 | 201 | Etienne Pallier | |
144 | 208 | Etienne Pallier | def bindDataFilesWithContextFilesCreatedOrModifiedOrDeletedToday(contextFilesCreatedOrModifiedOrDeletedToday): |
145 | 201 | Etienne Pallier | # Associate today ALL data files from EQM_DATA/YYYYMMDD/ALL/ with their context files from cgdl/contexts/ (and also the EQM_DATA/<YYYYMMDD>/>YYYYMMDD>_LOG.csv log file) |
146 | 201 | Etienne Pallier | # and put them into EQM_DATA/YYYYMMDD/BY_CONTEXT/<context name>/ |
147 | 201 | Etienne Pallier | # Process each context file (from oldest to newest) |
148 | 201 | Etienne Pallier | for cf in contextFilesCreatedOrModifiedOrDeletedToday: |
149 | 201 | Etienne Pallier | |
150 | 201 | Etienne Pallier | # DELETED context file |
151 | 201 | Etienne Pallier | if isDeletedContextFile(cf): |
152 | 201 | Etienne Pallier | # This is not actual but only virtual "delete" |
153 | 201 | Etienne Pallier | deleteContextFolderForContextFile(cf) |
154 | 201 | Etienne Pallier | continue |
155 | 201 | Etienne Pallier | |
156 | 201 | Etienne Pallier | # CREATED OR MODIFIED context file |
157 | 201 | Etienne Pallier | #TODO: This should work even for 2 context files with different names but SAME date and time (both should get filled with the same content) |
158 | 201 | Etienne Pallier | # if context folder does not yet exist, create it (EQM_DATA/YYYYMMDD/BY_CONTEXT/<context name>/) |
159 | 201 | Etienne Pallier | if not existsContextFolderForContextFile(cf): createContextFolderForContextFile(cf) |
160 | 201 | Etienne Pallier | copyFilesIntoContextFolderForContextFile(cf) |
161 | 201 | Etienne Pallier | |
162 | 205 | Etienne Pallier | </code></pre> |
163 | 194 | Etienne Pallier | |
164 | 200 | Etienne Pallier | h4. 2.3. *Explications du déroulement d'une session d'observations ChemCam (selon le diagramme ci-dessus) (A METTRE A JOUR)* : |
165 | 159 | Etienne Pallier | |
166 | 185 | Etienne Pallier | Cette solution technique a été mise à jour suite à la réunion du 5/6/15 (avec OG, AC, WR, et Richard Hitier). |
167 | 171 | Etienne Pallier | |
168 | 159 | Etienne Pallier | Au démarrage du pc, les 2 logiciels C-SPEC-HK et C_GDL se lancent automatiquement. |
169 | 159 | Etienne Pallier | |
170 | 190 | Etienne Pallier | Voici le workflow idéal : |
171 | 190 | Etienne Pallier | |
172 | 190 | Etienne Pallier | On commence par créer un contexte avec C-GDL (mais on peut très bien le faire a posteriori, après les observations). Une fois enregistré (YYYYMMDD_HHMM-HHMM_context_<parametres>.xml), ce fichier se trouve dans cgdl/contexts/ |
173 | 162 | Etienne Pallier | |
174 | 162 | Etienne Pallier | On effectue des tirs ChemCam. Ces tirs génèrent des fichiers (SPEC, SOH...) qui sont automatiquement placés dans le dossier data/. |
175 | 162 | Etienne Pallier | Si jamais quelques tirs ont été effectués juste pour tester ChemCam avant de faire les vraies observations, on peut retarder la date début (Start time) du contexte pour que ces tirs ne soient pas pris en compte dans ce contexte. |
176 | 1 | Etienne Pallier | |
177 | 171 | Etienne Pallier | C-SPEC-HK qui tourne en arrière plan effectue le traitement suivant toutes les minutes (ou delta secondes, délai à affiner en production) : |
178 | 162 | Etienne Pallier | |
179 | 1 | Etienne Pallier | 1) Il complète (ou crée, si c'est la première itération) le fichier de LOG (YYYYMMDD_LOG.csv) dans le dossier EQM_DATA/YYYYMMDD/ |
180 | 162 | Etienne Pallier | à partir des fichiers qui sont dans data/ |
181 | 172 | Etienne Pallier | C'est un fichier texte contenant des données tabulaires (CSV) qui font le lien entre les fichiers spectres et les fichiers HK (SOH et *+_TOUS_+* les autres) associés, en extrayant quelques paramètres essentiels dans les 2 types de fichiers |
182 | 1 | Etienne Pallier | |
183 | 163 | Etienne Pallier | 2) Il déplace (move) les fichiers concernés de data/ vers EQM_DATA/YYYYMMDD/ALL/, puisqu'ils ont été traités |
184 | 1 | Etienne Pallier | |
185 | 165 | Etienne Pallier | 3) Enfin, il associe les fichiers de données avec les contextes |
186 | 174 | Etienne Pallier | |
187 | 185 | Etienne Pallier | Pour cela, il suit cet algorithme : |
188 | 165 | Etienne Pallier | |
189 | 163 | Etienne Pallier | * pour chaque fichier de contexte trouvé dans le dossier cgdl/contexts/ qui est à la date du jour : |
190 | 177 | Etienne Pallier | |
191 | 184 | Etienne Pallier | * si un dossier *du même nom* n'existe pas déjà dans EQM_DATA/YYYYMMDD/BY_CONTEXT/, il le crée |
192 | 184 | Etienne Pallier | * si un dossier *du même nom* existe (qu'il vienne d'être créé ou bien qu'il soit déjà là depuis longtemps), il y copie (copy) tous les fichiers manquants (par rapport à ceux qui devraient y être) |
193 | 184 | Etienne Pallier | les fichiers à copier sont : |
194 | 1 | Etienne Pallier | |
195 | 184 | Etienne Pallier | * le fichier de contexte |
196 | 184 | Etienne Pallier | * tous les fichiers du dossier EQM_DATA/YYYYMMDD/ALL/ dont la date est comprise entre le "start time" et le "stop time" du contexte |
197 | 184 | Etienne Pallier | * la partie du fichier LOG concernée (on fera une sélection de "start time" à "stop time") |
198 | 184 | Etienne Pallier | |
199 | 192 | Etienne Pallier | * s'il reste des dossiers qui n'ont pas de correspondance avec un contexte (parce qu'un contexte a été renommé ou supprimé), il leur ajoute le préfixe "_DELETED_" |
200 | 1 | Etienne Pallier | |
201 | 182 | Etienne Pallier | _Par ce moyen, on peut créer un contexte qui se termine (bien) plus tard que l'heure actuelle (les nouveaux fichiers seront ainsi ajoutés au fur et à mesure de leur arrivée), |
202 | 184 | Etienne Pallier | et on s'assure d'avoir un dossier par contexte, contenant le fichier de contexte (+LOG) et tous les fichiers de données associés. |
203 | 184 | Etienne Pallier | Et ces dossiers devraient rester à jour même si le nom du contexte est modifié en cours de journée, voire même supprimé_. |
204 | 179 | Etienne Pallier | |
205 | 192 | Etienne Pallier | NB : il faudra penser à supprimer manuellement de temps en temps les dossiers préfixés par "_DELETED_" |
206 | 166 | Etienne Pallier | |
207 | 166 | Etienne Pallier | Les fichiers de données qui n'ont pas été associés à un contexte (soit par ce qu'aucun contexte n'a été créé dans la journée, soit parce qu'il n'y a pas de contexte créé pour cette période là) |
208 | 166 | Etienne Pallier | seront de toutes façons dans le dossier EQM_DATA/YYYYMMDD/ALL/ |
209 | 166 | Etienne Pallier | |
210 | 168 | Etienne Pallier | Une fois les sessions d'observations ChemCam terminées, on peut fermer le logiciel C-GDL, |
211 | 168 | Etienne Pallier | mais il n'est pas nécessaire de terminer le logiciel C-SPEC-HK car il s'arrêtera automatiquement lors de l'extinction du pc (brutalement, mais, sauf cas exceptionnel, sans dommage) |
212 | 1 | Etienne Pallier | |
213 | 168 | Etienne Pallier | Il sera cependant préférable d'attendre quelques minutes avant d'éteindre le pc après la création, la modification, ou la suppression d'un contexte, |
214 | 168 | Etienne Pallier | le temps que C-SPEC-HK traite ce changement dans une nouvelle itération... |
215 | 162 | Etienne Pallier | |
216 | 161 | Etienne Pallier | h3. %{margin-left:30px; font-weight:normal; display:block; background-color:lightgrey; color:black;}ADAPTATIONS NÉCESSAIRES SUR LES 2 LOGICIELS% |
217 | 133 | Etienne Pallier | |
218 | 149 | Etienne Pallier | *Adaptations de C-GDL* : voir [[cgdl:wiki#Collaboration-avec-loutil-C-SPEC-HK|C-GDL]] |
219 | 1 | Etienne Pallier | |
220 | 133 | Etienne Pallier | *Adaptations de C-SPEC-HK* : |
221 | 1 | Etienne Pallier | |
222 | 169 | Etienne Pallier | (Le fichier de LOG est un tableau de synthèse qui sera utile pour la partie processing, sorte de masterlist) |
223 | 138 | Etienne Pallier | |
224 | 169 | Etienne Pallier | Transférer TOUS les types de fichiers (TXT, RAW…) |
225 | 1 | Etienne Pallier | |
226 | 138 | Etienne Pallier | Fichier SOH le plus près AVANT le transmit (génère le spectre) |
227 | 138 | Etienne Pallier | (ce fichier SOH a été fait après le tir, et avant le transmit) |
228 | 138 | Etienne Pallier | |
229 | 138 | Etienne Pallier | Changer label Distance : dist(mm) => dist SEED (mm) |
230 | 138 | Etienne Pallier | |
231 | 169 | Etienne Pallier | Convertir la colonne pm en distance réelle : (quelqu'un donnera la formule) « dist real (mm)» |
232 | 138 | Etienne Pallier | |
233 | 138 | Etienne Pallier | C-Spec-HK est déjà installé sur le pc-EGSE. Il faudra y ajouter C-GDL. |
234 | 138 | Etienne Pallier | |
235 | 138 | Etienne Pallier | Fichier LOG : Produire un CSV + un fichier HTML (ou fichier texte séparé par tabulations) pour qu'il soit lisible sans devoir passer par Open Office |
236 | 138 | Etienne Pallier | |
237 | 138 | Etienne Pallier | DARK BEFORE/AFTER : priorité au DARK AFTER |
238 | 138 | Etienne Pallier | Le DARK BEFORE est très rare, il existerait seulement si il y a 2 DARK à la suite (le 2ème serait le DARK BEFORE du SPECTRE LIBS qui arrive ensuite) |
239 | 138 | Etienne Pallier | => pour simplifier, on peut le supprimer (donc supprimer 2 colonnes dans le fichier LOG) |
240 | 138 | Etienne Pallier | |
241 | 169 | Etienne Pallier | Objectif : passer le délai de la boucle du traitement quotidien à 10 secondes (au lieu de 60 actuellement) |
242 | 138 | Etienne Pallier | |
243 | 1 | Etienne Pallier | Les 2 fichiers "LOG général" et "LOG du jour" doivent s’afficher automatiquement au démarrage |
244 | 1 | Etienne Pallier | |
245 | 1 | Etienne Pallier | Le LOG général affiche l'état en cours d'exécution du script, pour savoir où on en est : |
246 | 138 | Etienne Pallier | - a) traitement global des fichiers, avec affichage des dossiers jours créés |
247 | 1 | Etienne Pallier | Ne pas afficher le contenu de /home/vx/EQM_DATA/ |
248 | 138 | Etienne Pallier | (log files « created » in …) |
249 | 138 | Etienne Pallier | car ces dossiers ont été créés antérieurement |
250 | 138 | Etienne Pallier | N’afficher le contenu QUE du dossier qui vient d’être créé |
251 | 138 | Etienne Pallier | - b) traitement quotidien des fichiers du jour, avec affichage de : |
252 | 138 | Etienne Pallier | - numéro d'itération |
253 | 138 | Etienne Pallier | - fichiers SPECTRE et SOH traités (+ leur nombre) |
254 | 138 | Etienne Pallier | |
255 | 138 | Etienne Pallier | Le LOG quotidien affiche le contenu du fichier LOG du jour (qui se remplit au fur et à mesure) |
256 | 138 | Etienne Pallier | |
257 | 138 | Etienne Pallier | Mettre les 4 champs de température laser |
258 | 138 | Etienne Pallier | |
259 | 138 | Etienne Pallier | Supprimer nshots |
260 | 138 | Etienne Pallier | |
261 | 169 | Etienne Pallier | Dans l'idéal, si on veut vraiment faire collaborer les 3 outils C-Spec-HK, C-GDL, et la prise de photos par la webcam du pc portable de la salle blanche (...), |
262 | 169 | Etienne Pallier | la communication avec la webcam nécessiterait de mettre les 2 pc (PC-EGSE et le portable webcam) en réseau (soit sur le réseau global IRAP, soit sur un réseau privé salle blanche avec un hub ou switch ; sachant que pc-EGSE est déjà en réseau privé avec le BU-EGSE, il faudrait donc mettre ces 3 éléments sur un même réseau, pas simple...). |
263 | 169 | Etienne Pallier | En attendant, on pourrait se contenter d'un "mode dégradé", qui consisterait à copier manuellement (via clé ou disque usb) les photos de la webcam sur le pc-EGSE |
264 | 138 | Etienne Pallier | |
265 | 169 | Etienne Pallier | (Changement Technique internes : Ne laisser que c-spec-hk-workflow à la racine du projet, le reste doit être dans un sous-dossier (contiendra c-spec-hk + tests)) |
266 | 138 | Etienne Pallier | |
267 | 138 | Etienne Pallier | |
268 | 138 | Etienne Pallier | |
269 | 138 | Etienne Pallier | |
270 | 138 | Etienne Pallier | |
271 | 138 | Etienne Pallier | |
272 | 138 | Etienne Pallier | |
273 | 138 | Etienne Pallier | |
274 | 138 | Etienne Pallier | |
275 | 138 | Etienne Pallier | |
276 | 138 | Etienne Pallier | |
277 | 138 | Etienne Pallier | |
278 | 138 | Etienne Pallier | |
279 | 138 | Etienne Pallier | |
280 | 138 | Etienne Pallier | |
281 | 138 | Etienne Pallier | |
282 | 138 | Etienne Pallier | |
283 | 138 | Etienne Pallier | |
284 | 138 | Etienne Pallier | |
285 | 138 | Etienne Pallier | |
286 | 138 | Etienne Pallier | |
287 | 138 | Etienne Pallier | |
288 | 138 | Etienne Pallier | |
289 | 138 | Etienne Pallier | |
290 | 138 | Etienne Pallier | |
291 | 138 | Etienne Pallier | |
292 | 138 | Etienne Pallier | |
293 | 138 | Etienne Pallier | --- |
294 | 126 | Etienne Pallier | |
295 | 120 | Etienne Pallier | |
296 | 120 | Etienne Pallier | --- |
297 | 128 | Etienne Pallier | |
298 | 128 | Etienne Pallier | h2. %{margin-left:0px; font-weight:normal; font-size:150; display:block; background-color:yellow; color:red}SPECIFICATIONS% |
299 | 128 | Etienne Pallier | |
300 | 1 | Etienne Pallier | |
301 | 11 | Etienne Pallier | |
302 | 12 | Etienne Pallier | h3. Schéma de connexion |
303 | 11 | Etienne Pallier | |
304 | 11 | Etienne Pallier | PcEGSE <==RJ45==> EGSE <==serial==> ChemCam |
305 | 11 | Etienne Pallier | |
306 | 11 | Etienne Pallier | ChemCam (garde tous les spectres en RAM) : serial==> BU (Body Unit) <== MU (Mast Unit) |
307 | 11 | Etienne Pallier | - MU : fait les tirs |
308 | 11 | Etienne Pallier | - BU : analyse les spectres |
309 | 11 | Etienne Pallier | |
310 | 11 | Etienne Pallier | SOH (Spectra O? HK) |
311 | 11 | Etienne Pallier | |
312 | 30 | Etienne Pallier | h3. Types d’observations |
313 | 30 | Etienne Pallier | |
314 | 30 | Etienne Pallier | (sur la ligne DOLIBS modifier controlWord) |
315 | 11 | Etienne Pallier | |
316 | 11 | Etienne Pallier | Bit # Bit Value Fonction si activé |
317 | 11 | Etienne Pallier | ----- --------- ------------------ |
318 | 11 | Etienne Pallier | |
319 | 11 | Etienne Pallier | 0 1 Do focus : effectuer une focalisation (voir focusAlgorithm) |
320 | 11 | Etienne Pallier | |
321 | 11 | Etienne Pallier | 1 2 Pre dark spectra : acquisition d’un spectre dark AVANT les tirs |
322 | 1 | Etienne Pallier | |
323 | 11 | Etienne Pallier | 2 4 Post dark spectra : acquisition d’un spectre dark APRES les tirs |
324 | 11 | Etienne Pallier | |
325 | 20 | Etienne Pallier | *3 8 Enable laser : effectuer un (des) tir(s) laser (voir Nshots) (sinon, c'est un DARK)* |
326 | 11 | Etienne Pallier | |
327 | 11 | Etienne Pallier | 4 16 Collect spectra : acquisition de spectre pendant les tirs |
328 | 11 | Etienne Pallier | |
329 | 11 | Etienne Pallier | 5 32 BS |
330 | 11 | Etienne Pallier | |
331 | 11 | Etienne Pallier | |
332 | 14 | Etienne Pallier | => 25 = 1+8+16 = tir avec laser |
333 | 14 | Etienne Pallier | => 17 = 1+0+16 = tir sans laser (DARK) |
334 | 11 | Etienne Pallier | |
335 | 11 | Etienne Pallier | Bits 0 et 1 pas utilisés !!! : |
336 | 11 | Etienne Pallier | Le mode (Bit0 ET Bit1 activés) ne fait pas des darks after et before satisfaisant donc on le fait séparément en faisant un spectre sans enable laser, |
337 | 1 | Etienne Pallier | ce qui génère tous ces spectres avec un controlWord =17 dans la liste. |
338 | 11 | Etienne Pallier | |
339 | 31 | Etienne Pallier | h3. Fichier spectre |
340 | 11 | Etienne Pallier | |
341 | 11 | Etienne Pallier | Suite d'intensités pour chaque canal (dans l'ordre 0, 1, 2, 3, ... 6444) |
342 | 11 | Etienne Pallier | A représenter sur axe |
343 | 11 | Etienne Pallier | - X : channel number, assimilable à longueur d'onde : 0 à 6444 |
344 | 11 | Etienne Pallier | - Y : intensité |
345 | 11 | Etienne Pallier | |
346 | 11 | Etienne Pallier | Si fichier DARK, alors intensités (à peu près) constantes (toutes égales) : |
347 | 14 | Etienne Pallier | => donne le bruit de fond de l'instrument, puisque on a zero lumière |
348 | 1 | Etienne Pallier | |
349 | 32 | Etienne Pallier | h3. Stratégie de développement |
350 | 13 | Etienne Pallier | |
351 | 11 | Etienne Pallier | Prendre le last stack only |
352 | 11 | Etienne Pallier | |
353 | 11 | Etienne Pallier | Lire fichier *_spect.TXT et *_SOH.TXT associé (celui qui est juste avant, < 5mn avant) |
354 | 11 | Etienne Pallier | |
355 | 11 | Etienne Pallier | 1 fich/jour |
356 | 11 | Etienne Pallier | |
357 | 11 | Etienne Pallier | Methods to write : |
358 | 11 | Etienne Pallier | |
359 | 11 | Etienne Pallier | findSOH(liste des *SOH.TXT du jour, spect.TXT) |
360 | 16 | Etienne Pallier | => convertit les noms SOH en timestamps, trouve le SOH qui est juste avant le spect.TXT (< 5mn avant) |
361 | 11 | Etienne Pallier | |
362 | 11 | Etienne Pallier | findDARK(liste des *spect.TXT (dark), le spect.TXT pour lequel on veut le dark) |
363 | 16 | Etienne Pallier | => retourne le fichier dark qui est juste après (<5mn) (mais, peut être before...) |
364 | 16 | Etienne Pallier | => regarde un peu autour (avant et après) |
365 | 11 | Etienne Pallier | |
366 | 11 | Etienne Pallier | findAutofocus(...) |
367 | 16 | Etienne Pallier | => *_afocus.TXT (juste prendre son nom, pas son contenu), qui est AVANT |
368 | 11 | Etienne Pallier | |
369 | 15 | Etienne Pallier | h3. EXEMPLE DE FICHIER RESULTAT (LOG) A OBTENIR (1 par jour) |
370 | 11 | Etienne Pallier | |
371 | 11 | Etienne Pallier | data_Feb25_2014_5 |
372 | 11 | Etienne Pallier | firstfile = Feb25_161115_2014_spect.TXT |
373 | 11 | Etienne Pallier | lastfile = Feb25_162059_2014_spect.TXT |
374 | 1 | Etienne Pallier | |
375 | 11 | Etienne Pallier | id, SPECT_file, SOH_file, |
376 | 1 | Etienne Pallier | |
377 | 11 | Etienne Pallier | // from *_SOH.TXT file : |
378 | 15 | Etienne Pallier | nbStacks // Nb de stacks (indiqué par le nb occurences de "mast SOH" qui indique le début d'un nouveau stack) - Prendre seulement les HK du LAST stack |
379 | 1 | Etienne Pallier | temp_laser_min(degC), temp_laser_max(degC), // prendre min et max des 4 HK_Temp_Laser_1-4 |
380 | 15 | Etienne Pallier | temp_spect(C), // Spectrometer_Temp |
381 | 15 | Etienne Pallier | pm(cnts), // Motor_Position |
382 | 11 | Etienne Pallier | |
383 | 11 | Etienne Pallier | // from *_spect.TXT file : |
384 | 15 | Etienne Pallier | dist(mm), // distance to target distToTarget |
385 | 15 | Etienne Pallier | nshots, // (Nshots) ajouter ici "nshots_real" car le laser fait parfois plus de shots que prévu (erreur) (lire 1ère ligne pour savoir le nb de col) |
386 | 15 | Etienne Pallier | controlWord, // 25 = tir avec laser, 17 = tir sans laser (DARK) |
387 | 15 | Etienne Pallier | data_mean, // moyenne des data \ nbshots reels (= intensité moyenne ?) (à lire from >>>>>Begin Processed Spectral Data<<<<<) |
388 | 15 | Etienne Pallier | dark_file, // remplacer par dark_file_before, dark_file_after (file name) |
389 | 15 | Etienne Pallier | mean_spect_value - dark // (= data_mean - ???) |
390 | 11 | Etienne Pallier | |
391 | 11 | Etienne Pallier | |
392 | 11 | Etienne Pallier | // Liste des fichiers *_spect.TXT associés avec leurs paramètres HK (trouvés dans *_SOH.TXT) : |
393 | 11 | Etienne Pallier | |
394 | 11 | Etienne Pallier | id, SPECT_file, SOH_file, nbStacks, temp_laser_min, temp_laser_max, temp_spect, pm, dist(mm), nshots, controlWord, data_mean, dark_file_before, dark_file_after, mean_spect_value - dark |
395 | 11 | Etienne Pallier | |
396 | 11 | Etienne Pallier | 1 Feb25_161115_2014_spect.TXT 161055 nbStacks 4.25 5.44 30.15 5499 3000 10 25 677.39 161142 dark_file_after 50.28 |
397 | 15 | Etienne Pallier | 2 (D)Feb25_161142_2014_spect.TXT 161132 4.29 5.48 30.15 5499 3000 10 17 627.11 - 627.11 |
398 | 11 | Etienne Pallier | 3 Feb25_161243_2014_spect.TXT 161210 4.29 5.33 30.15 5444 2951 10 25 649.07 161307 19.72 |
399 | 11 | Etienne Pallier | 4 Feb25_161307_2014_spect.TXT 161257 4.25 5.55 30.15 5444 3000 10 17 629.35 - 629.35 |
400 | 11 | Etienne Pallier | 5 Feb25_161339_2014_spect.TXT 161329 4.25 5.59 30.15 5454 2959 10 25 674.78 161404 43.76 |
401 | 1 | Etienne Pallier | 6 Feb25_161404_2014_spect.TXT 161353 4.29 5.52 30.15 5454 3000 10 17 631.02 - 631.02 |
402 | 1 | Etienne Pallier | 7 Feb25_161435_2014_spect.TXT 161425 4.21 5.55 30.15 5463 2967 10 25 693.77 161500 60.76 |
403 | 11 | Etienne Pallier | 8 Feb25_161500_2014_spect.TXT 161450 4.33 5.59 30.15 5463 3000 10 17 633.01 - 633.01 |
404 | 11 | Etienne Pallier | 9 Feb25_161532_2014_spect.TXT 161521 4.29 5.59 30.15 5473 2975 10 25 703.08 161556 68.71 |
405 | 11 | Etienne Pallier | 10 Feb25_161556_2014_spect.TXT 161546 4.36 5.52 30.15 5473 3000 10 17 634.36 - 634.36 |
406 | 11 | Etienne Pallier | 11 Feb25_161646_2014_spect.TXT 161636 4.33 5.63 30.15 5482 2983 10 25 702.22 161711 67.98 |
407 | 11 | Etienne Pallier | 12 Feb25_161711_2014_spect.TXT 161701 4.33 5.59 30.15 5482 3000 10 17 634.24 - 634.24 |
408 | 11 | Etienne Pallier | 13 Feb25_161743_2014_spect.TXT 161733 4.36 5.55 30.15 5493 2992 10 25 695.08 161808 58.88 |
409 | 11 | Etienne Pallier | 14 Feb25_161808_2014_spect.TXT 161757 4.36 5.55 30.15 5493 3000 10 17 636.20 - 636.20 |
410 | 11 | Etienne Pallier | 15 Feb25_161840_2014_spect.TXT 161829 4.40 5.59 30.15 5502 3000 10 25 683.94 161905 46.74 |
411 | 11 | Etienne Pallier | 16 Feb25_161905_2014_spect.TXT 161854 4.40 5.59 30.15 5502 3000 10 17 637.20 - 637.20 |
412 | 11 | Etienne Pallier | 17 Feb25_161937_2014_spect.TXT 161926 4.40 5.59 30.15 5513 3009 10 25 675.67 162002 37.24 |
413 | 11 | Etienne Pallier | 18 Feb25_162002_2014_spect.TXT 161951 4.44 5.59 30.15 5513 3000 10 17 638.43 - 638.43 |
414 | 11 | Etienne Pallier | 19 Feb25_162034_2014_spect.TXT 162023 4.36 5.63 30.15 5522 3017 10 25 663.56 162059 24.10 |
415 | 15 | Etienne Pallier | 20 (D) Feb25_162059_2014_spect.TXT 162048 4.40 5.63 30.15 5522 3000 10 17 639.46 - 639.46 |
416 | 15 | Etienne Pallier | |
417 | 46 | Etienne Pallier | h3. CAS EXCEPTIONNELS à traiter (Exceptions) |
418 | 43 | Etienne Pallier | |
419 | 43 | Etienne Pallier | * NoDataFileFoundException : pas de fichier (ni Spectre ni SOH) dans le dossier DATA/ |
420 | 43 | Etienne Pallier | |
421 | 43 | Etienne Pallier | * MalformedFileException : fichier (Spectre ou SOH) avec format incorrect |
422 | 43 | Etienne Pallier | |
423 | 43 | Etienne Pallier | * UnknownCaseException : Cas inconnu ; par exemple, controlWord ni 17 (DARK) ni 25 (PAS DARK) !!! |
424 | 43 | Etienne Pallier | |
425 | 47 | Etienne Pallier | * noSOHFileFoundForSpectraFileException : pas de fichier SOH (HK) trouvé pour un fichier Spectra (data) |
426 | 47 | Etienne Pallier | |
427 | 136 | Etienne Pallier | --- |
428 | 136 | Etienne Pallier | |
429 | 83 | Etienne Pallier | h2. RECUPERATION DU PROJET |
430 | 91 | Etienne Pallier | |
431 | 83 | Etienne Pallier | |
432 | 83 | Etienne Pallier | *a) Directement, depuis svn* |
433 | 83 | Etienne Pallier | |
434 | 83 | Etienne Pallier | svn co https://usvn-chemcam.irap.omp.eu/repo/c-spec-hk/trunk c-spec-hk-svn |
435 | 83 | Etienne Pallier | |
436 | 83 | Etienne Pallier | Si on ne veut pas rester synchronisé avec le repository (juste une copie du projet au temps t, sans les fichiers de versionning .svn) : |
437 | 1 | Etienne Pallier | |
438 | 90 | Etienne Pallier | svn export https://usvn-chemcam.irap.omp.eu/repo/c-spec-hk/trunk c-spec-hk-svn |
439 | 90 | Etienne Pallier | |
440 | 91 | Etienne Pallier | |
441 | 58 | Etienne Pallier | |
442 | 1 | Etienne Pallier | *b) Par téléchargement (100 Mo à cause des données)* |
443 | 1 | Etienne Pallier | |
444 | 1 | Etienne Pallier | https://projects.irap.omp.eu/attachments/download/1237/c-spec-hk_1.1.tgz |
445 | 86 | Etienne Pallier | |
446 | 137 | Etienne Pallier | --- |
447 | 137 | Etienne Pallier | |
448 | 95 | Etienne Pallier | h2. EXECUTION |
449 | 92 | Etienne Pallier | |
450 | 92 | Etienne Pallier | h3. 1) PRÉREQUIS : Python 2.7 |
451 | 92 | Etienne Pallier | |
452 | 92 | Etienne Pallier | h4. Sur Mac (Machine de développement) |
453 | 92 | Etienne Pallier | |
454 | 92 | Etienne Pallier | Avec Macport, pour que la version 2.7 soit bien la version par défaut quand on tape "python" : |
455 | 92 | Etienne Pallier | |
456 | 92 | Etienne Pallier | sudo port select --set python python27 |
457 | 92 | Etienne Pallier | |
458 | 92 | Etienne Pallier | $ which python |
459 | 92 | Etienne Pallier | /opt/local/bin/python |
460 | 92 | Etienne Pallier | |
461 | 92 | Etienne Pallier | $ python --version |
462 | 92 | Etienne Pallier | Python 2.7.9 |
463 | 92 | Etienne Pallier | |
464 | 92 | Etienne Pallier | Mettre à jour MacPort : |
465 | 92 | Etienne Pallier | sudo port -v selfupdate |
466 | 92 | Etienne Pallier | sudo port upgrade outdated |
467 | 92 | Etienne Pallier | |
468 | 92 | Etienne Pallier | |
469 | 92 | Etienne Pallier | h4. Sur CentOS 6.5 (serveur de production) |
470 | 92 | Etienne Pallier | |
471 | 92 | Etienne Pallier | (fait le 19/3/15 sur le pc-EGSE Chemcam ; cf fiche wiki du pc-EGSE Chemcam : http://planetowiki.irap.omp.eu/do/view/Computers/PcChemcam2Tour) |
472 | 92 | Etienne Pallier | |
473 | 92 | Etienne Pallier | Par défaut, Cent0S 6.5 propose Python 2.6 |
474 | 92 | Etienne Pallier | |
475 | 94 | Etienne Pallier | (Voir l'installation de Python 2.7 faite sur le pc-EGSE Chemcam : http://planetowiki.irap.omp.eu/do/view/Computers/PcChemcam2Tour#Installation_de_Python_2_7) |
476 | 86 | Etienne Pallier | |
477 | 89 | Etienne Pallier | h3. 2) EXECUTING TESTS |
478 | 89 | Etienne Pallier | |
479 | 86 | Etienne Pallier | h4. Depuis Eclipse |
480 | 86 | Etienne Pallier | |
481 | 86 | Etienne Pallier | Ouvrir la console adaptée : Window / Show View / PyUnit |
482 | 86 | Etienne Pallier | clic-droit sur test/c_spec_hk_TEST.py |
483 | 86 | Etienne Pallier | Run As / Python unit-test |
484 | 89 | Etienne Pallier | |
485 | 86 | Etienne Pallier | |
486 | 89 | Etienne Pallier | h4. En mode ligne de commande |
487 | 86 | Etienne Pallier | |
488 | 72 | Etienne Pallier | h5. TESTS faits avec Python 2.7 |
489 | 72 | Etienne Pallier | |
490 | 1 | Etienne Pallier | *1) Tests Unitaires et Fonctionnels* |
491 | 72 | Etienne Pallier | |
492 | 73 | Etienne Pallier | cd test/ |
493 | 1 | Etienne Pallier | |
494 | 72 | Etienne Pallier | $ py27 premiertest.py |
495 | 1 | Etienne Pallier | <pre> |
496 | 72 | Etienne Pallier | ... |
497 | 72 | Etienne Pallier | ---------------------------------------------------------------------- |
498 | 1 | Etienne Pallier | Ran 3 tests in 0.000s |
499 | 72 | Etienne Pallier | |
500 | 72 | Etienne Pallier | OK |
501 | 73 | Etienne Pallier | </pre> |
502 | 72 | Etienne Pallier | |
503 | 72 | Etienne Pallier | $ py27 c_spec_hk_TEST.py |
504 | 72 | Etienne Pallier | |
505 | 72 | Etienne Pallier | <pre> |
506 | 72 | Etienne Pallier | ... |
507 | 1 | Etienne Pallier | ====================================================================== |
508 | 62 | Etienne Pallier | ---------------------------------------------------------------------- |
509 | 1 | Etienne Pallier | Ran 14 tests in 5.833s |
510 | 1 | Etienne Pallier | |
511 | 72 | Etienne Pallier | OK |
512 | 72 | Etienne Pallier | </pre> |
513 | 1 | Etienne Pallier | |
514 | 62 | Etienne Pallier | |
515 | 72 | Etienne Pallier | |
516 | 72 | Etienne Pallier | |
517 | 70 | Etienne Pallier | *2) Tests de Performance (Benchmark)* |
518 | 70 | Etienne Pallier | |
519 | 62 | Etienne Pallier | Depuis la racine du projet : |
520 | 62 | Etienne Pallier | |
521 | 62 | Etienne Pallier | <pre> |
522 | 62 | Etienne Pallier | $ py27 c_spec_hk.py -t |
523 | 62 | Etienne Pallier | ...Executing main program... |
524 | 62 | Etienne Pallier | Testing execution time of several methods |
525 | 62 | Etienne Pallier | |
526 | 62 | Etienne Pallier | All times are in SECONDS |
527 | 62 | Etienne Pallier | |
528 | 62 | Etienne Pallier | Testing _extractSpectraFileNamesIndexedAndOrdered(dataFileNames) method called from a function time_extractSpectraFileNamesIndexedAndOrdered() (takes about 0.0008" on a MacBookPro 11.1) : |
529 | 62 | Etienne Pallier | 0.000790863037109 |
530 | 62 | Etienne Pallier | |
531 | 62 | Etienne Pallier | Testing _extractSpectraFileNamesIndexedAndOrdered(dataFileNames) method called directly (takes about 0.00012" on a MacBookPro 11.1) : |
532 | 62 | Etienne Pallier | 0.000117941689491 |
533 | 62 | Etienne Pallier | |
534 | 62 | Etienne Pallier | Testing getLogInfosForDay(day,spectraFilesForTheDay) method called directly (takes about 0.06" on a MacBookPro 11.1) : |
535 | 62 | Etienne Pallier | 0.0429699897766 |
536 | 62 | Etienne Pallier | |
537 | 62 | Etienne Pallier | Testing main method createAllLogFiles(True) called directly (takes about 2.8" on a MacBookPro 11.1) : |
538 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20110223 |
539 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20130223 |
540 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140123 |
541 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140223 |
542 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140225 |
543 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140226 |
544 | 62 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20150223 |
545 | 62 | Etienne Pallier | Log files created in test/DATASET/UC0_NOMINAL/LOGS/ : |
546 | 62 | Etienne Pallier | total 56 |
547 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20110223 |
548 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 16:39 2011_0223_logs.csv |
549 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20130223 |
550 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 16:39 2013_0223_logs.csv |
551 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20140123 |
552 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 16:39 2014_0123_logs.csv |
553 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20140223 |
554 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 16:39 2014_0223_logs.csv |
555 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20140225 |
556 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 2849 19 mars 16:39 2014_0225_logs.csv |
557 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20140226 |
558 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 474 19 mars 16:39 2014_0226_logs.csv |
559 | 62 | Etienne Pallier | drwxrwxr-x 2 vx vx 4096 19 mars 16:39 20150223 |
560 | 62 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 16:39 2015_0223_logs.csv |
561 | 62 | Etienne Pallier | |
562 | 62 | Etienne Pallier | 1.91459012032 |
563 | 1 | Etienne Pallier | Average time per day : 0.273513 |
564 | 1 | Etienne Pallier | |
565 | 1 | Etienne Pallier | *** finished TIMING *** |
566 | 62 | Etienne Pallier | |
567 | 1 | Etienne Pallier | </pre> |
568 | 86 | Etienne Pallier | |
569 | 89 | Etienne Pallier | |
570 | 86 | Etienne Pallier | |
571 | 72 | Etienne Pallier | h5. TESTS faits avec Python 2.6 |
572 | 1 | Etienne Pallier | |
573 | 72 | Etienne Pallier | C'est encore possible de faire tourner le logiciel en Python 2.6 dans la version 1.1.x, mais ça ne sera plus garanti dans l'avenir (à partir de la version 1.2.x) |
574 | 1 | Etienne Pallier | |
575 | 72 | Etienne Pallier | *1) Tests Unitaires et Fonctionnels* |
576 | 1 | Etienne Pallier | |
577 | 72 | Etienne Pallier | cd test/ |
578 | 72 | Etienne Pallier | |
579 | 72 | Etienne Pallier | $ python premiertest.py |
580 | 72 | Etienne Pallier | <pre> |
581 | 72 | Etienne Pallier | ... |
582 | 72 | Etienne Pallier | ---------------------------------------------------------------------- |
583 | 72 | Etienne Pallier | Ran 3 tests in 0.000s |
584 | 72 | Etienne Pallier | |
585 | 72 | Etienne Pallier | OK |
586 | 72 | Etienne Pallier | </pre> |
587 | 72 | Etienne Pallier | |
588 | 72 | Etienne Pallier | $ python c_spec_hk_TEST.py |
589 | 72 | Etienne Pallier | |
590 | 72 | Etienne Pallier | <pre> |
591 | 72 | Etienne Pallier | ... |
592 | 72 | Etienne Pallier | ====================================================================== |
593 | 72 | Etienne Pallier | ---------------------------------------------------------------------- |
594 | 72 | Etienne Pallier | Ran 14 tests in 6.742s |
595 | 72 | Etienne Pallier | |
596 | 72 | Etienne Pallier | OK |
597 | 72 | Etienne Pallier | </pre> |
598 | 72 | Etienne Pallier | |
599 | 72 | Etienne Pallier | --- |
600 | 72 | Etienne Pallier | |
601 | 72 | Etienne Pallier | |
602 | 72 | Etienne Pallier | *2) Tests de Performance (Benchmark)* |
603 | 72 | Etienne Pallier | |
604 | 58 | Etienne Pallier | Depuis la racine du projet |
605 | 58 | Etienne Pallier | |
606 | 58 | Etienne Pallier | $ ./c_spec_hk.py -t |
607 | 58 | Etienne Pallier | <pre> |
608 | 58 | Etienne Pallier | ...Executing main program... |
609 | 58 | Etienne Pallier | Testing execution time of several methods |
610 | 58 | Etienne Pallier | |
611 | 58 | Etienne Pallier | All times are in SECONDS |
612 | 58 | Etienne Pallier | |
613 | 58 | Etienne Pallier | Testing _extractSpectraFileNamesIndexedAndOrdered(dataFileNames) method called from a function time_extractSpectraFileNamesIndexedAndOrdered() (takes about 0.0008" on a MacBookPro 11.1) : |
614 | 58 | Etienne Pallier | 0.00105306601524 |
615 | 58 | Etienne Pallier | |
616 | 58 | Etienne Pallier | Testing _extractSpectraFileNamesIndexedAndOrdered(dataFileNames) method called directly (takes about 0.00012" on a MacBookPro 11.1) : |
617 | 58 | Etienne Pallier | 0.000152537894249 |
618 | 58 | Etienne Pallier | |
619 | 58 | Etienne Pallier | Testing getLogInfosForDay(day,spectraFilesForTheDay) method called directly (takes about 0.06" on a MacBookPro 11.1) : |
620 | 58 | Etienne Pallier | 0.0518409013748 |
621 | 58 | Etienne Pallier | |
622 | 58 | Etienne Pallier | Testing main method createAllLogFiles(True) called directly (takes about 2.8" on a MacBookPro 11.1) : |
623 | 58 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20110223 |
624 | 58 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20130223 |
625 | 58 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140123 |
626 | 1 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140223 |
627 | 58 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140225 |
628 | 59 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20140226 |
629 | 58 | Etienne Pallier | test/DATASET/UC0_NOMINAL/LOGS/20150223 |
630 | 58 | Etienne Pallier | Log files created in test/DATASET/UC0_NOMINAL/LOGS/ : |
631 | 58 | Etienne Pallier | total 56 |
632 | 58 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20110223 |
633 | 58 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 14:01 2011_0223_logs.csv |
634 | 58 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20130223 |
635 | 58 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 14:01 2013_0223_logs.csv |
636 | 58 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20140123 |
637 | 1 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 14:01 2014_0123_logs.csv |
638 | 58 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20140223 |
639 | 80 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 14:01 2014_0223_logs.csv |
640 | 21 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20140225 |
641 | 25 | Etienne Pallier | -rw-rw-r-- 1 vx vx 2849 19 mars 14:01 2014_0225_logs.csv |
642 | 1 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20140226 |
643 | 22 | Etienne Pallier | -rw-rw-r-- 1 vx vx 474 19 mars 14:01 2014_0226_logs.csv |
644 | 22 | Etienne Pallier | drwxrwxr-x 3 vx vx 4096 19 mars 14:01 20150223 |
645 | 21 | Etienne Pallier | -rw-rw-r-- 1 vx vx 471 19 mars 14:01 2015_0223_logs.csv |
646 | 21 | Etienne Pallier | |
647 | 77 | Etienne Pallier | 2.33647012711 |
648 | 21 | Etienne Pallier | Average time per day : 0.333781 |
649 | 21 | Etienne Pallier | |
650 | 1 | Etienne Pallier | *** finished TIMING *** |
651 | 96 | Etienne Pallier | </pre> |
652 | 21 | Etienne Pallier | |
653 | 97 | Etienne Pallier | h3. 3) EXECUTING MAIN SCRIPT |
654 | 1 | Etienne Pallier | |
655 | 88 | Etienne Pallier | h4. Depuis Eclipse |
656 | 88 | Etienne Pallier | |
657 | 21 | Etienne Pallier | clic-droit sur c_spec_hk.py |
658 | 97 | Etienne Pallier | Run As / Python Run |
659 | 21 | Etienne Pallier | |
660 | 21 | Etienne Pallier | h4. In Command line mode |
661 | 1 | Etienne Pallier | |
662 | 80 | Etienne Pallier | a) Pour voir l'aide : |
663 | 81 | Etienne Pallier | |
664 | 80 | Etienne Pallier | $ python c_spec_hk.py -h |
665 | 1 | Etienne Pallier | |
666 | 80 | Etienne Pallier | ...Executing main program... |
667 | 1 | Etienne Pallier | |
668 | 81 | Etienne Pallier | Usage: |
669 | 1 | Etienne Pallier | |
670 | 81 | Etienne Pallier | python27 c_spec_hk.py [-i <inputDataDir>] [-o <outputLogDir>] |
671 | 1 | Etienne Pallier | OR |
672 | 81 | Etienne Pallier | python27 c_spec_hk.py [--inputDir=<inputDataDir>] [--outputDir=<outputLogDir>] |
673 | 1 | Etienne Pallier | |
674 | 80 | Etienne Pallier | Ex: python27 c_spec_hk.py-i './DATA' -o './LOGS' |
675 | 80 | Etienne Pallier | |
676 | 80 | Etienne Pallier | All options available are (none is mandatory) : |
677 | 80 | Etienne Pallier | -d : activate DEBUG mode |
678 | 80 | Etienne Pallier | -h : print this HELP message |
679 | 80 | Etienne Pallier | -n : do NOT create sub-directories (like YYYYMMDD) for each day |
680 | 80 | Etienne Pallier | -t : test execution TIME of several methods |
681 | 1 | Etienne Pallier | -v : print current VERSION number |
682 | 21 | Etienne Pallier | -i <inputDataDir> or --input=<inputDataDir> : set INPUT directory from where DATA files are READ (default is "DATA") |
683 | 1 | Etienne Pallier | -o <outputDataDir> or --output=<outputLogDir> : set OUTPUT directory where LOG files are WRITTEN to (default is "LOGS") |
684 | 81 | Etienne Pallier | |
685 | 80 | Etienne Pallier | |
686 | 23 | Etienne Pallier | |
687 | 81 | Etienne Pallier | b) Speed testing (benchmark) |
688 | 21 | Etienne Pallier | |
689 | 21 | Etienne Pallier | cf https://projects.irap.omp.eu/projects/cspechkanalyser/wiki/Wiki#TESTS-faits-avec-Python-27 (section "Tests de performance") |
690 | 21 | Etienne Pallier | |
691 | 21 | Etienne Pallier | |
692 | 82 | Etienne Pallier | c) Pour faire un test avec les données d'échantillon fournies : |
693 | 1 | Etienne Pallier | |
694 | 82 | Etienne Pallier | python27 c_spec_hk.py -i test/DATASET/UC0_NOMINAL/DATA -o /tmp/LOGS |
695 | 82 | Etienne Pallier | |
696 | 21 | Etienne Pallier | (il faudra d'abord créer le dossier LOGS/ dans /tmp) |
697 | 21 | Etienne Pallier | |
698 | 82 | Etienne Pallier | Exemple d'affichage attendu : |
699 | 21 | Etienne Pallier | |
700 | 82 | Etienne Pallier | ...Executing main program... |
701 | 82 | Etienne Pallier | |
702 | 21 | Etienne Pallier | inputDataDir is "test/DATASET/UC0_NOMINAL/DATA" |
703 | 82 | Etienne Pallier | ouputLogDir is "/tmp/LOGS" |
704 | 82 | Etienne Pallier | |
705 | 21 | Etienne Pallier | The DATA DIR (input) contains 126 files (total) |
706 | 82 | Etienne Pallier | The DATA DIR (input) contains 26 SPECTRA text files |
707 | 82 | Etienne Pallier | |
708 | 21 | Etienne Pallier | Log files created in /tmp/LOGS/ : |
709 | 21 | Etienne Pallier | ['20110223', '20130223', '20140123', '20140223', '20140225', '20140226', '20150223'] |
710 | 36 | Etienne Pallier | |
711 | 54 | Etienne Pallier | |
712 | 36 | Etienne Pallier | --- |
713 | 52 | Etienne Pallier | |
714 | 50 | Etienne Pallier | h2. DAILY WORKFLOW |
715 | 52 | Etienne Pallier | |
716 | 1 | Etienne Pallier | h3. 1) Voici la structure de fichiers réalisée sur le pc-EGSE : |
717 | 52 | Etienne Pallier | |
718 | 52 | Etienne Pallier | Les nouveaux fichiers de données produits lors des tirs de Chemcam sont automatiquement placés dans /home/vx/data/ (au fur et à mesure des tirs) |
719 | 1 | Etienne Pallier | |
720 | 1 | Etienne Pallier | Ils sont ensuite déplacés dans /home/vx/EQM_DATA/AAAAMMJJ/DATA/ lorsqu'ils ont été traités |
721 | 52 | Etienne Pallier | |
722 | 37 | Etienne Pallier | Les fichiers de LOG (relation spectre => HK) créés sont placés directment dans /home/vx/EQM_DATA/AAAAMMJJ/ |
723 | 53 | Etienne Pallier | |
724 | 50 | Etienne Pallier | <pre> |
725 | 50 | Etienne Pallier | |
726 | 50 | Etienne Pallier | - /home/vx/data/ : données d'origine restant à traiter (spectres et HK), provenant directement de la manip |
727 | 50 | Etienne Pallier | |
728 | 36 | Etienne Pallier | - /home/vx/EQM_DATA/ : données traitées (spectres, HK, et fichiers logs produits) |
729 | 36 | Etienne Pallier | - AAAAMMJJ/ : un dossier par jour |
730 | 142 | Etienne Pallier | - le fichier log produit (CSV) |
731 | 40 | Etienne Pallier | - DATA/ : les données d'origine (spectres et HK) |
732 | 48 | Etienne Pallier | |
733 | 1 | Etienne Pallier | </pre> |
734 | 51 | Etienne Pallier | |
735 | 48 | Etienne Pallier | h3. 2) WORKFLOW |
736 | 57 | Etienne Pallier | |
737 | 55 | Etienne Pallier | Ce workflow devrait normalement fonctionner dans tous les cas de figure (démarrage n'importe quand, en début de journée ou en cours de journée, ou même reprise après un crash brutal...) |
738 | 1 | Etienne Pallier | |
739 | 39 | Etienne Pallier | Démarrage automatique du workflow à partir du Démarrage du pc-EGSE |
740 | 57 | Etienne Pallier | |
741 | 1 | Etienne Pallier | 1) Faire tourner le traitement sur TOUS les fichiers présents dans le dossier /home/vx/data/ (SAUF les fichiers du jour J, s'il y en a...) |
742 | 57 | Etienne Pallier | Les fichiers LOGS produits sont placés automatiquement dans le dossier correspondant à leur jour /home/vx/EQM_DATA/AAAAMMJJ/ |
743 | 57 | Etienne Pallier | (AAAA année en 4 chiffres, MM mois en deux chiffres et JJ jour du mois en deux chiffres) |
744 | 57 | Etienne Pallier | |
745 | 57 | Etienne Pallier | 2) Déplacer TOUS les fichiers de /home/vx/data/ dans leur dossier correspondant /home/vx/EQM_DATA/AAAAMMJJ/DATA/ (SAUF les fichiers du jour J, s'il y en a...) |
746 | 57 | Etienne Pallier | |
747 | 48 | Etienne Pallier | 3) (Every 5 seconds) : pour les fichiers du jour J |
748 | 1 | Etienne Pallier | S'il existe au moins un fichier dans /home/vx/data/, faire tourner le traitement sur TOUS les fichiers présents |
749 | 51 | Etienne Pallier | LE FICHIER LOG produit (un seul pour le jour J) est placé automatiquement dans le dossier correspondant à son jour (J) /home/vx/EQM_DATA/AAAAMMJJ/ |
750 | 1 | Etienne Pallier | Attention : on ne déplace pas les fichiers dans leur dossier correspondant /home/vx/EQM_DATA/AAAAMMJJ/DATA/ ; cela sera fait au prochain démarrage du workflow) ; cela permet d'avoir un fichier LOG qui se complète au fur et à mesure de la journée |
751 | 1 | Etienne Pallier | Il faudrait quand meme les COPIER (cp) (mais pas les DEPLACER (mv)) |
752 | 1 | Etienne Pallier | OPTIMISATION : Exécution SSI le nb de fichiers du repertoire DATA/ a changé (tenir à jour un fichier contenant le nb de files) |
753 | 1 | Etienne Pallier | |
754 | 1 | Etienne Pallier | Fin du workflow à l'extinction du pc-EGSE |