Skip to content

Commit

Permalink
GitHub Issue NOAA-EMC#118. Implement EFSOI process in FV3 GFS workflo…
Browse files Browse the repository at this point in the history
…w - EFSOI additions to util/EFSOI-Utilities/scripts directory.
  • Loading branch information
AndrewEichmann-NOAA committed May 13, 2021
1 parent dcb735a commit 3cc26ec
Show file tree
Hide file tree
Showing 11 changed files with 432 additions and 789 deletions.
22 changes: 22 additions & 0 deletions util/EFSOI_Utilities/scripts/README_fv3gfs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

This file, README_fv3gfs, describes the files in GSI/util/EFSOI_Utilities/scripts
under the branch EXP-efso_fv3. These files are expected to be merged into master
shortly (as of 2020-07-30)


getefsiofiles.sh: obtains files necessary for gdaseupd task in global workflow,
the modified version of which is the first step in the EFSOI process

copyefsoifiles.sh: copies files from experiment to EFSOI staging directory after
gdasepos has run

display_osense.py: reads and plots sensitivity data for single cycle after reading
from osense file generated by EFSOI executable

osense.py: contains routine to read osense file

convdata_codes.csv: codes needed to organize convetional data sources, derived from
webpage (with the help of tools in pandas):
https://www.emc.ncep.noaa.gov/mmb/data_processing/prepbufr.doc/table_2.htm
May need to be periodically updated

92 changes: 92 additions & 0 deletions util/EFSOI_Utilities/scripts/convdata_codes.csv

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions util/EFSOI_Utilities/scripts/display_osense.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import osense
import pandas as pd


( convdata, satdata )= osense.read_osense('osense_2017091000.dat.out')

# creates a DataFrame with the mean of each satellite instrument
#meanbyobtype = satdata.groupby('obtype').mean()

meanbyobtype=satdata[['obtype','osense_kin','osense_dry','osense_moist']].groupby('obtype').mean()
#cmeanbyobtype=convdata[['stattype','osense_kin','osense_dry','osense_moist']].groupby('stattype').mean()

convcodes = pd.read_csv('convdata_codes.csv')

# associate each data point with its source, by code
# it would be more efficient to take the mean of the observation sensitivities by
# code/stattype, but this way the mean is by the message column in the codes
# (ADPUPA, AIRCRAFT, etc) to consolidate for simpler graphing. Taking the mean
# by code/stattype would break it down by data source more
convbycodes=pd.merge(convdata,convcodes,how='left',left_on='stattype', right_on='code')

convmean=convbycodes[['message','osense_kin','osense_dry','osense_moist']].groupby('message').mean()
alltheobtypes=pd.concat([meanbyobtype,convmean])

figuresize = (10,6)

o_dry=alltheobtypes['osense_dry'].sort_values(ascending=False)
dry_plot=o_dry.plot.barh(title = '2017091000 mean obs sensitivity, dry', figsize=figuresize);
fig=dry_plot.get_figure()
fig.savefig('obsense_dry.png',bbox_inches='tight')

fig.clear()

o_moist=alltheobtypes['osense_moist'].sort_values(ascending=False)
moist_plot=o_moist.plot.barh(title = '2017091000 mean obs sensitivity, moist', figsize=figuresize);
fig=moist_plot.get_figure()
fig.savefig('obsense_moist.png',bbox_inches='tight')

fig.clear()

o_kin=alltheobtypes['osense_kin'].sort_values(ascending=False)
kin_plot=o_kin.plot.barh(title = '2017091000 mean obs sensitivity, kinetic', figsize=figuresize);
fig=kin_plot.get_figure()
fig.savefig('obsense_kin.png',bbox_inches='tight')

fig.clear()



264 changes: 0 additions & 264 deletions util/EFSOI_Utilities/scripts/efso_advance_ensemble.sh

This file was deleted.

14 changes: 0 additions & 14 deletions util/EFSOI_Utilities/scripts/efso_cleanup.sh

This file was deleted.

33 changes: 0 additions & 33 deletions util/EFSOI_Utilities/scripts/efso_cleanup_wrapper.sh

This file was deleted.

Loading

0 comments on commit 3cc26ec

Please sign in to comment.