Below is an example script of retreiving the FWI dataset from 1940 to Present Day using Consolidated and Intermediate Datasets.


Retrieval script
import cdsapi
import os
from datetime import datetime, timedelta

c = cdsapi.Client()
year_start=2023
year_end=2023
date_start=datetime(year_start,1,1)
date_end=datetime(year_end,12,31)
date=date_start

consolidated_end=False

DOWNLOAD_LOCATION=f'{os.getcwd()}/FWI/'
os.makedirs(DOWNLOAD_LOCATION,exist_ok=True)

def retrieve_CDS(year, month, day, dataset_type):
    c.retrieve(
    'cems-fire-historical-v1',
    {
        'product_type': 'reanalysis',
        'system_version': '4_1',
        'dataset_type': f'{dataset_type}_dataset',
        'variable': 'fire_weather_index',
        'year': year,
        'month': month,
        'day': day,
        'grid': '0.25/0.25',
        'format': 'netcdf',
    },
    f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_{dataset_type[:3]}.nc')

while date <= date_end:
    year=date.strftime('%Y')
    month=date.strftime('%m')
    day=date.strftime('%d')
    print(f'Checking {year}-{month}-{day}')
    if not os.path.isfile(f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_con.nc'):
        if consolidated_end==False:
            try:
                print(f'Attempting Retrievial of Consolidated {year}-{month}-{day}')
                retrieve_CDS(year,month,day,'consolidated')
                # Remove intermediate file for the same date to avoid duplication
                if os.path.exists(f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_int.nc'):
                    os.remove(f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_int.nc')
            except:
                print(f'Failed Retrievial of Consolidated {year}-{month}-{day}, Trying Intermediate')
                if not os.path.isfile(f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_int.nc'):
                    retrieve_CDS(year,month,day,'intermediate')
                consolidated_end=True
        else:
            if not os.path.isfile(f'{DOWNLOAD_LOCATION}/ECMWF_FWI_FWI_{year}{month}{day}_1200_hr_v4.1_int.nc'):
                try:
                    print(f'Attempting Retrievial of Intermediate {year}-{month}-{day}')
                    retrieve_CDS(year,month,day,'intermediate')
                except:
                    print(f'Failed Retrievial of Intermediate {year}-{month}-{day}')
                    break
            else:
                print(f'Intermediate {year}-{month}-{day} exists')
                
    else:
        print(f'Consolidated {year}-{month}-{day} exists')
    date += timedelta(days=1)

print(f"Last Date retrieved {date.strftime('%Y-%m-%d')}")