NCAR / pyDARTdiags

Python observation space diagnostics for the Data Assimilation Research Testbed (DART)
Apache License 2.0
3 stars 1 forks source link

License codecov PyPI version

pyDARTdiags

pyDARTdiags is a Python library for obsevation space diagnostics for the Data Assimilation Research Testbed (DART).

pyDARTdiags is under initial development, so please use caution. The MATLAB observation space diagnostics are available through DART.

pyDARTdiags can be installed through pip: https://pypi.org/project/pydartdiags/
Documenation : https://ncar.github.io/pyDARTdiags/

We recommend installing pydartdiags in a virtual enviroment:

python3 -m venv dartdiags
source dartdiags/bin/activate
pip install pydartdiags

For developers of pyDARTdiags, we recommend installing pyDARTdiags as a local project in “editable” mode in your virtual environment:

git clone https://github.com/NCAR/pyDARTdiags
python -m pip install -e pyDARTdiags

Example importing the obs_sequence and plots modules

from pydartdiags.obs_sequence import obs_sequence as obsq
from pydartdiags.plots import plots

Examining the dataframe

obs_seq = obsq.obs_sequence('obs_seq.final.ascii')
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

obsq.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

Example plotting

rank histogram

df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0) 
plots.plot_rank_histogram(df_qc0)

Rank Histogram

plot profile of RMSE and Bias

hPalevels = [0.0, 100.0,  150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
plevels = [i * 100 for i in hPalevels]

df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)  # only qc 0
df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)

RMSE Plot

Bias Plot

Contributing

Contributions are welcome! If you have a feature request, bug report, or a suggestion, please open an issue on our GitHub repository.

License

pyDARTdiags is released under the Apache License 2.0. For more details, see the LICENSE file in the root directory of this source tree or visit Apache License 2.0.