cloudnetpy-qc 1.28.2__tar.gz → 1.29.0__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.
Files changed (24) hide show
  1. {cloudnetpy_qc-1.28.2/cloudnetpy_qc.egg-info → cloudnetpy_qc-1.29.0}/PKG-INFO +1 -1
  2. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/coverage.py +1 -0
  3. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/quality.py +7 -1
  4. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/variables.py +51 -0
  5. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/version.py +2 -2
  6. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0/cloudnetpy_qc.egg-info}/PKG-INFO +1 -1
  7. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/LICENSE +0 -0
  8. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/MANIFEST.in +0 -0
  9. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/README.md +0 -0
  10. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/__init__.py +0 -0
  11. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/data/area-type-table.xml +0 -0
  12. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/data/cf-standard-name-table.xml +0 -0
  13. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/data/data_quality_config.ini +0 -0
  14. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/data/standardized-region-list.xml +0 -0
  15. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/py.typed +0 -0
  16. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc/utils.py +0 -0
  17. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc.egg-info/SOURCES.txt +0 -0
  18. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc.egg-info/dependency_links.txt +0 -0
  19. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc.egg-info/requires.txt +0 -0
  20. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/cloudnetpy_qc.egg-info/top_level.txt +0 -0
  21. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/pyproject.toml +0 -0
  22. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/setup.cfg +0 -0
  23. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/tests/test_qc.py +0 -0
  24. {cloudnetpy_qc-1.28.2 → cloudnetpy_qc-1.29.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy_qc
3
- Version: 1.28.2
3
+ Version: 1.29.0
4
4
  Summary: Quality control routines for CloudnetPy products
5
5
  Author-email: Finnish Meteorological Institute <actris-cloudnet@fmi.fi>
6
6
  License: MIT License
@@ -16,6 +16,7 @@ RESOLUTIONS = {
16
16
  Product.WEATHER_STATION: datetime.timedelta(minutes=10),
17
17
  Product.RAIN_GAUGE: datetime.timedelta(minutes=1),
18
18
  Product.DOPPLER_LIDAR_WIND: datetime.timedelta(hours=1.5),
19
+ Product.CPR_VALIDATION: datetime.timedelta(hours=1.5),
19
20
  }
20
21
  DEFAULT_RESOLUTION = datetime.timedelta(seconds=30)
21
22
 
@@ -224,7 +224,7 @@ class FindVariableOutliers(Test):
224
224
  self._add_info(msg)
225
225
 
226
226
  def _get_limits(self, key: str) -> tuple[float, float] | None:
227
- if key == "height" and self.product == Product.CPR:
227
+ if key == "height" and self.product in (Product.CPR, Product.CPR_VALIDATION):
228
228
  return None
229
229
  if key == "air_pressure":
230
230
  pressure = utils.calc_pressure(np.mean(self.nc["altitude"][:]))
@@ -294,6 +294,7 @@ class TestZenithAngle(Test):
294
294
  class TestDataCoverage(Test):
295
295
  name = "Data coverage"
296
296
  description = "Test that file contains enough data."
297
+ products = Product.all() - {Product.CPR_VALIDATION}
297
298
 
298
299
  def run(self):
299
300
  coverage, expected_res, actual_res = data_coverage(self.nc)
@@ -449,6 +450,10 @@ class TestGlobalAttributes(Test):
449
450
  )
450
451
  or (self._instrument_product(product) and name == "serial_number")
451
452
  or (product == Product.MWR_L1C and name in ("source_file_uuids",))
453
+ or (
454
+ product == Product.CPR_VALIDATION
455
+ and name in ("cpr_l1b_baseline", "cpr_l1b_filename")
456
+ )
452
457
  )
453
458
 
454
459
  def run(self):
@@ -661,6 +666,7 @@ class TestRangeAndHeight(Test):
661
666
  Product.MWR_L1C,
662
667
  Product.MWR,
663
668
  Product.CPR,
669
+ Product.CPR_VALIDATION,
664
670
  }
665
671
 
666
672
  def run(self):
@@ -41,6 +41,7 @@ class Product(Enum):
41
41
  L3_IWC = "l3-iwc"
42
42
  L3_LWC = "l3-lwc"
43
43
  CPR = "cpr-simulation"
44
+ CPR_VALIDATION = "cpr-validation"
44
45
 
45
46
  @classmethod
46
47
  def all(cls) -> set[Product]:
@@ -77,6 +78,7 @@ LEVELS: dict[Product, Level] = {
77
78
  Product.L3_IWC: "3",
78
79
  Product.L3_LWC: "3",
79
80
  Product.CPR: "3",
81
+ Product.CPR_VALIDATION: "3",
80
82
  }
81
83
 
82
84
 
@@ -905,6 +907,55 @@ VARIABLES = {
905
907
  required=[Product.CPR],
906
908
  ),
907
909
  # ----------------------------------------
910
+ # Required in cpr-validation Level 3 file
911
+ # ----------------------------------------
912
+ "time_cpr": Variable(
913
+ long_name="Time UTC",
914
+ units=time_units,
915
+ required=[Product.CPR_VALIDATION],
916
+ dtype=Dtype.DOUBLE,
917
+ ),
918
+ "echo_cpr": Variable(
919
+ long_name="Radar reflectivity factor",
920
+ required=[Product.CPR_VALIDATION],
921
+ units="dBZ",
922
+ ),
923
+ "v_cpr": Variable(
924
+ long_name="Doppler velocity",
925
+ units="m s-1",
926
+ required=[Product.CPR_VALIDATION],
927
+ ),
928
+ "latitude_cpr": Variable(
929
+ long_name="Latitude of CPR ground track",
930
+ units="degree_north",
931
+ required=[Product.CPR_VALIDATION],
932
+ ),
933
+ "longitude_cpr": Variable(
934
+ long_name="Longitude of CPR ground track",
935
+ units="degree_east",
936
+ required=[Product.CPR_VALIDATION],
937
+ ),
938
+ "distance": Variable(
939
+ long_name="Distance between site and CPR ground track",
940
+ units="km",
941
+ required=[Product.CPR_VALIDATION],
942
+ ),
943
+ "latitude_msi": Variable(
944
+ long_name="Latitude of MSI ground track",
945
+ units="degree_north",
946
+ required=[Product.CPR_VALIDATION],
947
+ ),
948
+ "longitude_msi": Variable(
949
+ long_name="Longitude of MSI ground track",
950
+ units="degree_east",
951
+ required=[Product.CPR_VALIDATION],
952
+ ),
953
+ "cloud_top_height": Variable(
954
+ long_name="Cloud top height",
955
+ units="m",
956
+ required=[Product.CPR_VALIDATION],
957
+ ),
958
+ # ----------------------------------------
908
959
  # Required in Epsilon (lidar)
909
960
  # ----------------------------------------
910
961
  "epsilon": Variable(
@@ -1,6 +1,6 @@
1
1
  """Cloudnetpy-QC version."""
2
2
 
3
3
  MAJOR = 1
4
- MINOR = 28
5
- PATCH = 2
4
+ MINOR = 29
5
+ PATCH = 0
6
6
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy_qc
3
- Version: 1.28.2
3
+ Version: 1.29.0
4
4
  Summary: Quality control routines for CloudnetPy products
5
5
  Author-email: Finnish Meteorological Institute <actris-cloudnet@fmi.fi>
6
6
  License: MIT License
File without changes
File without changes
File without changes