cloudnetpy 1.66.3__tar.gz → 1.66.5__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 (127) hide show
  1. {cloudnetpy-1.66.3/cloudnetpy.egg-info → cloudnetpy-1.66.5}/PKG-INFO +1 -1
  2. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/ceilometer.py +3 -0
  3. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/plotting/plotting.py +27 -26
  4. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/version.py +1 -1
  5. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5/cloudnetpy.egg-info}/PKG-INFO +1 -1
  6. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/LICENSE +0 -0
  7. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/MANIFEST.in +0 -0
  8. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/README.md +0 -0
  9. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/__init__.py +0 -0
  10. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/__init__.py +0 -0
  11. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/atmos_utils.py +0 -0
  12. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuation.py +0 -0
  13. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  14. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  15. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  16. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  17. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  18. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/categorize.py +0 -0
  19. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/classify.py +0 -0
  20. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/containers.py +0 -0
  21. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/disdrometer.py +0 -0
  22. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/droplet.py +0 -0
  23. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/falling.py +0 -0
  24. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/freezing.py +0 -0
  25. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/insects.py +0 -0
  26. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/itu.py +0 -0
  27. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/lidar.py +0 -0
  28. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/melting.py +0 -0
  29. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/model.py +0 -0
  30. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/mwr.py +0 -0
  31. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/categorize/radar.py +0 -0
  32. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/cloudnetarray.py +0 -0
  33. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/concat_lib.py +0 -0
  34. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/constants.py +0 -0
  35. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/datasource.py +0 -0
  36. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/exceptions.py +0 -0
  37. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/__init__.py +0 -0
  38. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/basta.py +0 -0
  39. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  40. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/ceilo.py +0 -0
  41. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/cl61d.py +0 -0
  42. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  43. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/copernicus.py +0 -0
  44. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  45. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  46. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  47. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  48. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/galileo.py +0 -0
  49. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/hatpro.py +0 -0
  50. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/instruments.py +0 -0
  51. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/lufft.py +0 -0
  52. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/mira.py +0 -0
  53. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/mrr.py +0 -0
  54. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/nc_lidar.py +0 -0
  55. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/nc_radar.py +0 -0
  56. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/pollyxt.py +0 -0
  57. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/radiometrics.py +0 -0
  58. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/rpg.py +0 -0
  59. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/rpg_reader.py +0 -0
  60. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/toa5.py +0 -0
  61. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/vaisala.py +0 -0
  62. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/instruments/weather_station.py +0 -0
  63. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/metadata.py +0 -0
  64. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/__init__.py +0 -0
  65. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  66. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/metadata.py +0 -0
  67. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  68. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  69. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  70. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  71. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  72. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  73. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  74. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  75. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  76. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  77. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  78. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  79. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  80. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  81. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  82. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  83. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  84. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  85. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  86. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  87. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  88. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  89. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  90. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  91. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  92. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  93. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  94. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  95. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  96. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  97. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  98. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  99. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  100. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  101. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  102. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  103. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/model_evaluation/utils.py +0 -0
  104. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/output.py +0 -0
  105. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/plotting/__init__.py +0 -0
  106. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/plotting/plot_meta.py +0 -0
  107. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/__init__.py +0 -0
  108. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/classification.py +0 -0
  109. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/der.py +0 -0
  110. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/drizzle.py +0 -0
  111. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/drizzle_error.py +0 -0
  112. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/drizzle_tools.py +0 -0
  113. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/ier.py +0 -0
  114. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/iwc.py +0 -0
  115. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/lwc.py +0 -0
  116. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  117. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/mwr_tools.py +0 -0
  118. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/products/product_tools.py +0 -0
  119. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/py.typed +0 -0
  120. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy/utils.py +0 -0
  121. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  122. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  123. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy.egg-info/requires.txt +0 -0
  124. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/cloudnetpy.egg-info/top_level.txt +0 -0
  125. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/docs/source/conf.py +0 -0
  126. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/pyproject.toml +0 -0
  127. {cloudnetpy-1.66.3 → cloudnetpy-1.66.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.66.3
3
+ Version: 1.66.5
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -98,6 +98,9 @@ class Ceilometer:
98
98
  self.data[key] = float(self.site_meta[key])
99
99
 
100
100
  def get_date_and_time(self, epoch: Epoch) -> None:
101
+ if "time" not in self.data:
102
+ msg = "Time array missing from data"
103
+ raise ValidTimeStampError(msg)
101
104
  if self.expected_date is not None:
102
105
  self.data = utils.screen_by_time(self.data, epoch, self.expected_date)
103
106
  self.date = utils.seconds2date(self.data["time"][0], epoch=epoch)[:3]
@@ -21,7 +21,7 @@ from mpl_toolkits.axes_grid1 import make_axes_locatable
21
21
  from numpy import ma, ndarray
22
22
  from scipy.ndimage import uniform_filter
23
23
 
24
- from cloudnetpy.categorize.freezing import find_t0_alt
24
+ from cloudnetpy.constants import T0
25
25
  from cloudnetpy.exceptions import PlottingError
26
26
  from cloudnetpy.instruments.ceilometer import calc_sigma_units
27
27
  from cloudnetpy.plotting.plot_meta import ATTRIBUTES, PlotMeta
@@ -428,22 +428,6 @@ class Plot2D(Plot):
428
428
  if figure_data.is_mwrpy_product():
429
429
  self._fill_flagged_data(figure_data)
430
430
 
431
- if self.sub_plot.variable.name == "Tw":
432
- tw = figure_data.file["Tw"][:]
433
- height = figure_data.height
434
- if height is None:
435
- msg = "No height information in the file."
436
- raise ValueError(msg)
437
- t0_alt = find_t0_alt(tw, height)
438
- t0_alt = ma.masked_where(t0_alt <= height[0], t0_alt)
439
- self._ax.plot(
440
- figure_data.time,
441
- t0_alt,
442
- color="gray",
443
- linestyle="dashed",
444
- zorder=_get_zorder("t0"),
445
- )
446
-
447
431
  def _fill_flagged_data(self, figure_data: FigureData) -> None:
448
432
  flags = self._read_flagged_data(figure_data)
449
433
  batches = find_batches_of_ones(flags)
@@ -543,19 +527,36 @@ class Plot2D(Plot):
543
527
  cbar.ax.set_yticklabels(tick_labels)
544
528
 
545
529
  if self._plot_meta.contour:
546
- time_length = len(figure_data.time_including_gaps)
547
- step = max(1, time_length // 200)
548
- ind_time = np.arange(0, time_length, step)
549
- self._ax.contour(
550
- figure_data.time_including_gaps[ind_time],
530
+ self._plot_contour(
531
+ figure_data,
551
532
  alt,
552
- self._data[ind_time, :].T,
553
533
  levels=np.linspace(vmin, vmax, num=10),
554
534
  colors="black",
555
535
  linewidths=0.5,
556
- zorder=_get_zorder("contour"),
557
536
  )
558
537
 
538
+ if self.sub_plot.variable.name == "Tw":
539
+ self._plot_contour(
540
+ figure_data,
541
+ alt,
542
+ levels=np.array([T0]),
543
+ colors="gray",
544
+ linewidths=1.25,
545
+ linestyles="dashed",
546
+ )
547
+
548
+ def _plot_contour(self, figure_data: FigureData, alt: np.ndarray, **options):
549
+ time_length = len(figure_data.time_including_gaps)
550
+ step = max(1, time_length // 200)
551
+ ind_time = np.arange(0, time_length, step)
552
+ self._ax.contour(
553
+ figure_data.time_including_gaps[ind_time],
554
+ alt,
555
+ self._data[ind_time, :].T,
556
+ **options,
557
+ zorder=_get_zorder("contour"),
558
+ )
559
+
559
560
  def _screen_data_by_max_y(self, figure_data: FigureData) -> ndarray:
560
561
  if figure_data.height is None:
561
562
  msg = "No height information in the file."
@@ -897,10 +898,10 @@ def _reformat_units(unit: str) -> str:
897
898
 
898
899
 
899
900
  def _get_max_gap_in_minutes(figure_data: FigureData) -> float:
900
- source = getattr(figure_data.file, "source", "")
901
+ source = getattr(figure_data.file, "source", "").lower()
901
902
  file_type = getattr(figure_data.file, "cloudnet_file_type", "")
902
903
  max_allowed_gap = {
903
- "model": 181 if "gdas1" in source else 61,
904
+ "model": 181 if "gdas1" in source or "ecmwf open" in source else 61,
904
905
  "mwr-multi": 35,
905
906
  "weather-station": 12,
906
907
  "doppler-lidar-wind": 75,
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 66
3
- PATCH = 3
3
+ PATCH = 5
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.66.3
3
+ Version: 1.66.5
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