pankajkarman / bias_correction

python library for bias correction
MIT License
30 stars 8 forks source link

XBiascorrection - indexes along dimension 'time' are not equal #5

Closed ady-br closed 2 years ago

ady-br commented 2 years ago

Dear Pankaj, Thank you for sharing your code. I have tried applying your code to my netcdf data. I have tried to apply your code to my netcdf data. I read the data according to the example you provided and got the following error.

df2 = bc.correct(method='basic_quantile')
Traceback (most recent call last):
  File "<ipython-input-47-075a7c14804d>", line 1, in <module>
    df2 = bc.correct(method='basic_quantile')
  File "/home/pikam04/miniconda2/envs/srcnn/lib/python3.7/site-packages/bias_correction.py", line 206, in correct
    output_core_dims=[[dim]], kwargs={'modified':False})
  File "/home/pikam04/miniconda2/envs/srcnn/lib/python3.7/site-packages/xarray/core/computation.py", line 1177, in apply_ufunc
    keep_attrs=keep_attrs,
  File "/home/pikam04/miniconda2/envs/srcnn/lib/python3.7/site-packages/xarray/core/computation.py", line 273, in apply_dataarray_vfunc
    args, join=join, copy=False, exclude=exclude_dims, raise_on_invalid=False
  File "/home/pikam04/miniconda2/envs/srcnn/lib/python3.7/site-packages/xarray/core/alignment.py", line 433, in deep_align
    fill_value=fill_value,
  File "/home/pikam04/miniconda2/envs/srcnn/lib/python3.7/site-packages/xarray/core/alignment.py", line 323, in align
    raise ValueError(f"indexes along dimension {dim!r} are not equal")
ValueError: indexes along dimension 'time' are not equal

Here I attached my code :

from bias_correction import XBiasCorrection
import xarray as xr
import pandas as pd
import matplotlib.pyplot as plt

chirps = xr.open_dataset("CHIRPS_005.nc")
model = xr.open_dataset("hindcast//CCSM4_ens_0p05.nc")
obs_data= xr.DataArray(chirps.prcp.values, dims=['time','lat','lon'], 
                  coords=[pd.date_range('1999-01-07', '2017-01-06', freq='D'), 
                          chirps.lat.values, chirps.lon.values])                         
mod_data = xr.DataArray(model.pr.values, dims=['time','lat','lon'], 
                          coords=[pd.date_range('1999-01-07', '2017-01-06', freq='D'),
                                  chirps.lat.values, chirps.lon.values])
obs = obs_data.loc[dict(time=slice("2000-01-01", "2015-12-31"))]
#obs = obs.sel(time=~((obs.time.dt.month == 2) & (obs.time.dt.day == 29)))
mod = mod_data.loc[dict(time=slice("2000-01-01", "2015-12-31"))]
#mod = mod.sel(time=~((mod.time.dt.month == 2) & (mod.time.dt.day == 29)))
fct = mod_data.loc[dict(time=slice("2016-01-01", "2016-12-31"))]
#fct = fct.sel(time=~((fct.time.dt.month == 2) & (fct.time.dt.day == 29)))
bc = XBiasCorrection(obs, mod, fct)
df2 = bc.correct(method='basic_quantile')

I was wondering how can I fix this issue.

Thank you in advance

pankajkarman commented 2 years ago

@ady-br Thank you for your interest in this library. I would suggest you to diligently follow the example notebook given in this repo. Following the same would solve your problem.

aaronspring commented 2 years ago

passing in correct(method=..., join='outer') as in #9 likely solves this