cloudnetpy 1.64.3__tar.gz → 1.64.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.
Files changed (121) hide show
  1. {cloudnetpy-1.64.3/cloudnetpy.egg-info → cloudnetpy-1.64.4}/PKG-INFO +1 -1
  2. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/ceilo.py +22 -3
  3. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/ceilometer.py +3 -7
  4. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/lufft.py +2 -0
  5. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/version.py +1 -1
  6. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4/cloudnetpy.egg-info}/PKG-INFO +1 -1
  7. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/LICENSE +0 -0
  8. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/MANIFEST.in +0 -0
  9. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/README.md +0 -0
  10. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/__init__.py +0 -0
  11. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/__init__.py +0 -0
  12. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/atmos.py +0 -0
  13. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/atmos_utils.py +0 -0
  14. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/categorize.py +0 -0
  15. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/classify.py +0 -0
  16. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/containers.py +0 -0
  17. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/disdrometer.py +0 -0
  18. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/droplet.py +0 -0
  19. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/falling.py +0 -0
  20. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/freezing.py +0 -0
  21. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/insects.py +0 -0
  22. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/lidar.py +0 -0
  23. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/melting.py +0 -0
  24. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/model.py +0 -0
  25. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/mwr.py +0 -0
  26. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/categorize/radar.py +0 -0
  27. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/cloudnetarray.py +0 -0
  28. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/concat_lib.py +0 -0
  29. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/constants.py +0 -0
  30. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/datasource.py +0 -0
  31. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/exceptions.py +0 -0
  32. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/__init__.py +0 -0
  33. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/basta.py +0 -0
  34. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  35. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/cl61d.py +0 -0
  36. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  37. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/copernicus.py +0 -0
  38. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  39. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  40. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  41. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  42. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/galileo.py +0 -0
  43. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/hatpro.py +0 -0
  44. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/instruments.py +0 -0
  45. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/mira.py +0 -0
  46. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/mrr.py +0 -0
  47. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/nc_lidar.py +0 -0
  48. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/nc_radar.py +0 -0
  49. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/pollyxt.py +0 -0
  50. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/radiometrics.py +0 -0
  51. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/rpg.py +0 -0
  52. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/rpg_reader.py +0 -0
  53. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/toa5.py +0 -0
  54. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/vaisala.py +0 -0
  55. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/instruments/weather_station.py +0 -0
  56. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/metadata.py +0 -0
  57. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/__init__.py +0 -0
  58. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  59. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/metadata.py +0 -0
  60. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  61. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  62. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  63. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  64. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  65. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  66. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  67. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  68. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  69. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  70. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  71. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  72. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  73. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  74. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  75. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  76. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  77. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  78. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  79. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  80. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  81. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  82. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  83. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  84. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  85. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  86. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  87. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  88. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  89. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  90. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  91. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  92. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  93. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  94. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  95. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  96. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/model_evaluation/utils.py +0 -0
  97. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/output.py +0 -0
  98. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/plotting/__init__.py +0 -0
  99. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/plotting/plot_meta.py +0 -0
  100. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/plotting/plotting.py +0 -0
  101. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/__init__.py +0 -0
  102. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/classification.py +0 -0
  103. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/der.py +0 -0
  104. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/drizzle.py +0 -0
  105. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/drizzle_error.py +0 -0
  106. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/drizzle_tools.py +0 -0
  107. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/ier.py +0 -0
  108. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/iwc.py +0 -0
  109. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/lwc.py +0 -0
  110. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  111. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/mwr_tools.py +0 -0
  112. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/products/product_tools.py +0 -0
  113. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/py.typed +0 -0
  114. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy/utils.py +0 -0
  115. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  116. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  117. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy.egg-info/requires.txt +0 -0
  118. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/cloudnetpy.egg-info/top_level.txt +0 -0
  119. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/docs/source/conf.py +0 -0
  120. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/pyproject.toml +0 -0
  121. {cloudnetpy-1.64.3 → cloudnetpy-1.64.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.64.3
3
+ Version: 1.64.4
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -74,22 +74,28 @@ def ceilo2nc(
74
74
  range_corrected = site_meta.get("range_corrected", True)
75
75
  ceilo_obj.read_ceilometer_file(calibration_factor)
76
76
  ceilo_obj.check_beta_raw_shape()
77
+ n_negatives = _get_n_negatives(ceilo_obj)
77
78
  ceilo_obj.data["beta"] = ceilo_obj.calc_screened_product(
78
79
  ceilo_obj.data["beta_raw"],
79
80
  snr_limit,
80
81
  range_corrected=range_corrected,
82
+ n_negatives=n_negatives,
81
83
  )
82
84
  ceilo_obj.data["beta_smooth"] = ceilo_obj.calc_beta_smooth(
83
85
  ceilo_obj.data["beta"],
84
86
  snr_limit,
85
87
  range_corrected=range_corrected,
88
+ n_negatives=n_negatives,
86
89
  )
87
90
  if ceilo_obj.instrument is None or ceilo_obj.instrument.model is None:
88
91
  msg = "Failed to read ceilometer model"
89
92
  raise RuntimeError(msg)
90
- if any(
91
- model in ceilo_obj.instrument.model.lower()
92
- for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
93
+ if (
94
+ any(
95
+ model in ceilo_obj.instrument.model.lower()
96
+ for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
97
+ )
98
+ and range_corrected
93
99
  ):
94
100
  mask = ceilo_obj.data["beta_smooth"].mask
95
101
  ceilo_obj.data["beta"] = ma.masked_where(mask, ceilo_obj.data["beta_raw"])
@@ -107,6 +113,19 @@ def ceilo2nc(
107
113
  return output.save_level1b(ceilo_obj, output_file, uuid)
108
114
 
109
115
 
116
+ def _get_n_negatives(ceilo_obj: ClCeilo | Ct25k | LufftCeilo | Cl61d | Cs135) -> int:
117
+ is_old_chm_version = (
118
+ hasattr(ceilo_obj, "is_old_version") and ceilo_obj.is_old_version
119
+ )
120
+ is_ct25k = (
121
+ ceilo_obj.instrument is not None
122
+ and getattr(ceilo_obj.instrument, "model", "").lower() == "ct25k"
123
+ )
124
+ if is_old_chm_version or is_ct25k:
125
+ return 20
126
+ return 5
127
+
128
+
110
129
  def _initialize_ceilo(
111
130
  full_path: str,
112
131
  site_meta: dict,
@@ -38,6 +38,7 @@ class Ceilometer:
38
38
  self,
39
39
  array: np.ndarray,
40
40
  snr_limit: int = 5,
41
+ n_negatives: int = 5,
41
42
  *,
42
43
  range_corrected: bool = True,
43
44
  ) -> np.ndarray:
@@ -47,13 +48,6 @@ class Ceilometer:
47
48
  self.noise_param,
48
49
  range_corrected=range_corrected,
49
50
  )
50
- if (
51
- self.instrument is not None
52
- and getattr(self.instrument, "model", "").lower() == "ct25k"
53
- ):
54
- n_negatives = 20
55
- else:
56
- n_negatives = 5
57
51
  return noisy_data.screen_data(
58
52
  array,
59
53
  snr_limit=snr_limit,
@@ -64,6 +58,7 @@ class Ceilometer:
64
58
  self,
65
59
  beta: np.ndarray,
66
60
  snr_limit: int = 5,
61
+ n_negatives: int = 5,
67
62
  *,
68
63
  range_corrected: bool = True,
69
64
  ) -> np.ndarray:
@@ -82,6 +77,7 @@ class Ceilometer:
82
77
  beta_raw_smooth,
83
78
  is_smoothed=True,
84
79
  snr_limit=snr_limit,
80
+ n_negatives=n_negatives,
85
81
  )
86
82
 
87
83
  def prepare_data(self) -> None:
@@ -23,6 +23,7 @@ class LufftCeilo(NcLidar):
23
23
  self.file_name = file_name
24
24
  self.site_meta = site_meta
25
25
  self.expected_date = expected_date
26
+ self.is_old_version = False
26
27
 
27
28
  def read_ceilometer_file(self, calibration_factor: float | None = None) -> None:
28
29
  """Reads data and metadata from Jenoptik netCDF file."""
@@ -42,6 +43,7 @@ class LufftCeilo(NcLidar):
42
43
  beta_raw = ma.masked_array(beta_raw)
43
44
  old_version = self._get_old_software_version()
44
45
  if old_version is not None:
46
+ self.is_old_version = True
45
47
  logging.warning(
46
48
  "Software version %s. Assuming data not range corrected.",
47
49
  old_version,
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 64
3
- PATCH = 3
3
+ PATCH = 4
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.64.3
3
+ Version: 1.64.4
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
File without changes
File without changes
File without changes
File without changes
File without changes