-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Use Case: construct use case verifying GFS cloud forecasts vs. ASOS ceiolometer #2745
Comments
GFS data are here: Using this command:
I see relevant variables:
In addition, there is an isobaric "total cloud cover" variables ( ASOS data are here:
ASOS data should be provided via Python embedding, unless somehow that NetCDF file is supported by MET but I doubt it. Note that dtcenter/MET#187 mentions supporting these directly in MET as a nice source of point obs, but for this use case we'll probably just use Python embedding. |
@hertneky would you be willing to begin working on a Python script to ingest the METAR file? I confirmed Dan's suspicion that the file will need Python Embedding for MET to accept it:
Any of the variable fields could work for testing (and the script should be able to accept anything the user requests), but a smart starting point might be low_cloud_area_fraction and low_cloud_base_altitude. Those have similar fields for middle and high clouds, and I know GFS will have fields that we can use to compare these. A basic test-of-purpose can be done in Plot-Point-Obs; if you prefer, you can also start with this PointStat use case that calls GFS as the forecast (you'd have to remove the PB2NC call, though): https://metplus.readthedocs.io/en/develop/generated/model_applications/medium_range/PointStat_fcstGFS_obsGDAS_UpperAir_MultiField_PrepBufr.html |
@j-opatz I can start working on this. Thanks. |
@hertneky are there any updates/progress on the script? Anything you need in terms of help in the use case creation? I know that once the script is finished, the configuration file setup will be very simple so it's OK if this part is taking more time. |
@j-opatz I have a script that is still in the works. I am testing with low cloud base from both files. Of course one is in 'm' and the other is 'Pa', so there's a conversion needed. Not sure if I should do that in the python script or use the convert(x) function available in MET. |
Thanks for the update, @hertneky. Given my impending leave, @DanielAdriaansen should be able to provide some guidance, or find someone to step in on my behalf for direction on this use case. I'm a little concerned about the meters and Pascals comparison, though. They are measures of completely different things, and the relationship between the two is dependent on too many assumptions. Until the NRL team at-large can provide further guidance on the m-Pa issue, try and focus on the [cloud_level]_area_fraction variables. GFS data has cloud cover variables and that would be a percentage to percentage comparison, no conversions necessary. |
@j-opatz Yeah, you're right that the height would really be an approximation from cloud base pressure. For say low cloud area fraction, my concern is the layers used for low/mid/high being different between the two, but the units are the same. Keep me posted on what NRL says about the differing units for cloud base. |
@DanielAdriaansen I added the config file and python embedding script to a new metplus branch "feature_2745_nrl_gfs_asos". The data itself is in /d1/projects/METplus/METplus_Data/development/nrl/cloud/ as you posted further up. The error I get is "ERROR : Observation::Observation(const Python3_List) -> bad time string: "ADPSFC"" I'm not sure what bad time string means. My lists look okay to me after print out and the types seem okay too, either string or numeric. Hope you can shed some light! |
OK it looks like this line:
Is creating 11 "observations" (rows), with 130427 columns. Instead, we need 130427 rows, with 11 columns. You'll have to re-arrange your individual lists so that each item in
After I did this, I get past the
This is telling me that MET is having trouble converting one of the objects (column values) into a double. Unfortunately the error doesn't tell you which column it's having trouble with, but it's one of the numeric columns. If I change the construction of the
Then it works!
I'll let you decide how to modify your script, but ultimately it boils down to:
|
@DanielAdriaansen Ah hah - I hadn't even thought about the fact that I had the array list flipped. Thanks. The numeric complaint is probably on the one that's type int, the others are already float. I wasn't sure about that, but didn't have a way to test until I got passed the original issue. |
@hertneky can you move your use case from this location: to this location: when you have a chance? Thanks! |
Sure thing! @DanielAdriaansen |
Describe the New Use Case
This use case will demonstrate verifying forecasts of cloud information on the GFS global 0.25 degree grid, using ASOS ceilometer cloud base height (ceiling) observations over CONUS using
PointStat
.The fields to verify will be cloud fields we identify in GFS output such as:
We will need to search for and identify the proper field names and levels in the GFS files.
The measures of skill that should be included are:
The end goal is for the user to be able to substitute the GFS forecasts with a separate GFS-based AI/ML cloud forecast product on the same GFS 0.25 degree grid, to compare with the ASOS observations. This framework is to support them to be able to do this. We may get some sample data of their truth, however due to restrictions on releasing the data we may need to leave the GFS forecast data in place.
The user would also like to be able to stratify forecast performance based on categories of cloud types. These cloud types will be provided later on, but we should brainstorm another type of stratification we can perform using an external classification (maybe weather regimes? precipitation type?), or, implement some simple post-processing, for example stratify performance by all clouds e.g. >= 8 km ("high clouds").
Checklist to get working:
Use Case Name and Category
`model_applications/clouds/PointStat_fcstGFS_obsASOSCeilometer_cloudTop
Input Data
FCST: GFS 0.25 degree forecasts and analyses.
OBS: ASOS Ceilometer
Acceptance Testing
Describe tests required for new functionality.
As use case develops, provide a run time here
Time Estimate
Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.
Sub-Issues
Consider breaking the new feature down into sub-issues.
Relevant Deadlines
Must be completed by 12/31/2024
Funding Source
7730022
Define the Metadata
Assignee
Labels
Milestone and Projects
Define Related Issue(s)
Consider the impact to the other METplus components.
New Use Case Checklist
See the METplus Workflow for details.
Branch name:
feature_<Issue Number>_<Description>
Pull request:
feature <Issue Number> <Description>
Select: Reviewer(s) and Development issue
Select: Milestone as the next official version
Select: METplus-Wrappers-X.Y.Z Development project for development toward the next official release
The text was updated successfully, but these errors were encountered: