<html><body>
<p>1 new commit in yt:</p>
<p><a href="https://bitbucket.org/yt_analysis/yt/commits/8b661ffb2b26/">https://bitbucket.org/yt_analysis/yt/commits/8b661ffb2b26/</a> Changeset:   8b661ffb2b26 Branch:      yt User:        chummels Date:        2016-05-11 18:27:03+00:00 Summary:     Merged in atmyers/yt (pull request #2161)</p>
<p>[BUGFIX] Enforce periodicity in annotate_particles. Closes Issue #543. Affected #:  1 file</p>
<p>diff -r db993aae188791672893608249078d43a42b50cb -r 8b661ffb2b26c38a26c90e1c2854b9cb32bb9a34 yt/visualization/plot_modifications.py --- a/yt/visualization/plot_modifications.py +++ b/yt/visualization/plot_modifications.py @@ -27,7 +27,7 @@</p>
<pre>from yt.funcs import \
    mylog, iterable
from yt.extern.six import add_metaclass</pre>
<p>-from yt.units.yt_array import YTQuantity, YTArray +from yt.units.yt_array import YTQuantity, YTArray, uhstack</p>
<pre>from yt.visualization.image_writer import apply_colormap
from yt.utilities.lib.geometry_utils import triangle_plane_intersect
from yt.utilities.lib.pixelization_routines import \</pre>
<p>@@ -1519,21 +1519,53 @@</p>
<pre>field_x = "particle_position_%s" % axis_names[xax]
field_y = "particle_position_%s" % axis_names[yax]
pt = self.ptype</pre>
<ul><li><p>gg = ( ( reg[pt, field_x] >= x0 ) & ( reg[pt, field_x] <= x1 )</p></li>
<li><p>&   ( reg[pt, field_y] >= y0 ) & ( reg[pt, field_y] <= y1 ) )</p></li></ul>
<p>+        self.periodic_x = plot.data.ds.periodicity[xax] +        self.periodic_y = plot.data.ds.periodicity[yax] +        self.LE = plot.data.ds.domain_left_edge[xax], \ +                  plot.data.ds.domain_left_edge[yax] +        self.RE = plot.data.ds.domain_right_edge[xax], \ +                  plot.data.ds.domain_right_edge[yax] +        period_x = plot.data.ds.domain_width[xax] +        period_y = plot.data.ds.domain_width[yax] +        particle_x, particle_y = self._enforce_periodic(reg[pt, field_x], +                                                        reg[pt, field_y], +                                                        x0, x1, period_x, +                                                        y0, y1, period_y) +        gg = ( ( particle_x >= x0 ) & ( particle_x <= x1 ) +           &   ( particle_y >= y0 ) & ( particle_y <= y1 ) )</p>
<pre>         if self.minimum_mass is not None:
gg &= (reg[pt, "particle_mass"] >= self.minimum_mass)
if gg.sum() == 0: return
         plot._axes.hold(True)
         px, py = self.convert_to_plot(plot,</pre>
<ul><li><p>[np.array(reg[pt, field_x][gg][::self.stride]),</p></li>
<li><p>np.array(reg[pt, field_y][gg][::self.stride])])</p></li></ul>
<p>+                    [np.array(particle_x[gg][::self.stride]), +                     np.array(particle_y[gg][::self.stride])])</p>
<pre>        plot._axes.scatter(px, py, edgecolors='None', marker=self.marker,
                           s=self.p_size, c=self.color,alpha=self.alpha)
        plot._axes.set_xlim(xx0,xx1)
        plot._axes.set_ylim(yy0,yy1)
        plot._axes.hold(False)
</pre>
<p>+    def _enforce_periodic(self, +                          particle_x, +                          particle_y, +                          x0, x1, period_x, +                          y0, y1, period_y): +        #  duplicate particles if periodic in that direction AND if the plot +        #  extends outside the domain boundaries. +        if self.periodic_x and x0 > self.LE[0]: +            particle_x = uhstack((particle_x, particle_x + period_x)) +            particle_y = uhstack((particle_y, particle_y)) +        if self.periodic_x and x1 < self.RE[0]: +            particle_x = uhstack((particle_x, particle_x – period_x)) +            particle_y = uhstack((particle_y, particle_y)) +        if self.periodic_y and y0 > self.LE[1]: +            particle_y = uhstack((particle_y, particle_y + period_y)) +            particle_x = uhstack((particle_x, particle_x)) +        if self.periodic_y and y1 < self.RE[1]: +            particle_y = uhstack((particle_y, particle_y – period_y)) +            particle_x = uhstack((particle_x, particle_x)) +        return particle_x, particle_y</p>
<pre>def _get_region(self, xlim, ylim, axis, data):
    LE, RE = [None]*3, [None]*3</pre>
<p>Repository URL: <a href="https://bitbucket.org/yt_analysis/yt/">https://bitbucket.org/yt_analysis/yt/</a></p>
<p>—</p>
<p>This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.</p>

<img src="http://link.bitbucket.org/wf/open?upn=ll4ctv0L-2ByeRZFC1LslHcg6aJmnQ70VruLbmeLQr27B4K-2B-2BFbOGTEPpTzWV9a2zm9GVdl3QG-2FeyAHxNlZIvEsXpFo1oJw6hZo3Aj6ahil8hVn3Wq1vHUiLlG02at6zsd4OpgvgRkTVQmAW4aXCmfwlHzecf5QLrumk-2FqrPT7edY2EMwj7z2c-2FKl8aagiVaJmpevC3WY8NTDqI8VNwYcozJRutQBXNpHnAzoFi3ybGWA-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
</body></html>