cloudnetpy-qc 1.30.0__py3-none-any.whl → 1.30.2__py3-none-any.whl

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.
cloudnetpy_qc/quality.py CHANGED
@@ -224,7 +224,11 @@ 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 in (Product.CPR, Product.CPR_VALIDATION):
227
+ if key == "height" and self.product in (
228
+ Product.CPR,
229
+ Product.CPR_VALIDATION,
230
+ Product.CPR_TC_VALIDATION,
231
+ ):
228
232
  return None
229
233
  if key == "air_pressure":
230
234
  pressure = utils.calc_pressure(np.mean(self.nc["altitude"][:]))
@@ -294,7 +298,7 @@ class TestZenithAngle(Test):
294
298
  class TestDataCoverage(Test):
295
299
  name = "Data coverage"
296
300
  description = "Test that file contains enough data."
297
- products = Product.all() - {Product.CPR_VALIDATION}
301
+ products = Product.all() - {Product.CPR_VALIDATION, Product.CPR_TC_VALIDATION}
298
302
 
299
303
  def run(self):
300
304
  coverage, expected_res, actual_res = data_coverage(self.nc)
@@ -454,6 +458,10 @@ class TestGlobalAttributes(Test):
454
458
  product == Product.CPR_VALIDATION
455
459
  and name in ("cpr_l1b_baseline", "cpr_l1b_filename")
456
460
  )
461
+ or (
462
+ product == Product.CPR_TC_VALIDATION
463
+ and name in ("cpr_2a_baseline", "cpr_2a_filename")
464
+ )
457
465
  )
458
466
 
459
467
  def run(self):
@@ -667,6 +675,7 @@ class TestRangeAndHeight(Test):
667
675
  Product.MWR,
668
676
  Product.CPR,
669
677
  Product.CPR_VALIDATION,
678
+ Product.CPR_TC_VALIDATION,
670
679
  }
671
680
 
672
681
  def run(self):
@@ -702,10 +711,10 @@ class TestCompression(Test):
702
711
  if not var.dimensions:
703
712
  continue
704
713
  filters = var.filters()
705
- if not filters["shuffle"]:
706
- self._add_warning(f"Variable '{key}' is not shuffled.")
707
714
  if not filters["zlib"]:
708
715
  self._add_warning(f"Variable '{key}' is not compressed.")
716
+ elif not filters["shuffle"]:
717
+ self._add_warning(f"Variable '{key}' is not shuffled.")
709
718
 
710
719
 
711
720
  class TestBrightnessTemperature(Test):
@@ -42,6 +42,7 @@ class Product(Enum):
42
42
  L3_LWC = "l3-lwc"
43
43
  CPR = "cpr-simulation"
44
44
  CPR_VALIDATION = "cpr-validation"
45
+ CPR_TC_VALIDATION = "cpr-tc-validation"
45
46
 
46
47
  @classmethod
47
48
  def all(cls) -> set[Product]:
@@ -79,6 +80,7 @@ LEVELS: dict[Product, Level] = {
79
80
  Product.L3_LWC: "3",
80
81
  Product.CPR: "3",
81
82
  Product.CPR_VALIDATION: "3",
83
+ Product.CPR_TC_VALIDATION: "3",
82
84
  }
83
85
 
84
86
 
@@ -912,7 +914,7 @@ VARIABLES = {
912
914
  "time_cpr": Variable(
913
915
  long_name="Time UTC",
914
916
  units=time_units,
915
- required=[Product.CPR_VALIDATION],
917
+ required=[Product.CPR_VALIDATION, Product.CPR_TC_VALIDATION],
916
918
  dtype=Dtype.DOUBLE,
917
919
  ),
918
920
  "echo_cpr": Variable(
@@ -928,17 +930,17 @@ VARIABLES = {
928
930
  "latitude_cpr": Variable(
929
931
  long_name="Latitude of CPR ground track",
930
932
  units="degree_north",
931
- required=[Product.CPR_VALIDATION],
933
+ required=[Product.CPR_VALIDATION, Product.CPR_TC_VALIDATION],
932
934
  ),
933
935
  "longitude_cpr": Variable(
934
936
  long_name="Longitude of CPR ground track",
935
937
  units="degree_east",
936
- required=[Product.CPR_VALIDATION],
938
+ required=[Product.CPR_VALIDATION, Product.CPR_TC_VALIDATION],
937
939
  ),
938
940
  "distance": Variable(
939
941
  long_name="Distance between site and CPR ground track",
940
942
  units="km",
941
- required=[Product.CPR_VALIDATION],
943
+ required=[Product.CPR_VALIDATION, Product.CPR_TC_VALIDATION],
942
944
  ),
943
945
  "latitude_msi": Variable(
944
946
  long_name="Latitude of MSI ground track",
@@ -955,6 +957,12 @@ VARIABLES = {
955
957
  units="m",
956
958
  required=[Product.CPR_VALIDATION],
957
959
  ),
960
+ "target_classification_cpr": Variable(
961
+ long_name="CPR target classification",
962
+ units="1",
963
+ dtype=Dtype.INT,
964
+ required=[Product.CPR_TC_VALIDATION],
965
+ ),
958
966
  # ----------------------------------------
959
967
  # Required in Epsilon (lidar)
960
968
  # ----------------------------------------
cloudnetpy_qc/version.py CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  MAJOR = 1
4
4
  MINOR = 30
5
- PATCH = 0
5
+ PATCH = 2
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.30.0
3
+ Version: 1.30.2
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
@@ -1,16 +1,16 @@
1
1
  cloudnetpy_qc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  cloudnetpy_qc/coverage.py,sha256=sU7MJzoUIdhCAG-SIP4JM1ZVS8IqPgGXAdiwB-cfLqw,2478
3
3
  cloudnetpy_qc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- cloudnetpy_qc/quality.py,sha256=BidJBwZ7z5C2xaq2QE_NO4AfN2KwxL7nQ18MGEjmgOs,41534
4
+ cloudnetpy_qc/quality.py,sha256=KntFPAengDKE9JmuRjQ3-W0IrQNnKScd0APWCdzCn5I,41823
5
5
  cloudnetpy_qc/utils.py,sha256=zFVryl56le2cyfDSCyGCzMHACcsjK7AJZknii1fgfgg,5393
6
- cloudnetpy_qc/variables.py,sha256=h_cH0F0nsJZeBWMV-atVDYiRqqaL2Ix2-gfTmhh61V4,53293
7
- cloudnetpy_qc/version.py,sha256=ieMligj3v0rmHPpYnL73-XoFidwNLUIs7_5NNl_SsEw,102
6
+ cloudnetpy_qc/variables.py,sha256=IfaGpuDnWWI_Y_I8LPqyPCYY_VhXS5HueeyH3N85Qtc,53668
7
+ cloudnetpy_qc/version.py,sha256=3E95yL-8qUVsF5N-mTzBYRq_c309APGiU0ZepU-oO2c,102
8
8
  cloudnetpy_qc/data/area-type-table.xml,sha256=LQGp6rk8d-jZVjeFWPK_NjG2Kk1atvLlQXmV4UXggKI,17788
9
9
  cloudnetpy_qc/data/cf-standard-name-table.xml,sha256=uk6Y5OVRh_2PV_OQe3KITHaRB_rIYh513b31gnPGNXU,4467326
10
10
  cloudnetpy_qc/data/data_quality_config.ini,sha256=deAQzo3eMclgIaQTGYGdwLaD_AM9vGDGaf4VvJ_ZQrs,1449
11
11
  cloudnetpy_qc/data/standardized-region-list.xml,sha256=gLRE2G7RQLD9hmvW5dTzyK7XPhORxWv2bfbrvAp5Uto,6426
12
- cloudnetpy_qc-1.30.0.dist-info/licenses/LICENSE,sha256=P0wszB7Cq2M390SKaqT4DGvECfwGOMdTTdxsWBpEUUc,1094
13
- cloudnetpy_qc-1.30.0.dist-info/METADATA,sha256=jMvwlccPaZVF_GUvli33N7D7L2rmDs-fYX7Fd6t9Yms,8584
14
- cloudnetpy_qc-1.30.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
15
- cloudnetpy_qc-1.30.0.dist-info/top_level.txt,sha256=shrf8A1KyrrnhbHocc4gHmTl38YY-DHflgf-gXiKnKs,14
16
- cloudnetpy_qc-1.30.0.dist-info/RECORD,,
12
+ cloudnetpy_qc-1.30.2.dist-info/licenses/LICENSE,sha256=P0wszB7Cq2M390SKaqT4DGvECfwGOMdTTdxsWBpEUUc,1094
13
+ cloudnetpy_qc-1.30.2.dist-info/METADATA,sha256=3Zw-_T8veo9ZpC078qhkPhyjpVY4mSAWe4jfXr7igW4,8584
14
+ cloudnetpy_qc-1.30.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
15
+ cloudnetpy_qc-1.30.2.dist-info/top_level.txt,sha256=shrf8A1KyrrnhbHocc4gHmTl38YY-DHflgf-gXiKnKs,14
16
+ cloudnetpy_qc-1.30.2.dist-info/RECORD,,