Source code for pypago.mat

# -*- coding: utf-8 -*-

"""
Module that handles function to convert :file:`.mat` files into \
:file:`.pygo` files, and conversely.
"""

import scipy.io
import pypago.pyio
import pypago.sections
import pypago.grid

[docs]def grid_topygo(filename, modelname, nlon): """ Converts a :file:`.mat` containing grid informations into a :file:`.pygo` file :param str filename: name of the :file:`.mat` file """ gridout = pypago.grid.Grid(None, None, None, None, None, False) fin = scipy.io.loadmat(filename) model_grid = fin['MODEL_grid'][0] gridout.jmin = model_grid['lats'][0][0][0] - 1 gridout.jmax = model_grid['latn'][0][0][0] - 1 gridout.imin = model_grid['lonw'][0][0][0] - 1 gridout.imax = model_grid['lone'][0][0][0] - 1 gridout.mask = model_grid['mask'][0] gridout.bathy = model_grid['bathy'][0] gridout.lont = model_grid['lont'][0] gridout.latt = model_grid['latt'][0] gridout.filename = filename gridout.modelname = modelname gridout.nlon = nlon output = {} output['MODEL_grid'] = fin['MODEL_grid'][0] pypago.pyio.save(output, filename.replace('.mat', '.pygo')) return gridout
[docs]def gridsec_topygo(filename, modelname, nlon): """ Converts a :file:`.mat` containing grid section endpoints into a :file:`.pygo` file :param str filename: name of the :file:`.mat` file """ output = [] fin = scipy.io.loadmat(filename) model_time = fin['MODEL_time'][0] model_sec = fin['MODEL_sections'] model_grid = fin['MODEL_grid'][0] jmin = model_grid['lats'][0][0][0] - 1 jmax = model_grid['latn'][0][0][0] - 1 imin = model_grid['lonw'][0][0][0] - 1 imax = model_grid['lone'][0][0][0] - 1 for mod in model_sec[:]: secint = pypago.sections.GridSection(None, None) secint.name = mod['name'][0][0] secint.faces = mod['faces'][0] secint.orient = mod['orient'][0] secint.depthvect = mod['depthvect'][0] secint.areavect = mod['areavect'][0] secint.lvect = mod['lvect'][0] secint.lengthvect = mod['lengthvect'][0] secint.veci = mod['veci'][0] - 1 secint.vecj = mod['vecj'][0] - 1 secint.vecs = mod['vecs'][0] secint.vect = mod['vect'][0] secint.vecv = mod['vecv'][0] secint.jmin = jmin secint.jmax = jmax secint.imin = imin secint.imax = imax secint.modelname = modelname secint.nlon = nlon output.append(secint) outputdict = {} outputdict['MODEL_sections'] = output outputdict['MODEL_time'] = model_time pypago.pyio.save(outputdict, filename.replace('.mat', '.pygo')) return output
[docs]def secmat_topygo(filename): """ Converts a :file:`.mat` containing section endpoints into a :file:`.pygo` file :param str filename: name of the :file:`.mat` file """ fin = scipy.io.loadmat(filename) sectionsmat = fin['sections'][0] secpygo = [] for secmat in sectionsmat: secint = pypago.sections.Section(secmat['name'][0], secmat['lon'][0], secmat['lat'][0], secmat['dir']) secpygo.append(secint) pypago.pyio.save(secpygo, filename.replace('.mat', '.pygo')) return secpygo
if __name__ == '__main__': import pylab as plt filename = 'natl_ORCA025.L75-GRD88_y2000m07_sections.mat' #output = gridsec_topygo(filename, 'NEMO', 100) gridout = pypago.grid.Grid(None, None, None, None, None, False) fin = scipy.io.loadmat(filename) model_grid = fin['MODEL_grid'][0] gridout.jmin = model_grid['lats'][0][0][0] - 1 gridout.jmax = model_grid['latn'][0][0][0] - 1 gridout.imin = model_grid['lonw'][0][0][0] - 1 gridout.imax = model_grid['lone'][0][0][0] - 1 gridout.mask = model_grid['mask'][0] gridout.bathy = model_grid['bathy'][0] gridout.lont = model_grid['lont'][0] gridout.latt = model_grid['latt'][0] gridout.plot_mask() plt.show()