nctoolkit 1.2.1__tar.gz → 1.2.2__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 (97) hide show
  1. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/PKG-INFO +3 -2
  2. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/runthis.py +14 -8
  3. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/verticals.py +20 -8
  4. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/setup.py +1 -1
  5. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/CITATION.cff +0 -0
  6. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/CODE_OF_CONDUCT.md +0 -0
  7. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/CONTRIBUTIONS.md +0 -0
  8. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/LICENSE +0 -0
  9. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/MANIFEST.in +0 -0
  10. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/README.md +0 -0
  11. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/benchmarks/benchmark_nctoolkit_versus_xarray.ipynb +0 -0
  12. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/cheatsheet/nctoolkit_cheatsheet.pdf +0 -0
  13. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/cheatsheet/nctoolkit_cheatsheet.pptx +0 -0
  14. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/checklists/api_checker.ipynb +0 -0
  15. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/data/geotiff.tif +0 -0
  16. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/data/pubplot_test.png +0 -0
  17. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/data/test1.html +0 -0
  18. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/data/test2.html +0 -0
  19. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/__init__.py +0 -0
  20. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/add_etc.py +0 -0
  21. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/anomaly.py +0 -0
  22. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/api.py +0 -0
  23. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/append.py +0 -0
  24. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/assign.py +0 -0
  25. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/cdo_command.py +0 -0
  26. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/cellareas.py +0 -0
  27. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/centres.py +0 -0
  28. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/checks.py +0 -0
  29. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/cleanup.py +0 -0
  30. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/clear.py +0 -0
  31. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/compare.py +0 -0
  32. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/compare_data.py +0 -0
  33. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/corr.py +0 -0
  34. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/create_ensemble.py +0 -0
  35. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/crop.py +0 -0
  36. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/deprecated.py +0 -0
  37. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/distgrid.py +0 -0
  38. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/drop.py +0 -0
  39. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/ensembles.py +0 -0
  40. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/esoteric.py +0 -0
  41. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/experimental.py +0 -0
  42. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/fill.py +0 -0
  43. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/flatten.py +0 -0
  44. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/fldstat.py +0 -0
  45. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/format.py +0 -0
  46. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/generate_grid.py +0 -0
  47. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/inttime.py +0 -0
  48. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/invert.py +0 -0
  49. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/masking.py +0 -0
  50. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/matchpoint.py +0 -0
  51. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/mergers.py +0 -0
  52. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/meridonials.py +0 -0
  53. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/mp_adders.py +0 -0
  54. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/mp_matchers.py +0 -0
  55. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/mp_matchups.py +0 -0
  56. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/nco_command.py +0 -0
  57. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/phenology.py +0 -0
  58. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/plot.py +0 -0
  59. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/reduce.py +0 -0
  60. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/reduce_grid.py +0 -0
  61. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/regrid.py +0 -0
  62. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/remove.py +0 -0
  63. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/rename.py +0 -0
  64. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/resample.py +0 -0
  65. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/rollstat.py +0 -0
  66. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/run.py +0 -0
  67. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/runners.py +0 -0
  68. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/session.py +0 -0
  69. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/set.py +0 -0
  70. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/setters.py +0 -0
  71. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/shape.py +0 -0
  72. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/shift.py +0 -0
  73. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/show.py +0 -0
  74. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/split.py +0 -0
  75. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/static_plot.py +0 -0
  76. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/strip_vars.py +0 -0
  77. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/subset.py +0 -0
  78. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/sumall.py +0 -0
  79. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/temp_file.py +0 -0
  80. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/temporal_stat.py +0 -0
  81. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/temporals.py +0 -0
  82. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/thresholds.py +0 -0
  83. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/to_lonlat.py +0 -0
  84. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/to_nc.py +0 -0
  85. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/toxarray.py +0 -0
  86. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/tozlev.py +0 -0
  87. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/unify.py +0 -0
  88. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/utils.py +0 -0
  89. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/validator.py +0 -0
  90. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/validator_funs.py +0 -0
  91. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/zip.py +0 -0
  92. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit/zonals.py +0 -0
  93. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/nctoolkit.egg-info/SOURCES.txt +0 -0
  94. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/requirements.txt +0 -0
  95. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/setup.cfg +0 -0
  96. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/testing/test_parallel.py +0 -0
  97. {nctoolkit-1.2.1 → nctoolkit-1.2.2}/testing/test_scripting.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: nctoolkit
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: A Python package for netCDF analysis and post-processing
5
5
  Home-page: https://github.com/pmlmodelling/nctoolkit
6
6
  Author: Robert Wilson
@@ -42,6 +42,7 @@ Dynamic: classifier
42
42
  Dynamic: description
43
43
  Dynamic: description-content-type
44
44
  Dynamic: home-page
45
+ Dynamic: license-file
45
46
  Dynamic: maintainer
46
47
  Dynamic: project-url
47
48
  Dynamic: provides-extra
@@ -128,6 +128,10 @@ def run_this(os_command, self, output="one", out_file=None, suppress=False):
128
128
 
129
129
  cores = session_info["cores"]
130
130
 
131
+ # if len(self) == 1:
132
+ # if cores > 1:
133
+ # os_command = os_command.replace("cdo ", f"cdo -P {cores} ")
134
+
131
135
  if len(self) == 1:
132
136
  output = "ensemble"
133
137
 
@@ -243,12 +247,16 @@ def run_this(os_command, self, output="one", out_file=None, suppress=False):
243
247
  if self._zip:
244
248
  ff_command = ff_command.replace("cdo ", "cdo -z zip ")
245
249
 
250
+ if session_info["cores"] > 1:
251
+ if len(self) == 1:
252
+ ff_command = ff_command.replace("cdo ", f"cdo -P {session_info['cores']} ")
246
253
  new_history.append(ff_command)
247
254
 
248
255
  #warnings.simplefilter("ignore")
249
256
 
250
257
  #with patch('sys.warnoptions', []):
251
258
 
259
+
252
260
  if cores > 1:
253
261
  temp = pool.apply_async(
254
262
  run_cdo,
@@ -288,13 +296,6 @@ def run_this(os_command, self, output="one", out_file=None, suppress=False):
288
296
  warnings.warn(mm)
289
297
  if mm in session_warnings:
290
298
  session_warnings.remove(mm)
291
- # remove element from session_warnings
292
-
293
- #session_warnings.remove(ff)
294
- #tidy_warnings(w)
295
- #if cores > 1:
296
- # pool.close()
297
-
298
299
 
299
300
  self.history = copy.deepcopy(new_history)
300
301
  self.current = copy.deepcopy(target_list)
@@ -324,6 +325,7 @@ def run_this(os_command, self, output="one", out_file=None, suppress=False):
324
325
 
325
326
  return None
326
327
 
328
+
327
329
  if ((output == "one") and (len(self) > 1)) or self._zip is False:
328
330
  new_history = copy.deepcopy(self._hold_history)
329
331
 
@@ -417,11 +419,15 @@ def run_this(os_command, self, output="one", out_file=None, suppress=False):
417
419
  warnings.warn(
418
420
  f"The following variables are not in all files, so were ignored when merging: {removed}"
419
421
  )
420
-
422
+
421
423
  target = run_cdo(
422
424
  os_command, target, out_file, precision=self._precision
423
425
  )
424
426
  else:
427
+ if session_info["cores"] > 1:
428
+ if len(self) == 1:
429
+ os_command = os_command.replace("cdo ", f"cdo -P {session_info['cores']} ")
430
+
425
431
  target = run_cdo(
426
432
  os_command, target, out_file, precision=self._precision
427
433
  )
@@ -32,32 +32,44 @@ def generate_level_bounds(self):
32
32
 
33
33
 
34
34
 
35
- def bottom(self):
35
+ def bottom(self, choice = "level"):
36
36
  """
37
- bottom: Extract the bottom level from a dataset
37
+ bottom: Extract the bottom level or value from a dataset
38
38
 
39
- This extracts the bottom level from each netCDF file. Please note that for
39
+ This extracts the bottom level or value from each netCDF file. Please note that for
40
40
  ensembles, it uses the first file to derive the index of the bottom level.
41
41
 
42
- You may need to double check that the bottom vertical level is the sea 'bottom' etc., as this is not always the case.
43
-
44
- Use bottom_mask for files when the bottom cell in netCDF files do not represent
45
- the actual bottom.
42
+ Parameters
43
+ -------------
44
+ choice : str
45
+ Set to 'level' to extract the bottom level, or 'value' to extract the bottommost non-missing value.
46
46
 
47
47
  Examples
48
48
  ------------
49
49
 
50
50
  If you wanted to extract the bottom vertical level of a dataset, do the following:
51
51
 
52
- >>> ds.bottom()
52
+ >>> ds.bottom(choice = 'level')
53
53
 
54
54
  This method is most useful for things like oceanic model data, where the bottom cell corresponds to the bottom of the ocean.
55
55
 
56
+ If you wanted to find the deepest non-missing value in a dataset, you would do the following:
57
+
58
+ >>> ds.bottom(choice = 'value')
59
+
56
60
  """
57
61
 
58
62
  # extract the number of the bottom level
59
63
  # Use the first file for an ensemble
60
64
  # pull the cdo command together, then run it or store it
65
+
66
+ if choice not in ["level", "value"]:
67
+ raise ValueError("Choice must be either 'level' or 'value'")
68
+
69
+ if choice == "value":
70
+ self.cdo_command("bottomvalue")
71
+ return None
72
+
61
73
  if len(self) > 1:
62
74
  ff = self.current[0]
63
75
  warnings.warn(
@@ -46,7 +46,7 @@ extras_require["complete"] = ["geoviews", "rioxarray", "cfchecker", "geocube", "
46
46
  REQUIREMENTS = [i.strip() for i in open("requirements.txt").readlines()]
47
47
 
48
48
  setup(name='nctoolkit',
49
- version='1.2.1',
49
+ version='1.2.2',
50
50
  description=DESCRIPTION,
51
51
  description_content_type='text/plain',
52
52
  long_description=LONG_DESCRIPTION,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes