climdata 0.1.1__py2.py3-none-any.whl → 0.1.2__py2.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.
climdata/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  __author__ = """Kaushik Muduchuru"""
4
4
  __email__ = "kaushik.reddy.m@gmail.com"
5
- __version__ = "0.1.1"
5
+ __version__ = "0.1.2"
6
6
 
7
7
  from .utils.utils_download import * # etc.
8
8
  from .utils.config import load_config
@@ -27,6 +27,7 @@ class CMIPCloud:
27
27
  if len(col_subset.df) == 0:
28
28
  continue
29
29
  self.col_subsets.append(col_subset)
30
+ self.col = col
30
31
  return self.col_subsets
31
32
 
32
33
  def load(self):
climdata/datasets/MSWX.py CHANGED
@@ -160,6 +160,8 @@ class MSWXmirror:
160
160
  local_path = os.path.join(output_dir, provider, parameter_key, f)
161
161
  try:
162
162
  ds = xr.open_dataset(local_path, chunks='auto', engine='netcdf4')[param_info.name]
163
+ # Rename DataArray to parameter_key
164
+ ds = ds.rename(parameter_key)
163
165
  valid_dsets.append(ds)
164
166
  except Exception as e:
165
167
  print(f"Skipping file due to error: {f}\n{e}")
@@ -167,7 +169,7 @@ class MSWXmirror:
167
169
  dset = xr.concat(valid_dsets, dim='time')
168
170
  dset = dset.transpose('time', 'lat', 'lon')
169
171
  self.dataset = self._fix_coords(dset)
170
- return dset
172
+ return self.dataset
171
173
 
172
174
  def to_zarr(self, zarr_filename):
173
175
  if self.dataset is None:
@@ -227,10 +229,10 @@ class MSWXmirror:
227
229
  ds_subset = ds.sel(lon=lon, lat=lat, method="nearest")
228
230
 
229
231
  elif box is not None:
230
- min_lon, min_lat, max_lon, max_lat = box
232
+ # Accept dict: {'lat_min': ..., 'lat_max': ..., 'lon_min': ..., 'lon_max': ...}
231
233
  ds_subset = ds.sel(
232
- lon=slice(min_lon, max_lon),
233
- lat=slice(min_lat, max_lat)
234
+ lon=slice(box['lon_min'], box['lon_max']),
235
+ lat=slice(box['lat_min'], box['lat_max'])
234
236
  )
235
237
 
236
238
  elif shapefile is not None:
@@ -248,7 +250,8 @@ class MSWXmirror:
248
250
 
249
251
  else:
250
252
  raise ValueError("Must provide either point, box, or shapefile.")
251
-
253
+ self.dataset = ds_subset
254
+ self.dataset = self.dataset.to_dataset()
252
255
  return ds_subset
253
256
 
254
257
  def to_dataframe(self, ds=None):
@@ -287,6 +290,12 @@ class MSWXmirror:
287
290
  ds.name: "value"
288
291
  })
289
292
  return df
293
+ def save_netcdf(self, filename):
294
+ if self.dataset is not None:
295
+ if "time" in self.dataset.variables:
296
+ self.dataset["time"].encoding.clear()
297
+ self.dataset.to_netcdf(filename)
298
+ # print(f"Saved NetCDF to {filename}")
290
299
 
291
300
  def format(self, df):
292
301
  """
@@ -299,4 +308,4 @@ class MSWXmirror:
299
308
 
300
309
  df = df[["latitude", "longitude", "time", "source", "variable", "value", "units"]]
301
310
  return df
302
-
311
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: climdata
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.
5
5
  Author-email: Kaushik Muduchuru <kaushik.reddy.m@gmail.com>
6
6
  License: MIT License
@@ -1,20 +1,20 @@
1
- climdata/__init__.py,sha256=rR9zjk6GF4r-_jMpBDYi_kNis5lNNu_IOIottOLRcgU,462
1
+ climdata/__init__.py,sha256=NkkQIZAYPwWJJCxQOfGoBF7fSuMAt2a6TVrEVXau8Ac,462
2
2
  climdata/__main__.py,sha256=Gn-CeD1_A0xSU8lvpuDJeniNtVgkwDpcRhxBOlrfV_w,82
3
3
  climdata/main.py,sha256=4_tm82v6tEa1fH1IeL2IslyjiB9NWOk46A-_QcsHg64,1586
4
4
  climdata/conf/config.yaml,sha256=_WHG5LDjzV28ZeyGVglnbXBmrAlPx0pV-5q-OhCYE3o,954
5
5
  climdata/conf/mappings/parameters.yaml,sha256=HzTjJnEWEYI4PiW29cGp0UbRBDc1f_NhgJdlYT6MXNY,4100
6
6
  climdata/conf/mappings/variables.yaml,sha256=mO13rtF0XOzP4fjU5oyao44GmRM0Jrr1RjUBBwg04IU,2030
7
- climdata/datasets/CMIPCloud.py,sha256=kriuH_B2GZLOH8vA6B3soqfAj5-iiiyYyId6l7vmMnk,5509
7
+ climdata/datasets/CMIPCloud.py,sha256=uIIIyZWrgValIJWlDxhwNjTSHLlT6KD0J4dPn-Qw_Qs,5536
8
8
  climdata/datasets/CMIPlocal.py,sha256=mEBJZOfWu8fNlAQksXAbslWL0sJYQfu_UA2zPuetsBk,8815
9
9
  climdata/datasets/DWD.py,sha256=DwqBBkRLE_FXyjZX38iVv3cduiO6uQc8MQaTvHQqxjA,2850
10
10
  climdata/datasets/ERA5.py,sha256=OTCCstF8j-T8VL3oO7pISgcybXCLMghv-fRBv9_dmvY,11251
11
- climdata/datasets/MSWX.py,sha256=rBA8k6KwidOBXjb2fAlUTJV7dPPZ8ewWMlA4uQvbGDo,9993
11
+ climdata/datasets/MSWX.py,sha256=r7gGeXp3NLsfI4T9h9k4T1b6brY7BqBKpP-uwfunTHs,10516
12
12
  climdata/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  climdata/utils/config.py,sha256=UhbCH1PEVkEIdLVgmEEvb39Tq5XX4fsNe5gN4B5WL9Y,1054
14
14
  climdata/utils/utils_download.py,sha256=lCMFIzzZHVptLwpwCslbQhhie5mWsKzphsz_SQ3kHo0,33356
15
- climdata-0.1.1.dist-info/licenses/LICENSE,sha256=f_3cGg8TC4V7GSbVaJo9b_hy-iY3q_ZpWq1MN2VQcnw,1076
16
- climdata-0.1.1.dist-info/METADATA,sha256=46WXCUH8iKpdbGeFhPizyMBanAWLnXI-VIhG8hlwcrY,8357
17
- climdata-0.1.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
18
- climdata-0.1.1.dist-info/entry_points.txt,sha256=tiYPawJoZiBj7lU67vNTCb3esSvx_d-lBvOffA26ouU,47
19
- climdata-0.1.1.dist-info/top_level.txt,sha256=BPnAhRqg8vk580nSJDXTdLmfq6OZ_LR8eNTgrRabArw,9
20
- climdata-0.1.1.dist-info/RECORD,,
15
+ climdata-0.1.2.dist-info/licenses/LICENSE,sha256=f_3cGg8TC4V7GSbVaJo9b_hy-iY3q_ZpWq1MN2VQcnw,1076
16
+ climdata-0.1.2.dist-info/METADATA,sha256=F_W10wm162jJFWNcWTpXTVvxLmmq4dPfy1-omDLZ8vc,8357
17
+ climdata-0.1.2.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
18
+ climdata-0.1.2.dist-info/entry_points.txt,sha256=tiYPawJoZiBj7lU67vNTCb3esSvx_d-lBvOffA26ouU,47
19
+ climdata-0.1.2.dist-info/top_level.txt,sha256=BPnAhRqg8vk580nSJDXTdLmfq6OZ_LR8eNTgrRabArw,9
20
+ climdata-0.1.2.dist-info/RECORD,,