[yt-users] Nearest neighbours
Elizabeth Tasker
taskere at mcmaster.ca
Wed Sep 14 14:30:57 PDT 2011
Wow -- that's fantastic. I'll give it a test run this week.
Thanks so much, Sam!
Elizabeth
Sam Skillman wrote:
> Hi Elizabeth,
>
> Since conferences are good times for very short projects, I've written
> up a go at the nearest neighbors. See the commit message for a bit
> more info.
>
> https://bitbucket.org/yt_analysis/yt/changeset/dfb88152f5e0
>
> There are two functions. One that takes a position and will return
> the neighbor cells around that position. The other takes the grid
> object and cell indices and does the same thing.
>
> They are
> AMRKDTree.get_nearest_neighbors_from_position
> and
> AMRKDTree.get_nearest_neighbors
>
> Check out the pastebin for an example:
> http://paste.yt-project.org/show/1803/
>
> Let me know if it works/if it is insanely slow/how it could be improved!
>
> Best,
> Sam
>
> On Tue, Sep 13, 2011 at 5:35 PM, Elizabeth Tasker <taskere at mcmaster.ca
> <mailto:taskere at mcmaster.ca>> wrote:
>
> Hi Matt,
>
> I actually use that to get my initial sweep of objects and it
> works great. This next step through it more complex than just a
> contour, since it's not obvious what my boundary line will be: it
> depends on the environment of each object which gives saddle
> points in the potential field. (This is why this program is taking
> me a while. *One day* it will be complete and work and I will win
> at life. Yes.)
>
> I'm good with covering grids, honest. I was just seeing if I could
> be smarter easily.
>
> Elizabeth
>
>
>
>
> Matthew Turk wrote:
>
> Hi Elizabeth,
>
> We have an "extract_connected_sets" routine that may work for
> what you
> are doing. This is what the clump finder is built on. You
> can supply
> it a threshold, and it will conduct FOF on the cells, returning
> objects (and boundary values) that satisfy it. Unfortunately,
> right
> now it only works with threshholding in one dimension. So,
> what you
> can do is define a field that returns 1/0 for whether it should be
> included, and then perform the contouring with
> extract_connected_sets
> on your initial data object.
>
> -Matt
>
> On Tue, Sep 13, 2011 at 5:22 PM, Elizabeth Tasker
> <taskere at mcmaster.ca <mailto:taskere at mcmaster.ca>> wrote:
>
>
> Hi Matt and Sam,
>
> I just want to do a friends-of-friends scheme where I add
> cells to an
> ordered list if their properties (density, Potential field
> etc) satisfy my
> criteria.
>
> Unfortunately, that does mean that I might walk completely
> off one grid,
> ghost zones and all, and onto another one, so I think what
> Matt suggests
> below only buys me a few extra steps.
>
> Sam, your routine probably was what I was thinking of, but
> my question
> wasn't supposed to cause extra work! It was more a "does
> this exist and
> everyone is using it apart from me?" query. I'll keep with
> extracted grids
> and then if I run into issues or this later morphs into a
> useful analysis
> routine that people want to use or parallelise, perhaps
> we'll revisit the
> question of using trees.
>
> Thanks again,
>
> Elizabeth
>
> Matthew Turk wrote:
>
>
> Elizabeth,
>
> If you request ghost zones you can do this. In
> particular, requested
> unsmoothed ghost zones will ensure no interpolation
> occurs. You can
> do this either by yourself, grid by grid with
> grid_obj.retrieve_ghost_zones(...) or you can use
> ValidateSpatial in a
> field definition.
>
> It might help if you shared what kind of operation you
> want to do once
> you have the 26. If you have the index of a cell, you
> can just
> access:
>
> grid[field][index_i+1, index_j+1, index_k+1]
>
> and do the +/- and 0/1 modifications.
>
> -Matt
>
> On Tue, Sep 13, 2011 at 5:04 PM, Elizabeth Tasker
> <taskere at mcmaster.ca <mailto:taskere at mcmaster.ca>>
> wrote:
>
>
>
> Hi Stephen,
>
> Honestly, I was just hoping there was some
> magically pre-programmed way
> to
> grab the 26 most refined neighbours of a cell,
> regardless of which grid
> they
> were on or level that happened to be. Mapping to
> an extracted region is
> no
> hassle, I was just checking there wasn't a smart,
> quick way of doing this
> already.
>
> Thanks for the info!
>
> Elizabeth
>
>
>
> Stephen Skory wrote:
>
>
>
> Elizabeth,
>
>
>
>
>
> So ... how hard are we talking? :)
>
>
>
>
> The thing is, in all honesty the kdtree we're
> using in yt (in
> parallelHF and in a few other places) is not
> very convenient. It's
> written in fortran, so the array orderings are
> backwards from the rest
> of python (which is C based). It's also
> confusing to use, it has a
> weird wrapper to access the functions that
> isn't very easy to
> understand. The only reason we're using it is
> in my tests I found this
> kdtree implementation to be significantly
> faster than the alternatives
> out there.
>
> Perhaps if I knew a bit more about what you
> wanted to do I could help
> you come up with a solution that avoids the
> kdtree. Are you interested
> in only the nearest 6 touching cells to a
> cell? Or do you want to look
> at the edges and the corners? Farther out? Do
> you care about
> periodicity? You mentioned looking at grids of
> coarser resolution, do
> you still think you'd like to have neighbor
> cells returned from a
> lower resolution grid?
>
>
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
More information about the yt-users
mailing list