pydartdiags 0.0.3a0__tar.gz → 0.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pydartdiags might be problematic. Click here for more details.

Files changed (64) hide show
  1. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/PKG-INFO +23 -20
  2. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/README.md +21 -19
  3. pydartdiags-0.0.4/docs/Makefile +20 -0
  4. pydartdiags-0.0.4/docs/build/doctrees/environment.pickle +0 -0
  5. pydartdiags-0.0.4/docs/build/doctrees/index.doctree +0 -0
  6. pydartdiags-0.0.4/docs/build/doctrees/obs_sequence.doctree +0 -0
  7. pydartdiags-0.0.4/docs/build/doctrees/plots.doctree +0 -0
  8. pydartdiags-0.0.4/docs/build/doctrees/quickstart.doctree +0 -0
  9. pydartdiags-0.0.4/docs/build/html/.buildinfo +4 -0
  10. pydartdiags-0.0.4/docs/build/html/_sources/index.rst.txt +40 -0
  11. pydartdiags-0.0.4/docs/build/html/_sources/obs_sequence.rst.txt +8 -0
  12. pydartdiags-0.0.4/docs/build/html/_sources/plots.rst.txt +6 -0
  13. pydartdiags-0.0.4/docs/build/html/_sources/quickstart.rst.txt +380 -0
  14. pydartdiags-0.0.4/docs/build/html/_static/alabaster.css +714 -0
  15. pydartdiags-0.0.4/docs/build/html/_static/basic.css +925 -0
  16. pydartdiags-0.0.4/docs/build/html/_static/check-solid.svg +4 -0
  17. pydartdiags-0.0.4/docs/build/html/_static/clipboard.min.js +7 -0
  18. pydartdiags-0.0.4/docs/build/html/_static/copy-button.svg +5 -0
  19. pydartdiags-0.0.4/docs/build/html/_static/copybutton.css +94 -0
  20. pydartdiags-0.0.4/docs/build/html/_static/copybutton.js +248 -0
  21. pydartdiags-0.0.4/docs/build/html/_static/copybutton_funcs.js +73 -0
  22. pydartdiags-0.0.4/docs/build/html/_static/custom.css +1 -0
  23. pydartdiags-0.0.4/docs/build/html/_static/doctools.js +156 -0
  24. pydartdiags-0.0.4/docs/build/html/_static/documentation_options.js +13 -0
  25. pydartdiags-0.0.4/docs/build/html/_static/file.png +0 -0
  26. pydartdiags-0.0.4/docs/build/html/_static/language_data.js +199 -0
  27. pydartdiags-0.0.4/docs/build/html/_static/minus.png +0 -0
  28. pydartdiags-0.0.4/docs/build/html/_static/plus.png +0 -0
  29. pydartdiags-0.0.4/docs/build/html/_static/pygments.css +84 -0
  30. pydartdiags-0.0.4/docs/build/html/_static/searchtools.js +620 -0
  31. pydartdiags-0.0.4/docs/build/html/_static/sphinx_highlight.js +154 -0
  32. pydartdiags-0.0.4/docs/build/html/genindex.html +297 -0
  33. pydartdiags-0.0.4/docs/build/html/index.html +131 -0
  34. pydartdiags-0.0.4/docs/build/html/objects.inv +0 -0
  35. pydartdiags-0.0.4/docs/build/html/obs_sequence.html +479 -0
  36. pydartdiags-0.0.4/docs/build/html/plots.html +240 -0
  37. pydartdiags-0.0.4/docs/build/html/py-modindex.html +137 -0
  38. pydartdiags-0.0.4/docs/build/html/quickstart.html +471 -0
  39. pydartdiags-0.0.4/docs/build/html/search.html +127 -0
  40. pydartdiags-0.0.4/docs/build/html/searchindex.js +1 -0
  41. pydartdiags-0.0.4/docs/conf.py +60 -0
  42. pydartdiags-0.0.4/docs/images/bias.png +0 -0
  43. pydartdiags-0.0.4/docs/images/rankhist.png +0 -0
  44. pydartdiags-0.0.4/docs/images/rmse.png +0 -0
  45. pydartdiags-0.0.4/docs/index.html +1 -0
  46. pydartdiags-0.0.4/docs/index.rst +40 -0
  47. pydartdiags-0.0.4/docs/make.bat +35 -0
  48. pydartdiags-0.0.4/docs/obs_sequence.rst +8 -0
  49. pydartdiags-0.0.4/docs/plots.rst +6 -0
  50. pydartdiags-0.0.4/docs/quickstart.rst +380 -0
  51. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/pyproject.toml +2 -1
  52. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/src/pydartdiags/obs_sequence/obs_sequence.py +71 -73
  53. pydartdiags-0.0.4/src/pydartdiags/plots/__init__.py +0 -0
  54. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/src/pydartdiags/plots/plots.py +25 -24
  55. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/.gitignore +0 -0
  56. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/LICENSE +0 -0
  57. /pydartdiags-0.0.3a0/src/pydartdiags/__init__.py → /pydartdiags-0.0.4/docs/.nojekyll +0 -0
  58. {pydartdiags-0.0.3a0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/bias.png +0 -0
  59. {pydartdiags-0.0.3a0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/rankhist.png +0 -0
  60. {pydartdiags-0.0.3a0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/rmse.png +0 -0
  61. {pydartdiags-0.0.3a0/src/pydartdiags/obs_sequence → pydartdiags-0.0.4/src/pydartdiags}/__init__.py +0 -0
  62. {pydartdiags-0.0.3a0/src/pydartdiags/plots → pydartdiags-0.0.4/src/pydartdiags/obs_sequence}/__init__.py +0 -0
  63. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/src/pydartdiags/obs_sequence/composite_types.yaml +0 -0
  64. {pydartdiags-0.0.3a0 → pydartdiags-0.0.4}/src/pydartdiags/plots/tests/test_rank_histogram.py +0 -0
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pydartdiags
3
- Version: 0.0.3a0
3
+ Version: 0.0.4
4
4
  Summary: Observation Sequence Diagnostics for DART
5
5
  Project-URL: Homepage, https://github.com/NCAR/pyDARTdiags.git
6
6
  Project-URL: Issues, https://github.com/NCAR/pyDARTdiags/issues
7
+ Project-URL: Documentation, https://ncar.github.io/pyDARTdiags
7
8
  Author-email: Helen Kershaw <hkershaw@ucar.edu>
8
9
  License-File: LICENSE
9
10
  Classifier: License :: OSI Approved :: Apache Software License
@@ -15,30 +16,34 @@ Requires-Dist: pandas>=2.2.0
15
16
  Requires-Dist: plotly>=5.22.0
16
17
  Description-Content-Type: text/markdown
17
18
 
18
- # pyDARTdiag
19
+ # pyDARTdiags
19
20
 
20
- pyDARTdiag is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
21
+ pyDARTdiags is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
21
22
 
22
- pyDARTdiag is under initial development, so please use caution.
23
+ pyDARTdiags is under initial development, so please use caution.
23
24
  The MATLAB [observation space diagnostics](https://docs.dart.ucar.edu/en/latest/guide/matlab-observation-space.html) are available through [DART](https://github.com/NCAR/DART).
24
25
 
25
- * obs\_sequence to DataFrame
26
+
27
+ pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
28
+
29
+
30
+ ```
31
+ python3 -m venv dartdiags
32
+ source dartdiags/bin/activate
33
+ pip install pydartdiags
34
+ ```
26
35
 
27
36
  ## Example importing the obs\_sequence and plots modules
28
37
 
29
38
  ```python
30
- import sys
31
- import os
32
- sys.path.append(os.path.abspath("/Users/hkershaw/DART/Projects/Diagnostics/pyDART/src/obs_sequence"))
33
-
34
- import obs_sequence as dart_os
35
- import plots as dart_plots
39
+ from pydartdiags.obs_sequence import obs_sequence as obs_seq
40
+ from pydartdiags.plots import plots
36
41
  ```
37
42
 
38
43
  ## Examining the dataframe
39
44
 
40
45
  ```python
41
- obs_seq = dart_os.obs_sequence('obs_seq.final.ascii')
46
+ obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
42
47
  obs_seq.df.head()
43
48
  ```
44
49
 
@@ -196,9 +201,10 @@ obs_seq.df.head()
196
201
  </div>
197
202
 
198
203
 
204
+ Find the numeber of assimilated (used) observations vs. possible observations by type
199
205
 
200
206
  ```python
201
- dart_os.possible_vs_used(obs_seq.df)
207
+ obs_seq.possible_vs_used(obs_seq.df)
202
208
  ```
203
209
 
204
210
  <table border="1" class="dataframe">
@@ -349,17 +355,14 @@ dart_os.possible_vs_used(obs_seq.df)
349
355
 
350
356
  ## Example plotting
351
357
 
352
-
353
-
354
358
  ### rank histogram
355
359
 
356
360
  * Select only observations that were assimliated (QC === 0).
357
361
  * plot the rank histogram
358
362
 
359
363
  ```python
360
-
361
- df_qc0 = dart_os.select_by_dart_qc(obs_seq.df, 0) # only qc 0
362
- df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
364
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
365
+ plots.plot_rank_histogram(df_qc0)
363
366
  ```
364
367
  ![Rank Histogram](docs/images/rankhist.png)
365
368
 
@@ -374,8 +377,8 @@ df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
374
377
  hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
375
378
  plevels = [i * 100 for i in hPalevels]
376
379
 
377
- df_qc0 = dart_os.select_by_dart_qc(obs_seq.df, 0) # only qc 0
378
- df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
380
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
381
+ df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
379
382
  ```
380
383
 
381
384
  ![RMSE Plot](docs/images/rmse.png)
@@ -1,27 +1,31 @@
1
- # pyDARTdiag
1
+ # pyDARTdiags
2
2
 
3
- pyDARTdiag is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
3
+ pyDARTdiags is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
4
4
 
5
- pyDARTdiag is under initial development, so please use caution.
5
+ pyDARTdiags is under initial development, so please use caution.
6
6
  The MATLAB [observation space diagnostics](https://docs.dart.ucar.edu/en/latest/guide/matlab-observation-space.html) are available through [DART](https://github.com/NCAR/DART).
7
7
 
8
- * obs\_sequence to DataFrame
8
+
9
+ pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
10
+
11
+
12
+ ```
13
+ python3 -m venv dartdiags
14
+ source dartdiags/bin/activate
15
+ pip install pydartdiags
16
+ ```
9
17
 
10
18
  ## Example importing the obs\_sequence and plots modules
11
19
 
12
20
  ```python
13
- import sys
14
- import os
15
- sys.path.append(os.path.abspath("/Users/hkershaw/DART/Projects/Diagnostics/pyDART/src/obs_sequence"))
16
-
17
- import obs_sequence as dart_os
18
- import plots as dart_plots
21
+ from pydartdiags.obs_sequence import obs_sequence as obs_seq
22
+ from pydartdiags.plots import plots
19
23
  ```
20
24
 
21
25
  ## Examining the dataframe
22
26
 
23
27
  ```python
24
- obs_seq = dart_os.obs_sequence('obs_seq.final.ascii')
28
+ obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
25
29
  obs_seq.df.head()
26
30
  ```
27
31
 
@@ -179,9 +183,10 @@ obs_seq.df.head()
179
183
  </div>
180
184
 
181
185
 
186
+ Find the numeber of assimilated (used) observations vs. possible observations by type
182
187
 
183
188
  ```python
184
- dart_os.possible_vs_used(obs_seq.df)
189
+ obs_seq.possible_vs_used(obs_seq.df)
185
190
  ```
186
191
 
187
192
  <table border="1" class="dataframe">
@@ -332,17 +337,14 @@ dart_os.possible_vs_used(obs_seq.df)
332
337
 
333
338
  ## Example plotting
334
339
 
335
-
336
-
337
340
  ### rank histogram
338
341
 
339
342
  * Select only observations that were assimliated (QC === 0).
340
343
  * plot the rank histogram
341
344
 
342
345
  ```python
343
-
344
- df_qc0 = dart_os.select_by_dart_qc(obs_seq.df, 0) # only qc 0
345
- df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
346
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
347
+ plots.plot_rank_histogram(df_qc0)
346
348
  ```
347
349
  ![Rank Histogram](docs/images/rankhist.png)
348
350
 
@@ -357,8 +359,8 @@ df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
357
359
  hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
358
360
  plevels = [i * 100 for i in hPalevels]
359
361
 
360
- df_qc0 = dart_os.select_by_dart_qc(obs_seq.df, 0) # only qc 0
361
- df_profile, figrmse, figbias = dart_plots.plot_profile(df_qc0, plevels)
362
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
363
+ df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
362
364
  ```
363
365
 
364
366
  ![RMSE Plot](docs/images/rmse.png)
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,4 @@
1
+ # Sphinx build info version 1
2
+ # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
3
+ config: 1e397e888b34fea22bbbc9a10b6321e0
4
+ tags: 645f666f9bcd5a90fca523b33c5a78b7
@@ -0,0 +1,40 @@
1
+ .. pydartdiags documentation master file, created by
2
+ sphinx-quickstart on Mon Aug 5 15:37:19 2024.
3
+
4
+ .. self adds index.rst to the toctree
5
+
6
+ pyDARTdiags
7
+ ===========
8
+
9
+ .. toctree::
10
+ :maxdepth: 3
11
+ :hidden:
12
+
13
+ self
14
+ quickstart
15
+ obs_sequence
16
+ plots
17
+
18
+ pyDARTdiags is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed (`DART <https://github.com/NCAR/DART>`_).
19
+
20
+
21
+ .. note::
22
+
23
+ pyDARTdiags is under initial development, so please use caution.
24
+ The MATLAB `observation space diagnostics <https://docs.dart.ucar.edu/en/latest/guide/matlab-observation-space.html>`_
25
+ are available through `DART <https://github.com/NCAR/DART>`_.
26
+
27
+
28
+ Contributing
29
+ ============
30
+
31
+ Contributions are welcome! If you have a feature request, bug report, or a suggestion, please open an issue on our GitHub repository.
32
+
33
+ License
34
+ =======
35
+
36
+ DartLabPlot is released under the Apache License 2.0. For more details, see the LICENSE file in the root directory of this source
37
+ tree or visit `Apache License 2.0 <https://www.apache.org/licenses/LICENSE-2.0>`_.
38
+
39
+
40
+
@@ -0,0 +1,8 @@
1
+ module: obs_sequence
2
+ ====================
3
+
4
+ .. automodule:: obs_sequence
5
+ :members:
6
+ :member-order: bysource
7
+
8
+
@@ -0,0 +1,6 @@
1
+ module: plots
2
+ ====================
3
+
4
+ .. automodule:: plots
5
+ :members:
6
+ :member-order: bysource
@@ -0,0 +1,380 @@
1
+ Quickstart
2
+ ==========
3
+
4
+ Installation
5
+ ------------
6
+
7
+ pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
8
+
9
+
10
+ .. code-block :: text
11
+
12
+ python3 -m venv dartdiags
13
+ source dartdiags/bin/activate
14
+ pip install pydartdiags
15
+
16
+
17
+
18
+ Read an obs_sequence file
19
+ -------------------------
20
+
21
+ Read an observation sequence file into a DataFrama
22
+
23
+ .. code-block :: python
24
+
25
+ obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
26
+
27
+
28
+ Examine the DataFrame
29
+ ---------------------
30
+
31
+ .. code-block :: python
32
+
33
+ obs_seq.df.head()
34
+
35
+ .. raw :: html
36
+
37
+ <table border="1" class="dataframe">
38
+ <thead>
39
+ <tr style="text-align: right;">
40
+ <th></th>
41
+ <th>obs_num</th>
42
+ <th>observation</th>
43
+ <th>prior_ensemble_mean</th>
44
+ <th>prior_ensemble_spread</th>
45
+ <th>prior_ensemble_member_1</th>
46
+ <th>prior_ensemble_member_2</th>
47
+ <th>prior_ensemble_member_3</th>
48
+ <th>prior_ensemble_member_4</th>
49
+ <th>prior_ensemble_member_5</th>
50
+ <th>prior_ensemble_member_6</th>
51
+ <th>...</th>
52
+ <th>latitude</th>
53
+ <th>vertical</th>
54
+ <th>vert_unit</th>
55
+ <th>type</th>
56
+ <th>seconds</th>
57
+ <th>days</th>
58
+ <th>time</th>
59
+ <th>obs_err_var</th>
60
+ <th>bias</th>
61
+ <th>sq_err</th>
62
+ </tr>
63
+ </thead>
64
+ <tbody>
65
+ <tr>
66
+ <th>0</th>
67
+ <td>1</td>
68
+ <td>230.16</td>
69
+ <td>231.310652</td>
70
+ <td>0.405191</td>
71
+ <td>231.304725</td>
72
+ <td>231.562874</td>
73
+ <td>231.333915</td>
74
+ <td>231.297690</td>
75
+ <td>232.081416</td>
76
+ <td>231.051063</td>
77
+ <td>...</td>
78
+ <td>0.012188</td>
79
+ <td>23950.0</td>
80
+ <td>pressure (Pa)</td>
81
+ <td>ACARS_TEMPERATURE</td>
82
+ <td>75603</td>
83
+ <td>153005</td>
84
+ <td>2019-12-01 21:00:03</td>
85
+ <td>1.00</td>
86
+ <td>1.150652</td>
87
+ <td>1.324001</td>
88
+ </tr>
89
+ <tr>
90
+ <th>1</th>
91
+ <td>2</td>
92
+ <td>18.40</td>
93
+ <td>15.720527</td>
94
+ <td>0.630827</td>
95
+ <td>14.217207</td>
96
+ <td>15.558196</td>
97
+ <td>15.805599</td>
98
+ <td>16.594644</td>
99
+ <td>14.877743</td>
100
+ <td>16.334438</td>
101
+ <td>...</td>
102
+ <td>0.012188</td>
103
+ <td>23950.0</td>
104
+ <td>pressure (Pa)</td>
105
+ <td>ACARS_U_WIND_COMPONENT</td>
106
+ <td>75603</td>
107
+ <td>153005</td>
108
+ <td>2019-12-01 21:00:03</td>
109
+ <td>6.25</td>
110
+ <td>-2.679473</td>
111
+ <td>7.179578</td>
112
+ </tr>
113
+ <tr>
114
+ <th>2</th>
115
+ <td>3</td>
116
+ <td>1.60</td>
117
+ <td>-4.932073</td>
118
+ <td>0.825899</td>
119
+ <td>-5.270562</td>
120
+ <td>-5.955998</td>
121
+ <td>-4.209766</td>
122
+ <td>-5.105016</td>
123
+ <td>-4.669405</td>
124
+ <td>-4.365305</td>
125
+ <td>...</td>
126
+ <td>0.012188</td>
127
+ <td>23950.0</td>
128
+ <td>pressure (Pa)</td>
129
+ <td>ACARS_V_WIND_COMPONENT</td>
130
+ <td>75603</td>
131
+ <td>153005</td>
132
+ <td>2019-12-01 21:00:03</td>
133
+ <td>6.25</td>
134
+ <td>-6.532073</td>
135
+ <td>42.667980</td>
136
+ </tr>
137
+ <tr>
138
+ <th>3</th>
139
+ <td>4</td>
140
+ <td>264.16</td>
141
+ <td>264.060532</td>
142
+ <td>0.035584</td>
143
+ <td>264.107192</td>
144
+ <td>264.097270</td>
145
+ <td>264.073212</td>
146
+ <td>264.047718</td>
147
+ <td>264.074140</td>
148
+ <td>264.019895</td>
149
+ <td>...</td>
150
+ <td>0.010389</td>
151
+ <td>56260.0</td>
152
+ <td>pressure (Pa)</td>
153
+ <td>ACARS_TEMPERATURE</td>
154
+ <td>75603</td>
155
+ <td>153005</td>
156
+ <td>2019-12-01 21:00:03</td>
157
+ <td>1.00</td>
158
+ <td>-0.099468</td>
159
+ <td>0.009894</td>
160
+ </tr>
161
+ <tr>
162
+ <th>4</th>
163
+ <td>5</td>
164
+ <td>11.60</td>
165
+ <td>10.134115</td>
166
+ <td>0.063183</td>
167
+ <td>10.067956</td>
168
+ <td>10.078798</td>
169
+ <td>10.120263</td>
170
+ <td>10.084885</td>
171
+ <td>10.135112</td>
172
+ <td>10.140610</td>
173
+ <td>...</td>
174
+ <td>0.010389</td>
175
+ <td>56260.0</td>
176
+ <td>pressure (Pa)</td>
177
+ <td>ACARS_U_WIND_COMPONENT</td>
178
+ <td>75603</td>
179
+ <td>153005</td>
180
+ <td>2019-12-01 21:00:03</td>
181
+ <td>6.25</td>
182
+ <td>-1.465885</td>
183
+ <td>2.148818</td>
184
+ </tr>
185
+ </tbody>
186
+ </table>
187
+ <p>5 rows × 97 columns</p>
188
+
189
+
190
+
191
+ Find the numeber of assimilated (used) observations vs. possible observations by type
192
+
193
+ .. code-block :: python
194
+
195
+ obs_seq.possible_vs_used(obs_seq.df)
196
+
197
+ .. raw :: html
198
+
199
+ <table border="1" class="dataframe">
200
+ <thead>
201
+ <tr style="text-align: right;">
202
+ <th></th>
203
+ <th>type</th>
204
+ <th>possible</th>
205
+ <th>used</th>
206
+ </tr>
207
+ </thead>
208
+ <tbody>
209
+ <tr>
210
+ <th>0</th>
211
+ <td>ACARS_TEMPERATURE</td>
212
+ <td>175429</td>
213
+ <td>128040</td>
214
+ </tr>
215
+ <tr>
216
+ <th>1</th>
217
+ <td>ACARS_U_WIND_COMPONENT</td>
218
+ <td>176120</td>
219
+ <td>126946</td>
220
+ </tr>
221
+ <tr>
222
+ <th>2</th>
223
+ <td>ACARS_V_WIND_COMPONENT</td>
224
+ <td>176120</td>
225
+ <td>127834</td>
226
+ </tr>
227
+ <tr>
228
+ <th>3</th>
229
+ <td>AIRCRAFT_TEMPERATURE</td>
230
+ <td>21335</td>
231
+ <td>13663</td>
232
+ </tr>
233
+ <tr>
234
+ <th>4</th>
235
+ <td>AIRCRAFT_U_WIND_COMPONENT</td>
236
+ <td>21044</td>
237
+ <td>13694</td>
238
+ </tr>
239
+ <tr>
240
+ <th>5</th>
241
+ <td>AIRCRAFT_V_WIND_COMPONENT</td>
242
+ <td>21044</td>
243
+ <td>13642</td>
244
+ </tr>
245
+ <tr>
246
+ <th>6</th>
247
+ <td>AIRS_SPECIFIC_HUMIDITY</td>
248
+ <td>6781</td>
249
+ <td>0</td>
250
+ </tr>
251
+ <tr>
252
+ <th>7</th>
253
+ <td>AIRS_TEMPERATURE</td>
254
+ <td>19583</td>
255
+ <td>7901</td>
256
+ </tr>
257
+ <tr>
258
+ <th>8</th>
259
+ <td>GPSRO_REFRACTIVITY</td>
260
+ <td>81404</td>
261
+ <td>54626</td>
262
+ </tr>
263
+ <tr>
264
+ <th>9</th>
265
+ <td>LAND_SFC_ALTIMETER</td>
266
+ <td>21922</td>
267
+ <td>0</td>
268
+ </tr>
269
+ <tr>
270
+ <th>10</th>
271
+ <td>MARINE_SFC_ALTIMETER</td>
272
+ <td>9987</td>
273
+ <td>0</td>
274
+ </tr>
275
+ <tr>
276
+ <th>11</th>
277
+ <td>MARINE_SFC_SPECIFIC_HUMIDITY</td>
278
+ <td>4196</td>
279
+ <td>0</td>
280
+ </tr>
281
+ <tr>
282
+ <th>12</th>
283
+ <td>MARINE_SFC_TEMPERATURE</td>
284
+ <td>8646</td>
285
+ <td>0</td>
286
+ </tr>
287
+ <tr>
288
+ <th>13</th>
289
+ <td>MARINE_SFC_U_WIND_COMPONENT</td>
290
+ <td>8207</td>
291
+ <td>0</td>
292
+ </tr>
293
+ <tr>
294
+ <th>14</th>
295
+ <td>MARINE_SFC_V_WIND_COMPONENT</td>
296
+ <td>8207</td>
297
+ <td>0</td>
298
+ </tr>
299
+ <tr>
300
+ <th>15</th>
301
+ <td>RADIOSONDE_SPECIFIC_HUMIDITY</td>
302
+ <td>14272</td>
303
+ <td>0</td>
304
+ </tr>
305
+ <tr>
306
+ <th>16</th>
307
+ <td>RADIOSONDE_SURFACE_ALTIMETER</td>
308
+ <td>601</td>
309
+ <td>0</td>
310
+ </tr>
311
+ <tr>
312
+ <th>17</th>
313
+ <td>RADIOSONDE_TEMPERATURE</td>
314
+ <td>29275</td>
315
+ <td>22228</td>
316
+ </tr>
317
+ <tr>
318
+ <th>18</th>
319
+ <td>RADIOSONDE_U_WIND_COMPONENT</td>
320
+ <td>36214</td>
321
+ <td>27832</td>
322
+ </tr>
323
+ <tr>
324
+ <th>19</th>
325
+ <td>RADIOSONDE_V_WIND_COMPONENT</td>
326
+ <td>36214</td>
327
+ <td>27975</td>
328
+ </tr>
329
+ <tr>
330
+ <th>20</th>
331
+ <td>SAT_U_WIND_COMPONENT</td>
332
+ <td>107212</td>
333
+ <td>82507</td>
334
+ </tr>
335
+ <tr>
336
+ <th>21</th>
337
+ <td>SAT_V_WIND_COMPONENT</td>
338
+ <td>107212</td>
339
+ <td>82647</td>
340
+ </tr>
341
+ </tbody>
342
+ </table>
343
+ <p>
344
+
345
+
346
+ plot a rank histogram
347
+ ----------------------
348
+
349
+ * Select only observations that were assimilated (QC === 0).
350
+ * Plot the rank histogram
351
+
352
+ .. code-block :: python
353
+
354
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
355
+ plots.plot_rank_histogram(df_qc0)
356
+
357
+ .. image:: images/rankhist.png
358
+ :alt: Rank Histogram
359
+
360
+ plot profiles of RMSE and Bias
361
+ ------------------------------
362
+
363
+ * Choose levels
364
+ * Select only observations that were assimilated (QC === 0).
365
+ * Plot the profiles
366
+
367
+ .. code-block :: python
368
+
369
+ hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000] # Pa?
370
+ plevels = [i * 100 for i in hPalevels]
371
+
372
+ df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
373
+ df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
374
+
375
+ .. image:: images/rmse.png
376
+ :alt: RMSE Plot
377
+
378
+ .. image:: images/bias.png
379
+ :alt: Bias Plot
380
+