[yt-svn] commit/yt: 9 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Wed Mar 9 09:41:55 PST 2016
9 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/ff0af19d197d/
Changeset: ff0af19d197d
Branch: yt
User: atmyers
Date: 2016-03-03 21:19:49+00:00
Summary: give the option to force data regeneration in amr_kdtree
Affected #: 1 file
diff -r 9321ff69146d0129738ece9ffc181212fb2c648f -r ff0af19d197d9d62bdf691a6ac541ccd7a0d3b7c yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -181,12 +181,11 @@
min_level=min_level, max_level=max_level,
data_source=data_source)
- def set_fields(self, fields, log_fields, no_ghost):
+ def set_fields(self, fields, log_fields, no_ghost, force=False):
new_fields = self.data_source._determine_fields(fields)
- self.regenerate_data = \
- self.fields is None or \
- len(self.fields) != len(new_fields) or \
- self.fields != new_fields
+ self.regenerate_data = self.fields is None or \
+ len(self.fields) != len(new_fields) or \
+ self.fields != new_fields or force
self.fields = new_fields
if self.log_fields is not None:
@@ -325,7 +324,6 @@
node.data = brick
if not self._initialized:
self.brick_dimensions.append(dims)
- self.regenerate_data = False
return brick
def locate_brick(self, position):
https://bitbucket.org/yt_analysis/yt/commits/c4c69b6ebc5c/
Changeset: c4c69b6ebc5c
Branch: yt
User: atmyers
Date: 2016-03-03 21:20:37+00:00
Summary: hook up interpolated projections to the VolumeSource
Affected #: 2 files
diff -r ff0af19d197d9d62bdf691a6ac541ccd7a0d3b7c -r c4c69b6ebc5c63813e8fad92e651966c6a918014 yt/visualization/volume_rendering/off_axis_projection.py
--- a/yt/visualization/volume_rendering/off_axis_projection.py
+++ b/yt/visualization/volume_rendering/off_axis_projection.py
@@ -175,7 +175,7 @@
sc.camera = camera
sc.add_source(vol)
- vol.set_sampler(camera)
+ vol.set_sampler(camera, interpolated=False)
assert (vol.sampler is not None)
mylog.debug("Casting rays")
diff -r ff0af19d197d9d62bdf691a6ac541ccd7a0d3b7c -r c4c69b6ebc5c63813e8fad92e651966c6a918014 yt/visualization/volume_rendering/render_source.py
--- a/yt/visualization/volume_rendering/render_source.py
+++ b/yt/visualization/volume_rendering/render_source.py
@@ -20,7 +20,8 @@
from .transfer_functions import TransferFunction, \
ProjectionTransferFunction, ColorTransferFunction
from .utils import new_volume_render_sampler, data_source_or_all, \
- get_corners, new_projection_sampler, new_mesh_sampler
+ get_corners, new_projection_sampler, new_mesh_sampler, \
+ new_interpolated_projection_sampler
from yt.visualization.image_writer import apply_colormap
from yt.data_objects.image_array import ImageArray
from .zbuffer_array import ZBuffer
@@ -161,6 +162,7 @@
raise RuntimeError("transfer_function not of correct type")
if isinstance(transfer_function, ProjectionTransferFunction):
self.sampler_type = 'projection'
+ self.volume.set_fields([self.field], [False], True, True)
self.transfer_function = transfer_function
return self
@@ -217,7 +219,7 @@
self.volume.set_fields(fields, log_fields, no_ghost)
self.field = fields
- def set_sampler(self, camera):
+ def set_sampler(self, camera, interpolated=True):
"""Sets a volume render sampler
The type of sampler is determined based on the ``sampler_type`` attribute
@@ -226,6 +228,8 @@
"""
if self.sampler_type == 'volume-render':
sampler = new_volume_render_sampler(camera, self)
+ elif self.sampler_type == 'projection' and interpolated:
+ sampler = new_interpolated_projection_sampler(camera, self)
elif self.sampler_type == 'projection':
sampler = new_projection_sampler(camera, self)
else:
https://bitbucket.org/yt_analysis/yt/commits/b2536986a9c4/
Changeset: b2536986a9c4
Branch: yt
User: atmyers
Date: 2016-03-04 00:20:32+00:00
Summary: use keyword arguments here for clarity
Affected #: 1 file
diff -r c4c69b6ebc5c63813e8fad92e651966c6a918014 -r b2536986a9c466ae1b905adae7b2ab3e513129b2 yt/visualization/volume_rendering/render_source.py
--- a/yt/visualization/volume_rendering/render_source.py
+++ b/yt/visualization/volume_rendering/render_source.py
@@ -162,7 +162,8 @@
raise RuntimeError("transfer_function not of correct type")
if isinstance(transfer_function, ProjectionTransferFunction):
self.sampler_type = 'projection'
- self.volume.set_fields([self.field], [False], True, True)
+ self.volume.set_fields([self.field], log_fields=[False],
+ no_ghost=True, force=True)
self.transfer_function = transfer_function
return self
https://bitbucket.org/yt_analysis/yt/commits/ef4854cf2a71/
Changeset: ef4854cf2a71
Branch: yt
User: atmyers
Date: 2016-03-04 00:29:06+00:00
Summary: documenting the interpolated option for set_sampler
Affected #: 1 file
diff -r b2536986a9c466ae1b905adae7b2ab3e513129b2 -r ef4854cf2a711c7adcd68c77ab39e48f85a6bad9 yt/visualization/volume_rendering/render_source.py
--- a/yt/visualization/volume_rendering/render_source.py
+++ b/yt/visualization/volume_rendering/render_source.py
@@ -226,6 +226,13 @@
The type of sampler is determined based on the ``sampler_type`` attribute
of the VolumeSource. Currently the ``volume_render`` and ``projection``
sampler types are supported.
+
+ The 'interpolated' argument is only meaningful for projections. If True,
+ the data is first interpolated to the cell vertices, and then tri-linearly
+ interpolated to the ray sampling positions. If False, then the cell-centered
+ data is simply accumulated along the ray. Interpolation is always performed
+ for volume renderings.
+
"""
if self.sampler_type == 'volume-render':
sampler = new_volume_render_sampler(camera, self)
https://bitbucket.org/yt_analysis/yt/commits/d77b2ec2d03b/
Changeset: d77b2ec2d03b
Branch: yt
User: xarthisius
Date: 2016-03-04 02:58:41+00:00
Summary: Add flag to indicate if kdtree's node needs to be regenerated
Affected #: 3 files
diff -r ef4854cf2a711c7adcd68c77ab39e48f85a6bad9 -r d77b2ec2d03b55dd733571d591133639f2eac1ad yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -28,6 +28,7 @@
add_pygrids, \
find_node, \
kd_is_leaf, \
+ set_dirty, \
depth_traverse, \
depth_first_touch, \
kd_traverse, \
@@ -165,7 +166,6 @@
self.brick_dimensions = []
self.sdx = ds.index.get_smallest_dx()
- self.regenerate_data = True
self._initialized = False
try:
self._id_offset = ds.index.grids[0]._id_offset
@@ -183,9 +183,10 @@
def set_fields(self, fields, log_fields, no_ghost, force=False):
new_fields = self.data_source._determine_fields(fields)
- self.regenerate_data = self.fields is None or \
- len(self.fields) != len(new_fields) or \
- self.fields != new_fields or force
+ regenerate_data = self.fields is None or \
+ len(self.fields) != len(new_fields) or \
+ self.fields != new_fields or force
+ set_dirty(self.tree.trunk, regenerate_data)
self.fields = new_fields
if self.log_fields is not None:
@@ -283,7 +284,7 @@
return scatter_image(self.comm, owners[1], image)
def get_brick_data(self, node):
- if node.data is not None and not self.regenerate_data:
+ if node.data is not None and not node.dirty:
return node.data
grid = self.ds.index.grids[node.grid - self._id_offset]
dds = grid.dds.ndarray_view()
@@ -296,7 +297,7 @@
assert(np.all(grid.LeftEdge <= nle))
assert(np.all(grid.RightEdge >= nre))
- if grid in self.current_saved_grids and not self.regenerate_data:
+ if grid in self.current_saved_grids and not node.dirty:
dds = self.current_vcds[self.current_saved_grids.index(grid)]
else:
dds = []
@@ -322,6 +323,7 @@
nre.copy(),
dims.astype('int64'))
node.data = brick
+ node.dirty = False
if not self._initialized:
self.brick_dimensions.append(dims)
return brick
diff -r ef4854cf2a711c7adcd68c77ab39e48f85a6bad9 -r d77b2ec2d03b55dd733571d591133639f2eac1ad yt/utilities/lib/amr_kdtools.pxd
--- a/yt/utilities/lib/amr_kdtools.pxd
+++ b/yt/utilities/lib/amr_kdtools.pxd
@@ -26,6 +26,7 @@
cdef public Node right
cdef public Node parent
cdef public int grid
+ cdef public bint dirty
cdef public np.int64_t node_id
cdef public np.int64_t node_ind
cdef np.float64_t left_edge[3]
diff -r ef4854cf2a711c7adcd68c77ab39e48f85a6bad9 -r d77b2ec2d03b55dd733571d591133639f2eac1ad yt/utilities/lib/amr_kdtools.pyx
--- a/yt/utilities/lib/amr_kdtools.pyx
+++ b/yt/utilities/lib/amr_kdtools.pyx
@@ -38,6 +38,7 @@
np.ndarray[np.float64_t, ndim=1] right_edge,
int grid,
np.int64_t node_id):
+ self.dirty = False
self.left = left
self.right = right
self.parent = parent
@@ -49,6 +50,7 @@
self.node_id = node_id
self.split == NULL
+
def print_me(self):
print 'Node %i' % self.node_id
print '\t le: %e %e %e' % (self.left_edge[0], self.left_edge[1],
@@ -135,6 +137,10 @@
else:
return 0
+def set_dirty(Node trunk, bint state):
+ for node in depth_traverse(trunk):
+ node.dirty = state
+
def kd_traverse(Node trunk, viewpoint=None):
if viewpoint is None:
for node in depth_traverse(trunk):
https://bitbucket.org/yt_analysis/yt/commits/57d8b4c9f466/
Changeset: 57d8b4c9f466
Branch: yt
User: atmyers
Date: 2016-03-04 02:16:31+00:00
Summary: changing this so I don't break the interactive rendering
Affected #: 1 file
diff -r ef4854cf2a711c7adcd68c77ab39e48f85a6bad9 -r 57d8b4c9f466a475a4e3e24021f3f0473d4c5b4a yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -188,7 +188,7 @@
self.fields != new_fields or force
self.fields = new_fields
- if self.log_fields is not None:
+ if self.log_fields is not None and not self.regenerate_data:
flip_log = map(operator.ne, self.log_fields, log_fields)
else:
flip_log = [False] * len(log_fields)
@@ -198,6 +198,7 @@
del self.bricks, self.brick_dimensions
self.brick_dimensions = []
bricks = []
+
for b in self.traverse():
map(_apply_log, b.my_data, flip_log, log_fields)
bricks.append(b)
@@ -214,6 +215,8 @@
def traverse(self, viewpoint=None):
for node in kd_traverse(self.tree.trunk, viewpoint=viewpoint):
yield self.get_brick_data(node)
+ if self.regenerate_data:
+ self.regenerate_data = False
def slice_traverse(self, viewpoint = None):
if not hasattr(self.ds.index, "grid"):
https://bitbucket.org/yt_analysis/yt/commits/9a4567663559/
Changeset: 9a4567663559
Branch: yt
User: atmyers
Date: 2016-03-04 03:08:10+00:00
Summary: reset flip log if regenerating.
Affected #: 1 file
diff -r d77b2ec2d03b55dd733571d591133639f2eac1ad -r 9a456766355994ce5d8e357a7e671ba63f490585 yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -189,7 +189,7 @@
set_dirty(self.tree.trunk, regenerate_data)
self.fields = new_fields
- if self.log_fields is not None:
+ if self.log_fields is not None and not regenerate_data:
flip_log = map(operator.ne, self.log_fields, log_fields)
else:
flip_log = [False] * len(log_fields)
https://bitbucket.org/yt_analysis/yt/commits/6805cd9825c9/
Changeset: 6805cd9825c9
Branch: yt
User: atmyers
Date: 2016-03-04 03:10:26+00:00
Summary: merging
Affected #: 1 file
diff -r 9a456766355994ce5d8e357a7e671ba63f490585 -r 6805cd9825c95b17e027697ed2edd617e7ca0c2f yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -199,6 +199,7 @@
del self.bricks, self.brick_dimensions
self.brick_dimensions = []
bricks = []
+
for b in self.traverse():
map(_apply_log, b.my_data, flip_log, log_fields)
bricks.append(b)
https://bitbucket.org/yt_analysis/yt/commits/7cf5b3ebcc59/
Changeset: 7cf5b3ebcc59
Branch: yt
User: ngoldbaum
Date: 2016-03-09 17:41:48+00:00
Summary: Merged in atmyers/yt (pull request #2014)
Allow the new volume renderings to work with ProjectionTransferFunction. Closes #1103.
Affected #: 5 files
diff -r c74d00a0b3ce8086dc90a2734061a524c6ff277e -r 7cf5b3ebcc5925d1e84fea66f16fa4e598411d6c yt/utilities/amr_kdtree/amr_kdtree.py
--- a/yt/utilities/amr_kdtree/amr_kdtree.py
+++ b/yt/utilities/amr_kdtree/amr_kdtree.py
@@ -28,6 +28,7 @@
add_pygrids, \
find_node, \
kd_is_leaf, \
+ set_dirty, \
depth_traverse, \
depth_first_touch, \
kd_traverse, \
@@ -165,7 +166,6 @@
self.brick_dimensions = []
self.sdx = ds.index.get_smallest_dx()
- self.regenerate_data = True
self._initialized = False
try:
self._id_offset = ds.index.grids[0]._id_offset
@@ -181,15 +181,15 @@
min_level=min_level, max_level=max_level,
data_source=data_source)
- def set_fields(self, fields, log_fields, no_ghost):
+ def set_fields(self, fields, log_fields, no_ghost, force=False):
new_fields = self.data_source._determine_fields(fields)
- self.regenerate_data = \
- self.fields is None or \
- len(self.fields) != len(new_fields) or \
- self.fields != new_fields
+ regenerate_data = self.fields is None or \
+ len(self.fields) != len(new_fields) or \
+ self.fields != new_fields or force
+ set_dirty(self.tree.trunk, regenerate_data)
self.fields = new_fields
- if self.log_fields is not None:
+ if self.log_fields is not None and not regenerate_data:
flip_log = map(operator.ne, self.log_fields, log_fields)
else:
flip_log = [False] * len(log_fields)
@@ -199,6 +199,7 @@
del self.bricks, self.brick_dimensions
self.brick_dimensions = []
bricks = []
+
for b in self.traverse():
map(_apply_log, b.my_data, flip_log, log_fields)
bricks.append(b)
@@ -284,7 +285,7 @@
return scatter_image(self.comm, owners[1], image)
def get_brick_data(self, node):
- if node.data is not None and not self.regenerate_data:
+ if node.data is not None and not node.dirty:
return node.data
grid = self.ds.index.grids[node.grid - self._id_offset]
dds = grid.dds.ndarray_view()
@@ -297,7 +298,7 @@
assert(np.all(grid.LeftEdge <= nle))
assert(np.all(grid.RightEdge >= nre))
- if grid in self.current_saved_grids and not self.regenerate_data:
+ if grid in self.current_saved_grids and not node.dirty:
dds = self.current_vcds[self.current_saved_grids.index(grid)]
else:
dds = []
@@ -323,9 +324,9 @@
nre.copy(),
dims.astype('int64'))
node.data = brick
+ node.dirty = False
if not self._initialized:
self.brick_dimensions.append(dims)
- self.regenerate_data = False
return brick
def locate_brick(self, position):
diff -r c74d00a0b3ce8086dc90a2734061a524c6ff277e -r 7cf5b3ebcc5925d1e84fea66f16fa4e598411d6c yt/utilities/lib/amr_kdtools.pxd
--- a/yt/utilities/lib/amr_kdtools.pxd
+++ b/yt/utilities/lib/amr_kdtools.pxd
@@ -26,6 +26,7 @@
cdef public Node right
cdef public Node parent
cdef public int grid
+ cdef public bint dirty
cdef public np.int64_t node_id
cdef public np.int64_t node_ind
cdef np.float64_t left_edge[3]
diff -r c74d00a0b3ce8086dc90a2734061a524c6ff277e -r 7cf5b3ebcc5925d1e84fea66f16fa4e598411d6c yt/utilities/lib/amr_kdtools.pyx
--- a/yt/utilities/lib/amr_kdtools.pyx
+++ b/yt/utilities/lib/amr_kdtools.pyx
@@ -38,6 +38,7 @@
np.ndarray[np.float64_t, ndim=1] right_edge,
int grid,
np.int64_t node_id):
+ self.dirty = False
self.left = left
self.right = right
self.parent = parent
@@ -49,6 +50,7 @@
self.node_id = node_id
self.split == NULL
+
def print_me(self):
print 'Node %i' % self.node_id
print '\t le: %e %e %e' % (self.left_edge[0], self.left_edge[1],
@@ -135,6 +137,10 @@
else:
return 0
+def set_dirty(Node trunk, bint state):
+ for node in depth_traverse(trunk):
+ node.dirty = state
+
def kd_traverse(Node trunk, viewpoint=None):
if viewpoint is None:
for node in depth_traverse(trunk):
diff -r c74d00a0b3ce8086dc90a2734061a524c6ff277e -r 7cf5b3ebcc5925d1e84fea66f16fa4e598411d6c yt/visualization/volume_rendering/off_axis_projection.py
--- a/yt/visualization/volume_rendering/off_axis_projection.py
+++ b/yt/visualization/volume_rendering/off_axis_projection.py
@@ -173,7 +173,7 @@
sc.add_source(vol)
- vol.set_sampler(camera)
+ vol.set_sampler(camera, interpolated=False)
assert (vol.sampler is not None)
mylog.debug("Casting rays")
diff -r c74d00a0b3ce8086dc90a2734061a524c6ff277e -r 7cf5b3ebcc5925d1e84fea66f16fa4e598411d6c yt/visualization/volume_rendering/render_source.py
--- a/yt/visualization/volume_rendering/render_source.py
+++ b/yt/visualization/volume_rendering/render_source.py
@@ -20,7 +20,8 @@
from .transfer_functions import TransferFunction, \
ProjectionTransferFunction, ColorTransferFunction
from .utils import new_volume_render_sampler, data_source_or_all, \
- get_corners, new_projection_sampler, new_mesh_sampler
+ get_corners, new_projection_sampler, new_mesh_sampler, \
+ new_interpolated_projection_sampler
from yt.visualization.image_writer import apply_colormap
from yt.data_objects.image_array import ImageArray
from .zbuffer_array import ZBuffer
@@ -160,6 +161,8 @@
raise RuntimeError("transfer_function not of correct type")
if isinstance(transfer_function, ProjectionTransferFunction):
self.sampler_type = 'projection'
+ self.volume.set_fields([self.field], log_fields=[False],
+ no_ghost=True, force=True)
self.transfer_function = transfer_function
return self
@@ -217,15 +220,24 @@
self.volume.set_fields(fields, log_fields, no_ghost)
self.field = fields
- def set_sampler(self, camera):
+ def set_sampler(self, camera, interpolated=True):
"""Sets a volume render sampler
The type of sampler is determined based on the ``sampler_type`` attribute
of the VolumeSource. Currently the ``volume_render`` and ``projection``
sampler types are supported.
+
+ The 'interpolated' argument is only meaningful for projections. If True,
+ the data is first interpolated to the cell vertices, and then tri-linearly
+ interpolated to the ray sampling positions. If False, then the cell-centered
+ data is simply accumulated along the ray. Interpolation is always performed
+ for volume renderings.
+
"""
if self.sampler_type == 'volume-render':
sampler = new_volume_render_sampler(camera, self)
+ elif self.sampler_type == 'projection' and interpolated:
+ sampler = new_interpolated_projection_sampler(camera, self)
elif self.sampler_type == 'projection':
sampler = new_projection_sampler(camera, self)
else:
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