cloudnetpy 1.61.17__tar.gz → 1.62.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 (121) hide show
  1. {cloudnetpy-1.61.17/cloudnetpy.egg-info → cloudnetpy-1.62.0}/PKG-INFO +1 -1
  2. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/classify.py +20 -0
  3. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/ceilo.py +6 -3
  4. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/version.py +2 -2
  5. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0/cloudnetpy.egg-info}/PKG-INFO +1 -1
  6. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/LICENSE +0 -0
  7. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/MANIFEST.in +0 -0
  8. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/README.md +0 -0
  9. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/__init__.py +0 -0
  10. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/__init__.py +0 -0
  11. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/atmos.py +0 -0
  12. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/atmos_utils.py +0 -0
  13. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/categorize.py +0 -0
  14. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/containers.py +0 -0
  15. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/disdrometer.py +0 -0
  16. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/droplet.py +0 -0
  17. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/falling.py +0 -0
  18. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/freezing.py +0 -0
  19. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/insects.py +0 -0
  20. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/lidar.py +0 -0
  21. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/melting.py +0 -0
  22. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/model.py +0 -0
  23. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/mwr.py +0 -0
  24. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/categorize/radar.py +0 -0
  25. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/cloudnetarray.py +0 -0
  26. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/concat_lib.py +0 -0
  27. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/constants.py +0 -0
  28. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/datasource.py +0 -0
  29. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/exceptions.py +0 -0
  30. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/__init__.py +0 -0
  31. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/basta.py +0 -0
  32. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  33. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/ceilometer.py +0 -0
  34. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/cl61d.py +0 -0
  35. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  36. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/copernicus.py +0 -0
  37. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  38. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  39. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  40. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  41. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/galileo.py +0 -0
  42. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/hatpro.py +0 -0
  43. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/instruments.py +0 -0
  44. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/lufft.py +0 -0
  45. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/mira.py +0 -0
  46. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/mrr.py +0 -0
  47. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/nc_lidar.py +0 -0
  48. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/nc_radar.py +0 -0
  49. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/pollyxt.py +0 -0
  50. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/radiometrics.py +0 -0
  51. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/rpg.py +0 -0
  52. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/rpg_reader.py +0 -0
  53. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/toa5.py +0 -0
  54. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/vaisala.py +0 -0
  55. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/instruments/weather_station.py +0 -0
  56. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/metadata.py +0 -0
  57. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/__init__.py +0 -0
  58. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  59. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/metadata.py +0 -0
  60. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  61. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  62. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  63. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  64. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  65. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  66. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  67. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  68. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  69. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  70. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  71. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  72. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  73. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  74. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  75. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  76. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  77. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  78. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  79. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  80. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  81. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  82. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  83. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  84. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  85. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  86. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  87. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  88. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  89. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  90. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  91. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  92. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  93. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  94. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  95. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  96. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/model_evaluation/utils.py +0 -0
  97. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/output.py +0 -0
  98. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/plotting/__init__.py +0 -0
  99. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/plotting/plot_meta.py +0 -0
  100. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/plotting/plotting.py +0 -0
  101. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/__init__.py +0 -0
  102. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/classification.py +0 -0
  103. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/der.py +0 -0
  104. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/drizzle.py +0 -0
  105. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/drizzle_error.py +0 -0
  106. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/drizzle_tools.py +0 -0
  107. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/ier.py +0 -0
  108. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/iwc.py +0 -0
  109. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/lwc.py +0 -0
  110. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  111. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/mwr_tools.py +0 -0
  112. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/products/product_tools.py +0 -0
  113. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/py.typed +0 -0
  114. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy/utils.py +0 -0
  115. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  116. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  117. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy.egg-info/requires.txt +0 -0
  118. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/cloudnetpy.egg-info/top_level.txt +0 -0
  119. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/docs/source/conf.py +0 -0
  120. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/pyproject.toml +0 -0
  121. {cloudnetpy-1.61.17 → cloudnetpy-1.62.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.61.17
3
+ Version: 1.62.0
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -10,6 +10,7 @@ import cloudnetpy.categorize.atmos
10
10
  from cloudnetpy import utils
11
11
  from cloudnetpy.categorize import droplet, falling, freezing, insects, melting
12
12
  from cloudnetpy.categorize.containers import ClassData, ClassificationResult
13
+ from cloudnetpy.constants import T0
13
14
 
14
15
 
15
16
  def classify_measurements(data: dict) -> ClassificationResult:
@@ -36,6 +37,14 @@ def classify_measurements(data: dict) -> ClassificationResult:
36
37
  implementation compared to the original Cloudnet methodology.
37
38
  Especially methods classifying insects, melting layer and liquid droplets.
38
39
 
40
+ Explanation of bits:
41
+ - bit 0: Liquid droplets
42
+ - bit 1: Falling hydrometeors
43
+ - bit 2: Freezing region
44
+ - bit 3: Melting layer
45
+ - bit 4: Aerosols
46
+ - bit 5: Insects
47
+
39
48
  """
40
49
  obs = ClassData(data)
41
50
  bits: list[np.ndarray] = [np.array([])] * 6
@@ -73,6 +82,8 @@ def classify_measurements(data: dict) -> ClassificationResult:
73
82
  bits = _filter_insects(bits)
74
83
  bits[4] = _find_aerosols(obs, bits[1], bits[0])
75
84
  bits[4][filtered_ice] = False
85
+ bits = _fix_super_cold_liquid(obs, bits)
86
+
76
87
  return ClassificationResult(
77
88
  category_bits=_bits_to_integer(bits),
78
89
  is_rain=obs.is_rain,
@@ -82,6 +93,15 @@ def classify_measurements(data: dict) -> ClassificationResult:
82
93
  )
83
94
 
84
95
 
96
+ def _fix_super_cold_liquid(obs: ClassData, bits: list) -> list:
97
+ """Supercooled liquid droplets do not exist in atmosphere below around -38 C."""
98
+ t_limit = T0 - 38
99
+ super_cold_liquid = np.where((obs.tw < t_limit) & bits[0])
100
+ bits[0][super_cold_liquid] = False
101
+ bits[1][super_cold_liquid] = True
102
+ return bits
103
+
104
+
85
105
  def _remove_false_radar_liquid(
86
106
  liquid_from_radar: np.ndarray,
87
107
  liquid_from_lidar: np.ndarray,
@@ -87,12 +87,15 @@ def ceilo2nc(
87
87
  if ceilo_obj.instrument is None or ceilo_obj.instrument.model is None:
88
88
  msg = "Failed to read ceilometer model"
89
89
  raise RuntimeError(msg)
90
- if "cl61" in ceilo_obj.instrument.model.lower():
91
- # This kind of screening could be used with other ceilometers as well:
90
+ if any(
91
+ model in ceilo_obj.instrument.model.lower()
92
+ for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
93
+ ):
92
94
  mask = ceilo_obj.data["beta_smooth"].mask
93
95
  ceilo_obj.data["beta"] = ma.masked_where(mask, ceilo_obj.data["beta_raw"])
94
96
  ceilo_obj.data["beta"][ceilo_obj.data["beta"] <= 0] = ma.masked
95
- ceilo_obj.data["depolarisation"].mask = ceilo_obj.data["beta"].mask
97
+ if "depolarisation" in ceilo_obj.data:
98
+ ceilo_obj.data["depolarisation"].mask = ceilo_obj.data["beta"].mask
96
99
  ceilo_obj.screen_depol()
97
100
  ceilo_obj.screen_invalid_values()
98
101
  ceilo_obj.prepare_data()
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
- MINOR = 61
3
- PATCH = 17
2
+ MINOR = 62
3
+ PATCH = 0
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.61.17
3
+ Version: 1.62.0
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