pydartdiags 0.0.4__tar.gz → 0.0.41__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 (73) hide show
  1. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/PKG-INFO +21 -15
  2. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/README.md +11 -8
  3. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/pyproject.toml +5 -6
  4. pydartdiags-0.0.41/setup.cfg +4 -0
  5. pydartdiags-0.0.41/setup.py +26 -0
  6. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/obs_sequence/obs_sequence.py +2 -1
  7. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/plots/plots.py +3 -1
  8. pydartdiags-0.0.41/src/pydartdiags.egg-info/PKG-INFO +399 -0
  9. pydartdiags-0.0.41/src/pydartdiags.egg-info/SOURCES.txt +16 -0
  10. pydartdiags-0.0.41/src/pydartdiags.egg-info/dependency_links.txt +1 -0
  11. pydartdiags-0.0.41/src/pydartdiags.egg-info/requires.txt +4 -0
  12. pydartdiags-0.0.41/src/pydartdiags.egg-info/top_level.txt +1 -0
  13. pydartdiags-0.0.41/tests/test_obs_sequence.py +29 -0
  14. pydartdiags-0.0.41/tests/test_plots.py +52 -0
  15. pydartdiags-0.0.4/.gitignore +0 -4
  16. pydartdiags-0.0.4/docs/.nojekyll +0 -0
  17. pydartdiags-0.0.4/docs/Makefile +0 -20
  18. pydartdiags-0.0.4/docs/build/doctrees/environment.pickle +0 -0
  19. pydartdiags-0.0.4/docs/build/doctrees/index.doctree +0 -0
  20. pydartdiags-0.0.4/docs/build/doctrees/obs_sequence.doctree +0 -0
  21. pydartdiags-0.0.4/docs/build/doctrees/plots.doctree +0 -0
  22. pydartdiags-0.0.4/docs/build/doctrees/quickstart.doctree +0 -0
  23. pydartdiags-0.0.4/docs/build/html/.buildinfo +0 -4
  24. pydartdiags-0.0.4/docs/build/html/_images/bias.png +0 -0
  25. pydartdiags-0.0.4/docs/build/html/_images/rankhist.png +0 -0
  26. pydartdiags-0.0.4/docs/build/html/_images/rmse.png +0 -0
  27. pydartdiags-0.0.4/docs/build/html/_sources/index.rst.txt +0 -40
  28. pydartdiags-0.0.4/docs/build/html/_sources/obs_sequence.rst.txt +0 -8
  29. pydartdiags-0.0.4/docs/build/html/_sources/plots.rst.txt +0 -6
  30. pydartdiags-0.0.4/docs/build/html/_sources/quickstart.rst.txt +0 -380
  31. pydartdiags-0.0.4/docs/build/html/_static/alabaster.css +0 -714
  32. pydartdiags-0.0.4/docs/build/html/_static/basic.css +0 -925
  33. pydartdiags-0.0.4/docs/build/html/_static/check-solid.svg +0 -4
  34. pydartdiags-0.0.4/docs/build/html/_static/clipboard.min.js +0 -7
  35. pydartdiags-0.0.4/docs/build/html/_static/copy-button.svg +0 -5
  36. pydartdiags-0.0.4/docs/build/html/_static/copybutton.css +0 -94
  37. pydartdiags-0.0.4/docs/build/html/_static/copybutton.js +0 -248
  38. pydartdiags-0.0.4/docs/build/html/_static/copybutton_funcs.js +0 -73
  39. pydartdiags-0.0.4/docs/build/html/_static/custom.css +0 -1
  40. pydartdiags-0.0.4/docs/build/html/_static/doctools.js +0 -156
  41. pydartdiags-0.0.4/docs/build/html/_static/documentation_options.js +0 -13
  42. pydartdiags-0.0.4/docs/build/html/_static/file.png +0 -0
  43. pydartdiags-0.0.4/docs/build/html/_static/language_data.js +0 -199
  44. pydartdiags-0.0.4/docs/build/html/_static/minus.png +0 -0
  45. pydartdiags-0.0.4/docs/build/html/_static/plus.png +0 -0
  46. pydartdiags-0.0.4/docs/build/html/_static/pygments.css +0 -84
  47. pydartdiags-0.0.4/docs/build/html/_static/searchtools.js +0 -620
  48. pydartdiags-0.0.4/docs/build/html/_static/sphinx_highlight.js +0 -154
  49. pydartdiags-0.0.4/docs/build/html/genindex.html +0 -297
  50. pydartdiags-0.0.4/docs/build/html/index.html +0 -131
  51. pydartdiags-0.0.4/docs/build/html/objects.inv +0 -0
  52. pydartdiags-0.0.4/docs/build/html/obs_sequence.html +0 -479
  53. pydartdiags-0.0.4/docs/build/html/plots.html +0 -240
  54. pydartdiags-0.0.4/docs/build/html/py-modindex.html +0 -137
  55. pydartdiags-0.0.4/docs/build/html/quickstart.html +0 -471
  56. pydartdiags-0.0.4/docs/build/html/search.html +0 -127
  57. pydartdiags-0.0.4/docs/build/html/searchindex.js +0 -1
  58. pydartdiags-0.0.4/docs/conf.py +0 -60
  59. pydartdiags-0.0.4/docs/images/bias.png +0 -0
  60. pydartdiags-0.0.4/docs/images/rankhist.png +0 -0
  61. pydartdiags-0.0.4/docs/images/rmse.png +0 -0
  62. pydartdiags-0.0.4/docs/index.html +0 -1
  63. pydartdiags-0.0.4/docs/index.rst +0 -40
  64. pydartdiags-0.0.4/docs/make.bat +0 -35
  65. pydartdiags-0.0.4/docs/obs_sequence.rst +0 -8
  66. pydartdiags-0.0.4/docs/plots.rst +0 -6
  67. pydartdiags-0.0.4/docs/quickstart.rst +0 -380
  68. pydartdiags-0.0.4/src/pydartdiags/obs_sequence/composite_types.yaml +0 -35
  69. pydartdiags-0.0.4/src/pydartdiags/plots/tests/test_rank_histogram.py +0 -18
  70. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/LICENSE +0 -0
  71. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/__init__.py +0 -0
  72. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/obs_sequence/__init__.py +0 -0
  73. {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/plots/__init__.py +0 -0
@@ -1,30 +1,36 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.1
2
2
  Name: pydartdiags
3
- Version: 0.0.4
3
+ Version: 0.0.41
4
4
  Summary: Observation Sequence Diagnostics for DART
5
+ Home-page: https://github.com/NCAR/pyDARTdiags.git
6
+ Author: Helen Kershaw
7
+ Author-email: Helen Kershaw <hkershaw@ucar.edu>
5
8
  Project-URL: Homepage, https://github.com/NCAR/pyDARTdiags.git
6
9
  Project-URL: Issues, https://github.com/NCAR/pyDARTdiags/issues
7
10
  Project-URL: Documentation, https://ncar.github.io/pyDARTdiags
8
- Author-email: Helen Kershaw <hkershaw@ucar.edu>
9
- License-File: LICENSE
11
+ Classifier: Programming Language :: Python :: 3
10
12
  Classifier: License :: OSI Approved :: Apache Software License
11
13
  Classifier: Operating System :: OS Independent
12
- Classifier: Programming Language :: Python :: 3
13
14
  Requires-Python: >=3.8
14
- Requires-Dist: numpy>=1.26
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
15
17
  Requires-Dist: pandas>=2.2.0
18
+ Requires-Dist: numpy>=1.26
16
19
  Requires-Dist: plotly>=5.22.0
17
- Description-Content-Type: text/markdown
20
+ Requires-Dist: pyyaml>=6.0.2
18
21
 
19
22
  # pyDARTdiags
20
23
 
21
- pyDARTdiags is a python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
24
+ pyDARTdiags is a Python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
22
25
 
23
26
  pyDARTdiags is under initial development, so please use caution.
24
27
  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).
25
28
 
26
29
 
27
- pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
30
+ pyDARTdiags can be installed through pip: https://pypi.org/project/pydartdiags/
31
+ Documenation : https://ncar.github.io/pyDARTdiags/
32
+
33
+ We recommend installing pydartdiags in a virtual enviroment:
28
34
 
29
35
 
30
36
  ```
@@ -36,14 +42,14 @@ pip install pydartdiags
36
42
  ## Example importing the obs\_sequence and plots modules
37
43
 
38
44
  ```python
39
- from pydartdiags.obs_sequence import obs_sequence as obs_seq
45
+ from pydartdiags.obs_sequence import obs_sequence as obsq
40
46
  from pydartdiags.plots import plots
41
47
  ```
42
48
 
43
49
  ## Examining the dataframe
44
50
 
45
51
  ```python
46
- obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
52
+ obs_seq = obsq.obs_sequence('obs_seq.final.ascii')
47
53
  obs_seq.df.head()
48
54
  ```
49
55
 
@@ -204,7 +210,7 @@ obs_seq.df.head()
204
210
  Find the numeber of assimilated (used) observations vs. possible observations by type
205
211
 
206
212
  ```python
207
- obs_seq.possible_vs_used(obs_seq.df)
213
+ obsq.possible_vs_used(obs_seq.df)
208
214
  ```
209
215
 
210
216
  <table border="1" class="dataframe">
@@ -361,7 +367,7 @@ obs_seq.possible_vs_used(obs_seq.df)
361
367
  * plot the rank histogram
362
368
 
363
369
  ```python
364
- df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
370
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)
365
371
  plots.plot_rank_histogram(df_qc0)
366
372
  ```
367
373
  ![Rank Histogram](docs/images/rankhist.png)
@@ -377,7 +383,7 @@ plots.plot_rank_histogram(df_qc0)
377
383
  hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
378
384
  plevels = [i * 100 for i in hPalevels]
379
385
 
380
- df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
386
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
381
387
  df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
382
388
  ```
383
389
 
@@ -390,4 +396,4 @@ Contributions are welcome! If you have a feature request, bug report, or a sugge
390
396
 
391
397
  ## License
392
398
 
393
- DartLabPlot 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](https://www.apache.org/licenses/LICENSE-2.0).
399
+ 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](https://www.apache.org/licenses/LICENSE-2.0).
@@ -1,12 +1,15 @@
1
1
  # pyDARTdiags
2
2
 
3
- pyDARTdiags 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
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
8
 
9
- pyDARTdiags can be installed through pip. We recommend installing pydartdiags in a virtual enviroment:
9
+ pyDARTdiags can be installed through pip: https://pypi.org/project/pydartdiags/
10
+ Documenation : https://ncar.github.io/pyDARTdiags/
11
+
12
+ We recommend installing pydartdiags in a virtual enviroment:
10
13
 
11
14
 
12
15
  ```
@@ -18,14 +21,14 @@ pip install pydartdiags
18
21
  ## Example importing the obs\_sequence and plots modules
19
22
 
20
23
  ```python
21
- from pydartdiags.obs_sequence import obs_sequence as obs_seq
24
+ from pydartdiags.obs_sequence import obs_sequence as obsq
22
25
  from pydartdiags.plots import plots
23
26
  ```
24
27
 
25
28
  ## Examining the dataframe
26
29
 
27
30
  ```python
28
- obs_seq = obs_seq.obs_sequence('obs_seq.final.ascii')
31
+ obs_seq = obsq.obs_sequence('obs_seq.final.ascii')
29
32
  obs_seq.df.head()
30
33
  ```
31
34
 
@@ -186,7 +189,7 @@ obs_seq.df.head()
186
189
  Find the numeber of assimilated (used) observations vs. possible observations by type
187
190
 
188
191
  ```python
189
- obs_seq.possible_vs_used(obs_seq.df)
192
+ obsq.possible_vs_used(obs_seq.df)
190
193
  ```
191
194
 
192
195
  <table border="1" class="dataframe">
@@ -343,7 +346,7 @@ obs_seq.possible_vs_used(obs_seq.df)
343
346
  * plot the rank histogram
344
347
 
345
348
  ```python
346
- df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0)
349
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)
347
350
  plots.plot_rank_histogram(df_qc0)
348
351
  ```
349
352
  ![Rank Histogram](docs/images/rankhist.png)
@@ -359,7 +362,7 @@ plots.plot_rank_histogram(df_qc0)
359
362
  hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
360
363
  plevels = [i * 100 for i in hPalevels]
361
364
 
362
- df_qc0 = obs_seq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
365
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
363
366
  df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
364
367
  ```
365
368
 
@@ -372,4 +375,4 @@ Contributions are welcome! If you have a feature request, bug report, or a sugge
372
375
 
373
376
  ## License
374
377
 
375
- DartLabPlot 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](https://www.apache.org/licenses/LICENSE-2.0).
378
+ 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](https://www.apache.org/licenses/LICENSE-2.0).
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["hatchling"]
3
- build-backend = "hatchling.build"
2
+ requires = ["setuptools", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pydartdiags"
7
- version = "0.0.4"
7
+ version = "0.0.41"
8
8
  authors = [
9
9
  { name="Helen Kershaw", email="hkershaw@ucar.edu" },
10
10
  ]
@@ -19,7 +19,8 @@ classifiers = [
19
19
  dependencies = [
20
20
  "pandas>=2.2.0",
21
21
  "numpy>=1.26",
22
- "plotly>=5.22.0"
22
+ "plotly>=5.22.0",
23
+ "pyyaml>=6.0.2"
23
24
  ]
24
25
 
25
26
  [project.urls]
@@ -27,5 +28,3 @@ Homepage = "https://github.com/NCAR/pyDARTdiags.git"
27
28
  Issues = "https://github.com/NCAR/pyDARTdiags/issues"
28
29
  Documentation = "https://ncar.github.io/pyDARTdiags"
29
30
 
30
- [tool.hatch.build.targets.wheel]
31
- packages = ["src/pydartdiags"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,26 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ setup(
4
+ name="pydartdiags",
5
+ version="0.0.41",
6
+ packages=find_packages(where="src"),
7
+ package_dir={"": "src"},
8
+ author="Helen Kershaw",
9
+ author_email="hkershaw@ucar.edu",
10
+ description="Observation Sequence Diagnostics for DART",
11
+ long_description=open("README.md").read(),
12
+ long_description_content_type="text/markdown",
13
+ url="https://github.com/NCAR/pyDARTdiags.git",
14
+ classifiers=[
15
+ "Programming Language :: Python :: 3",
16
+ "License :: OSI Approved :: Apache Software License",
17
+ "Operating System :: OS Independent",
18
+ ],
19
+ python_requires=">=3.8",
20
+ install_requires=[
21
+ "pandas>=2.2.0",
22
+ "numpy>=1.26",
23
+ "plotly>=5.22.0",
24
+ "pyyaml>=6.0.2"
25
+ ],
26
+ )
@@ -60,7 +60,8 @@ class obs_sequence:
60
60
  'AIRS observation',
61
61
  'GTSPP observation',
62
62
  'SST observation',
63
- 'observations']
63
+ 'observations',
64
+ 'WOD observation']
64
65
 
65
66
  def __init__(self, file):
66
67
  self.loc_mod = 'None'
@@ -29,7 +29,7 @@ def calculate_rank(df):
29
29
 
30
30
  Parameters:
31
31
  df (pd.DataFrame): A DataFrame with columns for mean, standard deviation, observed values,
32
- ensemble size, and observation type. The DataFrame should have one row per observation.
32
+ ensemble size, and observation type. The DataFrame should have one row per observation.
33
33
 
34
34
  Returns:
35
35
  tuple: A tuple containing the rank array, ensemble size, and a result DataFrame. The result
@@ -125,7 +125,9 @@ def mean_then_sqrt(x):
125
125
 
126
126
  Raises:
127
127
  TypeError: If the input is not an array-like object containing numeric values.
128
+ ValueError: If the input array is empty.
128
129
  """
130
+
129
131
  return np.sqrt(np.mean(x))
130
132
 
131
133
  def rmse_bias(df):
@@ -0,0 +1,399 @@
1
+ Metadata-Version: 2.1
2
+ Name: pydartdiags
3
+ Version: 0.0.41
4
+ Summary: Observation Sequence Diagnostics for DART
5
+ Home-page: https://github.com/NCAR/pyDARTdiags.git
6
+ Author: Helen Kershaw
7
+ Author-email: Helen Kershaw <hkershaw@ucar.edu>
8
+ Project-URL: Homepage, https://github.com/NCAR/pyDARTdiags.git
9
+ Project-URL: Issues, https://github.com/NCAR/pyDARTdiags/issues
10
+ Project-URL: Documentation, https://ncar.github.io/pyDARTdiags
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Operating System :: OS Independent
14
+ Requires-Python: >=3.8
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: pandas>=2.2.0
18
+ Requires-Dist: numpy>=1.26
19
+ Requires-Dist: plotly>=5.22.0
20
+ Requires-Dist: pyyaml>=6.0.2
21
+
22
+ # pyDARTdiags
23
+
24
+ pyDARTdiags is a Python library for obsevation space diagnostics for the Data Assimilation Research Testbed ([DART](https://github.com/NCAR/DART)).
25
+
26
+ pyDARTdiags is under initial development, so please use caution.
27
+ 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).
28
+
29
+
30
+ pyDARTdiags can be installed through pip: https://pypi.org/project/pydartdiags/
31
+ Documenation : https://ncar.github.io/pyDARTdiags/
32
+
33
+ We recommend installing pydartdiags in a virtual enviroment:
34
+
35
+
36
+ ```
37
+ python3 -m venv dartdiags
38
+ source dartdiags/bin/activate
39
+ pip install pydartdiags
40
+ ```
41
+
42
+ ## Example importing the obs\_sequence and plots modules
43
+
44
+ ```python
45
+ from pydartdiags.obs_sequence import obs_sequence as obsq
46
+ from pydartdiags.plots import plots
47
+ ```
48
+
49
+ ## Examining the dataframe
50
+
51
+ ```python
52
+ obs_seq = obsq.obs_sequence('obs_seq.final.ascii')
53
+ obs_seq.df.head()
54
+ ```
55
+
56
+ <table border="1" class="dataframe">
57
+ <thead>
58
+ <tr style="text-align: right;">
59
+ <th></th>
60
+ <th>obs_num</th>
61
+ <th>observation</th>
62
+ <th>prior_ensemble_mean</th>
63
+ <th>prior_ensemble_spread</th>
64
+ <th>prior_ensemble_member_1</th>
65
+ <th>prior_ensemble_member_2</th>
66
+ <th>prior_ensemble_member_3</th>
67
+ <th>prior_ensemble_member_4</th>
68
+ <th>prior_ensemble_member_5</th>
69
+ <th>prior_ensemble_member_6</th>
70
+ <th>...</th>
71
+ <th>latitude</th>
72
+ <th>vertical</th>
73
+ <th>vert_unit</th>
74
+ <th>type</th>
75
+ <th>seconds</th>
76
+ <th>days</th>
77
+ <th>time</th>
78
+ <th>obs_err_var</th>
79
+ <th>bias</th>
80
+ <th>sq_err</th>
81
+ </tr>
82
+ </thead>
83
+ <tbody>
84
+ <tr>
85
+ <th>0</th>
86
+ <td>1</td>
87
+ <td>230.16</td>
88
+ <td>231.310652</td>
89
+ <td>0.405191</td>
90
+ <td>231.304725</td>
91
+ <td>231.562874</td>
92
+ <td>231.333915</td>
93
+ <td>231.297690</td>
94
+ <td>232.081416</td>
95
+ <td>231.051063</td>
96
+ <td>...</td>
97
+ <td>0.012188</td>
98
+ <td>23950.0</td>
99
+ <td>pressure (Pa)</td>
100
+ <td>ACARS_TEMPERATURE</td>
101
+ <td>75603</td>
102
+ <td>153005</td>
103
+ <td>2019-12-01 21:00:03</td>
104
+ <td>1.00</td>
105
+ <td>1.150652</td>
106
+ <td>1.324001</td>
107
+ </tr>
108
+ <tr>
109
+ <th>1</th>
110
+ <td>2</td>
111
+ <td>18.40</td>
112
+ <td>15.720527</td>
113
+ <td>0.630827</td>
114
+ <td>14.217207</td>
115
+ <td>15.558196</td>
116
+ <td>15.805599</td>
117
+ <td>16.594644</td>
118
+ <td>14.877743</td>
119
+ <td>16.334438</td>
120
+ <td>...</td>
121
+ <td>0.012188</td>
122
+ <td>23950.0</td>
123
+ <td>pressure (Pa)</td>
124
+ <td>ACARS_U_WIND_COMPONENT</td>
125
+ <td>75603</td>
126
+ <td>153005</td>
127
+ <td>2019-12-01 21:00:03</td>
128
+ <td>6.25</td>
129
+ <td>-2.679473</td>
130
+ <td>7.179578</td>
131
+ </tr>
132
+ <tr>
133
+ <th>2</th>
134
+ <td>3</td>
135
+ <td>1.60</td>
136
+ <td>-4.932073</td>
137
+ <td>0.825899</td>
138
+ <td>-5.270562</td>
139
+ <td>-5.955998</td>
140
+ <td>-4.209766</td>
141
+ <td>-5.105016</td>
142
+ <td>-4.669405</td>
143
+ <td>-4.365305</td>
144
+ <td>...</td>
145
+ <td>0.012188</td>
146
+ <td>23950.0</td>
147
+ <td>pressure (Pa)</td>
148
+ <td>ACARS_V_WIND_COMPONENT</td>
149
+ <td>75603</td>
150
+ <td>153005</td>
151
+ <td>2019-12-01 21:00:03</td>
152
+ <td>6.25</td>
153
+ <td>-6.532073</td>
154
+ <td>42.667980</td>
155
+ </tr>
156
+ <tr>
157
+ <th>3</th>
158
+ <td>4</td>
159
+ <td>264.16</td>
160
+ <td>264.060532</td>
161
+ <td>0.035584</td>
162
+ <td>264.107192</td>
163
+ <td>264.097270</td>
164
+ <td>264.073212</td>
165
+ <td>264.047718</td>
166
+ <td>264.074140</td>
167
+ <td>264.019895</td>
168
+ <td>...</td>
169
+ <td>0.010389</td>
170
+ <td>56260.0</td>
171
+ <td>pressure (Pa)</td>
172
+ <td>ACARS_TEMPERATURE</td>
173
+ <td>75603</td>
174
+ <td>153005</td>
175
+ <td>2019-12-01 21:00:03</td>
176
+ <td>1.00</td>
177
+ <td>-0.099468</td>
178
+ <td>0.009894</td>
179
+ </tr>
180
+ <tr>
181
+ <th>4</th>
182
+ <td>5</td>
183
+ <td>11.60</td>
184
+ <td>10.134115</td>
185
+ <td>0.063183</td>
186
+ <td>10.067956</td>
187
+ <td>10.078798</td>
188
+ <td>10.120263</td>
189
+ <td>10.084885</td>
190
+ <td>10.135112</td>
191
+ <td>10.140610</td>
192
+ <td>...</td>
193
+ <td>0.010389</td>
194
+ <td>56260.0</td>
195
+ <td>pressure (Pa)</td>
196
+ <td>ACARS_U_WIND_COMPONENT</td>
197
+ <td>75603</td>
198
+ <td>153005</td>
199
+ <td>2019-12-01 21:00:03</td>
200
+ <td>6.25</td>
201
+ <td>-1.465885</td>
202
+ <td>2.148818</td>
203
+ </tr>
204
+ </tbody>
205
+ </table>
206
+ <p>5 rows × 97 columns</p>
207
+ </div>
208
+
209
+
210
+ Find the numeber of assimilated (used) observations vs. possible observations by type
211
+
212
+ ```python
213
+ obsq.possible_vs_used(obs_seq.df)
214
+ ```
215
+
216
+ <table border="1" class="dataframe">
217
+ <thead>
218
+ <tr style="text-align: right;">
219
+ <th></th>
220
+ <th>type</th>
221
+ <th>possible</th>
222
+ <th>used</th>
223
+ </tr>
224
+ </thead>
225
+ <tbody>
226
+ <tr>
227
+ <th>0</th>
228
+ <td>ACARS_TEMPERATURE</td>
229
+ <td>175429</td>
230
+ <td>128040</td>
231
+ </tr>
232
+ <tr>
233
+ <th>1</th>
234
+ <td>ACARS_U_WIND_COMPONENT</td>
235
+ <td>176120</td>
236
+ <td>126946</td>
237
+ </tr>
238
+ <tr>
239
+ <th>2</th>
240
+ <td>ACARS_V_WIND_COMPONENT</td>
241
+ <td>176120</td>
242
+ <td>127834</td>
243
+ </tr>
244
+ <tr>
245
+ <th>3</th>
246
+ <td>AIRCRAFT_TEMPERATURE</td>
247
+ <td>21335</td>
248
+ <td>13663</td>
249
+ </tr>
250
+ <tr>
251
+ <th>4</th>
252
+ <td>AIRCRAFT_U_WIND_COMPONENT</td>
253
+ <td>21044</td>
254
+ <td>13694</td>
255
+ </tr>
256
+ <tr>
257
+ <th>5</th>
258
+ <td>AIRCRAFT_V_WIND_COMPONENT</td>
259
+ <td>21044</td>
260
+ <td>13642</td>
261
+ </tr>
262
+ <tr>
263
+ <th>6</th>
264
+ <td>AIRS_SPECIFIC_HUMIDITY</td>
265
+ <td>6781</td>
266
+ <td>0</td>
267
+ </tr>
268
+ <tr>
269
+ <th>7</th>
270
+ <td>AIRS_TEMPERATURE</td>
271
+ <td>19583</td>
272
+ <td>7901</td>
273
+ </tr>
274
+ <tr>
275
+ <th>8</th>
276
+ <td>GPSRO_REFRACTIVITY</td>
277
+ <td>81404</td>
278
+ <td>54626</td>
279
+ </tr>
280
+ <tr>
281
+ <th>9</th>
282
+ <td>LAND_SFC_ALTIMETER</td>
283
+ <td>21922</td>
284
+ <td>0</td>
285
+ </tr>
286
+ <tr>
287
+ <th>10</th>
288
+ <td>MARINE_SFC_ALTIMETER</td>
289
+ <td>9987</td>
290
+ <td>0</td>
291
+ </tr>
292
+ <tr>
293
+ <th>11</th>
294
+ <td>MARINE_SFC_SPECIFIC_HUMIDITY</td>
295
+ <td>4196</td>
296
+ <td>0</td>
297
+ </tr>
298
+ <tr>
299
+ <th>12</th>
300
+ <td>MARINE_SFC_TEMPERATURE</td>
301
+ <td>8646</td>
302
+ <td>0</td>
303
+ </tr>
304
+ <tr>
305
+ <th>13</th>
306
+ <td>MARINE_SFC_U_WIND_COMPONENT</td>
307
+ <td>8207</td>
308
+ <td>0</td>
309
+ </tr>
310
+ <tr>
311
+ <th>14</th>
312
+ <td>MARINE_SFC_V_WIND_COMPONENT</td>
313
+ <td>8207</td>
314
+ <td>0</td>
315
+ </tr>
316
+ <tr>
317
+ <th>15</th>
318
+ <td>RADIOSONDE_SPECIFIC_HUMIDITY</td>
319
+ <td>14272</td>
320
+ <td>0</td>
321
+ </tr>
322
+ <tr>
323
+ <th>16</th>
324
+ <td>RADIOSONDE_SURFACE_ALTIMETER</td>
325
+ <td>601</td>
326
+ <td>0</td>
327
+ </tr>
328
+ <tr>
329
+ <th>17</th>
330
+ <td>RADIOSONDE_TEMPERATURE</td>
331
+ <td>29275</td>
332
+ <td>22228</td>
333
+ </tr>
334
+ <tr>
335
+ <th>18</th>
336
+ <td>RADIOSONDE_U_WIND_COMPONENT</td>
337
+ <td>36214</td>
338
+ <td>27832</td>
339
+ </tr>
340
+ <tr>
341
+ <th>19</th>
342
+ <td>RADIOSONDE_V_WIND_COMPONENT</td>
343
+ <td>36214</td>
344
+ <td>27975</td>
345
+ </tr>
346
+ <tr>
347
+ <th>20</th>
348
+ <td>SAT_U_WIND_COMPONENT</td>
349
+ <td>107212</td>
350
+ <td>82507</td>
351
+ </tr>
352
+ <tr>
353
+ <th>21</th>
354
+ <td>SAT_V_WIND_COMPONENT</td>
355
+ <td>107212</td>
356
+ <td>82647</td>
357
+ </tr>
358
+ </tbody>
359
+ </table>
360
+
361
+
362
+ ## Example plotting
363
+
364
+ ### rank histogram
365
+
366
+ * Select only observations that were assimliated (QC === 0).
367
+ * plot the rank histogram
368
+
369
+ ```python
370
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)
371
+ plots.plot_rank_histogram(df_qc0)
372
+ ```
373
+ ![Rank Histogram](docs/images/rankhist.png)
374
+
375
+
376
+ ### plot profile of RMSE and Bias
377
+
378
+ * Chose levels
379
+ * Select only observations that were assimliated (QC === 0).
380
+ * plot the profiles
381
+
382
+ ```python
383
+ hPalevels = [0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 400.0, 500.0, 700, 850, 925, 1000]# float("inf")] # Pa?
384
+ plevels = [i * 100 for i in hPalevels]
385
+
386
+ df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0) # only qc 0
387
+ df_profile, figrmse, figbias = plots.plot_profile(df_qc0, plevels)
388
+ ```
389
+
390
+ ![RMSE Plot](docs/images/rmse.png)
391
+
392
+ ![Bias Plot](docs/images/bias.png)
393
+
394
+ ## Contributing
395
+ Contributions are welcome! If you have a feature request, bug report, or a suggestion, please open an issue on our GitHub repository.
396
+
397
+ ## License
398
+
399
+ 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](https://www.apache.org/licenses/LICENSE-2.0).
@@ -0,0 +1,16 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ src/pydartdiags/__init__.py
6
+ src/pydartdiags.egg-info/PKG-INFO
7
+ src/pydartdiags.egg-info/SOURCES.txt
8
+ src/pydartdiags.egg-info/dependency_links.txt
9
+ src/pydartdiags.egg-info/requires.txt
10
+ src/pydartdiags.egg-info/top_level.txt
11
+ src/pydartdiags/obs_sequence/__init__.py
12
+ src/pydartdiags/obs_sequence/obs_sequence.py
13
+ src/pydartdiags/plots/__init__.py
14
+ src/pydartdiags/plots/plots.py
15
+ tests/test_obs_sequence.py
16
+ tests/test_plots.py
@@ -0,0 +1,4 @@
1
+ pandas>=2.2.0
2
+ numpy>=1.26
3
+ plotly>=5.22.0
4
+ pyyaml>=6.0.2
@@ -0,0 +1 @@
1
+ pydartdiags