Example #1
0
# Parameters
ncfile = "menor.nc"
lon = (3., 4.5)
lat = (42, 42.8)

# Imports
from vcmq import DS, map2, data_sample

# Read temperature and depth
ncfile = data_sample(ncfile)
ds = DS(ncfile, 'mars', lon=lon, lat=lat)
mld = ds.get_mld(mode='deltatemp', squeeze=1)

# Plot
map2(mld,
     proj='merc',
     figsize=(6, 6),
     autoresize=0,
     colorbar_shrink=0.7,
     right=1,
     savefigs=__file__,
     show=False,
     close=True)

print 'Done'
Example #2
0
# Imports
from vcmq import DS, data_sample, mixed_layer_depth, rc, map2, os, code_file_name

# Read data
ds = DS(data_sample(ncfile),'mars', logger_level='critical')
temp = ds.get_temp(squeeze=True)
sal = ds.get_sal(squeeze=True)
depth = ds.get_depth(squeeze=True)
kz = ds.get_kz(squeeze=True)

# Compute MLD
kw = dict(depth=depth, format_axes=True)
mld = {}
mld['deltatemp'] = mixed_layer_depth(temp, mode='deltatemp',**kw)
mld['deltadens'] = mixed_layer_depth((temp,sal), mode='deltadens', **kw)
mld['kz'] = mixed_layer_depth(kz, mode='kz', **kw)
vmin = min([v.min() for v in mld.values()])
vmax = max([v.max() for v in mld.values()])

# Plot it
rc('font', size=8)
for i,(mode, var) in enumerate(mld.items()):
    m = map2(var, fill='pcolormesh', nmax=20, vmin=vmin, vmax=vmax,
        subplot=(len(mld),1,i+1), figsize=(4.1,8),
        contour_linewidths=0.7, cmap='vacumm_rnb2_hymex', hspace=0.25, bottom=0.08,
        title='%%(long_name)s: mode = "%s"'%mode, show=False)
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
m.savefig(figfile)

Example #3
0
print xyz1.xmin  # -> essayer get_xmin avec mask
print xyz1.resol()  # -> essayer avec deg=...

# Plot
kwp = dict(size=40, map_res=None, masked_alpha=.1)
xyz1.plot(mode='both', **kwp)  # -> essayer autre mode

# Fichier
fbathy = __file__[:-2] + 'xyz'
xyz1.save(fbathy)
xyz3 = XYZBathy(fbathy)
xyz3.plot(title='XYZ3', **kwp)

# Fusions
xyz = xyz1 + xyz2
merger = XYZBathyMerger()
merger += xyz1  # -> supprimer/ajouter
merger.append(xyz2)
for i, b in enumerate(merger):
    b.long_name = 'Niveau : %i' % i  # Pour les legendes
    b.set_transp(False)  # Opacite
merger.plot(mode='cluster', **kwp)  # -> essayer autre mode
xyz = merger.get_xyz(long_name='Merged')
xyz.plot(**kwp)

# Regrillage
grid_auto = xyz.grid
grid_manual = create_grid((-5.3, -4.91, .01), (48.1, 48.41, .01))
gridded = xyz.togrid(grid_manual)
map2(gridded, res=None)
Example #4
0
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_dens` in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
dens = ds.get_dens(squeeze=True)

# Plot surface density
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(dens[-1], savefig=figfile, close=True, vmin=1025.,show=False)

# For unittest
result = {'files':figfile}
Example #5
0
# Regrilleur de CDAT
regridder = CDATRegridder(gridi, grido, method="cellave")  # -> CHANGEZ LA METHODE
ssto2 = regridder.regrid(ssti)
ssto3, cdr = regrid2d(ssti, grido, cdr=regridder, getcdr=True)
# -> VERIFIEZ LE TYPE


# Plots
kwp = dict(
    vmin=ssti.min(),
    vmax=ssti.max(),
    res=None,
    show=False,
    colorbar=False,
    drawmeridians_linewidth=0,
    drawparallels_linewidth=0,
    grid=False,
    yhide="auto",
    **select
)
map2(ssti, title="Original", figsize=(15, 5), subplot=131, **kwp)
add_grid(gridi, alpha=1)
map2(ssto, title="Avec regrid2d", subplot=132, **kwp)
add_grid(grido, alpha=1)
add_grid(gridi, edges=False, centers=True, alpha=0.5, markersize=3, marker="o")
map2(ssto2, title="Avec CDATRegridder", subplot=133, **kwp)
add_grid(grido, alpha=1)
add_grid(gridi, edges=False, centers=True, alpha=0.5, markersize=3, marker="o")
P.tight_layout()
P.show()
Example #6
0
sst1d_gen13 = generic1d(sst1d, 13)
sst1d_gen3 = generic1d(sst1d, [1., 1., 1.])
sst1d_sha = shapiro1d(sst1d)  # -> SHAPIRO AVEC GENERIC1D
sst1d_bar13 = bartlett1d(sst1d, 13)
# -> TESTEZ GAUSSIEN SUR 13 HEURES

# - plots
curve2(sst1d, 'k', label='Original', show=False, figsize=(12, 5))
curve2(sst1d_gen13, 'r', label='Generic 13 pts', show=False)
curve2(sst1d_gen3, 'g', label='Generic 3 pts', show=False)
curve2(sst1d_sha, 'b', label='shapiro', show=False)
curve2(sst1d_bar13, 'm', label='Bartlett', legend=True)

# -> MASQUEZ UNE PARTIE DES DONNEES ET JOUEZ AVEC LE PARAMETRE MASK=

# -> LISEZ UN BLOCK 3D ET FILTREZ LE SUIVANT LE TEMPS

# 2D

# - filtrage
sst2d_gen13 = generic2d(sst2d, 13)
sst2d_gau13 = gaussian2d(sst2d, 13)

# - plots
kw = dict(vmin=sst2d.min(), vmax=sst2d.max(), colorbar=False, nmax=18)
map2(sst2d, title='Original', figsize=(13, 3), subplot=131, show=False, **kw)
map2(sst2d_gen13, title='Generic 13', subplot=132, show=False, **kw)
map2(sst2d_gau13, title='Gauss 13', subplot=133, show=True, **kw)

# -> JOUEZ AVEC MASK=
Example #7
0
    kwplot[att] = getattr(args, att)
for att in ('color', 'linewidth'):
    val = getattr(args, att)
    if val is not None:
        kwplot[att] = val
kwplot['quiver_norm'] = args.qnorm
if len(vv)==2 and args.qonly:
    kwplot['contour'] = kwplot['fill'] = False
if args.figsize:
    kwplot['figsize'] = tuple([float(v) for v in args.figsize.split(',')])
if args.res=='off':
    args.res = None
kwplot['res'] = args.res

#del kwplot['color']
#kwplot = {'color':None}

# Adaptative plot
if ndim==2:
    if order in ['yx', 'xy']:
        map2(vv, **kwplot)
    elif 't' in order:
        hov2(vv, **kwplot)
    else:
        plot2d(vv, **kwplot)
else:
    if len(vv)>1:
        stick2(*vv, **kwplot)
    else:
        curve2(vv, **kwplot)
# Add param info
c.add_param_label(dict(param1=1, param2='Good thing'), color='r')

# Add annotation
c.add_annotation(tmin, vmin, -150, -20, 'The min !',
    bbox=dict(facecolor='y', alpha=.5, pad=10),
    arrowprops=dict(arrowstyle='fancy', facecolor='y',
        connectionstyle="arc3,rad=-.3", linewidth=0.3))


# Map
f = cdms2.open(data_sample('mars3d.xy.nc'))
h0 = f('temp', lat=(47.75, 49))
f.close()
m = map2(h0, fill='pcolormesh', title='Bathy', contour=False, colorbar=False,
    subplot=212, proj='lcc', show=False, cmap='GMT_gebco_r')

# Add a letter for subfigures like "b)"
m.add_key('B', pos='top right', xmargin=20)

# Point
m.add_point(-5.3, 48.3, color='b', shadow=True, edgecolor='r', size=120)

# Place = point + text
m.add_place(-4.62138, 48.38197, 'Plouzane', size=100)

# Add lines
m.add_line([-5.3, 48, -5, 49], color='r')
m.add_lines([-5.3, -4.7, -5], [48, 48.5, 49], color='g')

# Add box
Example #9
0
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_mld` with deltadens in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
mld = ds.get_mld(mode='deltadens', deltadens=0.06, squeeze=True)

# Plot surface density
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(mld,
     savefig=figfile,
     close=True,
     show=False,
     fill='pcolormesh',
     cmap='vacumm_previmer',
     contour=False)

# For unittest
result = {'files': figfile}
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_uvgbt` on MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import data_sample, DS, N, MV2, shapiro2d, map2, code_file_name

# Read data
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
u, v = ds.get_uvgbt()

# Mask huge values
mask = (N.ma.sqrt(u**2+v**2)>2.).filled(True)
for var in u, v:
    var[:] = MV2.masked_where(mask, var, copy=False)

# Shapiro filter
for var in u, v:
    var[:] = shapiro2d(var)

# Plot
map2((u[0], v[0]), title='Geostrophic velocity', 
    quiver_samp=3, xymasked=False, quiver_norm=3, contour=False, 
    fill=False, figsize=(7, 7), quiver_linewidth=.3, quiver_width=0.003, 
    quiver_scale=10, right=1, colorbar_shrink=0.8, bottom=0.05, show=False, 
    savefig=code_file_name(), close=True)

Example #11
0
    kwplot[att] = getattr(args, att)
for att in ('color', 'linewidth'):
    val = getattr(args, att)
    if val is not None:
        kwplot[att] = val
kwplot['quiver_norm'] = args.qnorm
if len(vv) == 2 and args.qonly:
    kwplot['contour'] = kwplot['fill'] = False
if args.figsize:
    kwplot['figsize'] = tuple([float(v) for v in args.figsize.split(',')])
if args.res == 'off':
    args.res = None
kwplot['res'] = args.res

#del kwplot['color']
#kwplot = {'color':None}

# Adaptative plot
if ndim == 2:
    if order in ['yx', 'xy']:
        map2(vv, **kwplot)
    elif 't' in order:
        hov2(vv, **kwplot)
    else:
        plot2d(vv, **kwplot)
else:
    if len(vv) > 1:
        stick2(*vv, **kwplot)
    else:
        curve2(vv, **kwplot)
# Read data
ncfile = data_sample(ncfile)
ds = DS(ncfile, 'mars', logger_level='critical')
tbot = ds.get_temp(level='bottom', squeeze=True)
tsurf = ds.get_temp(level='surf', squeeze=True)

# Plot bottom
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
kw = dict(contour=True,
          fill='contourf',
          colorbar_shrink=0.8,
          cmap='cmocean_thermal',
          linewidth=.3)
m = map2(tsurf,
         subplot=211,
         close=False,
         show=False,
         figsize=(5, 7),
         title='Testing Dataset.get_temp(level="surf")',
         **kw)
map2(tbot,
     subplot=212,
     close=True,
     show=True,
     m=m,
     title='Testing Dataset.get_temp(level="bottom")',
     savefig=figfile,
     **kw)
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
u, v = ds.get_uvgbt()

# Mask huge values
mask = (N.ma.sqrt(u**2 + v**2) > 2.).filled(True)
for var in u, v:
    var[:] = MV2.masked_where(mask, var, copy=False)

# Shapiro filter
for var in u, v:
    var[:] = shapiro2d(var)

# Plot
map2((u[0], v[0]),
     title='Geostrophic velocity',
     quiver_samp=3,
     xymasked=False,
     quiver_norm=3,
     contour=False,
     fill=False,
     figsize=(7, 7),
     quiver_linewidth=.3,
     quiver_width=0.003,
     quiver_scale=10,
     right=1,
     colorbar_shrink=0.8,
     bottom=0.05,
     show=False,
     savefig=code_file_name(),
     close=True)
Example #14
0
        try:
            lon = eval(options.lon)
        except:
            parser.error('--%s: wrong argument'%selname)
    select[selname] = val

# Imports
from vcmq import DS, map2, MV2, data_sample

# The file
ncfile = options.ncfile
if not os.path.exists(ncfile):
    ncfile = data_sample(ncfile)
if not os.path.exists(ncfile):
    parser.error('File not found: '+ncfile)

# Read temperature and depth
ds = DS(ncfile, options.model, **select)
mld = ds.get_mld(mode='deltatemp', squeeze=1)

# Time average (if needed)
if mld.ndim==3:
    mld = MV2.average(mld, axis=0)

# Plot
map2(mld, proj='merc', figsize=(6, 6), autoresize=0,
    title=options.title, colorbar_shrink=0.7, right=1,
    show=options.disp, savefig=options.outputfig, savefig_verbose=True)


Example #15
0
# Plot
kwp = dict(size=40, map_res=None, masked_alpha=0.1)
xyz1.plot(mode="both", **kwp)  # -> essayer autre mode

# Fichier
fbathy = __file__[:-2] + "xyz"
xyz1.save(fbathy)
xyz3 = XYZBathy(fbathy)
xyz3.plot(title="XYZ3", **kwp)


# Fusions
xyz = xyz1 + xyz2
merger = XYZBathyMerger()
merger += xyz1  # -> supprimer/ajouter
merger.append(xyz2)
for i, b in enumerate(merger):
    b.long_name = "Niveau : %i" % i  # Pour les legendes
    b.set_transp(False)  # Opacite
merger.plot(mode="cluster", **kwp)  # -> essayer autre mode
xyz = merger.get_xyz(long_name="Merged")
xyz.plot(**kwp)


# Regrillage
grid_auto = xyz.grid
grid_manual = create_grid((-5.3, -4.91, 0.01), (48.1, 48.41, 0.01))
gridded = xyz.togrid(grid_manual)
map2(gridded, res=None)
# Parameters
ncfile = "menor.nc"
lon = (3.0, 4.5)
lat = (42, 42.8)

# Imports
from vcmq import DS, map2, data_sample
from vacumm.diag.thermdyn import mixed_layer_depth

# Read temperature and depth
ncfile = data_sample(ncfile)
ds = DS(ncfile, "mars", lon=lon, lat=lat)
temp = ds.get_temp(squeeze=1)
depth = ds.get_depth(squeeze=1)

# Compute MLD
mld = mixed_layer_depth(temp, depth, mode="deltatemp")

# Plot
map2(mld, proj="merc", figsize=(6, 6), autoresize=0, colorbar_shrink=0.7, right=1, savefigs=__file__, show=False)


print "Done"
Example #17
0
# -*- coding: utf8 -*-
# %% Imports
from vcmq import cdms2, MV2, data_sample, code_base_name, map2

# %% Read Hs
f = cdms2.open(data_sample('swan.four.nc'))
lon = f('longitude')
lat = f('latitude')
hs = f('HS', squeeze=1)
f.close()

# %% Plot it specifying its irregular grid
map2(hs,
     xaxis=lon,
     yaxis=lat,
     figsize=(6, 4),
     cmap='cmocean_amp',
     long_name='Significant wave height',
     fill='pcolormesh',
     contour=False,
     savefigs=code_base_name(ext='png'),
     left=.12,
     right=1,
     show=False)
Example #18
0
print method


# Regrillage
ssto = regrid2d(ssti, grido, method=method)                 # -> CHANGEZ LA METHODE
# -> UTILISEZ USECDR=TRUE


# Regrilleur de CDAT
regridder = CDATRegridder(gridi, grido, method='cellave')   # -> CHANGEZ LA METHODE
ssto2 = regridder.regrid(ssti)
ssto3, cdr = regrid2d(ssti, grido, cdr=regridder, getcdr=True)  
# -> VERIFIEZ LE TYPE


# Plots
kwp = dict(vmin=ssti.min(), vmax=ssti.max(), res=None, show=False, colorbar=False, 
    drawmeridians_linewidth=0, drawparallels_linewidth=0, grid=False, yhide='auto', **select)
map2(ssti, title='Original',figsize=(15, 5), subplot=131, **kwp)
add_grid(gridi, alpha=1)
map2(ssto, title='Avec regrid2d', subplot=132, **kwp)
add_grid(grido, alpha=1)
add_grid(gridi, edges=False, centers=True, alpha=.5, markersize=3, marker='o')
map2(ssto2, title='Avec CDATRegridder', subplot=133, **kwp)
add_grid(grido, alpha=1)
add_grid(gridi, edges=False, centers=True, alpha=.5, markersize=3, marker='o')
P.tight_layout()
P.show()


Example #19
0
print ds.dataset


# Logging
ds.info('Pratique')                                 # -> ESSAYER WARNING
ds.set_loglevel('debug')


# Coordonnees
lon = ds.get_lon()                                  # -> ESSAYER AU POINT U
grid = ds.get_grid()


# Variables
temp = ds.get_temp(level=slice(-1, None), squeeze=True)
sst = ds.get_sst(squeeze=True)                      # -> VERIFIER ATTRIBUTS
ds.info('Plot SST')
map2(sst)
sal = ds.get_sal(lon=(4., 4.5))
print temp.shape, sal.shape

# Generique
ds2 = DS(data_sample('mfs.nc'), 'nemo', lon=(4, 5), lat=(42.5, 43.5))
sst2 = ds2.get_sst(squeeze=True)                      # -> VERIFIER ATTRIBUTS

# Plus evolue
depth = ds.get_depth() # sigma
print depth.shape
mld = ds.get_mld()
ds.plot_transect('temp', lons=(4.1, 4.9), lats=(43.3, 42.6), figsize=(12, 6)) # -> OUTAXIS=
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_depth` in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ncfile = data_sample(ncfile)
ds = DS(ncfile, 'mars', logger_level='critical') 
depth = ds.get_depth(squeeze=True)

# Plot midlevel
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(depth[depth.shape[0]/2], savefig=figfile, close=True, vmax=0, show=False, 
    colorbar_shrink=0.6, title='Testing Dataset.get_depth()')

# For unittest
result = [
    ('files', figfile), 
    ]
Example #21
0
                 'The min !',
                 bbox=dict(facecolor='y', alpha=.5, pad=10),
                 arrowprops=dict(arrowstyle='fancy',
                                 facecolor='y',
                                 connectionstyle="arc3,rad=-.3",
                                 linewidth=0.3))

# Map
f = cdms2.open(data_sample('mars3d.xy.nc'))
h0 = f('temp', lat=(47.75, 49))
f.close()
m = map2(h0,
         fill='pcolormesh',
         title='Bathy',
         contour=False,
         colorbar=False,
         subplot=212,
         proj='lcc',
         show=False,
         cmap='GMT_gebco_r')

# Add a letter for subfigures like "b)"
m.add_key('B', pos='top right', xmargin=20)

# Point
m.add_point(-5.3, 48.3, color='b', shadow=True, edgecolor='r', size=120)

# Place = point + text
m.add_place(-4.62138, 48.38197, 'Plouzane', size=100)

# Add lines
Example #22
0
"""Test :meth:`~vacumm.misc.core_plot.Plot2D.plot_streamplot`"""

from vcmq import map2, data_sample, cdms2, code_file_name
import warnings
warnings.filterwarnings('ignore',
                        'Warning: converting a masked element to nan')

f = cdms2.open(data_sample('mars2d.xyt.nc'))
u = f('u', slice(0, 1), squeeze=1)
v = f('v', slice(0, 1), squeeze=1)
f.close()

map2((u, v),
     fill=False,
     contour=False,
     streamplot=True,
     streamplot_density=3,
     streamplot_linewidth='modulus',
     streamplot_lwmod=3,
     streamplot_color='modulus',
     title='Tidal stream lines',
     colorbar_shrink=0.7,
     savefig=code_file_name(),
     right=1,
     show=False)
Example #23
0
var['t'] = MV2.reshape(N.arange(grid.size()*len(dep))*1., (len(dep), )+grid.shape)
set_grid(var['t'], grid)
var['t'].setAxis(0, dep)


# Arakawa manager
ag = CGrid()

# Interpolations
for p in 'u', 'v', 'f', 'w':
    var[p] = ag.interp(var['t'], 't', p, mode='extrap')

# Surface plots
vmin, vmax = minmax(*[var[p][-1] for p in ['u', 'v', 'f']])
kw = dict(show=False, res=None, vmin=vmin, vmax=vmax, colorbar=False, grid=False, cmap='jet')
m = map2(var['t'][-1], fill='pcolor', 
    title='Interpolations on an Arakawa C grid: T->U/V/F', **kw)
add_grid(var['t'], linestyle='-')
kw.update(fill='scatter', contour=False, fill_s=60)
markers = dict(u='>', v='^', f='D', t='o')
for p in 't', 'u', 'v', 'f':
    m = map2(var[p][-1], fill_marker=markers[p], shadow=True, zorder=100, **kw)
m.savefig(code_file_name(ext='_1.png'))
m.close()

# Vertical plot
curve2(var['t'][:, 0, 0], 'o-b', ymax=0, show=False, 
    title='Interpolations on an Arakawa C grid: T->W')
curve2(var['w'][:, 0, 0], '^r', show=False, savefig=code_file_name(ext='_2.png'))


result = [
Example #24
0
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_dens` in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
dens = ds.get_dens(squeeze=True)

# Plot surface density
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(dens[-1], savefig=figfile, close=True, vmin=1025., show=False)

# For unittest
result = {'files': figfile}
"""Test :func:`~vacumm.misc.plot.Plot.add_point` and similar :class:`~vacumm.misc.plot.Plot` methods"""

# Imports
from vcmq import MV2, code_file_name, map2, curve2, create_time

figfile = code_file_name(ext=False)+'_%i.png'

# Create a map with projection
m = map2(lon=(-10,1), lat=(43,51), res='l', show=False, proj='merc')

# Add a point
m.add_point(-4, 48, color='cyan', glow=True, size=50)
m.add_point([0, -2], [45, 44], color='k', marker='^', size=40)

# Add text
m.add_text(0.1, 0.1, 'My text', color='r', shadow=True, weight='bold')
m.add_text(-2, 50.5, 'My text with transform', transform='data', ha='center', 
    bbox=dict(facecolor='y', alpha=.3))
m.add_lon_label(-8, 47.5, -8, va='center', ha='center', transform='data', fmt='%g')
m.add_lat_label(-8, 47, 47, va='center', ha='center', transform='data')
m.add_time_label(.1, .9, '2000')

# Add place
m.add_place(-2, 49, 'My place', text_family='monospace', text_size=15)

# Add lines
m.add_line([-8, 46, -1, 50], color='b')
m.add_lines([-8, -1, -4, -8], [45, 45, 47, 45], color='r', linewidth=2, shadow=True)
m.add_box([-8, 46, -1, 50], color='c')

m.savefig(figfile%0)
Example #26
0
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_depth` in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ncfile = data_sample(ncfile)
ds = DS(ncfile, 'mars', logger_level='critical')
depth = ds.get_depth(squeeze=True)

# Plot midlevel
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(depth[depth.shape[0] / 2],
     savefig=figfile,
     close=True,
     vmax=0,
     show=False,
     colorbar_shrink=0.6,
     title='Testing Dataset.get_depth()')

# For unittest
result = [
    ('files', figfile),
]
Example #27
0
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_mld` with deltadens in MENOR"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ds = DS(data_sample(ncfile), 'mars', logger_level='critical')
mld = ds.get_mld(mode='deltadens', deltadens=0.06, squeeze=True)

# Plot surface density
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
map2(mld, savefig=figfile, close=True, show=False, fill='pcolormesh',
    cmap='vacumm_previmer', contour=False)

# For unittest
result = {'files':figfile}
"""Test :meth:`~vacumm.data.misc.dataset.OceanDataset.get_variable` with level as a string"""

# Inits
ncfile = "menor.nc"

# Imports
from vcmq import DS, os, map2, data_sample, code_file_name

# Read data
ncfile = data_sample(ncfile)
ds = DS(ncfile, 'mars', logger_level='critical')
tbot = ds.get_temp(level='bottom', squeeze=True)
tsurf = ds.get_temp(level='surf', squeeze=True)

# Plot bottom
figfile = code_file_name(ext='png')
if os.path.exists(figfile): os.remove(figfile)
kw = dict(contour=True, fill='contourf',  colorbar_shrink=0.8,
    cmap='cmocean_thermal', linewidth=.3)
m = map2(tsurf, subplot=211, close=False, show=False, figsize=(5, 7),
    title='Testing Dataset.get_temp(level="surf")',  **kw)
map2(tbot, subplot=212, close=True, show=True, m=m,
    title='Testing Dataset.get_temp(level="bottom")',
    savefig=figfile, **kw)

Example #29
0
# Interpolations
for p in 'u', 'v', 'f', 'w':
    var[p] = ag.interp(var['t'], 't', p, mode='extrap')

# Surface plots
vmin, vmax = minmax(*[var[p][-1] for p in ['u', 'v', 'f']])
kw = dict(show=False,
          res=None,
          vmin=vmin,
          vmax=vmax,
          colorbar=False,
          grid=False,
          cmap='jet')
m = map2(var['t'][-1],
         fill='pcolor',
         title='Interpolations on an Arakawa C grid: T->U/V/F',
         **kw)
add_grid(var['t'], linestyle='-')
kw.update(fill='scatter', contour=False, fill_s=60)
markers = dict(u='>', v='^', f='D', t='o')
for p in 't', 'u', 'v', 'f':
    m = map2(var[p][-1], fill_marker=markers[p], shadow=True, zorder=100, **kw)
m.savefig(code_file_name(ext='_1.png'))
m.close()

# Vertical plot
curve2(var['t'][:, 0, 0],
       'o-b',
       ymax=0,
       show=False,
       title='Interpolations on an Arakawa C grid: T->W')
Example #30
0
"""Test :meth:`~vacumm.misc.core_plot.Plot2D.plot_streamplot`"""

from vcmq import map2, data_sample, cdms2, code_file_name
import warnings
warnings.filterwarnings('ignore', 'Warning: converting a masked element to nan')

f = cdms2.open(data_sample('mars2d.xyt.nc'))
u = f('u', slice(0, 1), squeeze=1)
v = f('v', slice(0, 1), squeeze=1)
f.close()

map2((u, v), fill=False, contour=False, streamplot=True, streamplot_density=3, 
    streamplot_linewidth='modulus', streamplot_lwmod=3, streamplot_color='modulus', 
    title='Tidal stream lines', colorbar_shrink=0.7, savefig=code_file_name(), 
    right=1, show=False)
Example #31
0
# - format
zi = MV2.array(zi, copy=False, id='sst')
taxis = zi.getAxis(0)
taxis.units = 'hours since 2000'
taxis.axis = 'T'
ggo = create_grid(xr, yr)
zzr = MV2.array(zzr)
set_grid(zzr, ggo)

# Call and plot
kw = dict(vmin=zzr.min(),
          vmax=zzr.max(),
          lon=(xr[0], xr[-1]),
          cmap_lum=0.7,
          linewidth=.5,
          lat=(yr[0], yr[-1]),
          show=False,
          colorbar=False)
m = map2(zzr, title='Original', subplot=221, figsize=(8, 5), **kw)
m.add_point(xi, yi, color='k')
for i, method in enumerate(['nearest', 'linear', 'cubic']):

    # Interp
    zo = griddata(xi, yi, zi, ggo, method=method)[0]

    # Plot
    m = map2(zo, title=method.title(), subplot=(2, 2, i + 2), **kw)
    m.add_point(xi, yi, color='k')

m.savefig(code_file_name(ext='png'))
Example #32
0
"""Test :func:`~vacumm.misc.plot.Plot.add_point` and similar :class:`~vacumm.misc.plot.Plot` methods"""

# Imports
from vcmq import MV2, code_file_name, map2, curve2, create_time

figfile = code_file_name(ext=False) + '_%i.png'

# Create a map with projection
m = map2(lon=(-10, 1), lat=(43, 51), res='l', show=False, proj='merc')

# Add a point
m.add_point(-4, 48, color='cyan', glow=True, size=50)
m.add_point([0, -2], [45, 44], color='k', marker='^', size=40)

# Add text
m.add_text(0.1, 0.1, 'My text', color='r', shadow=True, weight='bold')
m.add_text(-2,
           50.5,
           'My text with transform',
           transform='data',
           ha='center',
           bbox=dict(facecolor='y', alpha=.3))
m.add_lon_label(-8,
                47.5,
                -8,
                va='center',
                ha='center',
                transform='data',
                fmt='%g')
m.add_lat_label(-8, 47, 47, va='center', ha='center', transform='data')
m.add_time_label(.1, .9, '2000')
Example #33
0
sst1d_bar13 = bartlett1d(sst1d, 13)
# -> TESTEZ GAUSSIEN SUR 13 HEURES

# - plots
curve2(sst1d, 'k', label='Original', show=False, figsize=(12, 5))
curve2(sst1d_gen13, 'r', label='Generic 13 pts', show=False)
curve2(sst1d_gen3, 'g', label='Generic 3 pts', show=False)
curve2(sst1d_sha, 'b', label='shapiro', show=False)
curve2(sst1d_bar13, 'm', label='Bartlett', legend=True)


# -> MASQUEZ UNE PARTIE DES DONNEES ET JOUEZ AVEC LE PARAMETRE MASK=

# -> LISEZ UN BLOCK 3D ET FILTREZ LE SUIVANT LE TEMPS


# 2D

# - filtrage
sst2d_gen13 = generic2d(sst2d, 13)
sst2d_gau13 = gaussian2d(sst2d, 13)

# - plots
kw = dict(vmin=sst2d.min(), vmax=sst2d.max(), colorbar=False, nmax=18)
map2(sst2d, title='Original', figsize=(13, 3), subplot=131, show=False, **kw)
map2(sst2d_gen13, title='Generic 13', subplot=132, show=False, **kw)
map2(sst2d_gau13, title='Gauss 13', subplot=133, show=True, **kw)


# -> JOUEZ AVEC MASK=
Example #34
0
# Imports
from vcmq import DS, map2, MV2, data_sample

# The file
ncfile = options.ncfile
if not os.path.exists(ncfile):
    ncfile = data_sample(ncfile)
if not os.path.exists(ncfile):
    parser.error('File not found: ' + ncfile)

# Read temperature and depth
ds = DS(ncfile, options.model, **select)
mld = ds.get_mld(mode='deltatemp', squeeze=1)

# Time average (if needed)
if mld.ndim == 3:
    mld = MV2.average(mld, axis=0)

# Plot
map2(mld,
     proj='merc',
     figsize=(6, 6),
     autoresize=0,
     title=options.title,
     colorbar_shrink=0.7,
     right=1,
     show=options.disp,
     savefig=options.outputfig,
     savefig_verbose=True,
     close=True)
Example #35
0
# -*- coding: utf8 -*-
"""Diagnostics thermodynamiques et dynamiques (:mod:`vacumm.diag.thermdyn` et :mod:`vacumm.diag.dynamics`)"""

from vcmq import DS, data_sample, map2, density, mixed_layer_depth,  barotropic_geostrophic_velocity, kinetic_energy, shapiro2d

# Lecture des données de base
ds = DS(data_sample('menor.nc'))
temp = ds.get_temp(squeeze=1)
sal = ds.get_sal(squeeze=1)
depth = ds.get_depth(squeeze=1)
ssh = ds.get_ssh(squeeze=1)


# Densité
dens_surf = density(temp[-1], sal[-1])                      # -> CALCULER DENSITE 3D
map2(dens_surf)


# Couche mélangée
mld = mixed_layer_depth((temp, sal), depth, mode='deltadens') # -> ESSAYER AUTRES MODES
map2(mld, vmax=600.)


# Vitesse geostrophique
# - vitesses
ug, vg = barotropic_geostrophic_velocity(ssh)
# - energie cinetique
ke = kinetic_energy((ug, vg))                                 # -> TESTER AVEC SSH
ke.long_name = 'Surface geostrophique kinetic energy'
ke = shapiro2d(ke)
# - plot