Quickstart¶
Installation¶
pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
python3 -m venv dartdiags
source dartdiags/bin/activate
pip install pydartdiags
Read an obs_sequence file¶
Read an observation sequence file into a DataFrama
obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
Examine the DataFrame¶
obs_seq.df.head()
| obs_num | observation | prior_ensemble_mean | prior_ensemble_spread | prior_ensemble_member_1 | prior_ensemble_member_2 | prior_ensemble_member_3 | prior_ensemble_member_4 | prior_ensemble_member_5 | prior_ensemble_member_6 | ... | latitude | vertical | vert_unit | type | seconds | days | time | obs_err_var | bias | sq_err | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 230.16 | 231.310652 | 0.405191 | 231.304725 | 231.562874 | 231.333915 | 231.297690 | 232.081416 | 231.051063 | ... | 0.012188 | 23950.0 | pressure (Pa) | ACARS_TEMPERATURE | 75603 | 153005 | 2019-12-01 21:00:03 | 1.00 | 1.150652 | 1.324001 |
| 1 | 2 | 18.40 | 15.720527 | 0.630827 | 14.217207 | 15.558196 | 15.805599 | 16.594644 | 14.877743 | 16.334438 | ... | 0.012188 | 23950.0 | pressure (Pa) | ACARS_U_WIND_COMPONENT | 75603 | 153005 | 2019-12-01 21:00:03 | 6.25 | -2.679473 | 7.179578 |
| 2 | 3 | 1.60 | -4.932073 | 0.825899 | -5.270562 | -5.955998 | -4.209766 | -5.105016 | -4.669405 | -4.365305 | ... | 0.012188 | 23950.0 | pressure (Pa) | ACARS_V_WIND_COMPONENT | 75603 | 153005 | 2019-12-01 21:00:03 | 6.25 | -6.532073 | 42.667980 |
| 3 | 4 | 264.16 | 264.060532 | 0.035584 | 264.107192 | 264.097270 | 264.073212 | 264.047718 | 264.074140 | 264.019895 | ... | 0.010389 | 56260.0 | pressure (Pa) | ACARS_TEMPERATURE | 75603 | 153005 | 2019-12-01 21:00:03 | 1.00 | -0.099468 | 0.009894 |
| 4 | 5 | 11.60 | 10.134115 | 0.063183 | 10.067956 | 10.078798 | 10.120263 | 10.084885 | 10.135112 | 10.140610 | ... | 0.010389 | 56260.0 | pressure (Pa) | ACARS_U_WIND_COMPONENT | 75603 | 153005 | 2019-12-01 21:00:03 | 6.25 | -1.465885 | 2.148818 |
5 rows × 97 columns
Find the numeber of assimilated (used) observations vs. possible observations by type
obs_seq.possible_vs_used(obs_seq.df)
| type | possible | used | |
|---|---|---|---|
| 0 | ACARS_TEMPERATURE | 175429 | 128040 |
| 1 | ACARS_U_WIND_COMPONENT | 176120 | 126946 |
| 2 | ACARS_V_WIND_COMPONENT | 176120 | 127834 |
| 3 | AIRCRAFT_TEMPERATURE | 21335 | 13663 |
| 4 | AIRCRAFT_U_WIND_COMPONENT | 21044 | 13694 |
| 5 | AIRCRAFT_V_WIND_COMPONENT | 21044 | 13642 |
| 6 | AIRS_SPECIFIC_HUMIDITY | 6781 | 0 |
| 7 | AIRS_TEMPERATURE | 19583 | 7901 |
| 8 | GPSRO_REFRACTIVITY | 81404 | 54626 |
| 9 | LAND_SFC_ALTIMETER | 21922 | 0 |
| 10 | MARINE_SFC_ALTIMETER | 9987 | 0 |
| 11 | MARINE_SFC_SPECIFIC_HUMIDITY | 4196 | 0 |
| 12 | MARINE_SFC_TEMPERATURE | 8646 | 0 |
| 13 | MARINE_SFC_U_WIND_COMPONENT | 8207 | 0 |
| 14 | MARINE_SFC_V_WIND_COMPONENT | 8207 | 0 |
| 15 | RADIOSONDE_SPECIFIC_HUMIDITY | 14272 | 0 |
| 16 | RADIOSONDE_SURFACE_ALTIMETER | 601 | 0 |
| 17 | RADIOSONDE_TEMPERATURE | 29275 | 22228 |
| 18 | RADIOSONDE_U_WIND_COMPONENT | 36214 | 27832 |
| 19 | RADIOSONDE_V_WIND_COMPONENT | 36214 | 27975 |
| 20 | SAT_U_WIND_COMPONENT | 107212 | 82507 |
| 21 | SAT_V_WIND_COMPONENT | 107212 | 82647 |
plot a rank histogram¶
Select only observations that were assimilated (QC === 0).
Plot the rank histogram
df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
plots.plot_rank_histogram(df_qc0)
plot profiles of RMSE and Bias¶
Choose levels
Select only observations that were assimilated (QC === 0).
Plot the profiles
hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000] # Pa?
plevels = [i * 100 for i in hPalevels]
df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)