monocongo/climate_indices

Index Error

Closed this issue · 0 comments

Thank you for this package!

I have been following this: https://gist.github.com/bennyistanto/e8f7335a5b4537b44691eeb68f6090a0 to create SPI data for Malawi using CHIRPS data. I have a netCDF file with precipitation data. Running:
ncdump -h malawi_cli_chirps_1months_1981_2022.nc
Returns:

netcdf malawi_cli_chirps_1months_1981_2022 {
dimensions:
time = UNLIMITED ; // (505 currently)
lat = 156 ;
lon = 66 ;
variables:
float time(time) ;
time:units = "days since 1981-1-1 00:00:00" ;
time:standard_name = "time" ;
time:calendar = "gregorian" ;
time:axis = "T" ;
float lat(lat) ;
lat:units = "degrees_north" ;
lat:standard_name = "latitude" ;
lat:long_name = "latitude" ;
lat:axis = "Y" ;
float lon(lon) ;
lon:units = "degrees_east" ;
lon:standard_name = "longitude" ;
lon:long_name = "longitude" ;
lon:axis = "X" ;
int crs ;
crs:long_name = "Lon/Lat Coords in WGS84" ;
crs:grid_mapping_name = "latitude_longitude" ;
crs:longitude_of_prime_meridian = 0. ;
crs:semi_major_axis = 6378137. ;
crs:inverse_flattening = 298.257223563 ;
float precip(time, lat, lon) ;
precip:_FillValue = -9999.f ;
precip:units = "mm" ;
precip:standard_name = "convective precipitation rate" ;
precip:long_name = "Climate Hazards group InfraRed Precipitation with Stations" ;
precip:time_step = "month" ;
precip:missing_value = -9999.f ;
precip:geospatial_lat_min = -17.1500008516014 ;
precip:geospatial_lat_max = -9.3500007353723 ;
precip:geospatial_lon_min = 32.6500007845461 ;
precip:geospatial_lon_max = 35.95000083372 ;
precip:grid_mapping = "crs" ;

// global attributes:
:Conventions = "CF-1.6" ;
:title = "CHIRPS v2.0" ;
:history = "created by Climate Hazards Group. University of California at Santa Barbara" ;
:version = "Version 2.0" ;
:comments = "time variable denotes the first day of the given month." ;
:website = "https://www.chc.ucsb.edu/data/chirps" ;
:date_created = "2021-01-25" ;
:creator_name = "Benny Istanto" ;
:creator_email = "benny.istanto@wfp.org" ;
:institution = "UN World Food Programme" ;
:note = "The data is developed to support regular updating procedure for SPI analysis (https://github.com/wfpidn/SPI). This activities will support WFP to assess extreme dry and wet periods as part of WFP's Seasonal Monitoring" ;
}

Which I think should be ok for running the SPI command. Then I run:
spi --periodicity monthly --scales 1 2 3 6 9 12 24 36 48 60 72 --calibration_start_year 1981 --calibration_end_year 2022 --netcdf_precip malawi_cli_chirps_1months_1981_2022.nc --var_name_precip precip --output_file_base Users/tristany/desktop --multiprocessing single
And get the following error:

2023-02-26 14:05:28 INFO Start time: 2023-02-26 14:05:28.363949
2023-02-26 14:05:28 INFO Computing monthly SPI
2023-02-26 14:05:28 INFO Computing 1-month SPI (Gamma)
2023-02-26 14:05:30 ERROR Failed to complete
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1212, in _apply_to_subarray_gamma
periodicity=args["periodicity"],
IndexError: index 66 is out of bounds for axis 1 with size 66
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1502, in main
_compute_write_index(kwrgs)
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 700, in _compute_write_index
args=args,
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1007, in _parallel_fitting
pool.map(_apply_to_subarray_gamma, chunk_params)
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 268, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 657, in get
raise self._value
IndexError: index 66 is out of bounds for axis 1 with size 66
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1212, in _apply_to_subarray_gamma
periodicity=args["periodicity"],
IndexError: index 66 is out of bounds for axis 1 with size 66
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/tristany/miniconda3/envs/climate_indices/bin/spi", line 8, in
sys.exit(main())
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1502, in main
_compute_write_index(kwrgs)
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 700, in _compute_write_index
args=args,
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/site-packages/climate_indices/spi.py", line 1007, in _parallel_fitting
pool.map(_apply_to_subarray_gamma, chunk_params)
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 268, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/Users/tristany/miniconda3/envs/climate_indices/lib/python3.7/multiprocessing/pool.py", line 657, in get
raise self._value
IndexError: index 66 is out of bounds for axis 1 with size 66

Any ideas as to what I'm missing? Thank you!