Browse Source

[DATALAD] removed content

Daniel Busch 3 months ago
parent
commit
d9f000799b
1 changed files with 0 additions and 551 deletions
  1. 0 551
      prepare_FAO2022TOT_data.m

+ 0 - 551
prepare_FAO2022TOT_data.m

@@ -1,551 +0,0 @@
-function prepare_FAO2022TOT_data(source_name, last_hist_year)
-% Prepares FAO data into country time series. Countries which were
-% split up during the course of history are downscaled to their current
-% members using the shares that were present in the first year in which all
-% members had emission values in the CDIAC source. countries which are now
-% merged over time get their previous members added up to the country with
-% the current political boundaries.
-% The resulting table is: CO2_CATM0EL_TOTAL_NET_HISTORY_CDIAC2010PROC
-%
-% author : CC
-% version : 20120315
-% version : 20120403 JG - substitute negative data by zero, fixed
-% version : 20131024 JG - CDIAC2013 based on the CDIAC2011 file
-% combine_subregions
-% version : 20150416 JG - delete time series consisting only of zeros
-% version : 20150511 JG - fixed wrong region downscaling
-% version : 20150715 JG - summing to primap country definitions
-% version : 20170120 JG - 2016 data
-% version : 20170825 JG - IPCC 2006 categories
-% version : 20190708 JG - convert to Gg from GgCO2eq for all single gas tables
-% version : 20201009 JG - 2020A data which needs extrpolation as not all sectors have been updated
-% version : 20201207 JG - 2020B data
-
-%% issues FAO
-% gap in Micronesia data (sometimes filled with zero data)
-% gap in Maldives data (sometimes filled with zero data)
-% Saint kitts and Newis. very low data in last years (CH4, IPC3A, IPC3C)
-% Afghanistan: very low data in last year (CH4, IPC3C)
-% many countries: very low data before 1990 and sometimes also in last year (CH4, IPC3C)
-% this is probably due to mixing LU and AGRI data, where LU data only covers 1990-2015
-% while AGRI data covers 1960 - 2016 (same for N2O)
-% saint Lucia: data only until 1980 (CH4, IPC3C)
-
-%%%% drained organic soils current omitted
-
-global CONSTANTS;
-
-errorID = 'CreateDatabase:DataPreparation:FAO:PrepareFAO2022Data:';
-narginchk(0, 2)
-
-if nargin == 2
-    source = source_name;
-elseif nargin == 1
-    if ischar(source_name)
-        source = source_name;
-        last_hist_year = 0;
-    else
-        source = 'FAO2022P2';
-    end
-else
-    source = 'FAO2022P2';
-    last_hist_year = 0;
-end
-
-sourceSuffix = 'I';
-%tempSuffix = 'P';
-procSource = [source sourceSuffix];
-%tempSource = [source tempSuffix];
-scenario = 'HISTORY';
-scenarioProjection = 'PROJECTION';
-%GWPspec = CONSTANTS.gwpSARSpecification; % make source dependent if necessary
-
-nYearKey = 5; % number of years to consider for downscaling key
-
-%% TODO check if extrapolation of subsectors needed
-
-%% remove existing proc source
-allProcTablenames = get_table_sheetcodes_for({CONSTANTS.nameOfSheetSource}, {{procSource}});%, tempSource}});
-remove_tables_from_database(allProcTablenames);
-
-%% copy to temp source
-copy_source_scenario_tables_from_to(source, scenario, procSource, scenario);
-
-%% adjust countries
-% first aggregate what are now parts of countries into current countries,
-% by adding parts + country.
-allTablenames = get_table_sheetcodes_for({CONSTANTS.nameOfSheetSource}, ...
-    {{procSource}});
-warning off Tools:AssertValidcategoryforSourceScenario:ValidCategory
-
-theseTables = struct;
-% for each emissions table, make these group manipulations
-for iTable = 1:length(allTablenames)
-    % adjust countries
-    newTable = adjust_countries(allTablenames{iTable}, nYearKey, false);
-    if isempty(fieldnames(newTable))
-        primap_log([errorID 'EmptyTable'], CONSTANTS.ERRuserErrorWarning, ...
-            ['Table ' allTablenames{iTable} ' empty after country adjustment and removal of NaN and zero data']);
-    else
-        theseTables.(newTable.(CONSTANTS.nameOfSheetCode)) = newTable;
-    end
-
-end
-
-%%% add tables to database
-remove_tables_from_database(allTablenames);
-success = overwrite_or_add_tables_in_database(theseTables, true, false);
-if ~all(success)
-    primap_log([errorID 'NotAllSplitTablesAdded'], CONSTANTS.ERRprogramError, ...
-        'Some downscaled AGRI tables not added to DB. Check preceeding messages for reason');
-end
-
-
-%% split into historical data and projection in case projections are available and last_hist_year is given
-if last_hist_year > 0
-    % get all tablenames
-    newTables = struct;
-    allTablenames = get_table_sheetcodes_for({CONSTANTS.nameOfSheetSource}, {{procSource}});
-    for iTable = 1 : length(allTablenames)
-        % get table from DB
-        currentTable = get_table_from_database(allTablenames{iTable});
-        % check if table contains projection values
-        if any(currentTable.(CONSTANTS.nameOfYearVector) > last_hist_year)
-            % create projection table
-            currentTableProj = currentTable;
-            currentTableProj.(CONSTANTS.nameOfDataField) = currentTableProj.(CONSTANTS.nameOfDataField)(:, ...
-                currentTableProj.(CONSTANTS.nameOfYearVector) > last_hist_year);
-            currentTableProj.(CONSTANTS.nameOfYearVector) = ...
-                currentTableProj.(CONSTANTS.nameOfYearVector)(currentTableProj.(CONSTANTS.nameOfYearVector) > last_hist_year);
-            currentTableProj.(CONSTANTS.nameOfSheetScenario) = scenarioProjection;
-            currentTableProj.(CONSTANTS.nameOfSheetCode) = concatenate_structure_field_values(currentTableProj, ...
-                CONSTANTS.tableNameConstructionFromSheets);
-            currentTableProj = delete_only_nan_containing_countries(currentTableProj);
-            if ~isempty(fieldnames(currentTableProj))
-                newTables.(currentTableProj.(CONSTANTS.nameOfSheetCode)) = currentTableProj;
-            end
-
-            % create historical table
-            currentTableHist = currentTable;
-            currentTableHist.(CONSTANTS.nameOfDataField) = currentTableHist.(CONSTANTS.nameOfDataField)(:, ...
-                currentTableHist.(CONSTANTS.nameOfYearVector) <= last_hist_year);
-            currentTableHist.(CONSTANTS.nameOfYearVector) = ...
-                currentTableHist.(CONSTANTS.nameOfYearVector)(currentTableHist.(CONSTANTS.nameOfYearVector) <= last_hist_year);
-            currentTableHist = delete_only_nan_containing_countries(currentTableHist);
-            newTables.(currentTableHist.(CONSTANTS.nameOfSheetCode)) = currentTableHist;
-        end
-    end
-    success = overwrite_or_add_tables_in_database(newTables, true, false);
-    if ~all(success)
-        primap_log([errorID 'NotAllSplitTablesAdded'], CONSTANTS.ERRprogramError, ...
-            'Some split tables not added to DB. Check preceeding messages for reason');
-    end
-end
-
-
-%% construct higher level IPC categories
-% general parameters
-
-defaultParams=struct;
-%defaultParams.future.type='linear';
-defaultParams.future.type='none';
-defaultParams.future.fityears=15;
-%defaultParams.past.type='linear';
-defaultParams.past.type='none';
-defaultParams.past.fityears=20;
-defaultParams.past.fallback='none';
-
-FAOEntities = {'CO2', 'CH4', 'N2O'};
-
-categories = struct;
-
-%%% IPC3A = IPC3A1 + IPC3A2
-categories.IPC3A = struct;
-categories.IPC3A.targetCategory = 'IPC3A';
-categories.IPC3A.subcategories = {'IPC3A1', 'IPC3A2'};
-categories.IPC3A.entities = FAOEntities;
-categories.IPC3A.params = defaultParams;
-
-
-
-%%% IPCM3C1AG =  IPC3C1B + IPC3C1C
-categories.IPCM3C1AG = struct;
-categories.IPCM3C1AG.targetCategory = 'IPCM3C1AG';
-categories.IPCM3C1AG.subcategories = {'IPC3C1C', 'IPC3C1B'};
-categories.IPCM3C1AG.entities = FAOEntities;
-categories.IPCM3C1AG.params = defaultParams;
-
-%%% IPC3C1 = IPCM3C1AG + IPCM3C1LU
-%%%%%%%%%% LULUCF currently missing
-categories.IPC3C1 = struct;
-categories.IPC3C1.targetCategory = 'IPC3C1';
-categories.IPC3C1.subcategories = {'IPCM3C1AG', 'IPCM3C1LU'};
-categories.IPC3C1.entities = FAOEntities;
-categories.IPC3C1.params = defaultParams;
-
-%%% IPCM3C4AG = 'IPC3C4B', 'IPC3C4C', 'IPC3C4D',
-% omit currently as drained organic soils is missing but present in M3C45AG
-% categories.IPCM3C4AG = struct;
-% categories.IPCM3C4AG.targetCategory = 'IPCM3C4AG';
-% categories.IPCM3C4AG.subcategories = {'IPC3C4A', 'IPC3C4B', 'IPC3C4C', 'IPC3C4D', };
-% categories.IPCM3C4AG.entities = FAOEntities;
-% categories.IPCM3C4AG.params = defaultParams;
-
-%%% IPC3C4 = IPCM3C4AG
-%%%%%%%%%% LULUCF currently missing
-categories.IPC3C4 = struct;
-categories.IPC3C4.targetCategory = 'IPC3C4';
-categories.IPC3C4.subcategories = {'IPCM3C4AG'};
-categories.IPC3C4.entities = FAOEntities;
-categories.IPC3C4.params = defaultParams;
-
-%%% IPC3C = IPC3C1 + IPC3C4 + IPC3C5 + IPC3C6 + IPC3C7
-%%%%%%%%%% LULUCF currently missing
-categories.IPC3C = struct;
-categories.IPC3C.targetCategory = 'IPC3C';
-categories.IPC3C.subcategories = {'IPC3C1', 'IPCM3C45AG', 'IPC3C7'}; % 'IPC3C5', 'IPC3C6',
-categories.IPC3C.entities = FAOEntities;
-categories.IPC3C.params = defaultParams;
-
-%%% IPCM3CAG = IPCM3C1AG + IPCM3C4AG + IPC3C5 + IPC3C6 + IPC3C7
-categories.IPCM3CAG = struct;
-categories.IPCM3CAG.targetCategory = 'IPCM3CAG';
-categories.IPCM3CAG.subcategories = {'IPCM3C1AG', 'IPCM3C45AG', 'IPC3C7'}; %'IPC3C5', 'IPC3C6',
-categories.IPCM3CAG.entities = FAOEntities;
-categories.IPCM3CAG.params = defaultParams;
-
-% %%% IPCM3CLU = IPCM3C1LU
-% categories.IPCM3CLU = struct;
-% categories.IPCM3CLU.targetCategory = 'IPCM3CLU';
-% categories.IPCM3CLU.subcategories = {'IPCM3C1LU'};
-% categories.IPCM3CLU.entities = FAOEntities;
-% categories.IPCM3CLU.params = defaultParams;
-%
-% %%% IPC3 = IPC3A + IPC3B + IPC3C
-% if any(strcmp(source, {'FAO2021A'}))
-%     categories.IPC3 = struct;
-%     categories.IPC3.targetCategory = 'IPC3';
-%     categories.IPC3.subcategories = {'IPC3A', 'IPCMLULUCF', 'IPCM3CAG'};
-%     categories.IPC3.entities = FAOEntities;
-%     categories.IPC3.params = defaultParams;
-% else
-%     categories.IPC3 = struct;
-%     categories.IPC3.targetCategory = 'IPC3';
-%     categories.IPC3.subcategories = {'IPC3A', 'IPC3B', 'IPC3C'};
-%     categories.IPC3.entities = FAOEntities;
-%     categories.IPC3.params = defaultParams;
-%
-%     %%% IPCMLULUCF = IPC3B + IPC3CLU
-%     categories.IPCMLULUCF = struct;
-%     categories.IPCMLULUCF.targetCategory = 'IPCMLULUCF';
-%     categories.IPCMLULUCF.subcategories = {'IPC3B', 'IPCM3CLU'};
-%     categories.IPCMLULUCF.entities = FAOEntities;
-%     categories.IPCMLULUCF.params = defaultParams;
-% end
-
-
-%%% IPCMAG = IPC3A + IPCM3CA
-categories.IPCMAG = struct;
-categories.IPCMAG.targetCategory = 'IPCMAG';
-categories.IPCMAG.subcategories = {'IPC3A', 'IPCM3CAG'};
-categories.IPCMAG.entities = FAOEntities;
-categories.IPCMAG.params = defaultParams;
-
-%%% IPCMAGELV = IPCM3CA
-categories.IPCMAGELV = struct;
-categories.IPCMAGELV.targetCategory = 'IPCMAGELV';
-categories.IPCMAGELV.subcategories = {'IPCM3CAG'};
-categories.IPCMAGELV.entities = FAOEntities;
-categories.IPCMAGELV.params = defaultParams;
-
-entities = struct;
-entities.KYOTOGHG = struct;
-entities.KYOTOGHG.targetEntity = 'KYOTOGHG';
-entities.KYOTOGHG.subEntities = {'CO2', 'CH4', 'N2O'};
-entities.KYOTOGHG.categories = {'IPC3', 'IPC3A', 'IPC3C', 'IPCMAG', 'IPCMAGELV', 'IPCMLULUCF'}; %'IPC3B',
-entities.KYOTOGHG.params = defaultParams;
-entities.KYOTOGHG.GWP = CONSTANTS.gwpSARSpecification;
-
-entities.KYOTOGHGAR4 = struct;
-entities.KYOTOGHGAR4.targetEntity = 'KYOTOGHGAR4';
-entities.KYOTOGHGAR4.subEntities = {'CO2', 'CH4', 'N2O'};
-entities.KYOTOGHGAR4.categories = {'IPC3', 'IPC3A', 'IPC3C', 'IPCMAG', 'IPCMAGELV', 'IPCMLULUCF'}; %'IPC3B',
-entities.KYOTOGHGAR4.params = defaultParams;
-entities.KYOTOGHGAR4.GWP = CONSTANTS.gwpAR4Specification;
-
-entities.KYOTOGHGAR5 = struct;
-entities.KYOTOGHGAR5.targetEntity = 'KYOTOGHGAR5';
-entities.KYOTOGHGAR5.subEntities = {'CO2', 'CH4', 'N2O'};
-entities.KYOTOGHGAR5.categories = {'IPC3', 'IPC3A', 'IPC3C', 'IPCMAG', 'IPCMAGELV', 'IPCMLULUCF'}; %'IPC3B',
-entities.KYOTOGHGAR5.params = defaultParams;
-entities.KYOTOGHGAR5.GWP = CONSTANTS.gwpAR5Specification;
-
-entities.KYOTOGHGAR6 = struct;
-entities.KYOTOGHGAR6.targetEntity = 'KYOTOGHGAR6';
-entities.KYOTOGHGAR6.subEntities = {'CO2', 'CH4', 'N2O'};
-entities.KYOTOGHGAR6.categories = {'IPC3', 'IPC3A', 'IPC3C', 'IPCMAG', 'IPCMAGELV', 'IPCMLULUCF'}; %'IPC3B',
-entities.KYOTOGHGAR6.params = defaultParams;
-entities.KYOTOGHGAR6.GWP = CONSTANTS.gwpAR6Specification;
-
-aggregate_and_extrapolate_source(procSource, scenario, categories, entities);
-aggregate_and_extrapolate_source(procSource, scenarioProjection, categories, entities);
-
-remove_desired_regions_from_source_scenario({'EARTH', 'POLYNESIA'}, procSource, scenario);
-remove_desired_regions_from_source_scenario({'EARTH', 'POLYNESIA'}, procSource, scenarioProjection);
-
-% TODO
-% remove years with partial data from aggregate timeseries
-% FAO2020B
-% IPC3C1, IPCM3CAG, IPC3C, IPC3, IPCMAG, IPCMAGELV, IPC3B, IPCMLULUCF (remove 2019, 2020)
-
-% sum countries to CRF / UNFCCC reporting level
-sum_countries_primap(procSource, false);
-
-
-
-%% remove the FAO terminology tables
-% tempTables = get_table_sheetcodes_for({CONSTANTS.nameOfSheetSource}, {{tempSource}});
-% %success = remove_tables_from_database(tempTables);
-% if ~all(success)
-%     disp('some tales could not be removed from the DB');
-% end
-% keep them as sometimes country downscaled tables in FAO eminology are needed
-
-warning off Tools:AssertValidcategoryforSourceScenario:ValidCategory
-
-end %prepareFAO2015data
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-function newTable = adjust_countries(tablename, nYearKey, negativeToZero)
-    global CONSTANTS;
-
-    errorID = 'CreateDatabase:DataPreparation:FAO:PrepareFAO2016Data:AdjustCountries';
-    thisTable = get_table_from_database(tablename);
-    %thisTable.(CONSTANTS.nameOfSheetSource) = tempSource;
-    %thisTable.(CONSTANTS.nameOfSheetCode) = concatenate_structure_field_values(thisTable,'default');
-    thisTable.(CONSTANTS.nameOfSheetDescr) = [thisTable.(CONSTANTS.nameOfSheetDescr) ...
-        ', regions summed and downscaled to country time series'];
-    source = thisTable.(CONSTANTS.nameOfSheetSource);
-
-    if negativeToZero
-        % change negative values to zero for FAO1
-        isneg = thisTable.data < 0;
-        thisTable.data(isneg) = 0;
-    end
-
-    % remove countries which contain only NaN data
-    thisTable = delete_only_nan_containing_countries(thisTable);
-    % remove countries which contain only zero data
-    thisTable = delete_only_zero_containing_countries(thisTable);
-
-    if ~isempty(fieldnames(thisTable))
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        %% REGIONS DOWNSCALED TO COUNTRIES, REGIONS DELETED
-        % FIRST, REGIONS THAT SPLIT INTO COUNTRIES THAT EXIST IN FAO
-        % split most recent first. Some regions split into other regions that
-        % must be split first.
-
-        % USSR = RUSSIA + ARMENIA + AZERBAIJAN + BELARUS + BULGARIA + ESTONIA  (<= 1991)
-        %        + GEORGIA + KAZAKHSTAN + KYRGYZSTAN + LATVIA + LITHUANIA +
-        %        MOLDOVA + TAJIKISTAN + TURKMENISTAN + UKRAINE + UZBEKISTAN
-        regions2Delete = {'FSU'}; % doesn't work for FAO1K
-        theseCountries = get_members_of(regions2Delete{1});
-        yearKey = 1992;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % SERBIA/MONTENEGRO = SERBIA + MONTENEGRO (<= 2005)
-        regions2Delete = {'SRBMNE'};
-        theseCountries = get_members_of(regions2Delete{1});
-        yearKey = 2006;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % YUGOSLAVIA = BOSNIA/HERZEGOVINA + CROATIA + MACEDONIA + SLOVENIA + SERBIA + MONTENEGRO (<= 1991)
-        regions2Delete = {'YUG'};
-        theseCountries = get_members_of(regions2Delete{1});
-        yearKey = 1992;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % CZECHOSLOVAKIA = CZECH REPUBLIC + SLOVAKIA (<= 1991)
-        regions2Delete = {'CZESVK'};
-        theseCountries = get_members_of(regions2Delete{1}); %{'CZE','SVK'};
-        yearKey = 1992;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % Pacific Islands Trust Territory = Federated States of Micronesia + Palau
-        % + Northern Mariana Islands + Marshall Islands (<= 1994)
-        regions2Delete = {'TTPI'};
-        theseCountries = get_members_of(regions2Delete{1}); %{'FSM'  'MHL'    'MNP'    'PLW'};
-        yearKey = 1995;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % BELLUX = Belgium + Luxembourg (<= 1999)
-        regions2Delete = {'BELLUX'};
-        theseCountries = get_members_of(regions2Delete{1});
-        yearKey = 2000;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % ETHERI = Ethiopia + Eritrea (<= 1992)
-        regions2Delete = {'ETHERI'};
-        theseCountries = get_members_of(regions2Delete{1});
-        yearKey = 1993;
-        thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-
-        % Sudan and South Sudan (South Sudan has individual data for 2012 onwards)
-        if any(strcmp(source, {'FAO2016P', 'FAO2018P', 'FAO2019AP', 'FAO2019BP', 'FAO2020AP', 'FAO2020BP', ...
-                'FAO2020CP', 'FAO2021AP'}))
-            regions2Delete = {'SDN'};
-            theseCountries = {'SDN', 'SSD'};
-            yearKey = 2012;
-            thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-        end
-
-        % Sudan and South Sudan (South Sudan has individual data for 2012 onwards)
-        if any(strcmp(source, {'FAO2023AI', 'FAO2024AI'}))
-            regions2Delete = {'SDNSSD'};
-            theseCountries = {'SDN', 'SSD'};
-            yearKey = 2012;
-            thisTable = downscale_existing(thisTable,regions2Delete,theseCountries,yearKey, nYearKey, true);
-        end
-
-        % interpolate gap in FSM data
-        dataFSM = get_cydata_from_independent_table(thisTable, {'FSM'}, 'all');
-        if ~all(isnan(dataFSM.(CONSTANTS.nameOfDataField)))
-            gaps = get_gaps(dataFSM.(CONSTANTS.nameOfDataField));
-            if ~isempty(gaps)
-                dataFSM.(CONSTANTS.nameOfDataField) = interpolate_in_single_dv(gaps, dataFSM.(CONSTANTS.nameOfDataField));
-                thisTable = add_cydata_to_independent_table(thisTable, dataFSM);
-            end
-        end
-
-        % remove countries which contain only NaN data
-        thisTable = delete_only_nan_containing_countries(thisTable);
-        % remove countries which contain only zero data
-        newTable = delete_only_zero_containing_countries(thisTable);
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    else
-        newTable = struct;
-    end
-end
-
-
-function thisTable = downscale_existing(thisTable,regions2Delete,theseCountries, yearKey, nYearKey, remove)
-    % split regional data proportionally, based on ratios in first year
-    % after yearKey where there is at least one nonzero value
-
-    global CONSTANTS
-    errorID = 'CreateDatabase:DataPreparation:FAO:PrepareFAO2016Data:DownscaleExisting';
-    if ~exist('remove', 'var')
-        remove = true;
-    end
-
-    cyRegion = get_cydata_from_independent_table(thisTable,regions2Delete,'all');
-    if isempty(cyRegion.(CONSTANTS.nameOfCountryVector))
-        return;
-    end
-    cyKey = get_cydata_from_independent_table(thisTable,theseCountries,'all');
-    cyDownscaled = cyRegion;
-    cyDownscaled.(CONSTANTS.nameOfCountryVector) = cyKey.(CONSTANTS.nameOfCountryVector);
-    %split only if region is not all NaN or zeros
-    if ~all(isnan(cyRegion.(CONSTANTS.nameOfDataField)) | cyRegion.(CONSTANTS.nameOfDataField) == 0)
-        % remove all years before yearKey
-        iYearKey = find(cyKey.(CONSTANTS.nameOfYearVector) == yearKey);
-        cyKey.(CONSTANTS.nameOfYearVector) = cyKey.(CONSTANTS.nameOfYearVector)(iYearKey:end);
-        cyKey.(CONSTANTS.nameOfDataField) = cyKey.(CONSTANTS.nameOfDataField)(:,iYearKey:end);
-        % check which year the first nonzero value arises
-        iYearStart = find(~isnan(nansum_primap(cyKey.(CONSTANTS.nameOfDataField),1)) & ...
-            (nansum_primap(cyKey.(CONSTANTS.nameOfDataField),1) ~= 0));
-        if isempty(iYearStart)
-            % cannot divide regional data
-            primap_log([errorID 'ProgramError'], CONSTANTS.ERRuserErrorWarning, ...
-                ['Downscaling not possible for region ' regions2Delete{1} ...
-                ', year(s) for downscaling key have only zeros or NaN. Table: ' ...
-                thisTable.(CONSTANTS.nameOfSheetCode)]);
-            if remove
-                thisTable = remove_countries_from_independent_table(thisTable,regions2Delete);
-            end
-            return
-        end
-        % for the data to be downscaled remove all data beginning with the startYear
-        yearStart = cyKey.(CONSTANTS.nameOfYearVector)(iYearStart(1));
-        iYearStartRegion = find(cyDownscaled.(CONSTANTS.nameOfYearVector) == yearStart);
-        cyDownscaled.(CONSTANTS.nameOfDataField) = cyDownscaled.(CONSTANTS.nameOfDataField)(:, 1 : iYearStartRegion - 1);
-        cyDownscaled.(CONSTANTS.nameOfYearVector) = cyDownscaled.(CONSTANTS.nameOfYearVector)(1 : iYearStartRegion - 1);
-        % for the key remove all years before yearStart
-        cyKey.(CONSTANTS.nameOfYearVector) = cyKey.(CONSTANTS.nameOfYearVector)(iYearStart(1):end);
-        cyKey.(CONSTANTS.nameOfDataField) = cyKey.(CONSTANTS.nameOfDataField)(:,iYearStart(1):end);
-        % key is constructed from nYearKey years or available years,
-        % whatever is less
-        if length(cyKey.(CONSTANTS.nameOfYearVector)) > nYearKey
-            cyKey.(CONSTANTS.nameOfYearVector) = cyKey.(CONSTANTS.nameOfYearVector)(1:nYearKey);
-            cyKey.(CONSTANTS.nameOfDataField) = cyKey.(CONSTANTS.nameOfDataField)(:,1:nYearKey);
-        end
-        key = nansum_primap(cyKey.(CONSTANTS.nameOfDataField),2);
-        arrRatio = repmat(key/nansum_primap(key), ...
-            1,length(cyDownscaled.(CONSTANTS.nameOfYearVector)));
-        cyDownscaled.(CONSTANTS.nameOfDataField) = arrRatio .* ...
-            repmat(cyDownscaled.(CONSTANTS.nameOfDataField),length(cyKey.(CONSTANTS.nameOfCountryVector)),1);
-        cyDownscaled = delete_only_nan_containing_countries(cyDownscaled);
-
-        % add downscaled numbers to existing data
-        thisCydata = get_cydata_from_independent_table(thisTable,theseCountries,'all');
-        %thisCydata = delete_only_nan_containing_countries(thisCydata);
-        warning off Tools:AssertContentOfCydata:FailedValidation
-        thisNewCydata = add_cydata_to_cydata(thisCydata, cyDownscaled);
-        %thisNewCydata = summation_of_cydata(thisCydata, cyDownscaled,false,true);
-        warning on Tools:AssertContentOfCydata:FailedValidation
-        if remove
-            thisTable = remove_countries_from_independent_table(thisTable,regions2Delete);
-        end
-        thisTable = add_cydata_to_independent_table(thisTable,thisNewCydata);
-    else
-        if remove
-            thisTable = remove_countries_from_independent_table(thisTable,regions2Delete);
-        end
-    end
-end
-
-
-
-
-% countries in the source which are not UNFCCC
-%   'ARUBA'
-%    'ANGUILLA'
-%    'NETHERLANDS ANTILLES'
-%    'AMERICAN SAMOA'
-%    'BERMUDA'
-%    'CHANNEL ISLANDS'
-%    'CAYMAN ISLANDS'
-%    'WESTERN SAHARA'
-%    'FALKLAND ISLANDS (MALVINAS)'
-%    'FAROE ISLANDS'
-%    'GIBRALTAR'
-%    'GUADELOUPE'
-%    'GREENLAND'
-%    'FRENCH GUIANA'
-%    'GUAM'
-%    'HONG KONG'
-%    'ISLE OF MAN'
-%    'MACAO'
-%    'NORTHERN MARIANA ISLANDS'
-%    'MONTSERRAT'
-%    'MARTINIQUE'
-%    'MAYOTTE'
-%    'NEW CALEDONIA'
-%    'NORFOLK ISLAND'
-%    'PITCAIRN, HENDERSON, DUICE AN...'
-%    'PUERTO RICO'
-%    'PALESTINIAN TERRITORY, Occupied'
-%    'FRENCH POLYNESIA'
-%    'REUNION'
-%    'SAINT HELENA, ASCENSION AND T...'
-%    'SVALBARD AND JAN MAYEN ISLANDS'
-%    'SAINT PIERRE AND MIQUELON'
-%    'TURKS AND CAICOS ISLANDS'
-%    'TOKELAU'
-%    'TAIWAN'
-%    'VIRGIN ISLANDS (BRITISH)'
-%    'VIRGIN ISLANDS (U.S.)'
-%    'WALLIS AND FUTUNA ISLANDS'