Repository: IndEcol/pymrio (language: python)

Issue:
add a functions to rename exiobase and wiod sectors



Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 0d694ffd..b6b5357a 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,6 +2,19 @@
 Changelog
 #########
 
+***************************
+v0.4.7dev
+***************************
+
+* Added inbuild classification for 
+  - Test MRIO
+  - EXIOBASE 2 
+  - EXIOBASE 3
+
+* Method for renaming sectors/regions based on the built in classification
+* Method for aggregating duplicated indexes
+
+
 
 ***************************
 v0.4.6
diff --git a/doc/Makefile b/doc/Makefile
index 0aa86e33..ec0479bf 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -6,6 +6,8 @@ SPHINXOPTS    =
 SPHINXBUILD   = sphinx-build
 PAPER         =
 BUILDDIR      = build
+SOURCEDIR     = source
+APISOURCEDIR  = source/api_doc
 
 # Internal variables.
 PAPEROPT_a4     = -D latex_paper_size=a4
@@ -40,6 +42,7 @@ help:
 
 clean:
 	-rm -rf $(BUILDDIR)/*
+	-rm -rf $(APISOURCEDIR)/*
 
 html:
 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
diff --git a/doc/source/api_doc/pymrio.ClassificationData.rst b/doc/source/api_doc/pymrio.ClassificationData.rst
new file mode 100644
index 00000000..61314724
--- /dev/null
+++ b/doc/source/api_doc/pymrio.ClassificationData.rst
@@ -0,0 +1,23 @@
+﻿pymrio.ClassificationData
+=========================
+
+.. currentmodule:: pymrio
+
+.. autoclass:: ClassificationData
+
+   
+   .. automethod:: __init__
+
+   
+   .. rubric:: Methods
+
+   .. autosummary::
+   
+      ~ClassificationData.__init__
+      ~ClassificationData.get_sector_dict
+   
+   
+
+   
+   
+   
\ No newline at end of file
diff --git a/doc/source/api_doc/pymrio.IOSystem.get_bilateral_trade.rst b/doc/source/api_doc/pymrio.IOSystem.get_bilateral_trade.rst
deleted file mode 100644
index 4cf9e64c..00000000
--- a/doc/source/api_doc/pymrio.IOSystem.get_bilateral_trade.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-﻿pymrio.IOSystem.get\_bilateral\_trade
-=====================================
-
-.. currentmodule:: pymrio
-
-.. automethod:: IOSystem.get_bilateral_trade
\ No newline at end of file
diff --git a/doc/source/api_doc/pymrio.IOSystem.get_gross_trade.rst b/doc/source/api_doc/pymrio.IOSystem.get_gross_trade.rst
new file mode 100644
index 00000000..7d657f5c
--- /dev/null
+++ b/doc/source/api_doc/pymrio.IOSystem.get_gross_trade.rst
@@ -0,0 +1,6 @@
+﻿pymrio.IOSystem.get\_gross\_trade
+=================================
+
+.. currentmodule:: pymrio
+
+.. automethod:: IOSystem.get_gross_trade
\ No newline at end of file
diff --git a/doc/source/api_doc/pymrio.calc_trade_flows.rst b/doc/source/api_doc/pymrio.calc_trade_flows.rst
deleted file mode 100644
index 20a48772..00000000
--- a/doc/source/api_doc/pymrio.calc_trade_flows.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-﻿pymrio.calc\_trade\_flows
-=========================
-
-.. currentmodule:: pymrio
-
-.. autofunction:: calc_trade_flows
\ No newline at end of file
diff --git a/doc/source/api_doc/pymrio.download_oecd.rst b/doc/source/api_doc/pymrio.download_oecd.rst
index bf3aa259..f713977f 100644
--- a/doc/source/api_doc/pymrio.download_oecd.rst
+++ b/doc/source/api_doc/pymrio.download_oecd.rst
@@ -1,4 +1,4 @@
-pymrio.download\_oecd
+﻿pymrio.download\_oecd
 =====================
 
 .. currentmodule:: pymrio
diff --git a/doc/source/api_doc/pymrio.get_classification.rst b/doc/source/api_doc/pymrio.get_classification.rst
new file mode 100644
index 00000000..15d613a8
--- /dev/null
+++ b/doc/source/api_doc/pymrio.get_classification.rst
@@ -0,0 +1,6 @@
+﻿pymrio.get\_classification
+==========================
+
+.. currentmodule:: pymrio
+
+.. autofunction:: get_classification
\ No newline at end of file
diff --git a/doc/source/api_doc/pymrio.parse_oecd.rst b/doc/source/api_doc/pymrio.parse_oecd.rst
index 5d96624c..f23a596f 100644
--- a/doc/source/api_doc/pymrio.parse_oecd.rst
+++ b/doc/source/api_doc/pymrio.parse_oecd.rst
@@ -1,4 +1,4 @@
-pymrio.parse\_oecd
+﻿pymrio.parse\_oecd
 ==================
 
 .. currentmodule:: pymrio
diff --git a/doc/source/api_references.rst b/doc/source/api_references.rst
index fdbe2fa5..3acf7e09 100644
--- a/doc/source/api_references.rst
+++ b/doc/source/api_references.rst
@@ -167,7 +167,6 @@ numpy array.
    calc_M
    calc_e
    calc_accounts
-   calc_trade_flows
 
 
 *********************************
@@ -231,8 +230,8 @@ Changing extensions
    concate_extension
    parse_exio12_ext
 
-Renaming
-========
+Adjusting and Renaming
+=======================
 
 .. autosummary::
    :toctree: api_doc/
@@ -241,6 +240,15 @@ Renaming
    IOSystem.rename_sectors
    IOSystem.rename_Y_categories
 
+Getting predefined Classifications of MRIOs
+=============================================
+
+.. autosummary::
+   :toctree: api_doc/
+
+   get_classification
+   ClassificationData
+
 ******
 Report
 ******
diff --git a/doc/source/handling.rst b/doc/source/handling.rst
index 8ea5c265..d0a66dcf 100644
--- a/doc/source/handling.rst
+++ b/doc/source/handling.rst
@@ -10,6 +10,7 @@ Handling MRIO data
   notebooks/working_with_eora26
   notebooks/working_with_oecd_icio
   notebooks/load_save_export
+  notebooks/adjusting
   notebooks/aggregation_examples
   notebooks/buildflowmatrix
   notebooks/stressor_characterization
diff --git a/doc/source/notebooks/adjusting.ipynb b/doc/source/notebooks/adjusting.ipynb
new file mode 100644
index 00000000..38570e3f
--- /dev/null
+++ b/doc/source/notebooks/adjusting.ipynb
@@ -0,0 +1,516 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Adjusting, Renaming and Restructuring"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pymrio"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio = pymrio.load_test()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We can use several functions to get a quick overview over the MRIO system:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['food', 'mining', 'manufactoring', 'electricity', 'construction',\n",
+       "       'trade', 'transport', 'other'],\n",
+       "      dtype='object', name='sector')"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_sectors()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['reg1', 'reg2', 'reg3', 'reg4', 'reg5', 'reg6'], dtype='object', name='region')"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_regions()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['Final consumption expenditure by households',\n",
+       "       'Final consumption expenditure by non-profit organisations serving households (NPISH)',\n",
+       "       'Final consumption expenditure by government',\n",
+       "       'Gross fixed capital formation', 'Changes in inventories',\n",
+       "       'Changes in valuables', 'Export'],\n",
+       "      dtype='object', name='category')"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_Y_categories()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A list of available satellite accounts can be obtained by"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<generator object IOSystem.get_extensions at 0x7f36f120c4a0>"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_extensions()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "this returns a generator over all extensions, to just get the names which can be used to loop over the extensions. To just get the names:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['factor_inputs', 'emissions']"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(mrio.get_extensions())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "All the names returned are literally just names and can easily be renamed.\n",
+    "To rename sectors or regions just pass a dictionary with the new names:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<pymrio.core.mriosystem.IOSystem at 0x7f36f11de940>"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.rename_regions({\"reg1\": \"REGION A\", \"reg2\": \"REGION B\"})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['REGION A', 'REGION B', 'reg3', 'reg4', 'reg5', 'reg6'], dtype='object', name='region')"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_regions()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Renaming sectors or Y categories works the same way"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<pymrio.core.mriosystem.IOSystem at 0x7f36f11de940>"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.rename_sectors({\"mining\": \"dwarf business\"})\n",
+    "mrio.rename_Y_categories({\"Final consumption expenditure by households\": \"fin_house\"})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['fin_house',\n",
+       "       'Final consumption expenditure by non-profit organisations serving households (NPISH)',\n",
+       "       'Final consumption expenditure by government',\n",
+       "       'Gross fixed capital formation', 'Changes in inventories',\n",
+       "       'Changes in valuables', 'Export'],\n",
+       "      dtype='object', name='category')"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.get_sectors()\n",
+    "mrio.get_Y_categories()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Some MRIOs come with a selections of names which can be used for renaming.\n",
+    "These can be obtained via 'get_classification', passing the name of the IO (pass None to get a list of available classifications)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio_class = pymrio.get_classification(mrio_name=\"test\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The classification data contains different names and aggregation levels for the sectors and final demand categories. The easiest way to explore the classification data is by using the autocomplete functionality. Depending on the editor your are using this might work with typing mrio_class.sectors. pressing Tab or Ctrl-Space. The same works for mrio_class.finaldemand."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Alternatively it is possible to just print the underlying dataframes with (similar for finaldemand)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>TestMrioNumber</th>\n",
+       "      <th>TestMrioName</th>\n",
+       "      <th>TestMrioCode</th>\n",
+       "      <th>Type</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>1</td>\n",
+       "      <td>food</td>\n",
+       "      <td>sec1</td>\n",
+       "      <td>eat</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>2</td>\n",
+       "      <td>mining</td>\n",
+       "      <td>sec2</td>\n",
+       "      <td>dig</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>3</td>\n",
+       "      <td>manufactoring</td>\n",
+       "      <td>sec3</td>\n",
+       "      <td>build</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>4</td>\n",
+       "      <td>electricity</td>\n",
+       "      <td>sec4</td>\n",
+       "      <td>util</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>5</td>\n",
+       "      <td>construction</td>\n",
+       "      <td>sec5</td>\n",
+       "      <td>build</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5</th>\n",
+       "      <td>6</td>\n",
+       "      <td>trade</td>\n",
+       "      <td>sec6</td>\n",
+       "      <td>marg</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>6</th>\n",
+       "      <td>7</td>\n",
+       "      <td>transport</td>\n",
+       "      <td>sec7</td>\n",
+       "      <td>marg</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>7</th>\n",
+       "      <td>8</td>\n",
+       "      <td>other</td>\n",
+       "      <td>sec8</td>\n",
+       "      <td>misc</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "   TestMrioNumber   TestMrioName TestMrioCode   Type\n",
+       "0               1           food         sec1    eat\n",
+       "1               2         mining         sec2    dig\n",
+       "2               3  manufactoring         sec3  build\n",
+       "3               4    electricity         sec4   util\n",
+       "4               5   construction         sec5  build\n",
+       "5               6          trade         sec6   marg\n",
+       "6               7      transport         sec7   marg\n",
+       "7               8          other         sec8   misc"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio_class.sectors"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This can be used to generate dictionaries for renaming the sectors of the MRIO, eg with:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'food': 'sec1',\n",
+       " 'mining': 'sec2',\n",
+       " 'manufactoring': 'sec3',\n",
+       " 'electricity': 'sec4',\n",
+       " 'construction': 'sec5',\n",
+       " 'trade': 'sec6',\n",
+       " 'transport': 'sec7',\n",
+       " 'other': 'sec8'}"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conv_dict = mrio_class.get_sector_dict(mrio_class.sectors.TestMrioName, mrio_class.sectors.TestMrioCode)\n",
+    "conv_dict"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This can then be used for renaming the sectors:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio = pymrio.load_test()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {
+    "lines_to_next_cell": 2
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Index(['sec1', 'sec2', 'sec3', 'sec4', 'sec5', 'sec6', 'sec7', 'sec8'], dtype='object', name='sector')"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mrio.rename_sectors(conv_dict)\n",
+    "mrio.get_sectors()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "In the mrio_class.sectors you will also find an entry 'Type' which represents a many to one mapping. This can be used for aggregating the MRIO and is explained [in the aggregation tutorial](aggregation_examples.ipynb#Aggregation-by-renaming)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "jupytext": {
+   "formats": "ipynb,py:light"
+  },
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/doc/source/notebooks/adjusting.py b/doc/source/notebooks/adjusting.py
new file mode 100644
index 00000000..f9824843
--- /dev/null
+++ b/doc/source/notebooks/adjusting.py
@@ -0,0 +1,79 @@
+# ---
+# jupyter:
+#   jupytext:
+#     formats: ipynb,py:light
+#     text_representation:
+#       extension: .py
+#       format_name: light
+#       format_version: '1.5'
+#       jupytext_version: 1.11.1
+#   kernelspec:
+#     display_name: Python 3
+#     language: python
+#     name: python3
+# ---
+
+# # Adjusting, Renaming and Restructuring
+
+import pymrio
+
+mrio = pymrio.load_test()
+
+# We can use several functions to get a quick overview over the MRIO system:
+
+mrio.get_sectors()
+
+mrio.get_regions()
+
+mrio.get_Y_categories()
+
+# A list of available satellite accounts can be obtained by
+
+mrio.get_extensions()
+
+# this returns a generator over all extensions, to just get the names which can be used to loop over the extensions. To just get the names:
+
+list(mrio.get_extensions())
+
+# All the names returned are literally just names and can easily be renamed.
+# To rename sectors or regions just pass a dictionary with the new names:
+
+mrio.rename_regions({"reg1": "REGION A", "reg2": "REGION B"})
+
+mrio.get_regions()
+
+# Renaming sectors or Y categories works the same way
+
+mrio.rename_sectors({"mining": "dwarf business"})
+mrio.rename_Y_categories({"Final consumption expenditure by households": "fin_house"})
+
+mrio.get_sectors()
+mrio.get_Y_categories()
+
+# Some MRIOs come with a selections of names which can be used for renaming.
+# These can be obtained via 'get_classification', passing the name of the IO (pass None to get a list of available classifications).
+
+mrio_class = pymrio.get_classification(mrio_name="test")
+
+# The classification data contains different names and aggregation levels for the sectors and final demand categories. The easiest way to explore the classification data is by using the autocomplete functionality. Depending on the editor your are using this might work with typing mrio_class.sectors. pressing Tab or Ctrl-Space. The same works for mrio_class.finaldemand.
+
+# Alternatively it is possible to just print the underlying dataframes with (similar for finaldemand)
+
+mrio_class.sectors
+
+# This can be used to generate dictionaries for renaming the sectors of the MRIO, eg with:
+
+conv_dict = mrio_class.get_sector_dict(
+    mrio_class.sectors.TestMrioName, mrio_class.sectors.TestMrioCode
+)
+conv_dict
+
+# This can then be used for renaming the sectors:
+
+mrio = pymrio.load_test()
+
+mrio.rename_sectors(conv_dict)
+mrio.get_sectors()
+
+
+# In the mrio_class.sectors you will also find an entry 'Type' which represents a many to one mapping. This can be used for aggregating the MRIO and is explained [in the aggregation tutorial](aggregation_examples.ipynb#Aggregation-by-renaming).
diff --git a/doc/source/notebooks/aggregation_examples.ipynb b/doc/source/notebooks/aggregation_examples.ipynb
index cc9b5be9..738357a3 100644
--- a/doc/source/notebooks/aggregation_examples.ipynb
+++ b/doc/source/notebooks/aggregation_examples.ipynb
@@ -11,7 +11,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Pymrio offers various possibilities to achieve an aggreation of a existing MRIO system. \n",
+    "Pymrio offers various possibilities to achieve an aggregation of a existing MRIO system.\n",
     "The following section will present all of them in turn, using the test MRIO system included in pymrio.\n",
     "The same concept can be applied to real life MRIOs."
    ]
@@ -20,7 +20,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Some of the examples rely in the [country converter coco](https://github.com/konstantinstadler/country_converter). The minimum version required is coco >= 0.6.3 - install the latest version with \n",
+    "Some of the examples rely in the [country converter coco](https://github.com/konstantinstadler/country_converter). The minimum version required is coco >= 0.6.3 - install the latest version with\n",
     "```\n",
     "pip install country_converter --upgrade\n",
     "```\n",
@@ -87,7 +87,11 @@
     }
    ],
    "source": [
-    "print(\"Sectors: {sec},\\nRegions: {reg}\".format(sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()))"
+    "print(\n",
+    "    \"Sectors: {sec},\\nRegions: {reg}\".format(\n",
+    "        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()\n",
+    "    )\n",
+    ")"
    ]
   },
   {
@@ -111,16 +115,11 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "sec_agg_matrix = np.array([\n",
-    "    [1, 0, 0, 0, 0, 0, 0, 0],\n",
-    "    [0, 1, 1, 1, 1, 0, 0, 0],\n",
-    "    [0, 0, 0, 0, 0, 1, 1, 1]\n",
-    "    ])\n",
+    "sec_agg_matrix = np.array(\n",
+    "    [[1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 1]]\n",
+    ")\n",
     "\n",
-    "reg_agg_matrix = np.array([\n",
-    "    [1, 1, 1, 0, 0, 0],\n",
-    "    [0, 0, 0, 1, 1, 1]\n",
-    "    ])"
+    "reg_agg_matrix = np.array([[1, 1, 1, 0, 0, 0], [0, 0, 0, 1, 1, 1]])"
    ]
   },
   {
@@ -158,7 +157,11 @@
     }
    ],
    "source": [
-    "print(\"Sectors: {sec},\\nRegions: {reg}\".format(sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()))"
+    "print(\n",
+    "    \"Sectors: {sec},\\nRegions: {reg}\".format(\n",
+    "        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()\n",
+    "    )\n",
+    ")"
    ]
   },
   {
@@ -297,9 +300,15 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "io = pymrio.load_test().calc_all().aggregate(region_agg=reg_agg_matrix, \n",
-    "                                             region_names=['World Region A', 'World Region B'], \n",
-    "                                             inplace=False)"
+    "io = (\n",
+    "    pymrio.load_test()\n",
+    "    .calc_all()\n",
+    "    .aggregate(\n",
+    "        region_agg=reg_agg_matrix,\n",
+    "        region_names=[\"World Region A\", \"World Region B\"],\n",
+    "        inplace=False,\n",
+    "    )\n",
+    ")"
    ]
   },
   {
@@ -333,7 +342,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Pymrio also accepts the aggregatio information as numerical or string vector. \n",
+    "Pymrio also accepts the aggregatio information as numerical or string vector.\n",
     "For these, each entry in the vector assignes the sector/region to a aggregation group.\n",
     "Thus the two aggregation matrices from above (*sec_agg_matrix* and *reg_agg_matrix*) can also be represented as numerical or string vectors/lists:"
    ]
@@ -344,8 +353,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "sec_agg_vec = np.array([0,1,1,1,1,2,2,2])\n",
-    "reg_agg_vec = ['R1', 'R1', 'R1', 'R2', 'R2', 'R2']"
+    "sec_agg_vec = np.array([0, 1, 1, 1, 1, 2, 2, 2])\n",
+    "reg_agg_vec = [\"R1\", \"R1\", \"R1\", \"R2\", \"R2\", \"R2\"]"
    ]
   },
   {
@@ -361,9 +370,11 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "io_vec_agg = pymrio.load_test().calc_all().aggregate(region_agg=reg_agg_vec, \n",
-    "                                                     sector_agg=sec_agg_vec, \n",
-    "                                                     inplace=False)"
+    "io_vec_agg = (\n",
+    "    pymrio.load_test()\n",
+    "    .calc_all()\n",
+    "    .aggregate(region_agg=reg_agg_vec, sector_agg=sec_agg_vec, inplace=False)\n",
+    ")"
    ]
   },
   {
@@ -381,8 +392,11 @@
     }
    ],
    "source": [
-    "print(\"Sectors: {sec},\\nRegions: {reg}\".format(sec=io_vec_agg.get_sectors().tolist(), \n",
-    "                                               reg=io_vec_agg.get_regions().tolist()))"
+    "print(\n",
+    "    \"Sectors: {sec},\\nRegions: {reg}\".format(\n",
+    "        sec=io_vec_agg.get_sectors().tolist(), reg=io_vec_agg.get_regions().tolist()\n",
+    "    )\n",
+    ")"
    ]
   },
   {
@@ -483,7 +497,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Independent aggregation "
+    "### Independent aggregation"
    ]
   },
   {
@@ -501,11 +515,15 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "reg_agg_coco = coco.agg_conc(original_countries=io.get_regions(), \n",
-    "                             aggregates={'reg1': 'World Region A',\n",
-    "                                         'reg2': 'World Region A',\n",
-    "                                         'reg3': 'World Region A',},\n",
-    "                             missing_countries='World Region B')                               "
+    "reg_agg_coco = coco.agg_conc(\n",
+    "    original_countries=io.get_regions(),\n",
+    "    aggregates={\n",
+    "        \"reg1\": \"World Region A\",\n",
+    "        \"reg2\": \"World Region A\",\n",
+    "        \"reg3\": \"World Region A\",\n",
+    "    },\n",
+    "    missing_countries=\"World Region B\",\n",
+    ")"
    ]
   },
   {
@@ -543,8 +561,11 @@
     }
    ],
    "source": [
-    "print(\"Sectors: {sec},\\nRegions: {reg}\".format(sec=io.get_sectors().tolist(), \n",
-    "                                               reg=io.get_regions().tolist()))"
+    "print(\n",
+    "    \"Sectors: {sec},\\nRegions: {reg}\".format(\n",
+    "        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()\n",
+    "    )\n",
+    ")"
    ]
   },
   {
@@ -659,7 +680,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "wiod_raw = '/tmp/mrios/WIOD2013'"
+    "wiod_raw = \"/tmp/mrios/WIOD2013\""
    ]
   },
   {
@@ -692,11 +713,14 @@
    "outputs": [],
    "source": [
     "wiod_agg_DEU_EU_OECD = wiod_orig.aggregate(\n",
-    "    region_agg = coco.agg_conc(original_countries='WIOD',\n",
-    "                               aggregates=[{'DEU': 'DEU'},'EU', 'OECD'],\n",
-    "                               missing_countries='Other',\n",
-    "                               merge_multiple_string=None),\n",
-    "    inplace=False)"
+    "    region_agg=coco.agg_conc(\n",
+    "        original_countries=\"WIOD\",\n",
+    "        aggregates=[{\"DEU\": \"DEU\"}, \"EU\", \"OECD\"],\n",
+    "        missing_countries=\"Other\",\n",
+    "        merge_multiple_string=None,\n",
+    "    ),\n",
+    "    inplace=False,\n",
+    ")"
    ]
   },
   {
@@ -723,8 +747,7 @@
     }
    ],
    "source": [
-    "wiod_agg_DEU_EU_OECD.rename_regions({'OECD': 'OECDwoEU',\n",
-    "                                     'EU': 'EUwoGermany'})"
+    "wiod_agg_DEU_EU_OECD.rename_regions({\"OECD\": \"OECDwoEU\", \"EU\": \"EUwoGermany\"})"
    ]
   },
   {
@@ -863,6 +886,130 @@
     "For further examples on the capabilities of the country converter see the [coco tutorial notebook](http://nbviewer.jupyter.org/github/konstantinstadler/country_converter/blob/master/doc/country_converter_aggregation_helper.ipynb)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Aggregation by renaming"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "One alternative method for aggregating the MRIO system is to rename specific regions and/or sectors to duplicated names. \n",
+    "Duplicated sectors and regions can then be automatically aggregated. This makes most sense when having some categories of some kind (e.g. consumption categories) or detailed classification which can easily be broadened (e.g. A01, A02, which could be renamed all to A).\n",
+    "In the example below, we will aggregate sectors to consumption categories using some predefined categories included in pymrio. Check the [Adjusting, Renaming and Restructuring notebook for more details.](adjusting.ipynb)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio = pymrio.load_test()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class_info = pymrio.get_classification('test')\n",
+    "rename_dict = class_info.get_sector_dict(orig=class_info.sectors.TestMrioName, new=class_info.sectors.Type)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "If we take a look at the rename_dict, we see that it maps several sectors of the original MRIO to combined regions (technically a many to one mapping). "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "rename_dict"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Using this dict to rename sectors leads to an index with overlapping labels."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio.rename_sectors(rename_dict)\n",
+    "mrio.Z"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Which can then be aggregated with"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mrio.aggregate_duplicates()\n",
+    "mrio.Z"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This method also comes handy when aggregating parts of the MRIO regions. E.g.:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "region_convert = {'reg1': 'Antarctica', 'reg2': 'Antarctica'}\n",
+    "mrio.rename_regions(region_convert).aggregate_duplicates()\n",
+    "mrio.Z"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "lines_to_next_cell": 2
+   },
+   "source": [
+    "Which lets us calculate the footprint of the consumption category 'eat' in 'Antarctica':"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "lines_to_next_cell": 2
+   },
+   "outputs": [],
+   "source": [
+    "mrio.calc_all()\n",
+    "mrio.emissions.D_cba.loc[:, ('Antarctica', 'eat')]"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -950,7 +1097,10 @@
     }
    ],
    "source": [
-    "pymrio.load_test().calc_all().aggregate(region_agg='global', sector_agg='total').emissions.D_cba"
+    "pymrio.load_test().calc_all().aggregate(\n",
+    "    region_agg=\"global\", sector_agg=\"total\"\n",
+    ").emissions.D_cba\n",
+    "\n"
    ]
   },
   {
@@ -964,7 +1114,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "It is generally recommended to calculate MRIO accounts with the highest detail possible and aggregated the results afterwards (post-aggregation - see for example [Steen-Olsen et al 2014](http://dx.doi.org/10.1080/09535314.2014.934325), [Stadler et al 2014](https://zenodo.org/record/1137670#.WlOSOhZG1O8) or [Koning et al 2015](https://doi.org/10.1016/j.ecolecon.2015.05.008). \n",
+    "It is generally recommended to calculate MRIO accounts with the highest detail possible and aggregated the results afterwards (post-aggregation - see for example [Steen-Olsen et al 2014](http://dx.doi.org/10.1080/09535314.2014.934325), [Stadler et al 2014](https://zenodo.org/record/1137670#.WlOSOhZG1O8) or [Koning et al 2015](https://doi.org/10.1016/j.ecolecon.2015.05.008).\n",
     "\n",
     "Pre-aggregation, that means the aggregation of MRIO sectors and regions before calculation of footprint accounts, might be necessary when dealing with MRIOs on computers with limited RAM resources. However, one should be aware that the results might change.\n",
     "\n",
@@ -977,8 +1127,16 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "io_pre = pymrio.load_test().aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix).calc_all()\n",
-    "io_post = pymrio.load_test().calc_all().aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)"
+    "io_pre = (\n",
+    "    pymrio.load_test()\n",
+    "    .aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)\n",
+    "    .calc_all()\n",
+    ")\n",
+    "io_post = (\n",
+    "    pymrio.load_test()\n",
+    "    .calc_all()\n",
+    "    .aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)\n",
+    ")"
    ]
   },
   {
@@ -1299,6 +1457,9 @@
   }
  ],
  "metadata": {
+  "jupytext": {
+   "formats": "ipynb,py:percent"
+  },
   "kernelspec": {
    "display_name": "Python 3",
    "language": "python",
@@ -1314,7 +1475,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.5"
+   "version": "3.8.3"
   }
  },
  "nbformat": 4,
diff --git a/doc/source/notebooks/aggregation_examples.py b/doc/source/notebooks/aggregation_examples.py
new file mode 100644
index 00000000..2974c6ee
--- /dev/null
+++ b/doc/source/notebooks/aggregation_examples.py
@@ -0,0 +1,324 @@
+# ---
+# jupyter:
+#   jupytext:
+#     formats: ipynb,py:percent
+#     text_representation:
+#       extension: .py
+#       format_name: percent
+#       format_version: '1.3'
+#       jupytext_version: 1.11.1
+#   kernelspec:
+#     display_name: Python 3
+#     language: python
+#     name: python3
+# ---
+
+# %% [markdown]
+# # Using the aggregation functionality of pymrio
+
+# %% [markdown]
+# Pymrio offers various possibilities to achieve an aggregation of a existing MRIO system.
+# The following section will present all of them in turn, using the test MRIO system included in pymrio.
+# The same concept can be applied to real life MRIOs.
+
+# %% [markdown]
+# Some of the examples rely in the [country converter coco](https://github.com/konstantinstadler/country_converter). The minimum version required is coco >= 0.6.3 - install the latest version with
+# ```
+# pip install country_converter --upgrade
+# ```
+# Coco can also be installed from the Anaconda Cloud - see the coco readme for further infos.
+
+# %% [markdown]
+# ## Loading the test mrio
+
+# %% [markdown]
+# First, we load and explore the test MRIO included in pymrio:
+
+# %%
+import numpy as np
+
+import pymrio
+
+# %%
+io = pymrio.load_test()
+io.calc_all()
+
+# %%
+print(
+    "Sectors: {sec},\nRegions: {reg}".format(
+        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()
+    )
+)
+
+# %% [markdown]
+# ## Aggregation using a numerical concordance matrix
+
+# %% [markdown]
+# This is the standard way to aggregate MRIOs when you work in Matlab.
+# To do so, we need to set up a concordance matrix in which the columns correspond to the orignal classification and the rows to the aggregated one.
+
+# %%
+sec_agg_matrix = np.array(
+    [[1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 1]]
+)
+
+reg_agg_matrix = np.array([[1, 1, 1, 0, 0, 0], [0, 0, 0, 1, 1, 1]])
+
+# %%
+io.aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)
+
+# %%
+print(
+    "Sectors: {sec},\nRegions: {reg}".format(
+        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()
+    )
+)
+
+# %%
+io.calc_all()
+
+# %%
+io.emissions.D_cba
+
+# %% [markdown]
+# To use custom names for the aggregated sectors or regions, pass a list of names in order of rows in the concordance matrix:
+
+# %%
+io = (
+    pymrio.load_test()
+    .calc_all()
+    .aggregate(
+        region_agg=reg_agg_matrix,
+        region_names=["World Region A", "World Region B"],
+        inplace=False,
+    )
+)
+
+# %%
+io.get_regions()
+
+# %% [markdown]
+# ## Aggregation using a numerical vector
+
+# %% [markdown]
+# Pymrio also accepts the aggregatio information as numerical or string vector.
+# For these, each entry in the vector assignes the sector/region to a aggregation group.
+# Thus the two aggregation matrices from above (*sec_agg_matrix* and *reg_agg_matrix*) can also be represented as numerical or string vectors/lists:
+
+# %%
+sec_agg_vec = np.array([0, 1, 1, 1, 1, 2, 2, 2])
+reg_agg_vec = ["R1", "R1", "R1", "R2", "R2", "R2"]
+
+# %% [markdown]
+# can also be represented as aggregation vector:
+
+# %%
+io_vec_agg = (
+    pymrio.load_test()
+    .calc_all()
+    .aggregate(region_agg=reg_agg_vec, sector_agg=sec_agg_vec, inplace=False)
+)
+
+# %%
+print(
+    "Sectors: {sec},\nRegions: {reg}".format(
+        sec=io_vec_agg.get_sectors().tolist(), reg=io_vec_agg.get_regions().tolist()
+    )
+)
+
+# %%
+io_vec_agg.emissions.D_cba_reg
+
+# %% [markdown]
+# ## Regional aggregation using the country converter coco
+
+# %% [markdown]
+# The previous examples are best suited if you want to reuse existing aggregation information.
+# For new/ad hoc aggregation, the most user-friendly solution is to build the concordance with the [country converter coco](https://github.com/konstantinstadler/country_converter). The minimum version of coco required is 0.6.2. You can either use coco to build independent aggregations (first case below) or use the predefined classifications included in coco (second case - Example WIOD below).
+
+# %%
+import country_converter as coco
+
+# %% [markdown]
+# ### Independent aggregation
+
+# %%
+io = pymrio.load_test().calc_all()
+
+# %%
+reg_agg_coco = coco.agg_conc(
+    original_countries=io.get_regions(),
+    aggregates={
+        "reg1": "World Region A",
+        "reg2": "World Region A",
+        "reg3": "World Region A",
+    },
+    missing_countries="World Region B",
+)
+
+# %%
+io.aggregate(region_agg=reg_agg_coco)
+
+# %%
+print(
+    "Sectors: {sec},\nRegions: {reg}".format(
+        sec=io.get_sectors().tolist(), reg=io.get_regions().tolist()
+    )
+)
+
+# %% [markdown]
+# This can be passed directly to pymrio:
+
+# %%
+io.emissions.D_cba_reg
+
+# %% [markdown]
+# A pandas DataFrame corresponding to the output from *coco* can also be passed to *sector_agg* for aggregation.
+# A sector aggregation package similar to the country converter is planned.
+
+# %% [markdown]
+# ### Using the build-in classifications - WIOD example
+
+# %% [markdown]
+# The country converter is most useful when you work with a MRIO which is included in coco. In that case you can just pass the desired country aggregation to coco and it returns the required aggregation matrix:
+
+# %% [markdown]
+# For the example here, we assume that a raw WIOD download is available at:
+
+# %%
+wiod_raw = "/tmp/mrios/WIOD2013"
+
+# %% [markdown]
+# We will parse the year 2000 and calculate the results:
+
+# %%
+wiod_orig = pymrio.parse_wiod(path=wiod_raw, year=2000).calc_all()
+
+# %% [markdown]
+# and then aggregate the database to first the EU countries and group the remaining countries based on OECD membership. In the example below, we single out Germany (DEU) to be not included in the aggregation:
+
+# %%
+wiod_agg_DEU_EU_OECD = wiod_orig.aggregate(
+    region_agg=coco.agg_conc(
+        original_countries="WIOD",
+        aggregates=[{"DEU": "DEU"}, "EU", "OECD"],
+        missing_countries="Other",
+        merge_multiple_string=None,
+    ),
+    inplace=False,
+)
+
+# %% [markdown]
+# We can then rename the regions to make the membership clearer:
+
+# %%
+wiod_agg_DEU_EU_OECD.rename_regions({"OECD": "OECDwoEU", "EU": "EUwoGermany"})
+
+# %% [markdown]
+# To see the result for the air emission footprints:
+
+# %%
+wiod_agg_DEU_EU_OECD.AIR.D_cba_reg
+
+# %% [markdown]
+# For further examples on the capabilities of the country converter see the [coco tutorial notebook](http://nbviewer.jupyter.org/github/konstantinstadler/country_converter/blob/master/doc/country_converter_aggregation_helper.ipynb)
+
+# %% [markdown]
+# ## Aggregation by renaming
+
+# %% [markdown]
+# One alternative method for aggregating the MRIO system is to rename specific regions and/or sectors to duplicated names.
+# Duplicated sectors and regions can then be automatically aggregated. This makes most sense when having some categories of some kind (e.g. consumption categories) or detailed classification which can easily be broadened (e.g. A01, A02, which could be renamed all to A).
+# In the example below, we will aggregate sectors to consumption categories using some predefined categories included in pymrio. Check the [Adjusting, Renaming and Restructuring notebook for more details.](adjusting.ipynb)
+
+# %%
+mrio = pymrio.load_test()
+
+# %%
+class_info = pymrio.get_classification("test")
+rename_dict = class_info.get_sector_dict(
+    orig=class_info.sectors.TestMrioName, new=class_info.sectors.Type
+)
+
+# %% [markdown]
+# If we take a look at the rename_dict, we see that it maps several sectors of the original MRIO to combined regions (technically a many to one mapping).
+
+# %%
+rename_dict
+
+# %% [markdown]
+# Using this dict to rename sectors leads to an index with overlapping labels.
+
+# %%
+mrio.rename_sectors(rename_dict)
+mrio.Z
+
+# %% [markdown]
+# Which can then be aggregated with
+
+# %%
+mrio.aggregate_duplicates()
+mrio.Z
+
+# %% [markdown]
+# This method also comes handy when aggregating parts of the MRIO regions. E.g.:
+
+# %%
+region_convert = {"reg1": "Antarctica", "reg2": "Antarctica"}
+mrio.rename_regions(region_convert).aggregate_duplicates()
+mrio.Z
+
+# %% [markdown]
+# Which lets us calculate the footprint of the consumption category 'eat' in 'Antarctica':
+
+
+# %%
+mrio.calc_all()
+mrio.emissions.D_cba.loc[:, ("Antarctica", "eat")]
+
+
+# %% [markdown]
+# ## Aggregation to one total sector / region
+
+# %% [markdown]
+# Both, *region_agg* and *sector_agg*, also accept a string as argument. This leads to the aggregation to one total region or sector for the full IO system.
+
+# %%
+pymrio.load_test().calc_all().aggregate(
+    region_agg="global", sector_agg="total"
+).emissions.D_cba
+
+
+# %% [markdown]
+# ## Pre- vs post-aggregation account calculations
+
+# %% [markdown]
+# It is generally recommended to calculate MRIO accounts with the highest detail possible and aggregated the results afterwards (post-aggregation - see for example [Steen-Olsen et al 2014](http://dx.doi.org/10.1080/09535314.2014.934325), [Stadler et al 2014](https://zenodo.org/record/1137670#.WlOSOhZG1O8) or [Koning et al 2015](https://doi.org/10.1016/j.ecolecon.2015.05.008).
+#
+# Pre-aggregation, that means the aggregation of MRIO sectors and regions before calculation of footprint accounts, might be necessary when dealing with MRIOs on computers with limited RAM resources. However, one should be aware that the results might change.
+#
+# Pymrio can handle both cases and can be used to highlight the differences. To do so, we use the two  concordance matrices defined at the beginning (*sec_agg_matrix* and *reg_agg_matrix*) and aggregate the test system before and after the calculation of the accounts:
+
+# %%
+io_pre = (
+    pymrio.load_test()
+    .aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)
+    .calc_all()
+)
+io_post = (
+    pymrio.load_test()
+    .calc_all()
+    .aggregate(region_agg=reg_agg_matrix, sector_agg=sec_agg_matrix)
+)
+
+# %%
+io_pre.emissions.D_cba
+
+# %%
+io_post.emissions.D_cba
+
+# %% [markdown]
+# The same results as in io_pre are obtained for io_post, if we recalculate the footprint accounts based on the aggregated system:
+
+# %%
+io_post.reset_all_full().calc_all().emissions.D_cba
diff --git a/doc/source/notebooks/autodownload.ipynb b/doc/source/notebooks/autodownload.ipynb
index 9b43a943..d2aa5c8d 100644
--- a/doc/source/notebooks/autodownload.ipynb
+++ b/doc/source/notebooks/autodownload.ipynb
@@ -210,6 +210,9 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
+    "**DUE TO A RESTRUCTERING OF THE WIOD WEBPAGE THIS IS CURRENTLY BROKEN.**\n",
+    "\n",
+    "\n",
     "WIOD is licensed under the [Creative Commons Attribution 4.0 International-license](http://creativecommons.org/licenses/by/4.0/). Thus you can remix, tweak, and build upon WIOD, even commercially, as long as you give credit to WIOD. The WIOD web-page suggest to cite [Timmer et al. 2015](http://doi.wiley.com/10.1111/roie.12178) when you use the database. You can find more information on the [WIOD webpage](http://www.wiod.org)."
    ]
   },
diff --git a/doc/source/notebooks/autodownload.py b/doc/source/notebooks/autodownload.py
index 8ea9b74e..53ec7092 100644
--- a/doc/source/notebooks/autodownload.py
+++ b/doc/source/notebooks/autodownload.py
@@ -6,7 +6,7 @@
 #       extension: .py
 #       format_name: light
 #       format_version: '1.5'
-#       jupytext_version: 1.10.2
+#       jupytext_version: 1.11.1
 #   kernelspec:
 #     display_name: Python 3
 #     language: python
@@ -78,6 +78,9 @@
 # ## WIOD download
 
 
+# **DUE TO A RESTRUCTERING OF THE WIOD WEBPAGE THIS IS CURRENTLY BROKEN.**
+#
+#
 # WIOD is licensed under the [Creative Commons Attribution 4.0 International-license](http://creativecommons.org/licenses/by/4.0/). Thus you can remix, tweak, and build upon WIOD, even commercially, as long as you give credit to WIOD. The WIOD web-page suggest to cite [Timmer et al. 2015](http://doi.wiley.com/10.1111/roie.12178) when you use the database. You can find more information on the [WIOD webpage](http://www.wiod.org).
 
 # The download function for WIOD currently processes the [2013 release version of WIOD](http://www.wiod.org/database/wiots13).
diff --git a/pymrio/__init__.py b/pymrio/__init__.py
index 1b3624d0..6609d618 100644
--- a/pymrio/__init__.py
+++ b/pymrio/__init__.py
@@ -39,6 +39,7 @@
 
 from pymrio.core.fileio import *
 from pymrio.core.mriosystem import Extension, IOSystem, concate_extension
+from pymrio.tools.ioclass import ClassificationData, get_classification
 from pymrio.tools.iodownloader import (
     download_eora26,
     download_exiobase1,
diff --git a/pymrio/core/constants.py b/pymrio/core/constants.py
index bed81489..c51f49b9 100644
--- a/pymrio/core/constants.py
+++ b/pymrio/core/constants.py
@@ -5,25 +5,21 @@
 """
 
 import os
+from pathlib import Path
 
 # path information of the package
+__ROOT = Path(os.path.dirname(__file__))
 PYMRIO_PATH = {
-    "root": os.path.dirname(__file__),
-    "test_mrio": os.path.abspath(
-        os.path.join(os.path.dirname(__file__), "../mrio_models/test_mrio")
-    ),
-    "testmrio": os.path.abspath(
-        os.path.join(os.path.dirname(__file__), "../mrio_models/test_mrio")
-    ),
-    "test": os.path.abspath(
-        os.path.join(os.path.dirname(__file__), "../mrio_models/test_mrio")
-    ),
-    "exio20": os.path.abspath(
-        os.path.join(os.path.dirname(__file__), "../mrio_models/exio20")
-    ),
-    "exio2": os.path.abspath(
-        os.path.join(os.path.dirname(__file__), "../mrio_models/exio20")
-    ),
+    "test_mrio": Path(__ROOT / "../mrio_models/test_mrio").absolute(),
+    "test_mrio_data": Path(__ROOT / "../mrio_models/test_mrio/mrio_data").absolute(),
+    "testmrio": Path(__ROOT / "../mrio_models/test_mrio").absolute(),
+    "test": Path(__ROOT / "../mrio_models/test_mrio").absolute(),
+    # TODO remove "exio2": just here to keep the tests running
+    "exio2": Path(__ROOT / "../mrio_models/exio2_pxp").absolute(),
+    "exio2_pxp": Path(__ROOT / "../mrio_models/exio2_pxp").absolute(),
+    "exio2_ixi": Path(__ROOT / "../mrio_models/exio2_ixi").absolute(),
+    "exio3_pxp": Path(__ROOT / "../mrio_models/exio3_pxp").absolute(),
+    "exio3_ixi": Path(__ROOT / "../mrio_models/exio3_ixi").absolute(),
 }
 
 # generic names (needed for the aggregation  if no names are given)
diff --git a/pymrio/core/fileio.py b/pymrio/core/fileio.py
index d2bf7b81..59cc37b9 100644
--- a/pymrio/core/fileio.py
+++ b/pymrio/core/fileio.py
@@ -806,12 +806,12 @@ def load_test():
         ),
     )
 
-    meta_rec = MRIOMetaData(location=PYMRIO_PATH["test_mrio"])
+    meta_rec = MRIOMetaData(location=PYMRIO_PATH["test_mrio_data"])
 
     # read the data into a dicts as pandas.DataFrame
     data = {
         key: pd.read_csv(
-            os.path.join(PYMRIO_PATH["test_mrio"], test_system[key].file_name),
+            os.path.join(PYMRIO_PATH["test_mrio_data"], test_system[key].file_name),
             index_col=list(range(test_system[key].col_header)),
             header=list(range(test_system[key].row_header)),
             sep="\t",
@@ -819,7 +819,7 @@ def load_test():
         for key in test_system
     }
 
-    meta_rec._add_fileio("Load test_mrio from {}".format(PYMRIO_PATH["test_mrio"]))
+    meta_rec._add_fileio("Load test_mrio from {}".format(PYMRIO_PATH["test_mrio_data"]))
 
     # distribute the data into dics which can be passed to
     # the IOSystem. To do so, some preps are necessary:
@@ -868,7 +868,7 @@ def load_test():
     # the population data - this is optional (None can be passed if no data is
     # available)
     popdata = pd.read_csv(
-        os.path.join(PYMRIO_PATH["test_mrio"], "./population.txt"),
+        PYMRIO_PATH["test_mrio_data"] / "population.txt",
         index_col=0,
         sep="\t",
     ).astype(float)
diff --git a/pymrio/core/mriosystem.py b/pymrio/core/mriosystem.py
index 3535bf11..7cc14ca7 100644
--- a/pymrio/core/mriosystem.py
+++ b/pymrio/core/mriosystem.py
@@ -2094,6 +2094,75 @@ def save_all(
             )
         return self
 
+    def aggregate_duplicates(self, inplace=True):
+        """Aggregate duplicated regions and sectors
+
+        Alternative approach to aggregate MRIO by renaming sectors/regions
+        in place and then adding them together. This works well if used with the included classification schemes.
+
+        Parameters
+        ----------
+        inplace : boolean, optional
+            If True, aggregates the IOSystem in place (default),
+            otherwise aggregation happens on a copy of the IOSystem.
+            Regardless of the setting, the IOSystem is returned to
+            allow for chained operations.
+
+        Returns
+        -------
+        IOSystem
+            Aggregated IOSystem (if inplace is False)
+
+        """
+
+        if not inplace:
+            self = self.copy()
+
+        try:
+            self.reset_all_to_flows()
+        except ResetError:
+            raise AggregationError(
+                "System under-defined for aggregation - "
+                "do a 'calc_all' before aggregation"
+            )
+
+        def agg_routine(df):
+            """Aggregation of duplicate columns and rows"""
+            _index_names = df.index.names
+            _columns_names = df.columns.names
+            if (type(df.columns[0]) is not tuple) and df.columns[0].lower() == "unit":
+                df = df.groupby(df.index, axis=0, sort=False).first()
+            else:
+                df = (
+                    df.groupby(df.index, axis=0, sort=False)
+                    .sum()
+                    .groupby(df.columns, axis=1, sort=False)
+                    .sum()
+                )
+
+            if type(df.index[0]) is tuple:
+                df.index = pd.MultiIndex.from_tuples(df.index, names=_index_names)
+            if type(df.columns[0]) is tuple:
+                df.columns = pd.MultiIndex.from_tuples(df.columns, names=_columns_names)
+            return df
+
+        for df_to_agg_name in self.get_DataFrame(data=False, with_unit=True):
+            self.meta._add_modify(f"Aggregate economic core - {df_to_agg_name}")
+            setattr(self, df_to_agg_name, agg_routine(df=getattr(self, df_to_agg_name)))
+
+        # Aggregate extension
+        for ext in self.get_extensions(data=True):
+            for df_to_agg_name in ext.get_DataFrame(data=False, with_unit=False):
+                self.meta._add_modify(
+                    f"Aggregate extension {ext.name} - {df_to_agg_name}"
+                )
+                setattr(
+                    ext, df_to_agg_name, agg_routine(df=getattr(ext, df_to_agg_name))
+                )
+
+        if not inplace:
+            return self
+
     def aggregate(
         self,
         region_agg=None,
@@ -2122,7 +2191,7 @@ def aggregate(
             The aggregation vector or matrix for the regions (np.ndarray or
             list). If string: aggregates to one total region and names is
             to the given string.
-            Pandas Dataframe with columns 'orignal' and 'aggregated'.
+            Pandas DataFrame with columns 'original' and 'aggregated'.
             This is the output from the country_converter.agg_conc
         sector_agg : list, arrays or string, optional
             The aggregation vector or matrix for the sectors (np.ndarray or
@@ -2156,6 +2225,9 @@ def aggregate(
         # than the recalculation of the extension coefficients would not
         # work.
 
+        if len(self.unit.squeeze().unique()) > 1:
+            raise NotImplementedError("Aggregation not implemented for hybrid tables")
+
         if not inplace:
             self = self.copy()
 
@@ -2327,6 +2399,18 @@ def aggregate(
                 index=self.population.index,
             )
 
+        # NOTE: this fails for none consistent units (hybrid tables)
+        try:
+            _value = self.unit.iloc[0].tolist()[0]
+            self.unit = pd.DataFrame(
+                index=self.Z.index,
+                columns=self.unit.columns,
+                data=_value,
+            )
+        except AttributeError:
+            # could fail if no unit available
+            self.unit = None
+
         for extension in self.get_extensions(data=True):
             self.meta._add_modify("Aggregate extensions...")
             extension.reset_to_flows()
@@ -2382,6 +2466,7 @@ def aggregate(
                     extension.__dict__[ik_name].index = ik_df.index
 
                 if st_redo_unit:
+                    # NOTE: this fails for none consistent units
                     try:
                         _value = extension.unit.iloc[0].tolist()[0]
                         extension.unit = pd.DataFrame(
diff --git a/pymrio/mrio_models/exio20/__init__.py b/pymrio/mrio_models/exio2_ixi/__init__.py
similarity index 100%
rename from pymrio/mrio_models/exio20/__init__.py
rename to pymrio/mrio_models/exio2_ixi/__init__.py
diff --git a/pymrio/mrio_models/exio20/concordance/ALL.txt b/pymrio/mrio_models/exio2_ixi/concordance/ALL.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ALL.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ALL.txt
diff --git a/pymrio/mrio_models/exio20/concordance/Africa.txt b/pymrio/mrio_models/exio2_ixi/concordance/Africa.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/Africa.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/Africa.txt
diff --git a/pymrio/mrio_models/exio20/concordance/America.txt b/pymrio/mrio_models/exio2_ixi/concordance/America.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/America.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/America.txt
diff --git a/pymrio/mrio_models/exio20/concordance/AsiaPacific.txt b/pymrio/mrio_models/exio2_ixi/concordance/AsiaPacific.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/AsiaPacific.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/AsiaPacific.txt
diff --git a/pymrio/mrio_models/exio20/concordance/BRIC.txt b/pymrio/mrio_models/exio2_ixi/concordance/BRIC.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/BRIC.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/BRIC.txt
diff --git a/pymrio/mrio_models/exio20/concordance/EU.txt b/pymrio/mrio_models/exio2_ixi/concordance/EU.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/EU.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/EU.txt
diff --git a/pymrio/mrio_models/exio20/concordance/Europe.txt b/pymrio/mrio_models/exio2_ixi/concordance/Europe.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/Europe.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/Europe.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_A.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_A.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_A.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_A.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_B.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_B.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_B.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_B.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_C.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_C.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_C.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_C.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_D.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_D.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_D.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_D.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_E.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_E.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_E.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_E.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_F.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_F.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_F.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_F.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_G_H.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_G_H.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_G_H.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_G_H.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_I.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_I.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_I.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_I.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_J_K.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_J_K.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_J_K.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_J_K.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_L.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_L.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_L.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_L.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_M_N_O.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_M_N_O.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_M_N_O.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_M_N_O.txt
diff --git a/pymrio/mrio_models/exio20/concordance/ISIC_P.txt b/pymrio/mrio_models/exio2_ixi/concordance/ISIC_P.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/ISIC_P.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/ISIC_P.txt
diff --git a/pymrio/mrio_models/exio20/concordance/MiddleEast.txt b/pymrio/mrio_models/exio2_ixi/concordance/MiddleEast.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/MiddleEast.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/MiddleEast.txt
diff --git a/pymrio/mrio_models/exio20/concordance/OECD.txt b/pymrio/mrio_models/exio2_ixi/concordance/OECD.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/OECD.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/OECD.txt
diff --git a/pymrio/mrio_models/exio20/concordance/RoW.txt b/pymrio/mrio_models/exio2_ixi/concordance/RoW.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/RoW.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/RoW.txt
diff --git a/pymrio/mrio_models/exio20/concordance/__init__.py b/pymrio/mrio_models/exio2_ixi/concordance/__init__.py
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/__init__.py
rename to pymrio/mrio_models/exio2_ixi/concordance/__init__.py
diff --git a/pymrio/mrio_models/exio20/concordance/orig_regions.txt b/pymrio/mrio_models/exio2_ixi/concordance/orig_regions.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/orig_regions.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/orig_regions.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_A.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_A.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_A.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_A.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_B.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_B.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_B.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_B.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_C.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_C.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_C.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_C.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_D.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_D.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_D.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_D.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_E.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_E.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_E.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_E.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_F.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_F.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_F.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_F.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_G_H.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_G_H.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_G_H.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_G_H.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_I.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_I.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_I.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_I.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_J_K.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_J_K.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_J_K.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_J_K.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_L.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_L.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_L.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_L.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_M_N_O.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_M_N_O.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_M_N_O.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_M_N_O.txt
diff --git a/pymrio/mrio_models/exio20/concordance/pro_ISIC_P.txt b/pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_P.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/concordance/pro_ISIC_P.txt
rename to pymrio/mrio_models/exio2_ixi/concordance/pro_ISIC_P.txt
diff --git a/pymrio/mrio_models/exio20/misc/__init__.py b/pymrio/mrio_models/exio2_ixi/misc/__init__.py
similarity index 100%
rename from pymrio/mrio_models/exio20/misc/__init__.py
rename to pymrio/mrio_models/exio2_ixi/misc/__init__.py
diff --git a/pymrio/mrio_models/exio20/misc/population.txt b/pymrio/mrio_models/exio2_ixi/misc/population.txt
similarity index 100%
rename from pymrio/mrio_models/exio20/misc/population.txt
rename to pymrio/mrio_models/exio2_ixi/misc/population.txt
diff --git a/pymrio/mrio_models/exio2_pxp/__init__.py b/pymrio/mrio_models/exio2_pxp/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ALL.txt b/pymrio/mrio_models/exio2_pxp/concordance/ALL.txt
new file mode 100644
index 00000000..ac6db5f3
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ALL.txt
@@ -0,0 +1,48 @@
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
+ALL
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/Africa.txt b/pymrio/mrio_models/exio2_pxp/concordance/Africa.txt
new file mode 100644
index 00000000..6e826d01
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/Africa.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+Africa
+None
+None
+None
+Africa
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/America.txt b/pymrio/mrio_models/exio2_pxp/concordance/America.txt
new file mode 100644
index 00000000..b2af7557
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/America.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+America
+None
+None
+America
+None
+America
+None
+America
+None
+None
+None
+None
+None
+None
+None
+None
+None
+America
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/AsiaPacific.txt b/pymrio/mrio_models/exio2_pxp/concordance/AsiaPacific.txt
new file mode 100644
index 00000000..ae64b51c
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/AsiaPacific.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+AsiaPacific
+AsiaPacific
+None
+AsiaPacific
+None
+AsiaPacific
+None
+None
+AsiaPacific
+None
+None
+AsiaPacific
+None
+AsiaPacific
+None
+AsiaPacific
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/BRIC.txt b/pymrio/mrio_models/exio2_pxp/concordance/BRIC.txt
new file mode 100644
index 00000000..a3b34e43
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/BRIC.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+BRIC
+None
+None
+BRIC
+BRIC
+None
+BRIC
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/EU.txt b/pymrio/mrio_models/exio2_pxp/concordance/EU.txt
new file mode 100644
index 00000000..6a72ae53
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/EU.txt
@@ -0,0 +1,48 @@
+AT	EU
+BE	EU
+BG	EU
+CY	EU
+CZ	EU
+DE	EU
+DK	EU
+EE	EU
+ES	EU
+FI	EU
+FR	EU
+GR	EU
+HU	EU
+IE	EU
+IT	EU
+LT	EU
+LU	EU
+LV	EU
+MT	EU
+NL	EU
+PL	EU
+PT	EU
+RO	EU
+SE	EU
+SI	EU
+SK	EU
+GB	EU
+US	None
+JP	None
+CN	None
+CA	None
+KR	None
+BR	None
+IN	None
+MX	None
+RU	None
+AU	None
+CH	None
+TR	None
+TW	None
+NO	None
+ID	None
+ZA	None
+WA	None
+WL	None
+WE	None
+WF	None
+WM	None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/Europe.txt b/pymrio/mrio_models/exio2_pxp/concordance/Europe.txt
new file mode 100644
index 00000000..09f0355b
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/Europe.txt
@@ -0,0 +1,48 @@
+Europe
+Europe
+Europe
+None
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+Europe
+None
+None
+None
+None
+None
+None
+None
+None
+Europe
+None
+Europe
+None
+None
+Europe
+None
+None
+None
+None
+Europe
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_A.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_A.txt
new file mode 100644
index 00000000..fe9fa7bf
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_A.txt
@@ -0,0 +1,163 @@
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+ISIC_A
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_B.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_B.txt
new file mode 100644
index 00000000..ff142d60
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_B.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_B
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_C.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_C.txt
new file mode 100644
index 00000000..e593e5b2
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_C.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+ISIC_C
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_D.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_D.txt
new file mode 100644
index 00000000..7419cd7c
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_D.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+ISIC_D
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_E.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_E.txt
new file mode 100644
index 00000000..501c7294
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_E.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+ISIC_E
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_F.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_F.txt
new file mode 100644
index 00000000..991db1dc
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_F.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_F
+ISIC_F
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_G_H.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_G_H.txt
new file mode 100644
index 00000000..f11fcce8
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_G_H.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_G_H
+ISIC_G_H
+ISIC_G_H
+ISIC_G_H
+ISIC_G_H
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_I.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_I.txt
new file mode 100644
index 00000000..01f4639d
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_I.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_I
+ISIC_I
+ISIC_I
+ISIC_I
+ISIC_I
+ISIC_I
+ISIC_I
+ISIC_I
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_J_K.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_J_K.txt
new file mode 100644
index 00000000..08b618f6
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_J_K.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+ISIC_J_K
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_L.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_L.txt
new file mode 100644
index 00000000..314d0191
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_L.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_L
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_L
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_M_N_O.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_M_N_O.txt
new file mode 100644
index 00000000..5ed8de65
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_M_N_O.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+ISIC_M_N_O
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/ISIC_P.txt b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_P.txt
new file mode 100644
index 00000000..85ca15c1
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/ISIC_P.txt
@@ -0,0 +1,163 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+ISIC_P
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/MiddleEast.txt b/pymrio/mrio_models/exio2_pxp/concordance/MiddleEast.txt
new file mode 100644
index 00000000..c5f1f13a
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/MiddleEast.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+MiddleEast
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+MiddleEast
+None
+None
+None
+None
+None
+None
+None
+None
+MiddleEast
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/OECD.txt b/pymrio/mrio_models/exio2_pxp/concordance/OECD.txt
new file mode 100644
index 00000000..0940a1a0
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/OECD.txt
@@ -0,0 +1,48 @@
+OECD
+OECD
+None
+None
+OECD
+OECD
+OECD
+None
+OECD
+OECD
+OECD
+OECD
+OECD
+OECD
+OECD
+None
+OECD
+None
+None
+OECD
+OECD
+OECD
+None
+OECD
+None
+OECD
+OECD
+OECD
+OECD
+OECD
+OECD
+OECD
+None
+None
+OECD
+None
+OECD
+OECD
+OECD
+None
+OECD
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/RoW.txt b/pymrio/mrio_models/exio2_pxp/concordance/RoW.txt
new file mode 100644
index 00000000..62b9a4f6
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/RoW.txt
@@ -0,0 +1,48 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+RoW
+RoW
+RoW
+RoW
+RoW
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/__init__.py b/pymrio/mrio_models/exio2_pxp/concordance/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/orig_regions.txt b/pymrio/mrio_models/exio2_pxp/concordance/orig_regions.txt
new file mode 100644
index 00000000..6357040b
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/orig_regions.txt
@@ -0,0 +1,48 @@
+AT
+BE
+BG
+CY
+CZ
+DE
+DK
+EE
+ES
+FI
+FR
+GR
+HU
+IE
+IT
+LT
+LU
+LV
+MT
+NL
+PL
+PT
+RO
+SE
+SI
+SK
+GB
+US
+JP
+CN
+CA
+KR
+BR
+IN
+MX
+RU
+AU
+CH
+TR
+TW
+NO
+ID
+ZA
+WA
+WL
+WE
+WF
+WM
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_A.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_A.txt
new file mode 100644
index 00000000..ce365de2
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_A.txt
@@ -0,0 +1,200 @@
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+pro_ISIC_A
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_B.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_B.txt
new file mode 100644
index 00000000..41e0d9c6
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_B.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_B
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_C.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_C.txt
new file mode 100644
index 00000000..f6fb1add
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_C.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+pro_ISIC_C
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_D.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_D.txt
new file mode 100644
index 00000000..fdce563a
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_D.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+pro_ISIC_D
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_E.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_E.txt
new file mode 100644
index 00000000..4385d7d9
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_E.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+pro_ISIC_E
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_F.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_F.txt
new file mode 100644
index 00000000..a45a5d80
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_F.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_F
+pro_ISIC_F
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_G_H.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_G_H.txt
new file mode 100644
index 00000000..c1de8153
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_G_H.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_G_H
+pro_ISIC_G_H
+pro_ISIC_G_H
+pro_ISIC_G_H
+pro_ISIC_G_H
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_I.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_I.txt
new file mode 100644
index 00000000..235116bb
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_I.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+pro_ISIC_I
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_J_K.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_J_K.txt
new file mode 100644
index 00000000..adf39b17
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_J_K.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+pro_ISIC_J_K
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_L.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_L.txt
new file mode 100644
index 00000000..4d24aeeb
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_L.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_L
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_L
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_M_N_O.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_M_N_O.txt
new file mode 100644
index 00000000..faa0532e
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_M_N_O.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+pro_ISIC_M_N_O
+None
+None
diff --git a/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_P.txt b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_P.txt
new file mode 100644
index 00000000..035bdb69
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/concordance/pro_ISIC_P.txt
@@ -0,0 +1,200 @@
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+None
+pro_ISIC_P
+None
diff --git a/pymrio/mrio_models/exio2_pxp/misc/__init__.py b/pymrio/mrio_models/exio2_pxp/misc/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/exio2_pxp/misc/population.txt b/pymrio/mrio_models/exio2_pxp/misc/population.txt
new file mode 100644
index 00000000..8db7fa3d
--- /dev/null
+++ b/pymrio/mrio_models/exio2_pxp/misc/population.txt
@@ -0,0 +1,2 @@
+	AT	BE	BG	CY	CZ	DE	DK	EE	ES	FI	FR	GR	HU	IE	IT	LT	LU	LV	MT	NL	PL	PT	RO	SE	SI	SK	GB	US	JP	CN	CA	KR	BR	IN	MX	RU	AU	CH	TR	TW	NO	ID	ZA	WA	WL	WE	WF	WM
+Poplulation	8300788	10625700	7659764	1063095	10334160	82266372	5461438	1341672	44878945	5288720	64012572	11192763	10055780	4356931	59375289	3375618	479993	2276100	409050	16381696	38120560	10608335	21546873	9148092	2018122	5397318	60986649	301231207	127770750	1317885000	32927517	48598000	189996976	1159095250	113529819	142100000	21015900	7551117	69496513	22958000	4709153	230972808	48257282	849487578	271623170	83727963	823266730	275020916
diff --git a/pymrio/mrio_models/exio3_ixi/__init__.py b/pymrio/mrio_models/exio3_ixi/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/exio3_ixi/finaldemand.tsv b/pymrio/mrio_models/exio3_ixi/finaldemand.tsv
new file mode 100644
index 00000000..5bfeb49d
--- /dev/null
+++ b/pymrio/mrio_models/exio3_ixi/finaldemand.tsv
@@ -0,0 +1,8 @@
+ExioNumber	ExioName	ExioCode	ExioLabel	Type
+164	Final consumption expenditure by households	y01	F_HOUS	Expenditure
+165	Final consumption expenditure by non-profit organisations serving households (NPISH)	y02.a	F_NPSH	Expenditure
+166	Final consumption expenditure by government	y02.b	F_GOVE	Expenditure
+167	Gross fixed capital formation	y04	I_GFCF	Capital
+168	Changes in inventories	y05.a	I_CHIN	Capital
+169	Changes in valuables	y05.b	I_CHVA	Capital
+170	Exports: Total (fob)	y06	X_TOTA	Export
diff --git a/pymrio/mrio_models/exio3_ixi/sectors.tsv b/pymrio/mrio_models/exio3_ixi/sectors.tsv
new file mode 100644
index 00000000..33fb5cbb
--- /dev/null
+++ b/pymrio/mrio_models/exio3_ixi/sectors.tsv
@@ -0,0 +1,164 @@
+ExioNumber	ExioName	ExioCode	ExioLabel	ISICCode	ISICName	ConsumptionCategories
+1	Cultivation of paddy rice	i01.a	A_PARI	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+2	Cultivation of wheat	i01.b	A_WHEA	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+3	Cultivation of cereal grains nec	i01.c	A_OCER	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+4	Cultivation of vegetables, fruit, nuts	i01.d	A_FVEG	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+5	Cultivation of oil seeds	i01.e	A_OILS	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+6	Cultivation of sugar cane, sugar beet	i01.f	A_SUGB	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+7	Cultivation of plant-based fibers	i01.g	A_FIBR	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+8	Cultivation of crops nec	i01.h	A_OTCR	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+9	Cattle farming	i01.i	A_CATL	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+10	Pigs farming	i01.j	A_PIGS	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+11	Poultry farming	i01.k	A_PLTR	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+12	Meat animals nec	i01.l	A_OMEA	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+13	Animal products nec	i01.m	A_OANP	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+14	Raw milk	i01.n	A_MILK	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+15	Wool, silk-worm cocoons	i01.o	A_WOOL	ISIC_A	Agriculture, hunting and related service activities (01)	Clothing
+16	Manure treatment (conventional), storage and land application	i01.w.1	A_MANC	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+17	Manure treatment (biogas), storage and land application	i01.w.2	A_MANB	ISIC_A	Agriculture, hunting and related service activities (01)	Food
+18	Forestry, logging and related service activities (02)	i02	A_FORE	ISIC_A	Forestry, logging and related service activities (02)	Shelter
+19	Fishing, operating of fish hatcheries and fish farms; service activities incidental to fishing (05)	i05	A_FISH	ISIC_B	Fishing (B)	Food
+20	Mining of coal and lignite; extraction of peat (10)	i10	A_COAL	ISIC_C	Mining and quarrying (C)	Shelter
+21	Extraction of crude petroleum and services related to crude oil extraction, excluding surveying	i11.a	A_COIL	ISIC_C	Mining and quarrying (C)	Shelter
+22	Extraction of natural gas and services related to natural gas extraction, excluding surveying	i11.b	A_GASE	ISIC_C	Mining and quarrying (C)	Shelter
+23	Extraction, liquefaction, and regasification of other petroleum and gaseous materials	i11.c	A_OGPL	ISIC_C	Mining and quarrying (C)	Shelter
+24	Mining of uranium and thorium ores (12)	i12	A_ORAN	ISIC_C	Mining and quarrying (C)	Shelter
+25	Mining of iron ores	i13.1	A_IRON	ISIC_C	Mining and quarrying (C)	Shelter
+26	Mining of copper ores and concentrates	i13.20.11	A_COPO	ISIC_C	Mining and quarrying (C)	Construction
+27	Mining of nickel ores and concentrates	i13.20.12	A_NIKO	ISIC_C	Mining and quarrying (C)	Construction
+28	Mining of aluminium ores and concentrates	i13.20.13	A_ALUO	ISIC_C	Mining and quarrying (C)	Construction
+29	Mining of precious metal ores and concentrates	i13.20.14	A_PREO	ISIC_C	Mining and quarrying (C)	Construction
+30	Mining of lead, zinc and tin ores and concentrates	i13.20.15	A_LZTO	ISIC_C	Mining and quarrying (C)	Construction
+31	Mining of other non-ferrous metal ores and concentrates	i13.20.16	A_ONFO	ISIC_C	Mining and quarrying (C)	Construction
+32	Quarrying of stone	i14.1	A_STON	ISIC_C	Mining and quarrying (C)	Construction
+33	Quarrying of sand and clay	i14.2	A_SDCL	ISIC_C	Mining and quarrying (C)	Construction
+34	Mining of chemical and fertilizer minerals, production of salt, other mining and quarrying n.e.c.	i14.3	A_CHMF	ISIC_C	Mining and quarrying (C)	Food
+35	Processing of meat cattle	i15.a	A_PCAT	ISIC_D	Manufacturing (D)	Food
+36	Processing of meat pigs	i15.b	A_PPIG	ISIC_D	Manufacturing (D)	Food
+37	Processing of meat poultry	i15.c	A_PPLT	ISIC_D	Manufacturing (D)	Food
+38	Production of meat products nec	i15.d	A_POME	ISIC_D	Manufacturing (D)	Food
+39	Processing vegetable oils and fats	i15.e	A_VOIL	ISIC_D	Manufacturing (D)	Food
+40	Processing of dairy products	i15.f	A_DAIR	ISIC_D	Manufacturing (D)	Food
+41	Processed rice	i15.g	A_RICE	ISIC_D	Manufacturing (D)	Food
+42	Sugar refining	i15.h	A_SUGR	ISIC_D	Manufacturing (D)	Food
+43	Processing of Food products nec	i15.i	A_OFOD	ISIC_D	Manufacturing (D)	Food
+44	Manufacture of beverages	i15.j	A_BEVR	ISIC_D	Manufacturing (D)	Food
+45	Manufacture of fish products	i15.k	A_FSHP	ISIC_D	Manufacturing (D)	Food
+46	Manufacture of tobacco products (16)	i16	A_TOBC	ISIC_D	Manufacturing (D)	Food
+47	Manufacture of textiles (17)	i17	A_TEXT	ISIC_D	Manufacturing (D)	Clothing
+48	Manufacture of wearing apparel; dressing and dyeing of fur (18)	i18	A_GARM	ISIC_D	Manufacturing (D)	Clothing
+49	Tanning and dressing of leather; manufacture of luggage, handbags, saddlery, harness and footwear (19)	i19	A_LETH	ISIC_D	Manufacturing (D)	Clothing
+50	Manufacture of wood and of products of wood and cork, except furniture; manufacture of articles of straw and plaiting materials (20)	i20	A_WOOD	ISIC_D	Manufacturing (D)	Shelter
+51	Re-processing of secondary wood material into new wood material	i20.w	A_WOOW	ISIC_D	Manufacturing (D)	Shelter
+52	Pulp	i21.1	A_PULP	ISIC_D	Manufacturing (D)	Manufactured_products
+53	Re-processing of secondary paper into new pulp	i21.w.1	A_PAPR	ISIC_D	Manufacturing (D)	Manufactured_products
+54	Paper	i21.2	A_PAPE	ISIC_D	Manufacturing (D)	Manufactured_products
+55	Publishing, printing and reproduction of recorded media (22)	i22	A_MDIA	ISIC_D	Manufacturing (D)	Services
+56	Manufacture of coke oven products	i23.1	A_COKE	ISIC_D	Manufacturing (D)	Shelter
+57	Petroleum Refinery	i23.2	A_REFN	ISIC_D	Manufacturing (D)	Mobility
+58	Processing of nuclear fuel	i23.3	A_NUCF	ISIC_D	Manufacturing (D)	Shelter
+59	Plastics, basic	i24.a	A_PLAS	ISIC_D	Manufacturing (D)	Manufactured_products
+60	Re-processing of secondary plastic into new plastic	i24.a.w	A_PLAW	ISIC_D	Manufacturing (D)	Manufactured_products
+61	N-fertiliser	i24.b	A_NFER	ISIC_D	Manufacturing (D)	Food
+62	P- and other fertiliser	i24.c	A_PFER	ISIC_D	Manufacturing (D)	Food
+63	Chemicals nec	i24.d	A_CHEM	ISIC_D	Manufacturing (D)	Manufactured_products
+64	Manufacture of rubber and plastic products (25)	i25	A_RUBP	ISIC_D	Manufacturing (D)	Manufactured_products
+65	Manufacture of glass and glass products	i26.a	A_GLAS	ISIC_D	Manufacturing (D)	Construction
+66	Re-processing of secondary glass into new glass	i26.a.w	A_GLAW	ISIC_D	Manufacturing (D)	Construction
+67	Manufacture of ceramic goods	i26.b	A_CRMC	ISIC_D	Manufacturing (D)	Construction
+68	Manufacture of bricks, tiles and construction products, in baked clay	i26.c	A_BRIK	ISIC_D	Manufacturing (D)	Construction
+69	Manufacture of cement, lime and plaster	i26.d	A_CMNT	ISIC_D	Manufacturing (D)	Construction
+70	Re-processing of ash into clinker	i26.d.w	A_ASHW	ISIC_D	Manufacturing (D)	Construction
+71	Manufacture of other non-metallic mineral products n.e.c.	i26.e	A_ONMM	ISIC_D	Manufacturing (D)	Construction
+72	Manufacture of basic iron and steel and of ferro-alloys and first products thereof	i27.a	A_STEL	ISIC_D	Manufacturing (D)	Manufactured_products
+73	Re-processing of secondary steel into new steel	i27.a.w	A_STEW	ISIC_D	Manufacturing (D)	Manufactured_products
+74	Precious metals production	i27.41	A_PREM	ISIC_D	Manufacturing (D)	Manufactured_products
+75	Re-processing of secondary preciuos metals into new preciuos metals	i27.41.w	A_PREW	ISIC_D	Manufacturing (D)	Manufactured_products
+76	Aluminium production	i27.42	A_ALUM	ISIC_D	Manufacturing (D)	Manufactured_products
+77	Re-processing of secondary aluminium into new aluminium	i27.42.w	A_ALUW	ISIC_D	Manufacturing (D)	Manufactured_products
+78	Lead, zinc and tin production	i27.43	A_LZTP	ISIC_D	Manufacturing (D)	Manufactured_products
+79	Re-processing of secondary lead into new lead, zinc and tin	i27.43.w	A_LZTW	ISIC_D	Manufacturing (D)	Manufactured_products
+80	Copper production	i27.44	A_COPP	ISIC_D	Manufacturing (D)	Manufactured_products
+81	Re-processing of secondary copper into new copper	i27.44.w	A_COPW	ISIC_D	Manufacturing (D)	Manufactured_products
+82	Other non-ferrous metal production	i27.45	A_ONFM	ISIC_D	Manufacturing (D)	Manufactured_products
+83	Re-processing of secondary other non-ferrous metals into new other non-ferrous metals	i27.45.w	A_ONFW	ISIC_D	Manufacturing (D)	Manufactured_products
+84	Casting of metals	i27.5	A_METC	ISIC_D	Manufacturing (D)	Manufactured_products
+85	Manufacture of fabricated metal products, except machinery and equipment (28)	i28	A_FABM	ISIC_D	Manufacturing (D)	Manufactured_products
+86	Manufacture of machinery and equipment n.e.c. (29)	i29	A_MACH	ISIC_D	Manufacturing (D)	Manufactured_products
+87	Manufacture of office machinery and computers (30)	i30	A_OFMA	ISIC_D	Manufacturing (D)	Manufactured_products
+88	Manufacture of electrical machinery and apparatus n.e.c. (31)	i31	A_ELMA	ISIC_D	Manufacturing (D)	Manufactured_products
+89	Manufacture of radio, television and communication equipment and apparatus (32)	i32	A_RATV	ISIC_D	Manufacturing (D)	Manufactured_products
+90	Manufacture of medical, precision and optical instruments, watches and clocks (33)	i33	A_MEIN	ISIC_D	Manufacturing (D)	Manufactured_products
+91	Manufacture of motor vehicles, trailers and semi-trailers (34)	i34	A_MOTO	ISIC_D	Manufacturing (D)	Manufactured_products
+92	Manufacture of other transport equipment (35)	i35	A_OTRE	ISIC_D	Manufacturing (D)	Manufactured_products
+93	Manufacture of furniture; manufacturing n.e.c. (36)	i36	A_FURN	ISIC_D	Manufacturing (D)	Manufactured_products
+94	Recycling of waste and scrap	i37	A_RYMS	ISIC_D	Manufacturing (D)	Manufactured_products
+95	Recycling of bottles by direct reuse	i37.w.1	A_BOTW	ISIC_D	Manufacturing (D)	Manufactured_products
+96	Production of electricity by coal	i40.11.a	A_POWC	ISIC_E	Electricity, gas and water supply (E)	Shelter
+97	Production of electricity by gas	i40.11.b	A_POWG	ISIC_E	Electricity, gas and water supply (E)	Shelter
+98	Production of electricity by nuclear	i40.11.c	A_POWN	ISIC_E	Electricity, gas and water supply (E)	Shelter
+99	Production of electricity by hydro	i40.11.d	A_POWH	ISIC_E	Electricity, gas and water supply (E)	Shelter
+100	Production of electricity by wind	i40.11.e	A_POWW	ISIC_E	Electricity, gas and water supply (E)	Shelter
+101	Production of electricity by petroleum and other oil derivatives	i40.11.f	A_POWP	ISIC_E	Electricity, gas and water supply (E)	Shelter
+102	Production of electricity by biomass and waste	i40.11.g	A_POWB	ISIC_E	Electricity, gas and water supply (E)	Shelter
+103	Production of electricity by solar photovoltaic	i40.11.h	A_POWS	ISIC_E	Electricity, gas and water supply (E)	Shelter
+104	Production of electricity by solar thermal	i40.11.i	A_POWE	ISIC_E	Electricity, gas and water supply (E)	Shelter
+105	Production of electricity by tide, wave, ocean	i40.11.j	A_POWO	ISIC_E	Electricity, gas and water supply (E)	Shelter
+106	Production of electricity by Geothermal	i40.11.k	A_POWM	ISIC_E	Electricity, gas and water supply (E)	Shelter
+107	Production of electricity nec	i40.11.l	A_POWZ	ISIC_E	Electricity, gas and water supply (E)	Shelter
+108	Transmission of electricity	i40.12	A_POWT	ISIC_E	Electricity, gas and water supply (E)	Shelter
+109	Distribution and trade of electricity	i40.13	A_POWD	ISIC_E	Electricity, gas and water supply (E)	Shelter
+110	Manufacture of gas; distribution of gaseous fuels through mains	i40.2	A_GASD	ISIC_E	Electricity, gas and water supply (E)	Shelter
+111	Steam and hot water supply	i40.3	A_HWAT	ISIC_E	Electricity, gas and water supply (E)	Shelter
+112	Collection, purification and distribution of water (41)	i41	A_WATR	ISIC_E	Electricity, gas and water supply (E)	Shelter
+113	Construction (45)	i45	A_CONS	ISIC_F	Construction (F)	Construction
+114	Re-processing of secondary construction material into aggregates	i45.w	A_CONW	ISIC_F	Construction (F)	Construction
+115	Sale, maintenance, repair of motor vehicles, motor vehicles parts, motorcycles, motor cycles parts and accessoiries	i50.a	A_TDMO	ISIC_G_H	Wholesale retail trade, repair of motor vehicles, motorcycles, etc.; hotels and restaurants (G+H)	Trade
+116	Retail sale of automotive fuel	i50.b	A_TDFU	ISIC_G_H	Wholesale retail trade, repair of motor vehicles, motorcycles, etc.; hotels and restaurants (G+H)	Trade
+117	Wholesale trade and commission trade, except of motor vehicles and motorcycles (51)	i51	A_TDWH	ISIC_G_H	Wholesale retail trade, repair of motor vehicles, motorcycles, etc.; hotels and restaurants (G+H)	Trade
+118	Retail trade, except of motor vehicles and motorcycles; repair of personal and household goods (52)	i52	A_TDRT	ISIC_G_H	Wholesale retail trade, repair of motor vehicles, motorcycles, etc.; hotels and restaurants (G+H)	Trade
+119	Hotels and restaurants (55)	i55	A_HORE	ISIC_G_H	Wholesale retail trade, repair of motor vehicles, motorcycles, etc.; hotels and restaurants (G+H)	Services
+120	Transport via railways	i60.1	A_TRAI	ISIC_I	Transport, storage and communications (I)	Mobility
+121	Other land transport	i60.2	A_TLND	ISIC_I	Transport, storage and communications (I)	Mobility
+122	Transport via pipelines	i60.3	A_TPIP	ISIC_I	Transport, storage and communications (I)	Mobility
+123	Sea and coastal water transport	i61.1	A_TWAS	ISIC_I	Transport, storage and communications (I)	Mobility
+124	Inland water transport	i61.2	A_TWAI	ISIC_I	Transport, storage and communications (I)	Mobility
+125	Air transport (62)	i62	A_TAIR	ISIC_I	Transport, storage and communications (I)	Mobility
+126	Supporting and auxiliary transport activities; activities of travel agencies (63)	i63	A_TAUX	ISIC_I	Transport, storage and communications (I)	Mobility
+127	Post and telecommunications (64)	i64	A_PTEL	ISIC_I	Transport, storage and communications (I)	Mobility
+128	Financial intermediation, except insurance and pension funding (65)	i65	A_FINT	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+129	Insurance and pension funding, except compulsory social security (66)	i66	A_FINS	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+130	Activities auxiliary to financial intermediation (67)	i67	A_FAUX	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+131	Real estate activities (70)	i70	A_REAL	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+132	Renting of machinery and equipment without operator and of personal and household goods (71)	i71	A_MARE	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+133	Computer and related activities (72)	i72	A_COMP	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+134	Research and development (73)	i73	A_RESD	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+135	Other business activities (74)	i74	A_OBUS	ISIC_J_K	Financial intermediation; real estate, renting and business activities (J+K)	Services
+136	Public administration and defence; compulsory social security (75)	i75	A_PADF	ISIC_L	Public administration and defense; compulsory social security (L)	Services
+137	Education (80)	i80	A_EDUC	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Services
+138	Health and social work (85)	i85	A_HEAL	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Services
+139	Incineration of waste: Food	i90.1.a	A_INCF	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+140	Incineration of waste: Paper	i90.1.b	A_INCP	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+141	Incineration of waste: Plastic	i90.1.c	A_INCL	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+142	Incineration of waste: Metals and Inert materials	i90.1.d	A_INCM	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+143	Incineration of waste: Textiles	i90.1.e	A_INCT	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+144	Incineration of waste: Wood	i90.1.f	A_INCW	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+145	Incineration of waste: Oil/Hazardous waste	i90.1.g	A_INCO	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+146	Biogasification of food waste, incl. land application	i90.2.a	A_BIOF	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+147	Biogasification of paper, incl. land application	i90.2.b	A_BIOP	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+148	Biogasification of sewage slugde, incl. land application	i90.2.c	A_BIOS	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+149	Composting of food waste, incl. land application	i90.3.a	A_COMF	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+150	Composting of paper and wood, incl. land application	i90.3.b	A_COMW	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+151	Waste water treatment, food	i90.4.a	A_WASF	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+152	Waste water treatment, other	i90.4.b	A_WASO	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+153	Landfill of waste: Food	i90.5.a	A_LANF	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+154	Landfill of waste: Paper	i90.5.b	A_LANP	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+155	Landfill of waste: Plastic	i90.5.c	A_LANL	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+156	Landfill of waste: Inert/metal/hazardous	i90.5.d	A_LANI	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+157	Landfill of waste: Textiles	i90.5.e	A_LANT	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+158	Landfill of waste: Wood	i90.5.f	A_LANW	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Shelter
+159	Activities of membership organisation n.e.c. (91)	i91	A_ORGA	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Services
+160	Recreational, cultural and sporting activities (92)	i92	A_RECR	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Services
+161	Other service activities (93)	i93	A_OSER	ISIC_M_N_O	Education; health and social work; other community, social and personal services (M+N+O)	Services
+162	Private households with employed persons (95)	i95	A_PRHH	ISIC_P	Private households with employed persons (P)	Shelter
+163	Extra-territorial organizations and bodies	i99	A_EXTO	ISIC_L	Public administration and defense; compulsory social security (L)	Services
diff --git a/pymrio/mrio_models/exio3_ixi/valueadded.tsv b/pymrio/mrio_models/exio3_ixi/valueadded.tsv
new file mode 100644
index 00000000..553568b4
--- /dev/null
+++ b/pymrio/mrio_models/exio3_ixi/valueadded.tsv
@@ -0,0 +1,13 @@
+ExioNumber	ExioName	ExioCode	ExioLabel
+201	Taxes less subsidies on products purchased: Total	w01	T_TLSA
+202	Taxes on products purchased	w01.a	T_TAXA
+203	Subsidies on products purchased	w01.b	T_SUBA
+204	Other net taxes on production	w02	V_ONTP
+205	Compensation of employees; wages, salaries, & employers' social contributions: Total	w03	V_WAGE
+206	Compensation of employees; wages, salaries, & employers' social contributions: Low-skilled	w03.a	V_WALS
+207	Compensation of employees; wages, salaries, & employers' social contributions: Medium-skilled	w03.b	V_WAMS
+208	Compensation of employees; wages, salaries, & employers' social contributions: High-skilled	w03.c	V_WAHS
+209	Operating surplus: Consumption of fixed capital	w04.a	V_COFC
+210	Operating surplus: Rents on land	w04.b	V_RENL
+211	Operating surplus: Royalties on resources	w04.c	V_ROYR
+212	Operating surplus: Remaining net operating surplus	w04.d	V_NOPS
diff --git a/pymrio/mrio_models/exio3_pxp/__init__.py b/pymrio/mrio_models/exio3_pxp/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/exio3_pxp/finaldemand.tsv b/pymrio/mrio_models/exio3_pxp/finaldemand.tsv
new file mode 100644
index 00000000..5bfeb49d
--- /dev/null
+++ b/pymrio/mrio_models/exio3_pxp/finaldemand.tsv
@@ -0,0 +1,8 @@
+ExioNumber	ExioName	ExioCode	ExioLabel	Type
+164	Final consumption expenditure by households	y01	F_HOUS	Expenditure
+165	Final consumption expenditure by non-profit organisations serving households (NPISH)	y02.a	F_NPSH	Expenditure
+166	Final consumption expenditure by government	y02.b	F_GOVE	Expenditure
+167	Gross fixed capital formation	y04	I_GFCF	Capital
+168	Changes in inventories	y05.a	I_CHIN	Capital
+169	Changes in valuables	y05.b	I_CHVA	Capital
+170	Exports: Total (fob)	y06	X_TOTA	Export
diff --git a/pymrio/mrio_models/exio3_pxp/sectors.tsv b/pymrio/mrio_models/exio3_pxp/sectors.tsv
new file mode 100644
index 00000000..9d63c169
--- /dev/null
+++ b/pymrio/mrio_models/exio3_pxp/sectors.tsv
@@ -0,0 +1,201 @@
+ExioNumber	ExioName	ExioCode	ExioLabel	ConsumptionCategories	Type
+1	Paddy rice	p01.a	C_PARI	Food	Commodity
+2	Wheat	p01.b	C_WHEA	Food	Commodity
+3	Cereal grains nec	p01.c	C_OCER	Food	Commodity
+4	Vegetables, fruit, nuts	p01.d	C_FVEG	Food	Commodity
+5	Oil seeds	p01.e	C_OILS	Food	Commodity
+6	Sugar cane, sugar beet	p01.f	C_SUGB	Food	Commodity
+7	Plant-based fibers	p01.g	C_FIBR	Food	Commodity
+8	Crops nec	p01.h	C_OTCR	Food	Commodity
+9	Cattle	p01.i	C_CATL	Food	Commodity
+10	Pigs	p01.j	C_PIGS	Food	Commodity
+11	Poultry	p01.k	C_PLTR	Food	Commodity
+12	Meat animals nec	p01.l	C_OMEA	Food	Commodity
+13	Animal products nec	p01.m	C_OANP	Food	Commodity
+14	Raw milk	p01.n	C_MILK	Food	Commodity
+15	Wool, silk-worm cocoons	p01.o	C_WOOL	Clothing	Commodity
+16	Manure (conventional treatment)	p01.w.1	C_MANC	Food	Waste
+17	Manure (biogas treatment)	p01.w.2	C_MANB	Food	Waste
+18	Products of forestry, logging and related services (02)	p02	C_FORE	Shelter	Commodity
+19	Fish and other fishing products; services incidental of fishing (05)	p05	C_FISH	Food	Commodity
+20	Anthracite	p10.a	C_ANTH	Shelter	Commodity
+21	Coking Coal	p10.b	C_COKC	Shelter	Commodity
+22	Other Bituminous Coal	p10.c	C_OTBC	Shelter	Commodity
+23	Sub-Bituminous Coal	p10.d	C_SUBC	Shelter	Commodity
+24	Patent Fuel	p10.e	C_PATF	Shelter	Commodity
+25	Lignite/Brown Coal	p10.f	C_LIBC	Shelter	Commodity
+26	BKB/Peat Briquettes	p10.g	C_BKBP	Shelter	Commodity
+27	Peat	p10.h	C_PEAT	Shelter	Commodity
+28	Crude petroleum and services related to crude oil extraction, excluding surveying	p11.a	C_COIL	Shelter	Commodity
+29	Natural gas and services related to natural gas extraction, excluding surveying	p11.b	C_GASE	Shelter	Commodity
+30	Natural Gas Liquids	p11.b.1	C_GASL	Shelter	Commodity
+31	Other Hydrocarbons	p11.c	C_OGPL	Shelter	Commodity
+32	Uranium and thorium ores (12)	p12	C_ORAN	Shelter	Commodity
+33	Iron ores	p13.1	C_IRON	Construction	Commodity
+34	Copper ores and concentrates	p13.20.11	C_COPO	Construction	Commodity
+35	Nickel ores and concentrates	p13.20.12	C_NIKO	Construction	Commodity
+36	Aluminium ores and concentrates	p13.20.13	C_ALUO	Construction	Commodity
+37	Precious metal ores and concentrates	p13.20.14	C_PREO	Construction	Commodity
+38	Lead, zinc and tin ores and concentrates	p13.20.15	C_LZTO	Construction	Commodity
+39	Other non-ferrous metal ores and concentrates	p13.20.16	C_ONFO	Construction	Commodity
+40	Stone	p14.1	C_STON	Construction	Commodity
+41	Sand and clay	p14.2	C_SDCL	Construction	Commodity
+42	Chemical and fertilizer minerals, salt and other mining and quarrying products n.e.c.	p14.3	C_CHMF	Food	Commodity
+43	Products of meat cattle	p15.a	C_PCAT	Food	Commodity
+44	Products of meat pigs	p15.b	C_PPIG	Food	Commodity
+45	Products of meat poultry	p15.c	C_PPLT	Food	Commodity
+46	Meat products nec	p15.d	C_POME	Food	Commodity
+47	products of Vegetable oils and fats	p15.e	C_VOIL	Food	Commodity
+48	Dairy products	p15.f	C_DAIR	Food	Commodity
+49	Processed rice	p15.g	C_RICE	Food	Commodity
+50	Sugar	p15.h	C_SUGR	Food	Commodity
+51	Food products nec	p15.i	C_OFOD	Food	Commodity
+52	Beverages	p15.j	C_BEVR	Food	Commodity
+53	Fish products	p15.k	C_FSHP	Food	Commodity
+54	Tobacco products (16)	p16	C_TOBC	Food	Commodity
+55	Textiles (17)	p17	C_TEXT	Clothing	Commodity
+56	Wearing apparel; furs (18)	p18	C_GARM	Clothing	Commodity
+57	Leather and leather products (19)	p19	C_LETH	Clothing	Commodity
+58	Wood and products of wood and cork (except furniture); articles of straw and plaiting materials (20)	p20	C_WOOD	Shelter	Commodity
+59	Wood material for treatment, Re-processing of secondary wood material into new wood material	p20.w	C_WOOW	Shelter	Waste
+60	Pulp	p21.1	C_PULP	Manufactured_products	Commodity
+61	Secondary paper for treatment, Re-processing of secondary paper into new pulp	p21.w.1	C_PAPR	Manufactured_products	Waste
+62	Paper and paper products	p21.2	C_PAPE	Manufactured_products	Commodity
+63	Printed matter and recorded media (22)	p22	C_MDIA	Manufactured_products	Commodity
+64	Coke Oven Coke	p23.1.a	C_COKE	Shelter	Commodity
+65	Gas Coke	p23.1.b	C_GCOK	Shelter	Commodity
+66	Coal Tar	p23.1.c	C_COTA	Shelter	Commodity
+67	Motor Gasoline	p23.20.a	C_MGSL	Mobility	Commodity
+68	Aviation Gasoline	p23.20.b	C_AGSL	Mobility	Commodity
+69	Gasoline Type Jet Fuel	p23.20.c	C_GJET	Mobility	Commodity
+70	Kerosene Type Jet Fuel	p23.20.d	C_KJET	Mobility	Commodity
+71	Kerosene	p23.20.e	C_KERO	Mobility	Commodity
+72	Gas/Diesel Oil	p23.20.f	C_DOIL	Mobility	Commodity
+73	Heavy Fuel Oil	p23.20.g	C_FOIL	Mobility	Commodity
+74	Refinery Gas	p23.20.h	C_RGAS	Shelter	Commodity
+75	Liquefied Petroleum Gases (LPG)	p23.20.i	C_LPGA	Shelter	Commodity
+76	Refinery Feedstocks	p23.20.j	C_REFF	Shelter	Commodity
+77	Ethane	p23.20.k	C_ETHA	Shelter	Commodity
+78	Naphtha	p23.20.l	C_NAPT	Shelter	Commodity
+79	White Spirit & SBP	p23.20.m	C_WHSP	Shelter	Commodity
+80	Lubricants	p23.20.n	C_LUBR	Shelter	Commodity
+81	Bitumen	p23.20.o	C_BITU	Shelter	Commodity
+82	Paraffin Waxes	p23.20.p	C_PARW	Shelter	Commodity
+83	Petroleum Coke	p23.20.q	C_PETC	Shelter	Commodity
+84	Non-specified Petroleum Products	p23.20.r	C_NSPP	Shelter	Commodity
+85	Nuclear fuel	p23.3	C_NUCF	Shelter	Commodity
+86	Plastics, basic	p24.a	C_PLAS	Manufactured_products	Commodity
+87	Secondary plastic for treatment, Re-processing of secondary plastic into new plastic	p24.a.w	C_PLAW	Manufactured_products	Waste
+88	N-fertiliser	p24.b	C_NFER	Food	Commodity
+89	P- and other fertiliser	p24.c	C_PFER	Food	Commodity
+90	Chemicals nec	p24.d	C_CHEM	Manufactured_products	Commodity
+91	Charcoal	p24.e	C_CHAR	Shelter	Commodity
+92	Additives/Blending Components	p24.f	C_ADDC	Mobility	Commodity
+93	Biogasoline	p24.g	C_BIOG	Mobility	Commodity
+94	Biodiesels	p24.h	C_BIOD	Mobility	Commodity
+95	Other Liquid Biofuels	p24.i	C_OBIO	Mobility	Commodity
+96	Rubber and plastic products (25)	p25	C_RUBP	Manufactured_products	Commodity
+97	Glass and glass products	p26.a	C_GLAS	Construction	Commodity
+98	Secondary glass for treatment, Re-processing of secondary glass into new glass	p26.a.w	C_GLAW	Construction	Waste
+99	Ceramic goods	p26.b	C_CRMC	Construction	Commodity
+100	Bricks, tiles and construction products, in baked clay	p26.c	C_BRIK	Construction	Commodity
+101	Cement, lime and plaster	p26.d	C_CMNT	Construction	Commodity
+102	Ash for treatment, Re-processing of ash into clinker	p26.d.w	C_ASHW	Construction	Waste
+103	Other non-metallic mineral products	p26.e	C_ONMM	Construction	Commodity
+104	Basic iron and steel and of ferro-alloys and first products thereof	p27.a	C_STEL	Manufactured_products	Commodity
+105	Secondary steel for treatment, Re-processing of secondary steel into new steel	p27.a.w	C_STEW	Manufactured_products	Waste
+106	Precious metals	p27.41	C_PREM	Manufactured_products	Commodity
+107	Secondary preciuos metals for treatment, Re-processing of secondary preciuos metals into new preciuos metals	p27.41.w	C_PREW	Manufactured_products	Waste
+108	Aluminium and aluminium products	p27.42	C_ALUM	Manufactured_products	Commodity
+109	Secondary aluminium for treatment, Re-processing of secondary aluminium into new aluminium	p27.42.w	C_ALUW	Manufactured_products	Waste
+110	Lead, zinc and tin and products thereof	p27.43	C_LZTP	Manufactured_products	Commodity
+111	Secondary lead for treatment, Re-processing of secondary lead into new lead	p27.43.w	C_LZTW	Manufactured_products	Waste
+112	Copper products	p27.44	C_COPP	Manufactured_products	Commodity
+113	Secondary copper for treatment, Re-processing of secondary copper into new copper	p27.44.w	C_COPW	Manufactured_products	Waste
+114	Other non-ferrous metal products	p27.45	C_ONFM	Manufactured_products	Commodity
+115	Secondary other non-ferrous metals for treatment, Re-processing of secondary other non-ferrous metals into new other non-ferrous metals	p27.45.w	C_ONFW	Manufactured_products	Waste
+116	Foundry work services	p27.5	C_METC	Manufactured_products	Commodity
+117	Fabricated metal products, except machinery and equipment (28)	p28	C_FABM	Manufactured_products	Commodity
+118	Machinery and equipment n.e.c. (29)	p29	C_MACH	Manufactured_products	Commodity
+119	Office machinery and computers (30)	p30	C_OFMA	Manufactured_products	Commodity
+120	Electrical machinery and apparatus n.e.c. (31)	p31	C_ELMA	Manufactured_products	Commodity
+121	Radio, television and communication equipment and apparatus (32)	p32	C_RATV	Manufactured_products	Commodity
+122	Medical, precision and optical instruments, watches and clocks (33)	p33	C_MEIN	Manufactured_products	Commodity
+123	Motor vehicles, trailers and semi-trailers (34)	p34	C_MOTO	Manufactured_products	Commodity
+124	Other transport equipment (35)	p35	C_OTRE	Manufactured_products	Commodity
+125	Furniture; other manufactured goods n.e.c. (36)	p36	C_FURN	Manufactured_products	Commodity
+126	Secondary raw materials	p37	C_RYMS	Manufactured_products	Commodity
+127	Bottles for treatment, Recycling of bottles by direct reuse	p37.w.1	C_BOTW	Manufactured_products	Waste
+128	Electricity by coal	p40.11.a	C_POWC	Shelter	Commodity
+129	Electricity by gas	p40.11.b	C_POWG	Shelter	Commodity
+130	Electricity by nuclear	p40.11.c	C_POWN	Shelter	Commodity
+131	Electricity by hydro	p40.11.d	C_POWH	Shelter	Commodity
+132	Electricity by wind	p40.11.e	C_POWW	Shelter	Commodity
+133	Electricity by petroleum and other oil derivatives	p40.11.f	C_POWP	Shelter	Commodity
+134	Electricity by biomass and waste	p40.11.g	C_POWB	Shelter	Commodity
+135	Electricity by solar photovoltaic	p40.11.h	C_POWS	Shelter	Commodity
+136	Electricity by solar thermal	p40.11.i	C_POWE	Shelter	Commodity
+137	Electricity by tide, wave, ocean	p40.11.j	C_POWO	Shelter	Commodity
+138	Electricity by Geothermal	p40.11.k	C_POWM	Shelter	Commodity
+139	Electricity nec	p40.11.l	C_POWZ	Shelter	Commodity
+140	Transmission services of electricity	p40.12	C_POWT	Shelter	Commodity
+141	Distribution and trade services of electricity	p40.13	C_POWD	Shelter	Commodity
+142	Coke oven gas	p40.2.a	C_COOG	Shelter	Commodity
+143	Blast Furnace Gas	p40.2.b	C_MBFG	Shelter	Commodity
+144	Oxygen Steel Furnace Gas	p40.2.c	C_MOSG	Shelter	Commodity
+145	Gas Works Gas	p40.2.d	C_MGWG	Shelter	Commodity
+146	Biogas	p40.2.e	C_MBIO	Shelter	Commodity
+147	Distribution services of gaseous fuels through mains	p40.2.1	C_GASD	Shelter	TradeMargin
+148	Steam and hot water supply services	p40.3	C_HWAT	Shelter	Commodity
+149	Collected and purified water, distribution services of water (41)	p41	C_WATR	Shelter	Commodity
+150	Construction work (45)	p45	C_CONS	Construction	Commodity
+151	Secondary construction material for treatment, Re-processing of secondary construction material into aggregates	p45.w	C_CONW	Construction	TransportMargin
+152	Sale, maintenance, repair of motor vehicles, motor vehicles parts, motorcycles, motor cycles parts and accessoiries	p50.a	C_TDMO	Trade	TradeMargin
+153	Retail trade services of motor fuel	p50.b	C_TDFU	Trade	TradeMargin
+154	Wholesale trade and commission trade services, except of motor vehicles and motorcycles (51)	p51	C_TDWH	Trade	TradeMargin
+155	Retail  trade services, except of motor vehicles and motorcycles; repair services of personal and household goods (52)	p52	C_TDRT	Trade	TradeMargin
+156	Hotel and restaurant services (55)	p55	C_HORE	Services	Commodity
+157	Railway transportation services	p60.1	C_TRAI	Mobility	TransportMargin
+158	Other land transportation services	p60.2	C_TLND	Mobility	TransportMargin
+159	Transportation services via pipelines	p60.3	C_TPIP	Mobility	TransportMargin
+160	Sea and coastal water transportation services	p61.1	C_TWAS	Mobility	TransportMargin
+161	Inland water transportation services	p61.2	C_TWAI	Mobility	TransportMargin
+162	Air transport services (62)	p62	C_TAIR	Mobility	TransportMargin
+163	Supporting and auxiliary transport services; travel agency services (63)	p63	C_TAUX	Services	TransportMargin
+164	Post and telecommunication services (64)	p64	C_PTEL	Services	Commodity
+165	Financial intermediation services, except insurance and pension funding services (65)	p65	C_FINT	Services	Commodity
+166	Insurance and pension funding services, except compulsory social security services (66)	p66	C_FINS	Services	Commodity
+167	Services auxiliary to financial intermediation (67)	p67	C_FAUX	Services	Commodity
+168	Real estate services (70)	p70	C_REAL	Services	Commodity
+169	Renting services of machinery and equipment without operator and of personal and household goods (71)	p71	C_MARE	Services	Commodity
+170	Computer and related services (72)	p72	C_COMP	Services	Commodity
+171	Research and development services (73)	p73	C_RESD	Services	Commodity
+172	Other business services (74)	p74	C_OBUS	Services	Commodity
+173	Public administration and defence services; compulsory social security services (75)	p75	C_PADF	Services	Commodity
+174	Education services (80)	p80	C_EDUC	Services	Commodity
+175	Health and social work services (85)	p85	C_HEAL	Services	Commodity
+176	Food waste for treatment: incineration	p90.1.a	C_INCF	Shelter	Commodity
+177	Paper waste for treatment: incineration	p90.1.b	C_INCP	Shelter	Commodity
+178	Plastic waste for treatment: incineration	p90.1.c	C_INCL	Shelter	Commodity
+179	Intert/metal waste for treatment: incineration	p90.1.d	C_INCM	Shelter	Commodity
+180	Textiles waste for treatment: incineration	p90.1.e	C_INCT	Shelter	Commodity
+181	Wood waste for treatment: incineration	p90.1.f	C_INCW	Shelter	Commodity
+182	Oil/hazardous waste for treatment: incineration	p90.1.g	C_INCO	Shelter	Commodity
+183	Food waste for treatment: biogasification and land application	p90.2.a	C_BIOF	Shelter	Commodity
+184	Paper waste for treatment: biogasification and land application	p90.2.b	C_BIOP	Shelter	Commodity
+185	Sewage sludge for treatment: biogasification and land application	p90.2.c	C_BIOS	Shelter	Commodity
+186	Food waste for treatment: composting and land application	p90.3.a	C_COMF	Shelter	Commodity
+187	Paper and wood waste for treatment: composting and land application	p90.3.b	C_COMW	Shelter	Commodity
+188	Food waste for treatment: waste water treatment	p90.4.a	C_WASF	Shelter	Commodity
+189	Other waste for treatment: waste water treatment	p90.4.b	C_WASO	Shelter	Commodity
+190	Food waste for treatment: landfill	p90.5.a	C_LANF	Shelter	Commodity
+191	Paper for treatment: landfill	p90.5.b	C_LANP	Shelter	Commodity
+192	Plastic waste for treatment: landfill	p90.5.c	C_LANL	Shelter	Commodity
+193	Inert/metal/hazardous waste for treatment: landfill	p90.5.d	C_LANI	Shelter	Commodity
+194	Textiles waste for treatment: landfill	p90.5.e	C_LANT	Shelter	Commodity
+195	Wood waste for treatment: landfill	p90.5.f	C_LANW	Shelter	Commodity
+196	Membership organisation services n.e.c. (91)	p91	C_ORGA	Services	Commodity
+197	Recreational, cultural and sporting services (92)	p92	C_RECR	Services	Commodity
+198	Other services (93)	p93	C_OSER	Services	Commodity
+199	Private households with employed persons (95)	p95	C_PRHH	Shelter	Commodity
+200	Extra-territorial organizations and bodies	p99	C_EXTO	Services	Commodity
diff --git a/pymrio/mrio_models/exio3_pxp/valueadded.tsv b/pymrio/mrio_models/exio3_pxp/valueadded.tsv
new file mode 100644
index 00000000..553568b4
--- /dev/null
+++ b/pymrio/mrio_models/exio3_pxp/valueadded.tsv
@@ -0,0 +1,13 @@
+ExioNumber	ExioName	ExioCode	ExioLabel
+201	Taxes less subsidies on products purchased: Total	w01	T_TLSA
+202	Taxes on products purchased	w01.a	T_TAXA
+203	Subsidies on products purchased	w01.b	T_SUBA
+204	Other net taxes on production	w02	V_ONTP
+205	Compensation of employees; wages, salaries, & employers' social contributions: Total	w03	V_WAGE
+206	Compensation of employees; wages, salaries, & employers' social contributions: Low-skilled	w03.a	V_WALS
+207	Compensation of employees; wages, salaries, & employers' social contributions: Medium-skilled	w03.b	V_WAMS
+208	Compensation of employees; wages, salaries, & employers' social contributions: High-skilled	w03.c	V_WAHS
+209	Operating surplus: Consumption of fixed capital	w04.a	V_COFC
+210	Operating surplus: Rents on land	w04.b	V_RENL
+211	Operating surplus: Royalties on resources	w04.c	V_ROYR
+212	Operating surplus: Remaining net operating surplus	w04.d	V_NOPS
diff --git a/pymrio/tools/ioclass.py b/pymrio/tools/ioclass.py
new file mode 100644
index 00000000..d45b26b7
--- /dev/null
+++ b/pymrio/tools/ioclass.py
@@ -0,0 +1,107 @@
+"""
+Classification helpers for various standard MRIOs
+
+KST 20211123
+"""
+
+from dataclasses import dataclass, field
+from pathlib import Path
+from typing import Optional, Union
+
+import pandas as pd
+
+from pymrio.core.constants import PYMRIO_PATH
+
+
+def get_classification(mrio_name: Optional[str] = None):
+    """Get predefined classifications included in pymrio
+
+    Parameters
+    ----------
+
+    mrio_name: str
+        MRIO for which to get the classification.
+        Pass None (default) for a list of available classifications.
+
+    Returns:
+        pymrio.ClassificationData
+    """
+
+    if not mrio_name:
+        return PYMRIO_PATH.keys()
+
+    elif mrio_name not in PYMRIO_PATH.keys():
+        raise ValueError(
+            f"No classification available for {mrio_name}. Run the function without parameter to get available classifications."
+        )
+
+    return ClassificationData(
+        mrio_classification_folder=PYMRIO_PATH[mrio_name],
+        sectors_file_name="sectors.tsv",
+        sectors_sep="\t",
+        finaldemand_file_name="finaldemand.tsv",
+        finaldemand_sep="\t",
+    )
+
+
+@dataclass
+class ClassificationData(object):
+    """Classification data for MRIOs
+
+    Typically includes .sectors and .finaldemand
+
+    """
+
+    mrio_classification_folder: Union[str, Path]
+
+    sectors_file_name: str
+    sectors_sep: str
+
+    finaldemand_file_name: str
+    finaldemand_sep: str
+
+    sectors: pd.DataFrame = field(init=False)
+    finaldemand: pd.DataFrame = field(init=False)
+
+    def __post_init__(self):
+        self.sectors = pd.read_csv(
+            Path(self.mrio_classification_folder) / self.sectors_file_name,
+            sep=self.sectors_sep,
+        )
+        self.finaldemand = pd.read_csv(
+            Path(self.mrio_classification_folder) / self.finaldemand_file_name,
+            sep=self.finaldemand_sep,
+        )
+
+    def get_sector_dict(
+        self, orig: Union[str, list, pd.Series], new: Union[str, pd.Series]
+    ):
+        """Returns sector rename dict based
+
+        Parameters
+        ----------
+        orig: str or pd.Series
+            Original classification, obtained by calling 'get_sectors()' on
+            the given mrio or by using an instance of the class (which
+            provides tab completion in an interactive environment) or by
+            giving the column header name used in the classification file
+
+        new: str or pd.Series
+            New classification, name as given in the classification file. Will
+            be extracted from the Series name if this is given (to allow for
+            tab completion).
+
+        Returns
+        --------
+            dict
+        """
+        if type(orig) is not str:
+            for cname, cvalue in self.sectors.iteritems():
+                if cvalue.isin(orig).all():
+                    orig = cname
+                    break
+            else:
+                raise ValueError("No fully matching sector classification found")
+
+        new = new if type(new) is str else new.name
+        return self.sectors.loc[:, [orig, new]].set_index(orig).squeeze().to_dict()
diff --git a/pymrio/tools/ioparser.py b/pymrio/tools/ioparser.py
index d33067ef..6dadcfd1 100644
--- a/pymrio/tools/ioparser.py
+++ b/pymrio/tools/ioparser.py
@@ -667,7 +667,7 @@ def parse_exiobase2(path, charact=True, popvector="exio2"):
     if popvector == "exio2":
         logging.debug("Read population vector")
         io.population = pd.read_csv(
-            os.path.join(PYMRIO_PATH["exio20"], "misc", "population.txt"),
+            os.path.join(PYMRIO_PATH["exio2"], "misc", "population.txt"),
             index_col=0,
             sep="\t",
         ).astype(float)
diff --git a/pymrio/tools/ioutil.py b/pymrio/tools/ioutil.py
index c85137c4..d42c1acc 100644
--- a/pymrio/tools/ioutil.py
+++ b/pymrio/tools/ioutil.py
@@ -488,6 +488,7 @@ def build_agg_vec(agg_vec, **source):
     """
 
     # build a dict with aggregation vectors in source and folder
+    # TODO: the logic here should be moved to constants
     if type(agg_vec) is str:
         agg_vec = [agg_vec]
     agg_dict = dict()
diff --git a/pymrio/version.py b/pymrio/version.py
index 3dd3d2d5..eecb3c70 100644
--- a/pymrio/version.py
+++ b/pymrio/version.py
@@ -1,1 +1,1 @@
-__version__ = "0.4.6"
+__version__ = "0.4.7dev"
diff --git a/setup.py b/setup.py
index 9399ca4d..34aa12f5 100644
--- a/setup.py
+++ b/setup.py
@@ -17,7 +17,7 @@
     include_package_data=True,
     python_requires=">=3.7.0",
     package_data={
-        "": ["*.txt", "*.dat", "*.doc", "*.rst", "*.json"],
+        "": ["*.txt", "*.dat", "*.doc", "*.rst", "*.json", "*.tsv"],
     },
     # This some needs to be here and in requirments.txt (for conda)
     install_requires=[


Test patch:
diff --git a/pymrio/mrio_models/test_mrio/finaldemand.tsv b/pymrio/mrio_models/test_mrio/finaldemand.tsv
new file mode 100644
index 00000000..5f39249c
--- /dev/null
+++ b/pymrio/mrio_models/test_mrio/finaldemand.tsv
@@ -0,0 +1,8 @@
+TestMrioNumber	TestMrioName	Type
+1	Final consumption expenditure by households	expenditure
+2	Final consumption expenditure by non-profit organisations serving households (NPISH)	expenditure
+3	Final consumption expenditure by government	expenditure
+4	Gross fixed capital formation	capital 
+5	Changes in inventories	capital
+6	Changes in valuables	capital
+7	Export	export
diff --git a/pymrio/mrio_models/test_mrio/FDemissions.txt b/pymrio/mrio_models/test_mrio/mrio_data/FDemissions.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/FDemissions.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/FDemissions.txt
diff --git a/pymrio/mrio_models/test_mrio/mrio_data/__init__.py b/pymrio/mrio_models/test_mrio/mrio_data/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pymrio/mrio_models/test_mrio/emissions.txt b/pymrio/mrio_models/test_mrio/mrio_data/emissions.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/emissions.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/emissions.txt
diff --git a/pymrio/mrio_models/test_mrio/factor_input.txt b/pymrio/mrio_models/test_mrio/mrio_data/factor_input.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/factor_input.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/factor_input.txt
diff --git a/pymrio/mrio_models/test_mrio/finald_demand_Y.txt b/pymrio/mrio_models/test_mrio/mrio_data/finald_demand_Y.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/finald_demand_Y.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/finald_demand_Y.txt
diff --git a/pymrio/mrio_models/test_mrio/metadata.json b/pymrio/mrio_models/test_mrio/mrio_data/metadata.json
similarity index 100%
rename from pymrio/mrio_models/test_mrio/metadata.json
rename to pymrio/mrio_models/test_mrio/mrio_data/metadata.json
diff --git a/pymrio/mrio_models/test_mrio/population.txt b/pymrio/mrio_models/test_mrio/mrio_data/population.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/population.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/population.txt
diff --git a/pymrio/mrio_models/test_mrio/readme.txt b/pymrio/mrio_models/test_mrio/mrio_data/readme.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/readme.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/readme.txt
diff --git a/pymrio/mrio_models/test_mrio/trade_flows_Z.txt b/pymrio/mrio_models/test_mrio/mrio_data/trade_flows_Z.txt
similarity index 100%
rename from pymrio/mrio_models/test_mrio/trade_flows_Z.txt
rename to pymrio/mrio_models/test_mrio/mrio_data/trade_flows_Z.txt
diff --git a/pymrio/mrio_models/test_mrio/sectors.tsv b/pymrio/mrio_models/test_mrio/sectors.tsv
new file mode 100644
index 00000000..81a402a9
--- /dev/null
+++ b/pymrio/mrio_models/test_mrio/sectors.tsv
@@ -0,0 +1,9 @@
+TestMrioNumber	TestMrioName	TestMrioCode	Type
+1	food	sec1	eat
+2	mining	sec2	dig
+3	manufactoring	sec3	build
+4	electricity	sec4	util
+5	construction	sec5	build
+6	trade	sec6	marg
+7	transport	sec7	marg
+8	other	sec8	misc
diff --git a/tests/test_aggregation.py b/tests/test_aggregation.py
index cf6dc05f..c0cafd41 100644
--- a/tests/test_aggregation.py
+++ b/tests/test_aggregation.py
@@ -10,6 +10,7 @@
 
 import numpy as np
 import pandas as pd
+import pandas.testing as pdt
 import pytest
 
 TESTPATH = os.path.dirname(os.path.abspath(__file__))
@@ -63,6 +64,7 @@ def test_aggreation_regions():
     )
 
     assert ["a", "b"] == io_agg_with_names.get_regions().tolist()
+    assert io_agg_with_names.unit.index.equals(io_agg_with_names.Z.index)
 
     io_vec1 = io.aggregate(region_agg=reg_agg_vec1, inplace=False)
     io_vec2 = io.aggregate(region_agg=reg_agg_vec2, inplace=False)
@@ -76,6 +78,94 @@ def test_aggreation_regions():
 
     assert ["a", "b"] == io_df.get_regions().tolist()
 
+    # Testing the aggregation of duplicate regions/sectors
+
+    reg_rename_dict = reg_agg_df.set_index("original").squeeze().to_dict()
+    io.rename_regions(reg_rename_dict)
+    io_agg = io.aggregate_duplicates(inplace=False)
+    io.aggregate_duplicates(inplace=True)
+
+    pdt.assert_frame_equal(io.Z, io_agg.Z)
+    pdt.assert_frame_equal(io.Z, io_agg_with_names.Z)
+    pdt.assert_frame_equal(io.Y, io_agg.Y)
+    pdt.assert_frame_equal(io.Y, io_agg_with_names.Y)
+    pdt.assert_frame_equal(io.x, io_agg.x)
+    pdt.assert_frame_equal(io.x, io_agg_with_names.x)
+
+    pdt.assert_frame_equal(io.emissions.F, io_agg.emissions.F)
+    pdt.assert_frame_equal(io.emissions.F, io_agg_with_names.emissions.F)
+    pdt.assert_frame_equal(io.emissions.D_cba, io_agg.emissions.D_cba)
+    pdt.assert_frame_equal(io.emissions.D_cba, io_agg_with_names.emissions.D_cba)
+    pdt.assert_frame_equal(io.emissions.F_Y, io_agg.emissions.F_Y)
+    pdt.assert_frame_equal(io.emissions.F_Y, io_agg_with_names.emissions.F_Y)
+
+    pdt.assert_frame_equal(io.factor_inputs.F, io_agg.factor_inputs.F)
+    pdt.assert_frame_equal(io.factor_inputs.F, io_agg_with_names.factor_inputs.F)
+    pdt.assert_frame_equal(io.factor_inputs.D_cba, io_agg.factor_inputs.D_cba)
+    pdt.assert_frame_equal(
+        io.factor_inputs.D_cba, io_agg_with_names.factor_inputs.D_cba
+    )
+
+    assert io.unit.index.equals(io.Z.index)
+    assert io_agg.unit.index.equals(io_agg.Z.index)
+
+
+def test_aggreation_sectors():
+    """Test different possibilities to aggregate sectors"""
+
+    sec_agg_df = pd.DataFrame(
+        data=[
+            ("food", "eat"),
+            ("mining", "dig"),
+            ("manufactoring", "build"),
+            ("electricity", "util"),
+            ("construction", "build"),
+            ("trade", "marg"),
+            ("transport", "marg"),
+            ("other", "misc"),
+        ],
+        columns=["original", "aggregated"],
+    )
+    io = pymrio.load_test()
+    io_agg = io.aggregate(sector_agg=sec_agg_df, inplace=False)
+
+    test_sectors = ["manufactoring", "construction"]
+    assert (
+        io.Z.loc["reg2", "reg2"].loc[test_sectors, test_sectors].sum().sum()
+        == io_agg.Z.loc["reg2", "reg2"].loc["build", "build"]
+    )
+    assert (
+        io.Y.loc["reg2", "reg2"].loc[test_sectors, :].sum().sum()
+        == io_agg.Y.loc["reg2", "reg2"].loc["build", :].sum().sum()
+    )
+
+    test_rename = [("reg3", "other"), ("reg3", "misc")]
+    assert (
+        io.Z.loc[test_rename[0], test_rename[0]]
+        == io_agg.Z.loc[test_rename[1], test_rename[1]]
+    )
+
+    sec_rename_dict = sec_agg_df.set_index("original").squeeze().to_dict()
+    io.rename_regions(sec_rename_dict)
+    io.aggregate_duplicates(inplace=True)
+
+    io.calc_all()
+    io_agg.calc_all()
+
+    pdt.assert_frame_equal(io.Z, io_agg.Z)
+    pdt.assert_frame_equal(io.Y, io_agg.Y)
+    pdt.assert_frame_equal(io.x, io_agg.x)
+
+    pdt.assert_frame_equal(io.emissions.F, io_agg.emissions.F)
+    pdt.assert_frame_equal(io.emissions.D_cba, io_agg.emissions.D_cba)
+    pdt.assert_frame_equal(io.emissions.F_Y, io_agg.emissions.F_Y)
+
+    pdt.assert_frame_equal(io.factor_inputs.F, io_agg.factor_inputs.F)
+    pdt.assert_frame_equal(io.factor_inputs.D_cba, io_agg.factor_inputs.D_cba)
+
+    assert io.unit.index.equals(io.Z.index)
+    assert io_agg.unit.index.equals(io_agg.Z.index)
+
 
 def test_numerical_aggreation_sectors():
     """Testing aggregation of sectors with a numeric array"""
diff --git a/tests/test_core.py b/tests/test_core.py
index 7592b473..0a1626d1 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -10,12 +10,12 @@
 import pandas.testing as pdt
 import pytest
 
-import pymrio  # noqa
-from pymrio.core.constants import PYMRIO_PATH  # noqa
-
 TESTPATH = os.path.dirname(os.path.abspath(__file__))
 sys.path.append(os.path.join(TESTPATH, ".."))
 
+import pymrio  # noqa
+from pymrio.core.constants import PYMRIO_PATH  # noqa
+
 
 @pytest.fixture()
 def fix_testmrio():
@@ -67,7 +67,6 @@ def test_copy(fix_testmrio):
 
 
 def test_get_gross_trade(fix_testmrio):
-
     tt = fix_testmrio.testmrio
     gross_trade = tt.get_gross_trade()
     flows = gross_trade.bilat_flows
@@ -189,7 +188,7 @@ def test_rename_regions(fix_testmrio):
     assert fix_testmrio.testmrio.get_regions()[2] == new_reg_list[2]
 
 
-def test_rename_sectors(fix_testmrio):
+def test_rename_random_sectors(fix_testmrio):
     new_sec_name = "yummy"
     new_sec_list = ["s1", "s2", "s3", "s4", "s5", "s6"]
     fix_testmrio.testmrio.rename_sectors({"food": new_sec_name})
@@ -199,6 +198,26 @@ def test_rename_sectors(fix_testmrio):
     assert fix_testmrio.testmrio.get_sectors()[4] == new_sec_list[4]
 
 
+def test_rename_sector_with_io_info(fix_testmrio):
+    with pytest.raises(ValueError):
+        _ = pymrio.get_classification("foo")
+
+    classdata = pymrio.get_classification("test")
+    corr_dict = classdata.get_sector_dict(orig="TestMrioName", new="TestMrioCode")
+    corr_dict2 = classdata.get_sector_dict(
+        orig=fix_testmrio.testmrio.get_sectors(), new="TestMrioCode"
+    )
+
+    assert corr_dict == corr_dict2
+
+    fix_testmrio.testmrio.rename_sectors(corr_dict)
+
+    assert (
+        fix_testmrio.testmrio.get_sectors()[3]
+        == classdata.sectors.iloc[3, :].loc["TestMrioCode"]
+    )
+
+
 def test_rename_Ycat(fix_testmrio):
     new_cat_name = "HouseCons"
     new_cat_list = ["y1", "y2", "y3", "y4", "y5", "y6", "y7"]