pydartdiags 0.0.3b0__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.3b0 → pydartdiags-0.0.4}/PKG-INFO +2 -1
  2. pydartdiags-0.0.4/docs/Makefile +20 -0
  3. pydartdiags-0.0.4/docs/build/doctrees/environment.pickle +0 -0
  4. pydartdiags-0.0.4/docs/build/doctrees/index.doctree +0 -0
  5. pydartdiags-0.0.4/docs/build/doctrees/obs_sequence.doctree +0 -0
  6. pydartdiags-0.0.4/docs/build/doctrees/plots.doctree +0 -0
  7. pydartdiags-0.0.4/docs/build/doctrees/quickstart.doctree +0 -0
  8. pydartdiags-0.0.4/docs/build/html/.buildinfo +4 -0
  9. pydartdiags-0.0.4/docs/build/html/_sources/index.rst.txt +40 -0
  10. pydartdiags-0.0.4/docs/build/html/_sources/obs_sequence.rst.txt +8 -0
  11. pydartdiags-0.0.4/docs/build/html/_sources/plots.rst.txt +6 -0
  12. pydartdiags-0.0.4/docs/build/html/_sources/quickstart.rst.txt +380 -0
  13. pydartdiags-0.0.4/docs/build/html/_static/alabaster.css +714 -0
  14. pydartdiags-0.0.4/docs/build/html/_static/basic.css +925 -0
  15. pydartdiags-0.0.4/docs/build/html/_static/check-solid.svg +4 -0
  16. pydartdiags-0.0.4/docs/build/html/_static/clipboard.min.js +7 -0
  17. pydartdiags-0.0.4/docs/build/html/_static/copy-button.svg +5 -0
  18. pydartdiags-0.0.4/docs/build/html/_static/copybutton.css +94 -0
  19. pydartdiags-0.0.4/docs/build/html/_static/copybutton.js +248 -0
  20. pydartdiags-0.0.4/docs/build/html/_static/copybutton_funcs.js +73 -0
  21. pydartdiags-0.0.4/docs/build/html/_static/custom.css +1 -0
  22. pydartdiags-0.0.4/docs/build/html/_static/doctools.js +156 -0
  23. pydartdiags-0.0.4/docs/build/html/_static/documentation_options.js +13 -0
  24. pydartdiags-0.0.4/docs/build/html/_static/file.png +0 -0
  25. pydartdiags-0.0.4/docs/build/html/_static/language_data.js +199 -0
  26. pydartdiags-0.0.4/docs/build/html/_static/minus.png +0 -0
  27. pydartdiags-0.0.4/docs/build/html/_static/plus.png +0 -0
  28. pydartdiags-0.0.4/docs/build/html/_static/pygments.css +84 -0
  29. pydartdiags-0.0.4/docs/build/html/_static/searchtools.js +620 -0
  30. pydartdiags-0.0.4/docs/build/html/_static/sphinx_highlight.js +154 -0
  31. pydartdiags-0.0.4/docs/build/html/genindex.html +297 -0
  32. pydartdiags-0.0.4/docs/build/html/index.html +131 -0
  33. pydartdiags-0.0.4/docs/build/html/objects.inv +0 -0
  34. pydartdiags-0.0.4/docs/build/html/obs_sequence.html +479 -0
  35. pydartdiags-0.0.4/docs/build/html/plots.html +240 -0
  36. pydartdiags-0.0.4/docs/build/html/py-modindex.html +137 -0
  37. pydartdiags-0.0.4/docs/build/html/quickstart.html +471 -0
  38. pydartdiags-0.0.4/docs/build/html/search.html +127 -0
  39. pydartdiags-0.0.4/docs/build/html/searchindex.js +1 -0
  40. pydartdiags-0.0.4/docs/conf.py +60 -0
  41. pydartdiags-0.0.4/docs/images/bias.png +0 -0
  42. pydartdiags-0.0.4/docs/images/rankhist.png +0 -0
  43. pydartdiags-0.0.4/docs/images/rmse.png +0 -0
  44. pydartdiags-0.0.4/docs/index.html +1 -0
  45. pydartdiags-0.0.4/docs/index.rst +40 -0
  46. pydartdiags-0.0.4/docs/make.bat +35 -0
  47. pydartdiags-0.0.4/docs/obs_sequence.rst +8 -0
  48. pydartdiags-0.0.4/docs/plots.rst +6 -0
  49. pydartdiags-0.0.4/docs/quickstart.rst +380 -0
  50. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/pyproject.toml +2 -1
  51. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/src/pydartdiags/obs_sequence/obs_sequence.py +71 -73
  52. pydartdiags-0.0.4/src/pydartdiags/plots/__init__.py +0 -0
  53. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/src/pydartdiags/plots/plots.py +25 -24
  54. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/.gitignore +0 -0
  55. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/LICENSE +0 -0
  56. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/README.md +0 -0
  57. /pydartdiags-0.0.3b0/src/pydartdiags/__init__.py → /pydartdiags-0.0.4/docs/.nojekyll +0 -0
  58. {pydartdiags-0.0.3b0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/bias.png +0 -0
  59. {pydartdiags-0.0.3b0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/rankhist.png +0 -0
  60. {pydartdiags-0.0.3b0/docs/images → pydartdiags-0.0.4/docs/build/html/_images}/rmse.png +0 -0
  61. {pydartdiags-0.0.3b0/src/pydartdiags/obs_sequence → pydartdiags-0.0.4/src/pydartdiags}/__init__.py +0 -0
  62. {pydartdiags-0.0.3b0/src/pydartdiags/plots → pydartdiags-0.0.4/src/pydartdiags/obs_sequence}/__init__.py +0 -0
  63. {pydartdiags-0.0.3b0 → pydartdiags-0.0.4}/src/pydartdiags/obs_sequence/composite_types.yaml +0 -0
  64. {pydartdiags-0.0.3b0 → 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.3b0
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
@@ -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
+