ARPA-SIMC / arkimaps

generazione mappe meteorologiche da modelli previsionali
GNU General Public License v2.0
0 stars 1 forks source link

difformità di rappresentazione scadenze in pantry (e conseguenze sulla generazione prodotti) #157

Closed brancomat closed 9 months ago

brancomat commented 9 months ago

Empiricamente noto che facendo dispatch di dati grib2 icon, accade questo:

con --filter eccodes o --grib i file vengono smistati in pantry con step espresso sempre in ore

con --filter arkimet (il default)

Credo sia quest'ultimo caso la fonte di due problemi: 1) tentando di plottare prodotti che combinano più variabili (ad esempio standalone/tp1) viene plottato un unico prodotto, la +60 (probabilmente perché è l'unica scadenza presente sia nelle variabili espresse in minuti che in quelle espresse in ore).

2) in generale i prodotti di uscita nel tar finale rispecchiano la stessa ambiguità della dir pantry: se la fonte dei prodotti sono variabili originali del pacco dati la scadenza è espressa in minuti, altri sottoprodotti tipo le cumulate in ore

test data: https://drive.google.com/file/d/1NPRt8azFqsiafuHCWrzzj2KA11W0BBXm/view?usp=sharing step per riprodurre il punto 1:

./arkimaps dispatch $dir/ < icon_tpsfwind.arkimet
./arkimaps preview $dir/ standalone/tp1h

(questa è più o meno legata alla #154 ma in realtà non ha presentato differenze di comportamento pre e post pull request)

spanezz commented 9 months ago

Non venivano prese in considerazione le unità di misura nei timerange di arkimet, e venivano sempre assunte "ore".

Ora invece ho aggiunto metodi a ModelStep per gestirle, per cui quando avremo bisogno di unità che non siano multiple di ore, abbiamo già il punto di aggancio

brancomat commented 9 months ago

Ho provato le ultime modifiche con il test case di cui sopra ma ottengo il seguente un errore:

./arkimaps preview t1 standalone/tp1h
Traceback (most recent call last):
  File "/home/branco/git/arkimaps/./arkimaps", line 483, in <module>
    main()
  File "/home/branco/git/arkimaps/./arkimaps", line 474, in main
    res = handler.run()
          ^^^^^^^^^^^^^
  File "/home/branco/git/arkimaps/./arkimaps", line 407, in run
    order = self.kitchen.make_order(self.kitchen.recipes.get(name), flavour=flavour, step=step, reftime=reftime)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/branco/git/arkimaps/arkimapslib/kitchen.py", line 178, in make_order
    selected.sort(key=lambda x: x.instant)
TypeError: '<' not supported between instances of 'Instant' and 'Instant'
spanezz commented 9 months ago

I pushed a fix. Can you try again?

brancomat commented 9 months ago

Funziona. Anche i dati in pantry ora sono consistenti. Lascio aperta la issue autoassegnandomela in review perché sto generando un pacco dati di test per verificare se è uniformata anche l'indicazione della scadenza sugli output.