noaa-ocs-modeling / EnsemblePerturbation

perturbation of coupled model input over a space of input variables
https://ensembleperturbation.readthedocs.io
Creative Commons Zero v1.0 Universal
7 stars 3 forks source link

Bayesian analysis for calibration of input parameters #88

Open SorooshMani-NOAA opened 1 year ago

SorooshMani-NOAA commented 1 year ago

There's a package called PyMC3 that can be used for Bayesian analysis.

There's a good "hacker book" available at: https://nbviewer.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Prologue/Prologue.ipynb

Initial discussion:

WPringle commented 1 year ago

@SorooshMani-NOAA See these scripts and best_track and advisory files here for Florence: florence_tracks_scripts.zip

The plot_nhc_adv.py uses the tropycal package and get_advisory.py uses StormEvents, but not sure if works properly for getting advisory. But it's supposed to be able to.

WPringle commented 1 year ago

Plumlee et al. - 2021 - High-fidelity hurricane surge forecasting using em.pdf lynomial.chaos.framework.for.probabilistic.predictions.of.storm.surge.events.pdf)

WPringle commented 1 year ago

Sochala et al. - 2020 - A polynomial chaos framework for probabilistic predictions of storm surge events.pdf

SorooshMani-NOAA commented 1 year ago

Todo list: Soroosh:

William:

SorooshMani-NOAA commented 1 year ago

@WPringle when I download data for all the past storms from stormevents it looks like there are only two advisory_numbers, 01 and 03, which I think is different from that actual advisory ID that is based on the forecast start time. This comes from the ATCF track files. Based on this, here's how I'd like to get the 48hr forecast data for past storms using stormevents:

  1. First get all the OFCL tracks for the storm using VortexTrack.from_storm_name by passing advisories=['OFCL'] and file_deck='a'
  2. Next get the underlying dataframe using either .data or .unfiltered_data
  3. Find the intersection of the acquired dataframe with the shape of US (from NaturalEarth_Lowres)
  4. For each track_start_date (eqv. to date from ATCF), get the first datetime (eqv. to date from ATCF + forecast hour) that the track point falls on land.
  5. In the result of above operation get the difference of datetime and track_start_date
  6. Get the last entry whose time diff is equal or immediately greater than 2 days to be the "48-hour forecast"
  7. Use the track with the start time found in step 6 for perturbing.

What do you think of this approach?

WPringle commented 1 year ago

That sounds good to me @SorooshMani-NOAA. What do you mean by only two advisory_numbers?

SorooshMani-NOAA commented 1 year ago

If I get the tracks using:

tracks = stormevents.nhc.track.VortexTrack.from_storm_name('florence', 2018, file_deck='a')

then this would be the result of tracks.data

      basin storm_number            datetime advisory_number advisory  ... isowave_radius_for_NWQ  isowave_radius_for_SWQ  extra_values                    geometry    track_start_time
0        AL           06 2018-08-29 06:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-10.90000 12.90000) 2018-08-30 06:00:00
1        AL           06 2018-08-29 12:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-12.30000 12.90000) 2018-08-30 06:00:00
2        AL           06 2018-08-29 18:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-13.80000 12.90000) 2018-08-30 06:00:00
3        AL           06 2018-08-30 00:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-15.40000 12.90000) 2018-08-30 06:00:00
4        AL           06 2018-08-30 06:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-17.00000 12.90000) 2018-08-30 06:00:00
...     ...          ...                 ...             ...      ...  ...                    ...                     ...           ...                         ...                 ...
10229    AL           06 2018-09-18 12:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-73.30000 42.20000) 2018-09-18 12:00:00
10230    AL           06 2018-09-18 12:00:00              01     CARQ  ...                    NaN                     NaN          <NA>  POINT (-73.30000 42.20000) 2018-09-18 12:00:00
10231    AL           06 2018-09-18 12:00:00              03     OFCL  ...                    NaN                     NaN          <NA>  POINT (-73.30000 42.20000) 2018-09-18 12:00:00
10232    AL           06 2018-09-18 15:00:00              03     OFCL  ...                    NaN                     NaN          <NA>  POINT (-71.90000 42.60000) 2018-09-18 12:00:00
10233    AL           06 2018-09-19 00:00:00              03     OFCL  ...                    NaN                     NaN          <NA>  POINT (-67.70000 43.50000) 2018-09-18 12:00:00

There's an advisory_number in the columns. Before looking at the values I thought this is just a number counting advisories as they are issued, but this seems to mean something different.

WPringle commented 1 year ago

yeah maybe that is being parsed incorrectly or the column in ALCF meant something else

SorooshMani-NOAA commented 1 year ago

@WPringle following our discussion about getting forecast track this is where I am:

After this I still get a wrong central pressure and r-max for some of the entries; for example, this is one such output (before I set forecast hours to 0) for Florence 2018:

AL, 06, 2018091306, 03, BEST,   0, 325N,  743W,   95,    0, HU,  34, NEQ,  170,  150,  110,  140,    1,    0,   0, 115,   0,    ,   0, DPB,   0,   0,           ,,,,,,,,
AL, 06, 2018091306, 03, BEST,   0, 325N,  743W,   95,    0, HU,  50, NEQ,  100,   90,   70,   80,    1,    0,   0, 115,   0,    ,   0, DPB,   0,   0,           ,,,,,,,,
AL, 06, 2018091306, 03, BEST,   0, 325N,  743W,   95,    0, HU,  64, NEQ,   70,   60,   50,   60,    1,    0,   0, 115,   0,    ,   0, DPB,   0,   0,           ,,,,,,,,
AL, 06, 2018091309, 03, BEST,   3, 328N,  747W,   95,  956, HU,  34, NEQ,  170,  150,  110,  140,  957,    0,   0, 115,   0,    ,   0, DPB, 312,   5,           ,,,,,,,,
AL, 06, 2018091309, 03, BEST,   3, 328N,  747W,   95,  956, HU,  50, NEQ,  100,   90,   70,   80,  957,    0,   0, 115,   0,    ,   0, DPB, 312,   5,           ,,,,,,,,
AL, 06, 2018091309, 03, BEST,   3, 328N,  747W,   95,  956, HU,  64, NEQ,   70,   60,   50,   60,  957,    0,   0, 115,   0,    ,   0, DPB, 312,   5,           ,,,,,,,,
AL, 06, 2018091318, 03, BEST,  12, 337N,  761W,   95,    0, HU,  34, NEQ,  170,  150,  110,  130,    1,    0,   0, 115,   0,    ,   0, DPB, 308,   5,           ,,,,,,,,
AL, 06, 2018091318, 03, BEST,  12, 337N,  761W,   95,    0, HU,  50, NEQ,  100,   90,   70,   80,    1,    0,   0, 115,   0,    ,   0, DPB, 308,   5,           ,,,,,,,,
AL, 06, 2018091318, 03, BEST,  12, 337N,  761W,   95,    0, HU,  64, NEQ,   70,   60,   50,   60,    1,    0,   0, 115,   0,    ,   0, DPB, 308,   5,           ,,,,,,,,
AL, 06, 2018091406, 03, BEST,  24, 342N,  774W,   90,    0, HU,  34, NEQ,  160,  150,  100,   90,    1,    0,   0, 110,   0,    ,   0, DPB, 295,   3,           ,,,,,,,,
AL, 06, 2018091406, 03, BEST,  24, 342N,  774W,   90,    0, HU,  50, NEQ,   90,   80,   60,   50,    1,    0,   0, 110,   0,    ,   0, DPB, 295,   3,           ,,,,,,,,
AL, 06, 2018091406, 03, BEST,  24, 342N,  774W,   90,    0, HU,  64, NEQ,   60,   60,   40,   35,    1,    0,   0, 110,   0,    ,   0, DPB, 295,   3,           ,,,,,,,,
AL, 06, 2018091418, 03, BEST,  36, 343N,  784W,   70,    0, HU,  34, NEQ,  150,  150,  100,   80,    1,    0,   0,  85,   0,    ,   0, DPB, 277,   2,           ,,,,,,,,
AL, 06, 2018091418, 03, BEST,  36, 343N,  784W,   70,    0, HU,  50, NEQ,   80,   80,   50,   40,    1,    0,   0,  85,   0,    ,   0, DPB, 277,   2,           ,,,,,,,,
AL, 06, 2018091418, 03, BEST,  36, 343N,  784W,   70,    0, HU,  64, NEQ,   50,   50,   30,   20,    1,    0,   0,  85,   0,    ,   0, DPB, 277,   2,           ,,,,,,,,
AL, 06, 2018091506, 03, BEST,  48, 341N,  792W,   50,    0, TS,  34, NEQ,  140,  140,   90,   70,    1,    0,   0,  60,   0,    ,   0, DPB, 253,   2,           ,,,,,,,,
AL, 06, 2018091506, 03, BEST,  48, 341N,  792W,   50,    0, TS,  50, NEQ,   60,   70,   40,    0,    1,    0,   0,  60,   0,    ,   0, DPB, 253,   2,           ,,,,,,,,
AL, 06, 2018091606, 03, BEST,  72, 339N,  812W,   30,    0, TD,  34, NEQ,    0,    0,    0,    0,    1,    0,   0,  40,   0,    ,   0, DPB, 264,   2,           ,,,,,,,,
AL, 06, 2018091706, 03, BEST,  96, 354N,  833W,   25,    0, TD,  34, NEQ,    0,    0,    0,    0,    1,    0,   0,  35,   0,    ,   0, DPB, 311,   3,           ,,,,,,,,
AL, 06, 2018091806, 03, BEST, 120, 395N,  810W,   20,    0, LO,  34, NEQ,    0,    0,    0,    0,    1,    0,   0,  30,   0,    ,   0, DPB,  23,   6,           ,,,,,,,,

for reference, this is part of an actual best track from a previous successfully run ensemble:

AL, 06, 2018091306,   , BEST,   0, 324N,  742W,  100,  955, HU,  34, NEQ,  170,  150,  110,  140, 1010,  200,  20, 115,   0,   L,   0,    , 317,   6,   FLORENCE,,,,,,,,
AL, 06, 2018091306,   , BEST,   0, 324N,  742W,  100,  955, HU,  50, NEQ,  100,   90,   70,   80, 1010,  200,  20, 115,   0,   L,   0,    , 317,   6,   FLORENCE,,,,,,,,
AL, 06, 2018091306,   , BEST,   0, 324N,  742W,  100,  955, HU,  64, NEQ,   70,   60,   50,   60, 1010,  200,  20, 115,   0,   L,   0,    , 317,   6,   FLORENCE,,,,,,,,
AL, 06, 2018091312,   , BEST,   0, 331N,  751W,   95,  954, HU,  34, NEQ,  170,  150,  120,  140, 1011,  200,  20, 115,   0,   L,   0,    , 313,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091312,   , BEST,   0, 331N,  751W,   95,  954, HU,  50, NEQ,  100,   90,   80,   80, 1011,  200,  20, 115,   0,   L,   0,    , 313,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091312,   , BEST,   0, 331N,  751W,   95,  954, HU,  64, NEQ,   70,   60,   50,   60, 1011,  200,  20, 115,   0,   L,   0,    , 313,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091318,   , BEST,   0, 336N,  760W,   90,  953, HU,  34, NEQ,  170,  150,  120,  140, 1011,  200,  20, 110,   0,   L,   0,    , 304,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091318,   , BEST,   0, 336N,  760W,   90,  953, HU,  50, NEQ,  100,   90,   80,   80, 1011,  200,  20, 110,   0,   L,   0,    , 304,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091318,   , BEST,   0, 336N,  760W,   90,  953, HU,  64, NEQ,   70,   60,   50,   60, 1011,  200,  20, 110,   0,   L,   0,    , 304,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091400,   , BEST,   0, 340N,  765W,   90,  952, HU,  34, NEQ,  170,  150,  130,  100, 1012,  200,  20, 105,   0,   L,   0,    , 314,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091400,   , BEST,   0, 340N,  765W,   90,  952, HU,  50, NEQ,  100,   80,   80,   70, 1012,  200,  20, 105,   0,   L,   0,    , 314,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091400,   , BEST,   0, 340N,  765W,   90,  952, HU,  64, NEQ,   70,   60,   50,   50, 1012,  200,  20, 105,   0,   L,   0,    , 314,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091406,   , BEST,   0, 342N,  772W,   85,  952, HU,  34, NEQ,  170,  150,  130,  100, 1012,  200,  20, 100,   0,   L,   0,    , 289,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091406,   , BEST,   0, 342N,  772W,   85,  952, HU,  50, NEQ,  100,   80,   80,   70, 1012,  200,  20, 100,   0,   L,   0,    , 289,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091406,   , BEST,   0, 342N,  772W,   85,  952, HU,  64, NEQ,   70,   60,   60,   50, 1012,  200,  20, 100,   0,   L,   0,    , 289,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091411, 15, BEST,   0, 342N,  778W,   80,  956, HU,  34, NEQ,  170,  150,  140,   90, 1012,  200,  25,   0,   0,    ,   0,    , 270,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091411, 15, BEST,   0, 342N,  778W,   80,  956, HU,  50, NEQ,  100,   80,   80,   60, 1012,  200,  25,   0,   0,    ,   0,    , 270,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091411, 15, BEST,   0, 342N,  778W,   80,  956, HU,  64, NEQ,   70,   60,   60,   40, 1012,  200,  25,   0,   0,    ,   0,    , 270,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091412,   , BEST,   0, 341N,  779W,   80,  957, HU,  34, NEQ,  170,  150,  140,   80, 1012,  200,  25,  90,   0,   L,   0,    , 220,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091412,   , BEST,   0, 341N,  779W,   80,  957, HU,  50, NEQ,  100,   80,   80,   40, 1012,  200,  25,  90,   0,   L,   0,    , 220,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091412,   , BEST,   0, 341N,  779W,   80,  957, HU,  64, NEQ,   60,   60,   60,   20, 1012,  200,  25,  90,   0,   L,   0,    , 220,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091418,   , BEST,   0, 340N,  784W,   65,  969, HU,  34, NEQ,  150,  130,  120,   70, 1012,  200,  30,  80,   0,   L,   0,    , 257,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091418,   , BEST,   0, 340N,  784W,   65,  969, HU,  50, NEQ,   90,   70,   60,   30, 1012,  200,  30,  80,   0,   L,   0,    , 257,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091418,   , BEST,   0, 340N,  784W,   65,  969, HU,  64, NEQ,    0,   30,   30,    0, 1012,  200,  30,  80,   0,   L,   0,    , 257,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091500,   , BEST,   0, 339N,  788W,   60,  978, TS,  34, NEQ,  150,  150,  100,   60, 1013,  210,  30,  65,   0,   L,   0,    , 253,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091500,   , BEST,   0, 339N,  788W,   60,  978, TS,  50, NEQ,   70,   70,   50,   30, 1013,  210,  30,  65,   0,   L,   0,    , 253,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091506,   , BEST,   0, 337N,  793W,   55,  986, TS,  34, NEQ,  150,  150,   90,   50, 1013,  210,  50,  60,   0,   L,   0,    , 245,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091506,   , BEST,   0, 337N,  793W,   55,  986, TS,  50, NEQ,   70,   70,    0,    0, 1013,  210,  50,  60,   0,   L,   0,    , 245,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091512,   , BEST,   0, 336N,  795W,   55,  992, TS,  34, NEQ,  150,  130,   80,   40, 1013,  220,  60,  55,   0,   L,   0,    , 239,   1,   FLORENCE,,,,,,,,
AL, 06, 2018091512,   , BEST,   0, 336N,  795W,   55,  992, TS,  50, NEQ,   60,  100,    0,    0, 1013,  220,  60,  55,   0,   L,   0,    , 239,   1,   FLORENCE,,,,,,,,
AL, 06, 2018091518,   , BEST,   0, 336N,  798W,   50,  997, TS,  34, NEQ,  140,  130,    0,    0, 1013,  220, 110,  50,   0,   L,   0,    , 270,   1,   FLORENCE,,,,,,,,
AL, 06, 2018091518,   , BEST,   0, 336N,  798W,   50,  997, TS,  50, NEQ,    0,  110,    0,    0, 1013,  220, 110,  50,   0,   L,   0,    , 270,   1,   FLORENCE,,,,,,,,
AL, 06, 2018091600,   , BEST,   0, 336N,  802W,   45,  998, TS,  34, NEQ,  130,  130,    0,    0, 1013,  240, 110,  50,   0,   L,   0,    , 270,   2,   FLORENCE,,,,,,,,
AL, 06, 2018091606,   , BEST,   0, 336N,  808W,   40,  999, TS,  34, NEQ,  130,  130,    0,    0, 1013,  260, 110,  40,   0,   L,   0,    , 270,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091612,   , BEST,   0, 336N,  815W,   35, 1002, TS,  34, NEQ,    0,  140,    0,    0, 1013,  280, 140,  40,   0,   L,   0,    , 270,   3,   FLORENCE,,,,,,,,
AL, 06, 2018091618,   , BEST,   0, 341N,  821W,   30, 1006, TD,   0,    ,    0,    0,    0,    0, 1013,  300, 140,  40,   0,   L,   0,    , 315,   4,   FLORENCE,,,,,,,,
AL, 06, 2018091700,   , BEST,   0, 350N,  822W,   25, 1007, TD,   0,    ,    0,    0,    0,    0, 1013,  320, 150,  35,   0,   L,   0,    , 355,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091706,   , BEST,   0, 364N,  826W,   25, 1008, TD,   0,    ,    0,    0,    0,    0, 1013,  340, 160,  35,   0,   L,   0,    , 347,   7,   FLORENCE,,,,,,,,
AL, 06, 2018091712,   , BEST,   0, 378N,  822W,   25, 1008, EX,   0,    ,    0,    0,    0,    0, 1013,  360, 160,  30,   0,   L,   0,    ,  13,   7,   FLORENCE,,,,,,,,
AL, 06, 2018091718,   , BEST,   0, 388N,  820W,   25, 1008, EX,   0,    ,    0,    0,    0,    0, 1013,  360, 160,  30,   0,   L,   0,    ,   9,   5,   FLORENCE,,,,,,,,
AL, 06, 2018091800,   , BEST,   0, 395N,  805W,   25, 1008, EX,   0,    ,    0,    0,    0,    0, 1013,  360, 160,   0,   0,    ,   0,    ,  59,   7,   FLORENCE,,,,,,,,
AL, 06, 2018091806,   , BEST,   0, 413N,  768W,   25, 1007, EX,   0,    ,    0,    0,    0,    0, 1013,  360, 170,   0,   0,    ,   0,    ,  56,  17,   FLORENCE,,,,,,,,
AL, 06, 2018091812,   , BEST,   0, 422N,  733W,   25, 1006, EX,  34, NEQ,    0,    0,    0,    0, 1013,  360, 180,  30,   0,   L,   0,    ,  70,  14,   FLORENCE,,,,,,,,

I'm still investigating what is actually causing the error in SCHISM, but is there anything that you see in the above example? I'm assuming the wrong pressures would maybe sufficient to throw the simulation off!

When you get a change, can you please review the correction done to the OFCL using CARQ here and see if it makes sense? Maybe we should review the StormEvents correction scheme together soon. If you notice anything obvious there, can you please create and Issue on that repo to follow up?

UPDATE

I just saw the issue in the logs of SCHISM from PAHM:

InitLogging not called :: ProcessAsymmetricVortexData: Central pressure set to zero on first line/record when processing the best track file: hurricane-track.dat
WPringle commented 1 year ago

@SorooshMani-NOAA This looks very promising, nice job! The problem you are encountering is associated with the fact that the advisories only provide the pressures at the 3-hr forecast and I think the Rmax also needs to be taken from initial time!

In my methodology the initial Rmax, maybe this is from CARQ, is assumed for all forecast times in the advisory. The 0-hr pressure is also taken from the initial CARQ value. The >3hr forecast pressures are computed as a function of Vmax by keeping Holland B constant. i.e., calculate Holland B for the 3-hr forecast and use that to get the pressures for all the forecast times in the future.

WPringle commented 1 year ago

@SorooshMani-NOAA This is one of big reasons why the Rmax methodology sucks because we although have a lot of information of Vmax and r34, r50, r64 we have no estimate of Rmax in the future. So better off to use r34, r50, r64 in a GAHM implementation

SorooshMani-NOAA commented 1 year ago

@WPringle, thanks. Do you have any suggestion for how to resolve this issue based on what we get above? I looked at the CARQ for the same track_start_time and the pressure is 0 there too.

WPringle commented 1 year ago

@SorooshMani-NOAA Do you get Rmax in the CARQ?

I think I remember now that actually for the pressure at the 0-hr I used the pressure from the 3-hr in the previous advisory (3 hours prior). If that is too complicated then we can fill in 0-hr using same methodology as the forecast times.

SorooshMani-NOAA commented 1 year ago

@WPringle I believe that should be what's happening. I'm just using StormEvents and I know that the correction code referred to above is being triggered. I believe based on the current StormEvents logic the pressure is indeed taken from 0-hr (the first entry of CARQ for the same track start time).

I can manually modify some of the values in my workflow script to try different things., e.g. I can try setting it to 3-hr forecast pressure. Do you want us to change the logic in the StormEvents repo as well if it works when I try here?

SorooshMani-NOAA commented 1 year ago

Interesting ... I just noticed this in my dataframe, looking only at certain columns:

8909     CARQ            -24 2018-09-13 06:00:00 2018-09-12 06:00:00               0.0
8910     CARQ            -18 2018-09-13 06:00:00 2018-09-12 12:00:00               0.0
8911     CARQ            -12 2018-09-13 06:00:00 2018-09-12 18:00:00               0.0
8912     CARQ             -6 2018-09-13 06:00:00 2018-09-13 00:00:00               0.0
8913     CARQ              0 2018-09-13 06:00:00 2018-09-13 06:00:00             956.0
8914     CARQ              0 2018-09-13 06:00:00 2018-09-13 06:00:00             956.0
8915     CARQ              0 2018-09-13 06:00:00 2018-09-13 06:00:00             956.0                                                                                                                    9020     OFCL              0 2018-09-13 06:00:00 2018-09-13 06:00:00               0.0                                                                                                                    9021     OFCL              0 2018-09-13 06:00:00 2018-09-13 06:00:00               0.0                                                                                                                    9022     OFCL              0 2018-09-13 06:00:00 2018-09-13 06:00:00               0.0                                                                                                                    9023     OFCL              3 2018-09-13 06:00:00 2018-09-13 09:00:00             956.0                                                                                                                    9024     OFCL              3 2018-09-13 06:00:00 2018-09-13 09:00:00             956.0                        

I think the logic in StormEvents gets the first entry meaning -24 hour. It needs to be changed to take the hour 0 forecast instead ...

WPringle commented 1 year ago

@SorooshMani-NOAA yes, what you just showed sounds good if that can be corrected

SorooshMani-NOAA commented 1 year ago

@WPringle I just realized that in the original unprocessed ATCF files, the pressure fields are not NA or empty, they are just 0. That's why StormEvents doesn't actually fix them, since it only updates the fields that are NA! I'll create a ticket on StormEvents side to keep track of updating this issue.

Update These are the tickets:

Update 2 This is another culprit:

The correction is calculated, but never stored.