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.
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/PKG-INFO +21 -15
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/README.md +11 -8
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/pyproject.toml +5 -6
- pydartdiags-0.0.41/setup.cfg +4 -0
- pydartdiags-0.0.41/setup.py +26 -0
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/obs_sequence/obs_sequence.py +2 -1
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/plots/plots.py +3 -1
- pydartdiags-0.0.41/src/pydartdiags.egg-info/PKG-INFO +399 -0
- pydartdiags-0.0.41/src/pydartdiags.egg-info/SOURCES.txt +16 -0
- pydartdiags-0.0.41/src/pydartdiags.egg-info/dependency_links.txt +1 -0
- pydartdiags-0.0.41/src/pydartdiags.egg-info/requires.txt +4 -0
- pydartdiags-0.0.41/src/pydartdiags.egg-info/top_level.txt +1 -0
- pydartdiags-0.0.41/tests/test_obs_sequence.py +29 -0
- pydartdiags-0.0.41/tests/test_plots.py +52 -0
- pydartdiags-0.0.4/.gitignore +0 -4
- pydartdiags-0.0.4/docs/.nojekyll +0 -0
- pydartdiags-0.0.4/docs/Makefile +0 -20
- pydartdiags-0.0.4/docs/build/doctrees/environment.pickle +0 -0
- pydartdiags-0.0.4/docs/build/doctrees/index.doctree +0 -0
- pydartdiags-0.0.4/docs/build/doctrees/obs_sequence.doctree +0 -0
- pydartdiags-0.0.4/docs/build/doctrees/plots.doctree +0 -0
- pydartdiags-0.0.4/docs/build/doctrees/quickstart.doctree +0 -0
- pydartdiags-0.0.4/docs/build/html/.buildinfo +0 -4
- pydartdiags-0.0.4/docs/build/html/_images/bias.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_images/rankhist.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_images/rmse.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_sources/index.rst.txt +0 -40
- pydartdiags-0.0.4/docs/build/html/_sources/obs_sequence.rst.txt +0 -8
- pydartdiags-0.0.4/docs/build/html/_sources/plots.rst.txt +0 -6
- pydartdiags-0.0.4/docs/build/html/_sources/quickstart.rst.txt +0 -380
- pydartdiags-0.0.4/docs/build/html/_static/alabaster.css +0 -714
- pydartdiags-0.0.4/docs/build/html/_static/basic.css +0 -925
- pydartdiags-0.0.4/docs/build/html/_static/check-solid.svg +0 -4
- pydartdiags-0.0.4/docs/build/html/_static/clipboard.min.js +0 -7
- pydartdiags-0.0.4/docs/build/html/_static/copy-button.svg +0 -5
- pydartdiags-0.0.4/docs/build/html/_static/copybutton.css +0 -94
- pydartdiags-0.0.4/docs/build/html/_static/copybutton.js +0 -248
- pydartdiags-0.0.4/docs/build/html/_static/copybutton_funcs.js +0 -73
- pydartdiags-0.0.4/docs/build/html/_static/custom.css +0 -1
- pydartdiags-0.0.4/docs/build/html/_static/doctools.js +0 -156
- pydartdiags-0.0.4/docs/build/html/_static/documentation_options.js +0 -13
- pydartdiags-0.0.4/docs/build/html/_static/file.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_static/language_data.js +0 -199
- pydartdiags-0.0.4/docs/build/html/_static/minus.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_static/plus.png +0 -0
- pydartdiags-0.0.4/docs/build/html/_static/pygments.css +0 -84
- pydartdiags-0.0.4/docs/build/html/_static/searchtools.js +0 -620
- pydartdiags-0.0.4/docs/build/html/_static/sphinx_highlight.js +0 -154
- pydartdiags-0.0.4/docs/build/html/genindex.html +0 -297
- pydartdiags-0.0.4/docs/build/html/index.html +0 -131
- pydartdiags-0.0.4/docs/build/html/objects.inv +0 -0
- pydartdiags-0.0.4/docs/build/html/obs_sequence.html +0 -479
- pydartdiags-0.0.4/docs/build/html/plots.html +0 -240
- pydartdiags-0.0.4/docs/build/html/py-modindex.html +0 -137
- pydartdiags-0.0.4/docs/build/html/quickstart.html +0 -471
- pydartdiags-0.0.4/docs/build/html/search.html +0 -127
- pydartdiags-0.0.4/docs/build/html/searchindex.js +0 -1
- pydartdiags-0.0.4/docs/conf.py +0 -60
- pydartdiags-0.0.4/docs/images/bias.png +0 -0
- pydartdiags-0.0.4/docs/images/rankhist.png +0 -0
- pydartdiags-0.0.4/docs/images/rmse.png +0 -0
- pydartdiags-0.0.4/docs/index.html +0 -1
- pydartdiags-0.0.4/docs/index.rst +0 -40
- pydartdiags-0.0.4/docs/make.bat +0 -35
- pydartdiags-0.0.4/docs/obs_sequence.rst +0 -8
- pydartdiags-0.0.4/docs/plots.rst +0 -6
- pydartdiags-0.0.4/docs/quickstart.rst +0 -380
- pydartdiags-0.0.4/src/pydartdiags/obs_sequence/composite_types.yaml +0 -35
- pydartdiags-0.0.4/src/pydartdiags/plots/tests/test_rank_histogram.py +0 -18
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/LICENSE +0 -0
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/__init__.py +0 -0
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/obs_sequence/__init__.py +0 -0
- {pydartdiags-0.0.4 → pydartdiags-0.0.41}/src/pydartdiags/plots/__init__.py +0 -0
|
@@ -1,30 +1,36 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: pydartdiags
|
|
3
|
-
Version: 0.0.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
18
21
|
|
|
19
22
|
# pyDARTdiags
|
|
20
23
|
|
|
21
|
-
pyDARTdiags is a
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
370
|
+
df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)
|
|
365
371
|
plots.plot_rank_histogram(df_qc0)
|
|
366
372
|
```
|
|
367
373
|

|
|
@@ -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 =
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
349
|
+
df_qc0 = obsq.select_by_dart_qc(obs_seq.df, 0)
|
|
347
350
|
plots.plot_rank_histogram(df_qc0)
|
|
348
351
|
```
|
|
349
352
|

|
|
@@ -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 =
|
|
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
|
-
|
|
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 = ["
|
|
3
|
-
build-backend = "
|
|
2
|
+
requires = ["setuptools", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pydartdiags"
|
|
7
|
-
version = "0.0.
|
|
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,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
|
+
)
|
|
@@ -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
|
-
|
|
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
|
+

|
|
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
|
+

|
|
391
|
+
|
|
392
|
+

|
|
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 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pydartdiags
|