rigoudyg / climaf

CliMAF - a Climate Model Analysis Framework - doc at : http://climaf.readthedocs.org/
Other
18 stars 7 forks source link

explore('ensemble') has an error in climaf 1.2.10 #126

Closed jservonnat closed 5 years ago

jservonnat commented 5 years ago

Disclaimer: in this issue I propose a small bug fix that works, but I haven't understood the origin of the problem at the moment but wanted to report my bug tracking tests here

I've tried to build an ensemble with .explore('ensemble') with climaf 1.2.10 but I get an error:

common_dict = dict(project='CMIP6', model='IPSL-CM6A-LR',
                   experiment='historical', period='*', realization='*')

tas_req = ds(variable='tas', table='Amon', **common_dict)
tas_ens = tas_req.explore('ensemble')
clog('debug')
summary(tas_ens)
error    : "Order list does not match dict keys list : ['r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r1i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r2i1p1f1', 'r30i1p1f1', 'r31i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1']   and ['r1i1p1f1', 'r2i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1', 'r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r30i1p1f1', 'r31i1p1f1']"
---------------------------------------------------------------------------
Climaf_Classes_Error                      Traceback (most recent call last)
<ipython-input-11-d9dc17d52d05> in <module>()
----> 1 tas_ens = tas_req.explore('ensemble')
      2 clog('debug')
      3 summary(tas_ens)

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in explore(self, option, group_periods_on, operation, first)
    680             #print "dic=",dic
    681             self.files=files
--> 682             return eds(first=first,**dic)
    683         elif option == 'check_and_store' :
    684             for kw in wildcards:

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in eds(first, **kwargs)
   1125             attval2[attr]=member
   1126             d[member]=cdataset(**attval2)
-> 1127         return cens(d,order=attval[attr])
   1128     else :
   1129         # Must construct the cartesian product of all list-type attributes

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in __init__(self, dic, order, sortfunc)
    990         except :
    991             keylist.sort()
--> 992         if order : self.set_order(order,keylist)
    993         elif sortfunc : self.order=sortfunc(keylist)
    994         else : self.order=keylist

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in set_order(self, order, ordered_keylist)
   1004             raise Climaf_Classes_Error(
   1005                 "Order list does not match dict keys list : %s   and %s"%
-> 1006                 (`ordered_list`,`ordered_keylist`))
   1007         self.order=order
   1008 

Climaf_Classes_Error: "Order list does not match dict keys list : ['r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r1i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r2i1p1f1', 'r30i1p1f1', 'r31i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1']   and ['r1i1p1f1', 'r2i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1', 'r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r30i1p1f1', 'r31i1p1f1']"

I've had the same error when trying to build a CMIP5 multi-model ensemble:

req = ds(project='CMIP5', model='*',
         experiment='historical', period='*', realization='r1i1p1',
         variable='tas', frequency='monthly')
summary(req.explore('ensemble'))
error    : "Order list does not match dict keys list : ['ACCESS1-0', 'ACCESS1-3', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CESM1-WACCM', 'CMCC-CESM', 'CMCC-CMS', 'CNRM-CM5', 'CNRM-CM5-2', 'CSIRO-Mk3-6-0', 'CanCM4', 'CanESM2', 'FGOALS-g2', 'FGOALS-s2', 'FIO-ESM', 'GFDL-CM2p1', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'GISS-E2-H', 'GISS-E2-H-CC', 'GISS-E2-R', 'GISS-E2-R-CC', 'HadCM3', 'HadGEM2-AO', 'HadGEM2-CC', 'HadGEM2-ES', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', 'IPSL-CM5B-LR', 'MIROC-ESM', 'MIROC-ESM-CHEM', 'MIROC4h', 'MIROC5', 'MPI-ESM-LR', 'MPI-ESM-MR', 'MPI-ESM-P', 'MRI-CGCM3', 'MRI-ESM1', 'NorESM1-M', 'NorESM1-ME', 'bcc-csm1-1', 'bcc-csm1-1-m', 'inmcm4']   and ['ACCESS1-0', 'ACCESS1-3', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CESM1-WACCM', 'CMCC-CESM', 'CMCC-CMS', 'CNRM-CM5', 'CNRM-CM5-2', 'CSIRO-Mk3-6-0', 'CanCM4', 'CanESM2', 'FGOALS-g2', 'FGOALS-s2', 'FIO-ESM', 'GFDL-CM2p1', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'GISS-E2-H', 'GISS-E2-H-CC', 'GISS-E2-R', 'GISS-E2-R-CC', 'HadCM3', 'HadGEM2-AO', 'HadGEM2-CC', 'HadGEM2-ES', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', 'IPSL-CM5B-LR', 'MIROC4h', 'MIROC5', 'MIROC-ESM', 'MIROC-ESM-CHEM', 'MPI-ESM-LR', 'MPI-ESM-MR', 'MPI-ESM-P', 'MRI-CGCM3', 'MRI-ESM1', 'NorESM1-M', 'NorESM1-ME', 'bcc-csm1-1', 'bcc-csm1-1-m', 'inmcm4']"
---------------------------------------------------------------------------
Climaf_Classes_Error                      Traceback (most recent call last)
<ipython-input-13-80302156d77d> in <module>()
----> 1 summary(req.explore('ensemble'))

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in explore(self, option, group_periods_on, operation, first)
    680             #print "dic=",dic
    681             self.files=files
--> 682             return eds(first=first,**dic)
    683         elif option == 'check_and_store' :
    684             for kw in wildcards:

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in eds(first, **kwargs)
   1125             attval2[attr]=member
   1126             d[member]=cdataset(**attval2)
-> 1127         #return cens(d,order=attval[attr])
   1128         return cens(d)
   1129     else :

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in __init__(self, dic, order, sortfunc)
    990         except :
    991             keylist.sort()
--> 992         if order : self.set_order(order,keylist)
    993         elif sortfunc : self.order=sortfunc(keylist)
    994         else : self.order=keylist

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.pyc in set_order(self, order, ordered_keylist)
   1004             raise Climaf_Classes_Error(
   1005                 "Order list does not match dict keys list : %s   and %s"%
-> 1006                 (`ordered_list`,`ordered_keylist`))
   1007         self.order=order
   1008 

Climaf_Classes_Error: "Order list does not match dict keys list : ['ACCESS1-0', 'ACCESS1-3', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CESM1-WACCM', 'CMCC-CESM', 'CMCC-CMS', 'CNRM-CM5', 'CNRM-CM5-2', 'CSIRO-Mk3-6-0', 'CanCM4', 'CanESM2', 'FGOALS-g2', 'FGOALS-s2', 'FIO-ESM', 'GFDL-CM2p1', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'GISS-E2-H', 'GISS-E2-H-CC', 'GISS-E2-R', 'GISS-E2-R-CC', 'HadCM3', 'HadGEM2-AO', 'HadGEM2-CC', 'HadGEM2-ES', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', 'IPSL-CM5B-LR', 'MIROC-ESM', 'MIROC-ESM-CHEM', 'MIROC4h', 'MIROC5', 'MPI-ESM-LR', 'MPI-ESM-MR', 'MPI-ESM-P', 'MRI-CGCM3', 'MRI-ESM1', 'NorESM1-M', 'NorESM1-ME', 'bcc-csm1-1', 'bcc-csm1-1-m', 'inmcm4']   and ['ACCESS1-0', 'ACCESS1-3', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CESM1-WACCM', 'CMCC-CESM', 'CMCC-CMS', 'CNRM-CM5', 'CNRM-CM5-2', 'CSIRO-Mk3-6-0', 'CanCM4', 'CanESM2', 'FGOALS-g2', 'FGOALS-s2', 'FIO-ESM', 'GFDL-CM2p1', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'GISS-E2-H', 'GISS-E2-H-CC', 'GISS-E2-R', 'GISS-E2-R-CC', 'HadCM3', 'HadGEM2-AO', 'HadGEM2-CC', 'HadGEM2-ES', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', 'IPSL-CM5B-LR', 'MIROC4h', 'MIROC5', 'MIROC-ESM', 'MIROC-ESM-CHEM', 'MPI-ESM-LR', 'MPI-ESM-MR', 'MPI-ESM-P', 'MRI-CGCM3', 'MRI-ESM1', 'NorESM1-M', 'NorESM1-ME', 'bcc-csm1-1', 'bcc-csm1-1-m', 'inmcm4']"

In classes.py, I've replaced return cens(d,order=attval[attr]) with return cens(d) and the error disappears, and I get my ensemble (and it is sorted).

But the origin of the error is still not clear.

I've played a bit with the dictionary d used in classes.py to build the ensemble. It looked like this:

d={'r10i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r10i1p1f1%gr%latest'),
 'r11i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r11i1p1f1%gr%latest'),
 'r12i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r12i1p1f1%gr%latest'),
 'r13i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r13i1p1f1%gr%latest'),
 'r14i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r14i1p1f1%gr%latest'),
 'r15i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r15i1p1f1%gr%latest'),
 'r16i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r16i1p1f1%gr%latest'),
 'r17i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r17i1p1f1%gr%latest'),
 'r18i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r18i1p1f1%gr%latest'),
 'r19i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r19i1p1f1%gr%latest'),
 'r1i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r1i1p1f1%gr%latest'),
 'r20i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r20i1p1f1%gr%latest'),
 'r21i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r21i1p1f1%gr%latest'),
 'r22i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r22i1p1f1%gr%latest'),
 'r23i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r23i1p1f1%gr%latest'),
 'r24i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r24i1p1f1%gr%latest'),
 'r25i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r25i1p1f1%gr%latest'),
 'r26i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r26i1p1f1%gr%latest'),
 'r27i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r27i1p1f1%gr%latest'),
 'r28i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r28i1p1f1%gr%latest'),
 'r29i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r29i1p1f1%gr%latest'),
 'r2i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r2i1p1f1%gr%latest'),
 'r30i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r30i1p1f1%gr%latest'),
 'r31i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r31i1p1f1%gr%latest'),
 'r3i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r3i1p1f1%gr%latest'),
 'r4i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r4i1p1f1%gr%latest'),
 'r5i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r5i1p1f1%gr%latest'),
 'r6i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r6i1p1f1%gr%latest'),
 'r7i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r7i1p1f1%gr%latest'),
 'r8i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r8i1p1f1%gr%latest'),
 'r9i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r9i1p1f1%gr%latest')}

From this dictionary, I can make an ensemble with cens:

summary(cens(d))

but if I specify the order, I get the original error:

summary(cens(d, order=d.keys()))
---------------------------------------------------------------------------
Climaf_Classes_Error                      Traceback (most recent call last)
<ipython-input-31-113670bbd035> in <module>()
----> 1 summary(cens(d, order=d.keys()))

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.py in __init__(self, dic, order, sortfunc)
    990         except :
    991             keylist.sort()
--> 992         if order : self.set_order(order,keylist)
    993         elif sortfunc : self.order=sortfunc(keylist)
    994         else : self.order=keylist

/ciclad-home/jservon/Evaluation/CliMAF/climaf_installs/climaf_1.2.10/climaf/classes.py in set_order(self, order, ordered_keylist)
   1004             raise Climaf_Classes_Error(
   1005                 "Order list does not match dict keys list : %s   and %s"%
-> 1006                 (`ordered_list`,`ordered_keylist`))
   1007         self.order=order
   1008

Climaf_Classes_Error: "Order list does not match dict keys list : ['r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r1i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r2i1p1f1', 'r30i1p1f1', 'r31i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1']   and ['r1i1p1f1', 'r2i1p1f1', 'r3i1p1f1', 'r4i1p1f1', 'r5i1p1f1', 'r6i1p1f1', 'r7i1p1f1', 'r8i1p1f1', 'r9i1p1f1', 'r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1', 'r13i1p1f1', 'r14i1p1f1', 'r15i1p1f1', 'r16i1p1f1', 'r17i1p1f1', 'r18i1p1f1', 'r19i1p1f1', 'r20i1p1f1', 'r21i1p1f1', 'r22i1p1f1', 'r23i1p1f1', 'r24i1p1f1', 'r25i1p1f1', 'r26i1p1f1', 'r27i1p1f1', 'r28i1p1f1', 'r29i1p1f1', 'r30i1p1f1', 'r31i1p1f1']"

I've tried to create a small ensemble manually and set a different order than the natural one, and it works:

test = {'r10i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r10i1p1f1%gr%latest'),
 'r11i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r11i1p1f1%gr%latest'),
 'r12i1p1f1': ds('CMIP6%%tas%1850-2014%global%/bdd%IPSL-CM6A-LR%IPSL%CMIP%Amon%historical%r12i1p1f1%gr%latest')}

ens_test = cens(test, order=['r11i1p1f1','r10i1p1f1','r12i1p1f1'])
summary(ens_test)
Keys - values:
{'domain': 'global', 'version': 'latest', 'institute': 'IPSL', 'realization': 'r10i1p1f1', 'period': 1850-2014, 'simulation': '', 'project': 'CMIP6', 'experiment': 'historical', 'grid': 'gr', 'table': 'Amon', 'variable': 'tas', 'mip': 'CMIP', 'model': 'IPSL-CM6A-LR', 'root': '/bdd'}
-- Ensemble members:
r11i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r11i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r11i1p1f1_gr_185001-201412.nc
--
r10i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r10i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r10i1p1f1_gr_185001-201412.nc
--
r12i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r12i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r12i1p1f1_gr_185001-201412.nc
--

It also works if I specify the order with test.keys():

summary(cens(test, order=test.keys()))
Keys - values:
{'domain': 'global', 'version': 'latest', 'institute': 'IPSL', 'realization': 'r10i1p1f1', 'period': 1850-2014, 'simulation': '', 'project': 'CMIP6', 'experiment': 'historical', 'grid': 'gr', 'table': 'Amon', 'variable': 'tas', 'mip': 'CMIP', 'model': 'IPSL-CM6A-LR', 'root': '/bdd'}
-- Ensemble members:
r10i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r10i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r10i1p1f1_gr_185001-201412.nc
--
r11i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r11i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r11i1p1f1_gr_185001-201412.nc
--
r12i1p1f1
/bdd/CMIP6/CMIP/IPSL/IPSL-CM6A-LR/historical/r12i1p1f1/Amon/tas/gr/latest/tas_Amon_IPSL-CM6A-LR_historical_r12i1p1f1_gr_185001-201412.nc
--

Just for information:

test.keys()
Out[34]: ['r10i1p1f1', 'r11i1p1f1', 'r12i1p1f1']

The problem thus doesn't come from the use of order...

jservonnat commented 5 years ago

Note: the problem disappears with climaf 1.2.8

senesis commented 5 years ago

Fixed for next version (1.2.11)