geocif 0.1.59__tar.gz → 0.1.60__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 (79) hide show
  1. {geocif-0.1.59/geocif.egg-info → geocif-0.1.60}/PKG-INFO +1 -1
  2. {geocif-0.1.59 → geocif-0.1.60}/geocif/geocif.py +10 -0
  3. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/feature_engineering.py +43 -0
  4. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/feature_selection.py +0 -1
  5. {geocif-0.1.59 → geocif-0.1.60/geocif.egg-info}/PKG-INFO +1 -1
  6. {geocif-0.1.59 → geocif-0.1.60}/setup.py +1 -1
  7. {geocif-0.1.59 → geocif-0.1.60}/LICENSE +0 -0
  8. {geocif-0.1.59 → geocif-0.1.60}/MANIFEST.in +0 -0
  9. {geocif-0.1.59 → geocif-0.1.60}/README.md +0 -0
  10. {geocif-0.1.59 → geocif-0.1.60}/geocif/__init__.py +0 -0
  11. {geocif-0.1.59 → geocif-0.1.60}/geocif/agmet/__init__.py +0 -0
  12. {geocif-0.1.59 → geocif-0.1.60}/geocif/agmet/geoagmet.py +0 -0
  13. {geocif-0.1.59 → geocif-0.1.60}/geocif/agmet/plot.py +0 -0
  14. {geocif-0.1.59 → geocif-0.1.60}/geocif/agmet/utils.py +0 -0
  15. {geocif-0.1.59 → geocif-0.1.60}/geocif/analysis.py +0 -0
  16. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/__init__.py +0 -0
  17. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/constants.py +0 -0
  18. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/features.py +0 -0
  19. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/geo.py +0 -0
  20. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/geocif.py +0 -0
  21. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/metadata.py +0 -0
  22. {geocif-0.1.59 → geocif-0.1.60}/geocif/backup/models.py +0 -0
  23. {geocif-0.1.59 → geocif-0.1.60}/geocif/cei/__init__.py +0 -0
  24. {geocif-0.1.59 → geocif-0.1.60}/geocif/cei/definitions.py +0 -0
  25. {geocif-0.1.59 → geocif-0.1.60}/geocif/cei/indices.py +0 -0
  26. {geocif-0.1.59 → geocif-0.1.60}/geocif/experiments.py +0 -0
  27. {geocif-0.1.59 → geocif-0.1.60}/geocif/geocif_runner.py +0 -0
  28. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner.py +0 -0
  29. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_angola.py +0 -0
  30. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_madagascar.py +0 -0
  31. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_malawi.py +0 -0
  32. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_mozambique.py +0 -0
  33. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_south_africa.py +0 -0
  34. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_zambia.py +0 -0
  35. {geocif-0.1.59 → geocif-0.1.60}/geocif/indices_runner_zimbabwe.py +0 -0
  36. {geocif-0.1.59 → geocif-0.1.60}/geocif/logger.py +0 -0
  37. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/__init__.py +0 -0
  38. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/correlations.py +0 -0
  39. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/embedding.py +0 -0
  40. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/outliers.py +0 -0
  41. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/outlook.py +0 -0
  42. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/output.py +0 -0
  43. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/spatial_autocorrelation.py +0 -0
  44. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/stages.py +0 -0
  45. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/stats.py +0 -0
  46. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/trainers.py +0 -0
  47. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/trend.py +0 -0
  48. {geocif-0.1.59 → geocif-0.1.60}/geocif/ml/xai.py +0 -0
  49. {geocif-0.1.59 → geocif-0.1.60}/geocif/mm.py +0 -0
  50. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/__init__.py +0 -0
  51. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/aa.py +0 -0
  52. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/automl.py +0 -0
  53. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/download_esi.py +0 -0
  54. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/enso.py +0 -0
  55. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/eval.py +0 -0
  56. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/gamtest.py +0 -0
  57. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/gee_access.py +0 -0
  58. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/misc.py +0 -0
  59. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/play_xagg.py +0 -0
  60. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/reg.py +0 -0
  61. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/sustain.py +0 -0
  62. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/test_catboost.py +0 -0
  63. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/tmp.py +0 -0
  64. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/tmp2.py +0 -0
  65. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/tmp3.py +0 -0
  66. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/tmp4.py +0 -0
  67. {geocif-0.1.59 → geocif-0.1.60}/geocif/playground/tmp5.py +0 -0
  68. {geocif-0.1.59 → geocif-0.1.60}/geocif/risk/__init__.py +0 -0
  69. {geocif-0.1.59 → geocif-0.1.60}/geocif/risk/impact_assessment.py +0 -0
  70. {geocif-0.1.59 → geocif-0.1.60}/geocif/utils.py +0 -0
  71. {geocif-0.1.59 → geocif-0.1.60}/geocif/viz/__init__.py +0 -0
  72. {geocif-0.1.59 → geocif-0.1.60}/geocif/viz/plot.py +0 -0
  73. {geocif-0.1.59 → geocif-0.1.60}/geocif.egg-info/SOURCES.txt +0 -0
  74. {geocif-0.1.59 → geocif-0.1.60}/geocif.egg-info/dependency_links.txt +0 -0
  75. {geocif-0.1.59 → geocif-0.1.60}/geocif.egg-info/not-zip-safe +0 -0
  76. {geocif-0.1.59 → geocif-0.1.60}/geocif.egg-info/top_level.txt +0 -0
  77. {geocif-0.1.59 → geocif-0.1.60}/requirements.txt +0 -0
  78. {geocif-0.1.59 → geocif-0.1.60}/setup.cfg +0 -0
  79. {geocif-0.1.59 → geocif-0.1.60}/tests/test_geocif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.59
3
+ Version: 0.1.60
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
@@ -730,6 +730,8 @@ class Geocif:
730
730
 
731
731
  if self.median_yield_as_feature:
732
732
  self.feature_names.append(f"Median {self.target}")
733
+ self.feature_names.append(f"Median {self.target} (2014-2018)")
734
+ self.feature_names.append(f"Median {self.target} (2013-2017)")
733
735
 
734
736
  if self.lag_yield_as_feature:
735
737
  # For the number of years specified in self.number_lag_years
@@ -988,6 +990,14 @@ class Geocif:
988
990
  df, self.all_seasons_with_yield, self.number_median_years, self.target
989
991
  )
990
992
 
993
+ df = fe.compute_user_median_statistics(
994
+ df, [2014, 2015, 2016, 2017, 2018]
995
+ )
996
+
997
+ df = fe.compute_user_median_statistics(
998
+ df, [2013, 2014, 2015, 2016, 2017]
999
+ )
1000
+
991
1001
  if self.median_area_as_feature:
992
1002
  df = fe.compute_median_statistics(
993
1003
  df, self.all_seasons_with_yield, self.number_median_years, "Area (ha)"
@@ -105,6 +105,49 @@ def compute_median_statistics(
105
105
  return df
106
106
 
107
107
 
108
+ def compute_user_median_statistics(df, user_years, target_col="Yield (tn per ha)"):
109
+ """
110
+ Enhances the DataFrame with a new column that contains the median yield computed
111
+ using only the yields from the user-specified list of years.
112
+
113
+ Args:
114
+ df (DataFrame): The original DataFrame containing yield data.
115
+ user_years (array-like): List of years to consider for computing the median yield.
116
+ target_col (str): The column name from which to compute the median yield.
117
+
118
+ Returns:
119
+ DataFrame: The original DataFrame enhanced with a new column for median yield.
120
+ """
121
+ # Ensure 'Harvest Year' is treated as integer for accurate comparisons.
122
+ df["Harvest Year"] = df["Harvest Year"].astype(int)
123
+
124
+ # Sort the user_years list to reliably extract the earliest and latest years.
125
+ user_years_sorted = sorted(user_years)
126
+ first_year = user_years_sorted[0]
127
+ last_year = user_years_sorted[-1]
128
+
129
+ # Define the new column name to include the range of years.
130
+ new_col_name = f"Median {target_col} ({first_year}-{last_year})"
131
+
132
+ # Initialize the new column with NaN values.
133
+ df[new_col_name] = np.nan
134
+
135
+ # Group by region and compute the median yield for the specified years.
136
+ for region, group in tqdm(df.groupby("Region"), desc="Median yield", leave=False):
137
+ # Skip if the target column is completely null for this region.
138
+ if group[target_col].isnull().all():
139
+ continue
140
+
141
+ # Filter the rows to only include harvest years that are in the user provided list.
142
+ mask = group["Harvest Year"].isin(user_years)
143
+ median_yield = group.loc[mask, target_col].median()
144
+
145
+ # Assign the computed median yield to all rows in the current region.
146
+ df.loc[df["Region"] == region, new_col_name] = median_yield
147
+
148
+ return df
149
+
150
+
108
151
  def compute_lag_yield(
109
152
  df, all_seasons_with_yield, number_lag_years, target_col="Yield (tn per ha)"
110
153
  ):
@@ -192,7 +192,6 @@ def select_features(X, y, method="RFE", min_features_to_select=3, threshold_nan=
192
192
  from boruta import BorutaPy
193
193
 
194
194
  selector = BorutaPy(forest, n_estimators="auto", random_state=42)
195
- breakpoint()
196
195
  selector.fit(X.values, y.values)
197
196
  selected_features_mask = selector.support_
198
197
  selected_features = X.columns[selected_features_mask].tolist()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.1.59
3
+ Version: 0.1.60
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.59",
53
+ version="0.1.60",
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