geocif 0.1.69__tar.gz → 0.1.71__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.69/geocif.egg-info → geocif-0.1.71}/PKG-INFO +1 -1
  2. {geocif-0.1.69 → geocif-0.1.71}/geocif/analysis.py +7 -7
  3. {geocif-0.1.69 → geocif-0.1.71}/geocif/cei/indices.py +1 -1
  4. {geocif-0.1.69 → geocif-0.1.71}/geocif/geocif.py +24 -1
  5. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_south_africa.py +2 -2
  6. {geocif-0.1.69 → geocif-0.1.71/geocif.egg-info}/PKG-INFO +1 -1
  7. {geocif-0.1.69 → geocif-0.1.71}/setup.py +1 -1
  8. {geocif-0.1.69 → geocif-0.1.71}/LICENSE +0 -0
  9. {geocif-0.1.69 → geocif-0.1.71}/MANIFEST.in +0 -0
  10. {geocif-0.1.69 → geocif-0.1.71}/README.md +0 -0
  11. {geocif-0.1.69 → geocif-0.1.71}/geocif/__init__.py +0 -0
  12. {geocif-0.1.69 → geocif-0.1.71}/geocif/agmet/__init__.py +0 -0
  13. {geocif-0.1.69 → geocif-0.1.71}/geocif/agmet/geoagmet.py +0 -0
  14. {geocif-0.1.69 → geocif-0.1.71}/geocif/agmet/plot.py +0 -0
  15. {geocif-0.1.69 → geocif-0.1.71}/geocif/agmet/utils.py +0 -0
  16. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/__init__.py +0 -0
  17. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/constants.py +0 -0
  18. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/features.py +0 -0
  19. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/geo.py +0 -0
  20. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/geocif.py +0 -0
  21. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/metadata.py +0 -0
  22. {geocif-0.1.69 → geocif-0.1.71}/geocif/backup/models.py +0 -0
  23. {geocif-0.1.69 → geocif-0.1.71}/geocif/cei/__init__.py +0 -0
  24. {geocif-0.1.69 → geocif-0.1.71}/geocif/cei/definitions.py +0 -0
  25. {geocif-0.1.69 → geocif-0.1.71}/geocif/experiments.py +0 -0
  26. {geocif-0.1.69 → geocif-0.1.71}/geocif/geocif_runner.py +0 -0
  27. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner.py +0 -0
  28. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_angola.py +0 -0
  29. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_madagascar.py +0 -0
  30. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_malawi.py +0 -0
  31. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_mozambique.py +0 -0
  32. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_zambia.py +0 -0
  33. {geocif-0.1.69 → geocif-0.1.71}/geocif/indices_runner_zimbabwe.py +0 -0
  34. {geocif-0.1.69 → geocif-0.1.71}/geocif/logger.py +0 -0
  35. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/__init__.py +0 -0
  36. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/correlations.py +0 -0
  37. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/embedding.py +0 -0
  38. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/feature_engineering.py +0 -0
  39. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/feature_selection.py +0 -0
  40. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/outliers.py +0 -0
  41. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/outlook.py +0 -0
  42. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/output.py +0 -0
  43. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/spatial_autocorrelation.py +0 -0
  44. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/stages.py +0 -0
  45. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/stats.py +0 -0
  46. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/trainers.py +0 -0
  47. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/trend.py +0 -0
  48. {geocif-0.1.69 → geocif-0.1.71}/geocif/ml/xai.py +0 -0
  49. {geocif-0.1.69 → geocif-0.1.71}/geocif/mm.py +0 -0
  50. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/__init__.py +0 -0
  51. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/aa.py +0 -0
  52. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/area.py +0 -0
  53. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/automl.py +0 -0
  54. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/download_esi.py +0 -0
  55. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/enso.py +0 -0
  56. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/eval.py +0 -0
  57. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/gamtest.py +0 -0
  58. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/gee_access.py +0 -0
  59. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/misc.py +0 -0
  60. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/play_xagg.py +0 -0
  61. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/reg.py +0 -0
  62. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/sustain.py +0 -0
  63. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/test_catboost.py +0 -0
  64. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/tmp.py +0 -0
  65. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/tmp2.py +0 -0
  66. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/tmp3.py +0 -0
  67. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/tmp4.py +0 -0
  68. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/tmp5.py +0 -0
  69. {geocif-0.1.69 → geocif-0.1.71}/geocif/playground/wolayita_maize_mask.py +0 -0
  70. {geocif-0.1.69 → geocif-0.1.71}/geocif/risk/__init__.py +0 -0
  71. {geocif-0.1.69 → geocif-0.1.71}/geocif/risk/impact_assessment.py +0 -0
  72. {geocif-0.1.69 → geocif-0.1.71}/geocif/utils.py +0 -0
  73. {geocif-0.1.69 → geocif-0.1.71}/geocif/viz/__init__.py +0 -0
  74. {geocif-0.1.69 → geocif-0.1.71}/geocif/viz/gt.py +0 -0
  75. {geocif-0.1.69 → geocif-0.1.71}/geocif/viz/plot.py +0 -0
  76. {geocif-0.1.69 → geocif-0.1.71}/geocif/viz/tmp.py +0 -0
  77. {geocif-0.1.69 → geocif-0.1.71}/geocif.egg-info/SOURCES.txt +0 -0
  78. {geocif-0.1.69 → geocif-0.1.71}/geocif.egg-info/dependency_links.txt +0 -0
  79. {geocif-0.1.69 → geocif-0.1.71}/geocif.egg-info/not-zip-safe +0 -0
  80. {geocif-0.1.69 → geocif-0.1.71}/geocif.egg-info/top_level.txt +0 -0
  81. {geocif-0.1.69 → geocif-0.1.71}/requirements.txt +0 -0
  82. {geocif-0.1.69 → geocif-0.1.71}/setup.cfg +0 -0
  83. {geocif-0.1.69 → geocif-0.1.71}/tests/test_geocif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.69
3
+ Version: 0.1.71
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
@@ -560,12 +560,12 @@ class Geoanalysis:
560
560
  )
561
561
 
562
562
  # --- For computing median yields ---
563
- # Compute median yield for 2014 - 2018
564
- df_median_2014_2018 = (
565
- df_all[df_all["Harvest Year"].between(2014, 2018)]
563
+ # Compute median yield for 2018 - 2022
564
+ df_median_2018_2022 = (
565
+ df_all[df_all["Harvest Year"].between(2018, 2022)]
566
566
  .groupby("Region")["Yield (tn per ha)"]
567
- .median()
568
- .rename(f"Median Yield (tn per ha) (2014-2018)")
567
+ .mean()
568
+ .rename(f"Median Yield (tn per ha) (2018-2022)")
569
569
  .reset_index()
570
570
  )
571
571
 
@@ -573,7 +573,7 @@ class Geoanalysis:
573
573
  df_median_2013_2017 = (
574
574
  df_all[df_all["Harvest Year"].between(2013, 2017)]
575
575
  .groupby("Region")["Yield (tn per ha)"]
576
- .median()
576
+ .mean()
577
577
  .rename("Median Yield (tn per ha) (2013-2017)")
578
578
  .reset_index()
579
579
  )
@@ -581,7 +581,7 @@ class Geoanalysis:
581
581
  # Merge the median yield columns with the % of total production dataframe
582
582
  df_historic = (
583
583
  df_pct
584
- .merge(df_median_2014_2018, on="Region", how="left")
584
+ .merge(df_median_2018_2022, on="Region", how="left")
585
585
  .merge(df_median_2013_2017, on="Region", how="left")
586
586
  )
587
587
 
@@ -675,7 +675,7 @@ class CEIs:
675
675
  elif "STD" in iname:
676
676
  val = np.nanstd(eo_vals)
677
677
  elif "AUC" in iname:
678
- val = np.trapz(eo_vals, dx=len(eo_vals))
678
+ val = np.trapz(eo_vals)
679
679
  elif "H-INDEX" in iname:
680
680
  # Multiply by 10 for h-index to work
681
681
  val = utils.compute_h_index(eo_vals * 10)
@@ -997,6 +997,25 @@ class Geocif:
997
997
  if self.use_single_time_period_as_feature:
998
998
  df = stages.select_single_time_period_features(df)
999
999
 
1000
+ # If forecasting for current season, then exclude the latest month data as it will be partial
1001
+ # and will confuse the model
1002
+ if self.forecast_season == self.today_year:
1003
+ current_month = ar.utcnow().month
1004
+
1005
+ # Identify columns where the second chunk equals the current month index
1006
+ cols_to_drop = []
1007
+ for col in df.columns:
1008
+ if "_" in col:
1009
+ mon = stages.get_stage_information_dict(col, self.method)['Starting Stage']
1010
+
1011
+ if mon == current_month:
1012
+ cols_to_drop.append(col)
1013
+
1014
+ # Drop those columns
1015
+
1016
+ df = df.drop(columns=cols_to_drop)
1017
+
1018
+ # Hack: If
1000
1019
  # Change column name
1001
1020
  # e.g. 'vDTR_7_6_5_4_3_2_1_37_36_35_34_33_32_31' to 'vDTR Mar 1-Oct 27'
1002
1021
  df = stages.update_feature_names(df, self.method)
@@ -1343,7 +1362,11 @@ class Geocif:
1343
1362
  # e.g. _stages = ['13_12_11', '13_12_11_10', '13_12_11_10_9']
1344
1363
  # then self.simulation_stages = [array([13, 12, 11]), array([13, 12, 11, 10]), array([13, 12, 11, 10, 9])]
1345
1364
  # Drop stages in self.all_stages that do not have _ in them
1346
- self.all_stages = [element for element in self.all_stages if "_" in element]
1365
+ # self.all_stages = [element for element in self.all_stages if "_" in element]
1366
+
1367
+ if self.forecast_season == self.today_year:
1368
+ current_month = ar.utcnow().month
1369
+ self.all_stages = [elem for elem in self.all_stages if not elem.startswith(str(current_month))]
1347
1370
 
1348
1371
  self.simulation_stages = [
1349
1372
  np.array([int(stage) for stage in s.split("_")]) for s in self.all_stages
@@ -162,7 +162,7 @@ class cei_runner(base.BaseGeo):
162
162
  category,
163
163
  year,
164
164
  "ndvi",
165
- False, # redo
165
+ True, # redo
166
166
  )
167
167
  for year in range(2001, ar.utcnow().year + 1)
168
168
  for status, path, filename, admin_zone, category in combinations
@@ -174,7 +174,7 @@ class cei_runner(base.BaseGeo):
174
174
  combinations = [i for i in combinations if f"{country}_maize_s1" in i[3]]
175
175
 
176
176
  if True:
177
- num_cpu = int(cpu_count() * 0.1)
177
+ num_cpu = int(cpu_count() * 0.8)
178
178
  with Pool(num_cpu) as p:
179
179
  for i, _ in enumerate(p.imap_unordered(indices.process, combinations)):
180
180
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.69
3
+ Version: 0.1.71
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.69",
53
+ version="0.1.71",
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