Fandom

Documentation

Comment ajouter un module (fr:METRo)

133pages on
this wiki
Add New Page
Talk0 Share

Les modules de METRo sont créés de telle sorte que leurs entrées et leurs sorties sont standardisées. De cette manière, il est aisé d'ajouter un autre module dans la séquence d'appel.

Prétraitement et post-traitement Edit

Il y a 2 grandes familles de modules dans METRo, ceux prétraitement et ceux du post-traitement. Ces modules sont dans des fichiers situés dans le répertoire metro/src/frontend/executable_module/.

Les modules de prétraitement sont éxécutés avant le modèle physique de METRo. Ils concernent toutes les méthodes pour entrées (XML pour python), l'interpolation des données (observations et prévisions atmosphériques) et le contrôle de qualité des données (tel qu'expliqué sur la page QA/QC des observations).

Les modules de post-traitement sont éxécutés après le modèle physique de METRo. Ils concernent toutes les méthodes pour les sorties (python à XML), le sous-échantillonage des données (le pas de temps de la prévision routière est de 30 secondes) et la détermination des conditions routières basées sur les valeur des éléments prévus.

Ordre d'éxécution Edit

L'ordre dans lequel les modules de METRo sont éxécutés peuvent être dans 2 endroits: dans le fichier de configuration de METRo ou, si celui-ci n'existe pas, dans le fichier metro_config.py.

Par défaut, l'ordre est:

1-  metro_read_forecast
2-  metro_validate_forecast
3-  metro_string2dom_forecast
4-  metro_read_observation
5-  metro_validate_observation
6-  metro_string2dom_observation
7-  metro_read_station
8-  metro_validate_station
9-  metro_string2dom_station
10- metro_read_observation_ref
11- metro_validate_observation_ref
12- metro_string2dom_observation_ref  
13- metro_dom2metro
14- metro_preprocess_validate_input
15- metro_preprocess_qa_qc_forecast
16- metro_preprocess_interpol_forecast
17- metro_preprocess_fsint2
18- metro_preprocess_qa_qc_observation
19- metro_preprocess_validate_input
20- metro_preprocess_interpol_observation
21- metro_preprocess_combine
22- metro_model  <---- physical mode of METRo
23- metro_postprocess_subsample_roadcast
24- metro_postprocess_round_roadcast
25- metro_metro2dom
26- metro_write_roadcast
27- metro_write_forecast


Exemple de module Edit

Un module de METRo doit contenir au minimum la méthode start, sans plus. Les modifications aux entrées et aux sorties ou sur n'importe qu'elle autre donnée peuvent être faite dans cette méthode.

Par exemple, supposons que nous voulions ajouter un module qui change le nom de la station. Nous pourrions appeler ce module code>Metro_postprocess_bidon</code> et l'éxécuter après, disons, le module metro_model.

Ce module pourrait être:

from metro_postprocess import Metro_postprocess

class Metro_postprocess_bidon(Metro_postprocess):

   def start(self):
       Metro_postprocess.start(self)
 
       # Get the roadcast
       pRoadcast = self.get_infdata_reference('ROADCAST')

       # Get the roadcast with the verified value (QA/QC)
       roadcast_data = pRoadcast.get_data_collection()
       controlled_roadcast = roadcast_data.get_controlled_data()

       # Print in the stdout the name of the station
       print controlled_roadcast.get_header_value('ROAD_STATION')
        
       # Change the name of the road station
       controlled_roadcast.set_header_value('ROAD_STATION',"a_new_name")

       # Print the new value of the field 'ROAD_STATION'
       print controlled_roadcast.get_header_value('ROAD_STATION')        


Il faudrait par la suite ajouter une seule ligne dans le fichier de configuration:

 <key>INIT_MODULE_EXECUTION_SEQUENCE</key>
 <array>
     <string>metro_read_forecast</string>
     <string>metro_string2dom_forecast</string>
     <string>metro_read_observation</string>
     <string>metro_string2dom_observation</string>
     <string>metro_read_station</string>
     <string>metro_string2dom_station</string>
     <string>metro_dom2metro</string>
     <string>metro_preprocess_bidon</string>
     <string>metro_preprocess_interpol_forecast</string>
     <string>metro_preprocess_fsint2</string>
     <string>metro_preprocess_qa_qc_observation</string>
     <string>metro_preprocess_interpol_observation</string>
     <string>metro_preprocess_combine</string>
     <string>metro_model</string>
     <string>metro_postprocess_bidon</string>
     <string>metro_metro2dom</string>
     <string>metro_write_roadcast</string>
     <string>metro_write_forecast</string>
 </array>

Le nom de la station serait ainsi changé. L'entête du fichier de Prévison routière, si nous avions éxécuté METRo avec l'option code>--selftest</code>, serait ainsi

<roadcast>
 <header>
     <filetype>roadcast</filetype>
     <version>1.4</version>
     <road-station>a_new_name</road-station>
     <production-date>2004-08-26T01:00Z</production-date>
     <first-roadcast>2004-08-25T23:12Z</first-roadcast> 
 </header>
...
</roadcast>


Logo ec
Cette page fait partie de la documentation du logiciel METRo. Retour à la table des matières.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.