diff --git a/preproc/uchile_inema_preproc.py b/preproc/uchile_inema_preproc.py
new file mode 100755
index 0000000000000000000000000000000000000000..a57068bb2adc52795096997a82e736d86ecc6791
--- /dev/null
+++ b/preproc/uchile_inema_preproc.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+
+# Copyright 2018 Earth Sciences Department, BSC-CNS
+#
+# This file is part of HERMESv3_GR.
+#
+# HERMESv3_GR is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# HERMESv3_GR is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with HERMESv3_GR. If not, see .
+
+
+import os
+import timeit
+from netCDF4 import Dataset
+
+# ============== README ======================
+"""
+downloading website: ¿¿¿???
+reference: ¿¿¿???
+Besides citing HERMESv3_GR, users must also acknowledge the use of the corresponding emission inventories in their works
+"""
+
+# ============== CONFIGURATION PARAMETERS ======================
+INPUT_PATH = '/esarchive/recon/uchile/inema_v1/original_files///inema___0.01x0.01_.nc'
+OUTPUT_PATH = '/esarchive/recon/uchile/inema_v1/'
+SECTOR_LIST = {'Transport': None,
+ 'Energy': None,
+ 'Industry': None,
+ 'Mining': None,
+ 'Residential': ['Residential', 'Rural', 'Urban']}
+POLLUTANT_INFO = {'bc': 'BC', 'c6h6': 'C6H6', 'ch4': 'CH4', 'co2': 'CO2', 'co': 'CO', 'hg': 'Hg', 'nh3': 'NH3',
+ 'nmvoc': 'NMVOC', 'no': 'NO', 'no2': 'NO2', 'nox_no2': 'NOx', 'pb': 'Pb', 'pcddf': 'PCDDF',
+ 'pm10': 'PM10', 'pm25': 'PM25', 'pm': 'PM', 'so2': 'SO2', 'tol': 'Toluene', 'voc': 'VOC'}
+
+YEAR_LIST = [2016, 2017]
+# ==============================================================
+
+
+def do_transformation():
+ from hermesv3_gr.tools.netcdf_tools import write_netcdf
+ from hermesv3_gr.tools.coordinates_tools import create_bounds
+ import calendar
+ import numpy as np
+ from datetime import datetime
+
+ for sector in SECTOR_LIST.keys():
+ if SECTOR_LIST[sector] is None:
+ subsector_list = [sector]
+ else:
+ subsector_list = SECTOR_LIST[sector]
+ for subsector in subsector_list:
+ for year in YEAR_LIST:
+ for pollutant in POLLUTANT_INFO.keys():
+ out_file_name = os.path.join(OUTPUT_PATH, 'yearly_mean',
+ '{0}_{1}'.format(pollutant, subsector),
+ "{0}_{1}.nc".format(pollutant, year))
+ file_name = INPUT_PATH.replace('', str(year)).replace('', sector).replace(
+ '', POLLUTANT_INFO[pollutant]).replace('', subsector)
+ try:
+ netcdf = Dataset(file_name, mode='r')
+ lat_nc = netcdf.variables['lat'][:]
+ lon_nc = netcdf.variables['lon'][:]
+ lat_inc = round(lat_nc[1] - lat_nc[0], 5)
+ lon_inc = round(lon_nc[1] - lon_nc[0], 5)
+
+ lats = np.linspace(lat_nc[0], lat_nc[0] + (lat_inc * (len(lat_nc) - 1)), len(lat_nc),
+ dtype=np.float)
+ lons = np.linspace(lon_nc[0], lon_nc[0] + (lon_inc * (len(lon_nc) - 1)), len(lon_nc),
+ dtype=np.float)
+ if lons[-1] < lons[0]:
+ flip = True
+ lons = np.flip(lons)
+ else:
+ flip = False
+
+ del lat_nc, lon_nc
+ blats = create_bounds(lats)
+ blons = create_bounds(lons)
+
+ var = netcdf.variables[POLLUTANT_INFO[pollutant]][:]
+ var = var.data
+ var[var == netcdf.variables[POLLUTANT_INFO[pollutant]].getncattr('_FillValue')] = 0
+ if flip:
+ var = np.flip(var, axis=1)
+
+ if calendar.isleap(year):
+ days = 366
+ else:
+ days = 365
+
+ # from ktonne/km2 year to kg/m2.s
+ var = var * (1000000 / (days * 24 * 60 * 60 * 1000000))
+
+ data = [{'name': pollutant, 'units': 'kg.m-2.s-1', 'data': var.reshape((1,) + var.shape)}]
+
+ if not os.path.exists(os.path.dirname(out_file_name)):
+ os.makedirs(os.path.dirname(out_file_name))
+ print(out_file_name)
+ write_netcdf(out_file_name, lats, lons, data, date=datetime(year=year, month=1, day=1),
+ boundary_latitudes=blats, boundary_longitudes=blons, cell_area=cell_area,
+ regular_latlon=True)
+ except FileNotFoundError:
+ print("Variable {0} not found in {1}: {2}".format(pollutant, subsector, file_name))
+
+
+if __name__ == '__main__':
+ starting_time = timeit.default_timer()
+
+ do_transformation()
+
+ print('Time(s):', timeit.default_timer() - starting_time)