geocif 0.2.44__tar.gz → 0.2.46__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 (87) hide show
  1. {geocif-0.2.44/geocif.egg-info → geocif-0.2.46}/PKG-INFO +1 -1
  2. {geocif-0.2.44 → geocif-0.2.46}/geocif/cei/indices.py +1 -1
  3. {geocif-0.2.44 → geocif-0.2.46}/geocif/geocif.py +1 -0
  4. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_angola.py +1 -1
  5. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/aa.py +29 -14
  6. {geocif-0.2.44 → geocif-0.2.46/geocif.egg-info}/PKG-INFO +1 -1
  7. {geocif-0.2.44 → geocif-0.2.46}/setup.py +1 -1
  8. {geocif-0.2.44 → geocif-0.2.46}/LICENSE +0 -0
  9. {geocif-0.2.44 → geocif-0.2.46}/MANIFEST.in +0 -0
  10. {geocif-0.2.44 → geocif-0.2.46}/README.md +0 -0
  11. {geocif-0.2.44 → geocif-0.2.46}/geocif/__init__.py +0 -0
  12. {geocif-0.2.44 → geocif-0.2.46}/geocif/agmet/__init__.py +0 -0
  13. {geocif-0.2.44 → geocif-0.2.46}/geocif/agmet/geoagmet.py +0 -0
  14. {geocif-0.2.44 → geocif-0.2.46}/geocif/agmet/plot.py +0 -0
  15. {geocif-0.2.44 → geocif-0.2.46}/geocif/agmet/utils.py +0 -0
  16. {geocif-0.2.44 → geocif-0.2.46}/geocif/analysis.py +0 -0
  17. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/__init__.py +0 -0
  18. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/constants.py +0 -0
  19. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/features.py +0 -0
  20. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/geo.py +0 -0
  21. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/geocif.py +0 -0
  22. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/metadata.py +0 -0
  23. {geocif-0.2.44 → geocif-0.2.46}/geocif/backup/models.py +0 -0
  24. {geocif-0.2.44 → geocif-0.2.46}/geocif/cei/__init__.py +0 -0
  25. {geocif-0.2.44 → geocif-0.2.46}/geocif/cei/definitions.py +0 -0
  26. {geocif-0.2.44 → geocif-0.2.46}/geocif/experiments.py +0 -0
  27. {geocif-0.2.44 → geocif-0.2.46}/geocif/geocif_runner.py +0 -0
  28. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner.py +0 -0
  29. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_madagascar.py +0 -0
  30. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_malawi.py +0 -0
  31. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_mozambique.py +0 -0
  32. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_south_africa.py +0 -0
  33. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_zambia.py +0 -0
  34. {geocif-0.2.44 → geocif-0.2.46}/geocif/indices_runner_zimbabwe.py +0 -0
  35. {geocif-0.2.44 → geocif-0.2.46}/geocif/logger.py +0 -0
  36. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/__init__.py +0 -0
  37. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/correlations.py +0 -0
  38. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/embedding.py +0 -0
  39. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/feature_engineering.py +0 -0
  40. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/feature_selection.py +0 -0
  41. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/outliers.py +0 -0
  42. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/outlook.py +0 -0
  43. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/output.py +0 -0
  44. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/spatial_autocorrelation.py +0 -0
  45. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/stages.py +0 -0
  46. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/stats.py +0 -0
  47. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/trainers.py +0 -0
  48. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/trend.py +0 -0
  49. {geocif-0.2.44 → geocif-0.2.46}/geocif/ml/xai.py +0 -0
  50. {geocif-0.2.44 → geocif-0.2.46}/geocif/mm.py +0 -0
  51. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/__init__.py +0 -0
  52. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/area.py +0 -0
  53. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/automl.py +0 -0
  54. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/download_esi.py +0 -0
  55. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/enso.py +0 -0
  56. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/eval.py +0 -0
  57. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/gamtest.py +0 -0
  58. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/gee_access.py +0 -0
  59. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/misc.py +0 -0
  60. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/play_xagg.py +0 -0
  61. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/reg.py +0 -0
  62. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/sustain.py +0 -0
  63. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/test_catboost.py +0 -0
  64. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/tmp.py +0 -0
  65. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/tmp2.py +0 -0
  66. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/tmp3.py +0 -0
  67. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/tmp4.py +0 -0
  68. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/tmp5.py +0 -0
  69. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/wolayita.py +0 -0
  70. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/wolayita_maize_mask.py +0 -0
  71. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/wolayita_v2.py +0 -0
  72. {geocif-0.2.44 → geocif-0.2.46}/geocif/playground/wolayita_v3.py +0 -0
  73. {geocif-0.2.44 → geocif-0.2.46}/geocif/risk/__init__.py +0 -0
  74. {geocif-0.2.44 → geocif-0.2.46}/geocif/risk/impact_assessment.py +0 -0
  75. {geocif-0.2.44 → geocif-0.2.46}/geocif/utils.py +0 -0
  76. {geocif-0.2.44 → geocif-0.2.46}/geocif/viz/__init__.py +0 -0
  77. {geocif-0.2.44 → geocif-0.2.46}/geocif/viz/gt.py +0 -0
  78. {geocif-0.2.44 → geocif-0.2.46}/geocif/viz/plot.py +0 -0
  79. {geocif-0.2.44 → geocif-0.2.46}/geocif/viz/tmp.py +0 -0
  80. {geocif-0.2.44 → geocif-0.2.46}/geocif/viz/viz_ml.py +0 -0
  81. {geocif-0.2.44 → geocif-0.2.46}/geocif.egg-info/SOURCES.txt +0 -0
  82. {geocif-0.2.44 → geocif-0.2.46}/geocif.egg-info/dependency_links.txt +0 -0
  83. {geocif-0.2.44 → geocif-0.2.46}/geocif.egg-info/not-zip-safe +0 -0
  84. {geocif-0.2.44 → geocif-0.2.46}/geocif.egg-info/top_level.txt +0 -0
  85. {geocif-0.2.44 → geocif-0.2.46}/requirements.txt +0 -0
  86. {geocif-0.2.44 → geocif-0.2.46}/setup.cfg +0 -0
  87. {geocif-0.2.44 → geocif-0.2.46}/tests/test_geocif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.2.44
3
+ Version: 0.2.46
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
@@ -67,7 +67,7 @@ def standardize_dataframe(df: pd.DataFrame, vi_var: str) -> pd.DataFrame:
67
67
  if "time" not in df.columns:
68
68
  # Use year + day of year if no time column
69
69
  df["time"] = pd.to_datetime(
70
- df["year"].astype(str) + df["JD"].astype(str),
70
+ df["year"].astype(str) + df["Doy"].astype(str),
71
71
  format="%Y%j"
72
72
  )
73
73
  else:
@@ -845,6 +845,7 @@ class Geocif:
845
845
  if self.model_name in ["gam", "linear"]:
846
846
  for col in self.X_train.columns:
847
847
  if self.X_train[col].isnull().any():
848
+ breakpoint()
848
849
  median = self.X_train[col].median()
849
850
  self.X_train[col].fillna(median, inplace=True)
850
851
 
@@ -12,7 +12,7 @@ warnings.filterwarnings("ignore")
12
12
  from .cei import indices
13
13
  from geoprepare import base
14
14
 
15
- country = "angola"
15
+ country = "algeria"
16
16
 
17
17
 
18
18
  def remove_duplicates(lst):
@@ -2,28 +2,30 @@ import geopandas as gpd
2
2
  import pandas as pd
3
3
  import matplotlib.pyplot as plt
4
4
  import matplotlib as mpl
5
-
5
+ from pathlib import Path
6
6
 
7
7
  import pandas as pd
8
8
 
9
- # Step 1: Read the CSV file
10
- input_file_path = r"C:\Users\ritvik\Downloads\observed_adjusted_detrended_woreda_yield (1).csv"
11
- df = pd.read_csv(input_file_path)
9
+ DATA_DIR = Path(r"C:\Users\ritvik\Downloads\exported_all_db")
12
10
 
13
- # Step 2: Remove rows that are completely empty (all columns are NaN)
14
- df_cleaned = df.dropna(how='all')
11
+ # Grab all maize CSV files (skip 'models.csv')
12
+ csv_paths = sorted(DATA_DIR.glob("*_maize.csv"))
15
13
 
16
- # Step 3: Write the cleaned data back to a new CSV file
17
- output_file_path = r"C:\Users\ritvik\Downloads\observed_adjusted_detrended_woreda_yield_cleaned.csv"
18
- df_cleaned.to_csv(output_file_path, index=False)
14
+ dfs = []
15
+ for fp in csv_paths:
16
+ df = pd.read_csv(fp)
17
+ # Build the 'Country Region' column
18
+ df["Country Region"] = (
19
+ df["Country"].str.strip() + "_" + df["Region"].str.strip()
20
+ ).str.replace(r"\s+", "_", regex=True).str.lower()
21
+ dfs.append(df)
19
22
 
20
- # (Optional) Look at the first few rows of the cleaned DataFrame
21
- df_cleaned.head()
23
+ # Concatenate everything
24
+ df = pd.concat(dfs, ignore_index=True)
22
25
 
23
- breakpoint()
24
26
  # --- 1. Read data ---
25
27
  dg = gpd.read_file(r"D:\Users\ritvik\projects\GEOGLAM\safrica.shp")
26
- df = pd.read_csv(r"D:\Users\ritvik\projects\GEOGLAM\geocif_march_2025.csv")
28
+ # df = pd.read_csv(r"D:\Users\ritvik\projects\GEOGLAM\geocif_march_2025.csv")
27
29
 
28
30
  # --- 2. Create the new "Country Region" column ---
29
31
  dg['Country Region'] = (
@@ -42,6 +44,15 @@ dg['Country Region'] = (
42
44
  # --- 3. Merge shapefile with CSV ---
43
45
  merged = dg.merge(df, left_on='Country Region', right_on='Country Region', how='right')
44
46
 
47
+ # Compute '% Anomaly (2013-2017)' and '% Anomaly (2018-2022)' as (value - mean) / mean * 100
48
+ merged['% Anomaly (2013-2017)'] = (
49
+ merged["Predicted Yield (tn per ha)"] - merged['Median Yield (tn per ha) (2013-2017)']
50
+ ) / merged['Median Yield (tn per ha) (2013-2017)'] * 100
51
+ merged['% Anomaly (2018-2022)'] = (
52
+ merged["Predicted Yield (tn per ha)"] - merged['Median Yield (tn per ha) (2018-2022)']
53
+ ) / merged['Median Yield (tn per ha) (2018-2022)'] * 100
54
+
55
+
45
56
  # --- 4. Rename columns ---
46
57
  merged.rename(
47
58
  columns={
@@ -52,8 +63,12 @@ merged.rename(
52
63
  )
53
64
 
54
65
  # Optional: Write out merged shapefile
55
- merged.to_file(r"D:\Users\ritvik\projects\GEOGLAM\safrica_geocif_march_2025.shp")
66
+ merged.to_file(r"D:\Users\ritvik\projects\GEOGLAM\safrica_geocif_may_2025.shp")
67
+
68
+ # Output to CSV and exclude geometry
69
+ merged.drop(columns='geometry').to_csv(r"D:\Users\ritvik\projects\GEOGLAM\safrica_geocif_may_2025.csv", index=False)
56
70
 
71
+ breakpoint()
57
72
  # --- 5. Plot ---
58
73
  fig, ax = plt.subplots(1, 2, figsize=(20, 10))
59
74
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geocif
3
- Version: 0.2.44
3
+ Version: 0.2.46
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.2.44",
53
+ version="0.2.46",
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