geocif 0.1.80__tar.gz → 0.1.81__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 (83) hide show
  1. {geocif-0.1.80/geocif.egg-info → geocif-0.1.81}/PKG-INFO +1 -1
  2. {geocif-0.1.80 → geocif-0.1.81}/geocif/cei/indices.py +35 -23
  3. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner.py +2 -2
  4. {geocif-0.1.80 → geocif-0.1.81/geocif.egg-info}/PKG-INFO +1 -1
  5. {geocif-0.1.80 → geocif-0.1.81}/setup.py +1 -1
  6. {geocif-0.1.80 → geocif-0.1.81}/LICENSE +0 -0
  7. {geocif-0.1.80 → geocif-0.1.81}/MANIFEST.in +0 -0
  8. {geocif-0.1.80 → geocif-0.1.81}/README.md +0 -0
  9. {geocif-0.1.80 → geocif-0.1.81}/geocif/__init__.py +0 -0
  10. {geocif-0.1.80 → geocif-0.1.81}/geocif/agmet/__init__.py +0 -0
  11. {geocif-0.1.80 → geocif-0.1.81}/geocif/agmet/geoagmet.py +0 -0
  12. {geocif-0.1.80 → geocif-0.1.81}/geocif/agmet/plot.py +0 -0
  13. {geocif-0.1.80 → geocif-0.1.81}/geocif/agmet/utils.py +0 -0
  14. {geocif-0.1.80 → geocif-0.1.81}/geocif/analysis.py +0 -0
  15. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/__init__.py +0 -0
  16. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/constants.py +0 -0
  17. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/features.py +0 -0
  18. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/geo.py +0 -0
  19. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/geocif.py +0 -0
  20. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/metadata.py +0 -0
  21. {geocif-0.1.80 → geocif-0.1.81}/geocif/backup/models.py +0 -0
  22. {geocif-0.1.80 → geocif-0.1.81}/geocif/cei/__init__.py +0 -0
  23. {geocif-0.1.80 → geocif-0.1.81}/geocif/cei/definitions.py +0 -0
  24. {geocif-0.1.80 → geocif-0.1.81}/geocif/experiments.py +0 -0
  25. {geocif-0.1.80 → geocif-0.1.81}/geocif/geocif.py +0 -0
  26. {geocif-0.1.80 → geocif-0.1.81}/geocif/geocif_runner.py +0 -0
  27. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_angola.py +0 -0
  28. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_madagascar.py +0 -0
  29. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_malawi.py +0 -0
  30. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_mozambique.py +0 -0
  31. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_south_africa.py +0 -0
  32. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_zambia.py +0 -0
  33. {geocif-0.1.80 → geocif-0.1.81}/geocif/indices_runner_zimbabwe.py +0 -0
  34. {geocif-0.1.80 → geocif-0.1.81}/geocif/logger.py +0 -0
  35. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/__init__.py +0 -0
  36. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/correlations.py +0 -0
  37. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/embedding.py +0 -0
  38. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/feature_engineering.py +0 -0
  39. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/feature_selection.py +0 -0
  40. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/outliers.py +0 -0
  41. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/outlook.py +0 -0
  42. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/output.py +0 -0
  43. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/spatial_autocorrelation.py +0 -0
  44. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/stages.py +0 -0
  45. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/stats.py +0 -0
  46. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/trainers.py +0 -0
  47. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/trend.py +0 -0
  48. {geocif-0.1.80 → geocif-0.1.81}/geocif/ml/xai.py +0 -0
  49. {geocif-0.1.80 → geocif-0.1.81}/geocif/mm.py +0 -0
  50. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/__init__.py +0 -0
  51. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/aa.py +0 -0
  52. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/area.py +0 -0
  53. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/automl.py +0 -0
  54. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/download_esi.py +0 -0
  55. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/enso.py +0 -0
  56. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/eval.py +0 -0
  57. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/gamtest.py +0 -0
  58. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/gee_access.py +0 -0
  59. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/misc.py +0 -0
  60. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/play_xagg.py +0 -0
  61. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/reg.py +0 -0
  62. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/sustain.py +0 -0
  63. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/test_catboost.py +0 -0
  64. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/tmp.py +0 -0
  65. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/tmp2.py +0 -0
  66. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/tmp3.py +0 -0
  67. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/tmp4.py +0 -0
  68. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/tmp5.py +0 -0
  69. {geocif-0.1.80 → geocif-0.1.81}/geocif/playground/wolayita_maize_mask.py +0 -0
  70. {geocif-0.1.80 → geocif-0.1.81}/geocif/risk/__init__.py +0 -0
  71. {geocif-0.1.80 → geocif-0.1.81}/geocif/risk/impact_assessment.py +0 -0
  72. {geocif-0.1.80 → geocif-0.1.81}/geocif/utils.py +0 -0
  73. {geocif-0.1.80 → geocif-0.1.81}/geocif/viz/__init__.py +0 -0
  74. {geocif-0.1.80 → geocif-0.1.81}/geocif/viz/gt.py +0 -0
  75. {geocif-0.1.80 → geocif-0.1.81}/geocif/viz/plot.py +0 -0
  76. {geocif-0.1.80 → geocif-0.1.81}/geocif/viz/tmp.py +0 -0
  77. {geocif-0.1.80 → geocif-0.1.81}/geocif.egg-info/SOURCES.txt +0 -0
  78. {geocif-0.1.80 → geocif-0.1.81}/geocif.egg-info/dependency_links.txt +0 -0
  79. {geocif-0.1.80 → geocif-0.1.81}/geocif.egg-info/not-zip-safe +0 -0
  80. {geocif-0.1.80 → geocif-0.1.81}/geocif.egg-info/top_level.txt +0 -0
  81. {geocif-0.1.80 → geocif-0.1.81}/requirements.txt +0 -0
  82. {geocif-0.1.80 → geocif-0.1.81}/setup.cfg +0 -0
  83. {geocif-0.1.80 → geocif-0.1.81}/tests/test_geocif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.80
3
+ Version: 0.1.81
4
4
  Summary: Models to visualize and forecast crop conditions and yields
5
5
  Home-page: https://ritviksahajpal.github.io/yield_forecasting/
6
6
  Author: Ritvik Sahajpal
@@ -158,9 +158,14 @@ def adjust_dataframes(df: pd.DataFrame) -> pd.DataFrame:
158
158
  earliest_year = df["time"].dt.year.min()
159
159
  desired_start_year = earliest_year + 1
160
160
  desired_start_date_dynamic = pd.Timestamp(f"{desired_start_year}-01-01")
161
+
162
+ # Calculate the difference between the earliest date in the dataset and the desired start date
161
163
  min_date_new = df["time"].min()
162
164
  date_difference_dynamic = desired_start_date_dynamic - min_date_new
165
+
166
+ # Adjust all dates in the 'time' column forward by the calculated difference
163
167
  df["time"] = df["time"] + date_difference_dynamic
168
+
164
169
  return df
165
170
 
166
171
 
@@ -214,8 +219,9 @@ def get_icclim_dates(
214
219
  # end_br: latest date - 2 years
215
220
  end_br = str(df_all_years_ix.index[-1][2] - relativedelta(years=2))
216
221
 
217
- start_tr = np.datetime_as_string(df_harvest_year_ix.index[0][2])
218
- end_tr = np.datetime_as_string(df_harvest_year_ix.index[-1][2])
222
+ start_tr = np.datetime_as_string(df_harvest_year_ix.index[0][2].to_datetime64())
223
+ end_tr = np.datetime_as_string(df_harvest_year_ix.index[-1][2].to_datetime64())
224
+
219
225
  return start_br, end_br, start_tr, end_tr
220
226
 
221
227
 
@@ -244,8 +250,11 @@ def compute_indices(
244
250
  df_time_period = adjust_dataframes(df_time_period)
245
251
  df_base_period = adjust_dataframes(df_base_period)
246
252
 
247
- dx, vals_ix = df_to_xarray(df_base_period)
248
- start_br, end_br, start_tr, end_tr = get_icclim_dates(vals_ix, df_time_period.set_index(["lat", "lon", "time"]))
253
+ try:
254
+ dx, vals_ix = df_to_xarray(df_base_period)
255
+ start_br, end_br, start_tr, end_tr = get_icclim_dates(vals_ix, df_time_period.set_index(["lat", "lon", "time"]))
256
+ except:
257
+ breakpoint()
249
258
 
250
259
  # For seasonal indices, slice_mode is used, but for SPI indices it fails
251
260
  slice_mode = (
@@ -277,6 +286,7 @@ def compute_indices(
277
286
  "Error computing %s for %s to %s: %s",
278
287
  index_name, start_tr, end_tr, e
279
288
  )
289
+ breakpoint()
280
290
 
281
291
  return ds
282
292
 
@@ -319,11 +329,11 @@ METHOD_TO_COLUMN = {
319
329
  "full_season": "crop_cal",
320
330
  "fraction_season": "fraction_season",
321
331
  "dekad": "dekad",
322
- "dekad_r": "dekad",
332
+ "dekad_r": "dekad_r",
323
333
  "biweekly": "biweekly",
324
- "biweekly_r": "biweekly",
334
+ "biweekly_r": "biweekly_r",
325
335
  "monthly": "monthly",
326
- "monthly_r": "monthly"
336
+ "monthly_r": "monthly_r"
327
337
  }
328
338
 
329
339
 
@@ -636,22 +646,24 @@ class CEIs:
636
646
  )
637
647
 
638
648
  # 1) ICCLIM-based indices
639
- for index_name, (index_type, index_details) in di.dict_indices.items():
640
- ds = compute_indices(df_time_period, df_base_period, index_name)
641
- if ds:
642
- df_out = ds.to_dataframe().reset_index()
643
- df_processed = self.process_row(
644
- df_out,
645
- df_harvest_year_region,
646
- extended_stage,
647
- key,
648
- index_name,
649
- index_type,
650
- index_details
651
- )
652
- if not df_processed.empty:
653
- frames_group.append(df_processed)
654
-
649
+ try:
650
+ for index_name, (index_type, index_details) in di.dict_indices.items():
651
+ ds = compute_indices(df_time_period, df_base_period, index_name)
652
+ if ds:
653
+ df_out = ds.to_dataframe().reset_index()
654
+ df_processed = self.process_row(
655
+ df_out,
656
+ df_harvest_year_region,
657
+ extended_stage,
658
+ key,
659
+ index_name,
660
+ index_type,
661
+ index_details
662
+ )
663
+ if not df_processed.empty:
664
+ frames_group.append(df_processed)
665
+ except:
666
+ breakpoint()
655
667
  # 2) EO indices (NDVI, ESI, GCVI, H-INDEX, etc.)
656
668
  for eo_var in ["GCVI", "NDVI", "ESI4WK", "H-INDEX"]:
657
669
  df_eo = self.compute_eo_indices(df_time_period, df_harvest_year_region, eo_var, key, extended_stage)
@@ -165,7 +165,7 @@ class cei_runner(base.BaseGeo):
165
165
  combinations = [
166
166
  i
167
167
  for i in combinations
168
- if "ukraine_maize" in i[3]
168
+ if "ukraine" in i[3]
169
169
  # or "lesotho_maize" in i[3] or
170
170
  # # "namibia_" in i[2] or
171
171
  # "united_republic_of_tanzania_maize" in i[3]
@@ -179,7 +179,7 @@ class cei_runner(base.BaseGeo):
179
179
  ]
180
180
  # "malawi" in i[2]]
181
181
 
182
- if True or self.do_parallel:
182
+ if self.do_parallel:
183
183
  num_cpu = int(cpu_count() * 0.6)
184
184
  with Pool(num_cpu) as p:
185
185
  for i, _ in enumerate(p.imap_unordered(indices.process, combinations)):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.80
3
+ Version: 0.1.81
4
4
  Summary: Models to visualize and forecast crop conditions and yields
5
5
  Home-page: https://ritviksahajpal.github.io/yield_forecasting/
6
6
  Author: Ritvik Sahajpal
@@ -50,6 +50,6 @@ setup(
50
50
  test_suite="tests",
51
51
  tests_require=test_requirements,
52
52
  url="https://ritviksahajpal.github.io/yield_forecasting/",
53
- version="0.1.80",
53
+ version="0.1.81",
54
54
  zip_safe=False,
55
55
  )
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