openghg / openghg_inversions

University of Bristol Atmospheric Chemistry Research Group RHIME Inversion code (with openghg dependency)
MIT License
5 stars 0 forks source link

Handle fps with slightly different coordinates #147

Open joe-pitt opened 6 days ago

joe-pitt commented 6 days ago

The code can handle a situation when the flux file has slightly different coordinates (i.e. precision errors) from the fp files, but it appears to be failing when you have two sites whose fps have different coordinates to each other. The specific example I am running is for 2014 hfo1234zee, using MHD and JFJ, taking fps from the store: "/group/chem/acrg/object_stores/updated/shared_store_zarr". The error I get is:

Traceback (most recent call last):
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/hbmcmc/run_hbmcmc.py", line 247, in <module>
    mcmc_function(**param)
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/hbmcmc/hbmcmc.py", line 388, in fixedbasisMCMC
    fp_data = basis_functions_wrapper(
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/basis/_wrapper.py", line 95, in basis_functions_wrapper
    basis_data_array = fixed_outer_regions_basis(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/basis/_functions.py", line 193, in fixed_outer_regions_basis
    inner_region = basis_function(fp_all, start_date, emissions_name, nbasis, abs_flux, mask=mask)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/basis/_functions.py", line 151, in bucketbasisfunction
    fps = _mean_fp_times_mean_flux(flux, footprints, abs_flux=abs_flux, mask=mask).as_numpy()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/home/zh21490/openghg_inversions/openghg_inversions/basis/_functions.py", line 54, in _mean_fp_times_mean_flux
    mean_fp, mean_flux, mask = xr.align(mean_fp, mean_flux, mask, join="override")
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/home/zh21490/.conda/envs/openghg_dev_env/lib/python3.12/site-packages/xarray/core/alignment.py", line 882, in align
    aligner.align()
  File "/user/home/zh21490/.conda/envs/openghg_dev_env/lib/python3.12/site-packages/xarray/core/alignment.py", line 571, in align
    self.find_matching_indexes()
  File "/user/home/zh21490/.conda/envs/openghg_dev_env/lib/python3.12/site-packages/xarray/core/alignment.py", line 271, in find_matching_indexes
    raise ValueError(
ValueError: cannot align objects with join='override' with matching indexes along dimension 'lat' that don't have the same size