[yt-svn] commit/yt: 2 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Thu Jul 25 10:41:35 PDT 2013
2 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/3bc43f5f4675/
Changeset: 3bc43f5f4675
Branch: yt
User: samskillman
Date: 2013-07-25 19:39:35
Summary: Explicitly cast width to float64. Fixes when widths are specified in int/long.
Affected #: 1 file
diff -r f15815e182080e8619efd2636cce42bc6e598b7c -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 yt/visualization/volume_rendering/camera.py
--- a/yt/visualization/volume_rendering/camera.py
+++ b/yt/visualization/volume_rendering/camera.py
@@ -582,7 +582,7 @@
(-self.width[0]/2.0, self.width[0]/2.0,
-self.width[1]/2.0, self.width[1]/2.0),
image, self.orienter.unit_vectors[0], self.orienter.unit_vectors[1],
- np.array(self.width), self.transfer_function, self.sub_samples)
+ np.array(self.width, dtype='float64'), self.transfer_function, self.sub_samples)
return args
star_trees = None
@@ -2192,10 +2192,10 @@
def get_sampler_args(self, image):
rotp = np.concatenate([self.orienter.inv_mat.ravel('F'), self.back_center.ravel()])
args = (rotp, self.box_vectors[2], self.back_center,
- (-self.width[0]/2, self.width[0]/2,
- -self.width[1]/2, self.width[1]/2),
+ (-self.width[0]/2., self.width[0]/2.,
+ -self.width[1]/2., self.width[1]/2.),
image, self.orienter.unit_vectors[0], self.orienter.unit_vectors[1],
- np.array(self.width), self.sub_samples)
+ np.array(self.width, dtype='float64'), self.sub_samples)
return args
def finalize_image(self,image):
https://bitbucket.org/yt_analysis/yt/commits/3f48788e6dbd/
Changeset: 3f48788e6dbd
Branch: yt
User: samskillman
Date: 2013-07-25 19:40:21
Summary: Merging
Affected #: 8 files
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 .hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -12,6 +12,7 @@
yt/utilities/kdtree/forthonf2c.h
yt/utilities/libconfig_wrapper.c
yt/utilities/spatial/ckdtree.c
+yt/utilities/lib/amr_kdtools.c
yt/utilities/lib/CICDeposit.c
yt/utilities/lib/ContourFinding.c
yt/utilities/lib/DepthFirstOctree.c
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 scripts/iyt
--- a/scripts/iyt
+++ b/scripts/iyt
@@ -1,6 +1,6 @@
#!python
import os, re
-from distutils import version
+from distutils.version import LooseVersion
from yt.mods import *
from yt.data_objects.data_containers import AMRData
namespace = locals().copy()
@@ -23,10 +23,12 @@
code.interact(doc, None, namespace)
sys.exit()
-if version.LooseVersion(IPython.__version__) <= version.LooseVersion('0.10'):
+if LooseVersion(IPython.__version__) <= LooseVersion('0.10'):
api_version = '0.10'
+elif LooseVersion(IPython.__version__) <= LooseVersion('1.0'):
+ api_version = '0.11'
else:
- api_version = '0.11'
+ api_version = '1.0'
if api_version == "0.10" and "DISPLAY" in os.environ:
from matplotlib import rcParams
@@ -42,13 +44,18 @@
ip_shell = IPython.Shell.IPShellMatplotlib(user_ns=namespace)
elif api_version == "0.10":
ip_shell = IPython.Shell.IPShellMatplotlib(user_ns=namespace)
-elif api_version == "0.11":
- from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell
+else:
+ if api_version == "0.11":
+ from IPython.frontend.terminal.interactiveshell import \
+ TerminalInteractiveShell
+ elif api_version == "1.0":
+ from IPython.terminal.interactiveshell import TerminalInteractiveShell
+ else:
+ raise RuntimeError
ip_shell = TerminalInteractiveShell(user_ns=namespace, banner1 = doc,
display_banner = True)
if "DISPLAY" in os.environ: ip_shell.enable_pylab(import_all=False)
-else:
- raise RuntimeError
+
# The rest is a modified version of the IPython default profile code
@@ -77,7 +84,7 @@
ip = ip_shell.IP.getapi()
try_next = IPython.ipapi.TryNext
kwargs = dict(sys_exit=1, banner=doc)
-elif api_version == "0.11":
+elif api_version in ("0.11", "1.0"):
ip = ip_shell
try_next = IPython.core.error.TryNext
kwargs = dict()
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/frontends/flash/fields.py
--- a/yt/frontends/flash/fields.py
+++ b/yt/frontends/flash/fields.py
@@ -366,5 +366,21 @@
add_field('nion', function=_nion, take_log=True, units=r"\rm{cm}^{-3}")
def _abar(field, data):
- return 1.0 / data['sumy']
+ try:
+ return 1.0 / data['sumy']
+ except:
+ pass
+ return data['dens']*Na*kboltz*data['temp']/data['pres']
add_field('abar', function=_abar, take_log=False)
+
+
+def _NumberDensity(fields,data) :
+ try:
+ return data["nele"]+data["nion"]
+ except:
+ pass
+ return data['pres']/(data['temp']*kboltz)
+add_field("NumberDensity", function=_NumberDensity,
+ units=r'\rm{cm}^{-3}')
+
+
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/funcs.py
--- a/yt/funcs.py
+++ b/yt/funcs.py
@@ -28,7 +28,7 @@
import contextlib
import warnings, struct, subprocess
import numpy as np
-from distutils import version
+from distutils.version import LooseVersion
from math import floor, ceil
from yt.utilities.exceptions import *
@@ -260,10 +260,12 @@
"""
import IPython
- if version.LooseVersion(IPython.__version__) <= version.LooseVersion('0.10'):
+ if LooseVersion(IPython.__version__) <= LooseVersion('0.10'):
api_version = '0.10'
+ elif LooseVersion(IPython.__version__) <= LooseVersion('1.0'):
+ api_version = '0.11'
else:
- api_version = '0.11'
+ api_version = '1.0'
stack = inspect.stack()
frame = inspect.stack()[num_up]
@@ -281,7 +283,10 @@
cfg.InteractiveShellEmbed.local_ns = loc
cfg.InteractiveShellEmbed.global_ns = glo
IPython.embed(config=cfg, banner2 = __header % dd)
- from IPython.frontend.terminal.embed import InteractiveShellEmbed
+ if api_version == '0.11':
+ from IPython.frontend.terminal.embed import InteractiveShellEmbed
+ else:
+ from IPython.terminal.embed import InteractiveShellEmbed
ipshell = InteractiveShellEmbed(config=cfg)
del ipshell
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -107,7 +107,8 @@
for lvl in lvl_range:
gles = np.array([g.LeftEdge for g in grids if g.Level == lvl])
gres = np.array([g.RightEdge for g in grids if g.Level == lvl])
- gids = np.array([g.id for g in grids if g.Level == lvl])
+ gids = np.array([g.id for g in grids if g.Level == lvl],
+ dtype="int64")
add_pygrids(self.trunk, len(gids), gles, gres, gids, self.comm_rank, self.comm_size)
del gles, gres, gids
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/utilities/command_line.py
--- a/yt/utilities/command_line.py
+++ b/yt/utilities/command_line.py
@@ -1456,7 +1456,12 @@
"""
def __call__(self, args):
kwargs = {}
- from IPython.frontend.html.notebook.notebookapp import NotebookApp
+ try:
+ # IPython 1.0+
+ from IPython.html.notebookapp import NotebookApp
+ except ImportError:
+ # pre-IPython v1.0
+ from IPython.frontend.html.notebook.notebookapp import NotebookApp
pw = ytcfg.get("yt", "notebook_password")
if len(pw) == 0 and not args.no_password:
import IPython.lib
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/visualization/base_plot_types.py
--- a/yt/visualization/base_plot_types.py
+++ b/yt/visualization/base_plot_types.py
@@ -33,12 +33,20 @@
"""A base class for all yt plots made using matplotlib.
"""
- def __init__(self, fsize, axrect):
+ def __init__(self, fsize, axrect, figure, axes):
"""Initialize PlotMPL class"""
self._plot_valid = True
- self.figure = matplotlib.figure.Figure(figsize=fsize,
- frameon=True)
- self.axes = self.figure.add_axes(axrect)
+ if figure is None:
+ self.figure = matplotlib.figure.Figure(figsize=fsize, frameon=True)
+ else:
+ figure.set_size_inches(fsize)
+ self.figure = figure
+ if axes is None:
+ self.axes = self.figure.add_axes(axrect)
+ else:
+ axes.cla()
+ self.axes = axes
+ self.canvas = FigureCanvasAgg(self.figure)
def save(self, name, mpl_kwargs, canvas=None):
"""Choose backend and save image to disk"""
@@ -57,7 +65,7 @@
canvas = FigureCanvasPS(self.figure)
else:
mylog.warning("Unknown suffix %s, defaulting to Agg", suffix)
- canvas = FigureCanvasAgg(self.figure)
+ canvas = self.canvas
canvas.print_figure(name, **mpl_kwargs)
return name
@@ -67,13 +75,18 @@
"""A base class for yt plots made using imshow
"""
- def __init__(self, fsize, axrect, caxrect, zlim):
+ def __init__(self, fsize, axrect, caxrect, zlim, figure, axes, cax):
"""Initialize ImagePlotMPL class object"""
- PlotMPL.__init__(self, fsize, axrect)
+ PlotMPL.__init__(self, fsize, axrect, figure, axes)
self.zmin, self.zmax = zlim
- self.cax = self.figure.add_axes(caxrect)
+ if cax is None:
+ self.cax = self.figure.add_axes(caxrect)
+ else:
+ cax.cla()
+ cax.set_position(caxrect)
+ self.cax = cax
- def _init_image(self, data, cbnorm, cmap, extent, aspect=None):
+ def _init_image(self, data, cbnorm, cmap, extent, aspect):
"""Store output of imshow in image variable"""
if (cbnorm == 'log10'):
norm = matplotlib.colors.LogNorm()
diff -r 3bc43f5f46752272783fb6d3d606ecb61b34dbd3 -r 3f48788e6dbd75afaeb49e9c180cd69273feabc1 yt/visualization/plot_window.py
--- a/yt/visualization/plot_window.py
+++ b/yt/visualization/plot_window.py
@@ -90,6 +90,17 @@
return rv
return newfunc
+def invalidate_figure(f):
+ @wraps(f)
+ def newfunc(*args, **kwargs):
+ rv = f(*args, **kwargs)
+ for field in args[0].fields:
+ args[0].plots[field].figure = None
+ args[0].plots[field].axes = None
+ args[0].plots[field].cax = None
+ return rv
+ return newfunc
+
def invalidate_plot(f):
@wraps(f)
def newfunc(*args, **kwargs):
@@ -394,7 +405,7 @@
nWx, nWy = Wx/factor, Wy/factor
self.xlim = (centerx - nWx*0.5, centerx + nWx*0.5)
self.ylim = (centery - nWy*0.5, centery + nWy*0.5)
-
+ return self
@invalidate_data
def pan(self, deltas):
@@ -408,6 +419,7 @@
"""
self.xlim = (self.xlim[0] + deltas[0], self.xlim[1] + deltas[0])
self.ylim = (self.ylim[0] + deltas[1], self.ylim[1] + deltas[1])
+ return self
@invalidate_data
def pan_rel(self, deltas):
@@ -422,6 +434,7 @@
Wx, Wy = self.width
self.xlim = (self.xlim[0] + Wx*deltas[0], self.xlim[1] + Wx*deltas[0])
self.ylim = (self.ylim[0] + Wy*deltas[1], self.ylim[1] + Wy*deltas[1])
+ return self
@invalidate_data
def set_window(self, bounds):
@@ -556,6 +569,7 @@
self.buff_size = (size, size)
@invalidate_plot
+ @invalidate_figure
def set_window_size(self, size):
"""Sets a new window size for the plot
@@ -876,9 +890,19 @@
fp = self._font_properties
+ fig = None
+ axes = None
+ cax = None
+ if self.plots.has_key(f):
+ if self.plots[f].figure is not None:
+ fig = self.plots[f].figure
+ axes = self.plots[f].axes
+ cax = self.plots[f].cax
+
self.plots[f] = WindowPlotMPL(image, self._field_transform[f].name,
self._colormaps[f], extent, aspect,
- zlim, size, fp.get_size())
+ zlim, size, fp.get_size(), fig, axes,
+ cax)
axes_unit_labels = ['', '']
for i, un in enumerate((unit_x, unit_y)):
@@ -945,6 +969,7 @@
del self._frb[key]
@invalidate_plot
+ @invalidate_figure
def set_font(self, font_dict=None):
"""set the font and font properties
@@ -1110,6 +1135,11 @@
except YTNotInsideNotebook:
return self.save(name=name, mpl_kwargs=mpl_kwargs)
+ def __repr__(self):
+ if "__IPYTHON__" in dir(__builtin__):
+ self.show()
+ return super(PWViewerMPL, self).__repr__()
+
class SlicePlot(PWViewerMPL):
r"""Creates a slice plot from a parameter file
@@ -1130,12 +1160,11 @@
or the axis name itself
fields : string
The name of the field(s) to be plotted.
- center : two or three-element vector of sequence floats, 'c', or 'center', or 'max'
- The coordinate of the center of the image. If left blank,
- the image centers on the location of the maximum density
- cell. If set to 'c' or 'center', the plot is centered on
- the middle of the domain. If set to 'max', will be at the point
- of highest density.
+ center : two or three-element vector of sequence floats, or one of 'c',
+ 'center', 'max' or 'm'. The coordinate of the center of the image.
+ If set to 'c', 'center' or left blank, the plot is centered on the
+ middle of the domain. If set to 'max' or 'm', the center will be at
+ the point of highest density.
width : tuple or a float.
Width can have four different formats to support windows with variable
x and y widths. They are:
@@ -1240,13 +1269,11 @@
or the axis name itself
fields : string
The name of the field(s) to be plotted.
- center : two or three-element vector of sequence floats, 'c', or 'center', or 'max'
- The coordinate of the center of the image. If left blank,
- the image centers on the location of the maximum density
- cell. If set to 'c' or 'center', the plot is centered on
- the middle of the domain. If set to 'max', will be at the point
- of highest density.
- width : tuple or a float.
+ center : two or three-element vector of sequence floats, or one of 'c',
+ 'center', 'max' or 'm'. The coordinate of the center of the image.
+ If set to 'c', 'center' or left blank, the plot is centered on the
+ middle of the domain. If set to 'max' or 'm', the center will be at
+ the point of highest density.
Width can have four different formats to support windows with variable
x and y widths. They are:
@@ -1358,11 +1385,11 @@
The vector normal to the slicing plane.
fields : string
The name of the field(s) to be plotted.
- center : A two or three-element vector of sequence floats, 'c', or 'center'
- The coordinate of the center of the image. If left blank,
- the image centers on the location of the maximum density
- cell. If set to 'c' or 'center', the plot is centered on
- the middle of the domain.
+ center : two or three-element vector of sequence floats, or one of 'c',
+ 'center', 'max' or 'm'. The coordinate of the center of the image.
+ If set to 'c', 'center' or left blank, the plot is centered on the
+ middle of the domain. If set to 'max' or 'm', the center will be at
+ the point of highest density.
width : A tuple or a float
A tuple containing the width of image and the string key of
the unit: (width, 'unit'). If set to a float, code units
@@ -1441,11 +1468,11 @@
The vector normal to the slicing plane.
fields : string
The name of the field(s) to be plotted.
- center : A two or three-element vector of sequence floats, 'c', or 'center'
- The coordinate of the center of the image. If left blank,
- the image centers on the location of the maximum density
- cell. If set to 'c' or 'center', the plot is centered on
- the middle of the domain.
+ center : two or three-element vector of sequence floats, or one of 'c',
+ 'center', 'max' or 'm'. The coordinate of the center of the image.
+ If set to 'c', 'center' or left blank, the plot is centered on the
+ middle of the domain. If set to 'max' or 'm', the center will be at
+ the point of highest density.
width : tuple or a float.
Width can have four different formats to support windows with variable
x and y widths. They are:
@@ -1744,7 +1771,9 @@
self._field_transform[field] = linear_transform
class WindowPlotMPL(ImagePlotMPL):
- def __init__(self, data, cbname, cmap, extent, aspect, zlim, size, fontsize):
+ def __init__(
+ self, data, cbname, cmap, extent, aspect, zlim, size, fontsize,
+ figure, axes, cax):
fsize, axrect, caxrect = self._get_best_layout(size, fontsize)
if np.any(np.array(axrect) < 0):
mylog.warning('The axis ratio of the requested plot is very narrow. '
@@ -1753,7 +1782,8 @@
'and matplotlib.')
axrect = (0.07, 0.10, 0.80, 0.80)
caxrect = (0.87, 0.10, 0.04, 0.80)
- ImagePlotMPL.__init__(self, fsize, axrect, caxrect, zlim)
+ ImagePlotMPL.__init__(
+ self, fsize, axrect, caxrect, zlim, figure, axes, cax)
self._init_image(data, cbname, cmap, extent, aspect)
self.image.axes.ticklabel_format(scilimits=(-2,3))
if cbname == 'linear':
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list