[Yt-svn] yt: 14 new changesets
hg at spacepope.org
hg at spacepope.org
Mon May 10 22:58:48 PDT 2010
hg Repository: yt
details: yt/rev/c3f8cc81e2a9
changeset: 1649:c3f8cc81e2a9
user: sskory
date:
Thu Apr 29 11:21:14 2010 -0700
description:
[svn r1708] Making the particle-based halo virial mass calculation more tolerant of unusual corner cases.
hg Repository: yt
details: yt/rev/86f6aa3a0002
changeset: 1650:86f6aa3a0002
user: mturk
date:
Thu Apr 29 12:10:40 2010 -0700
description:
[svn r1709] Adding the non-local image panner
hg Repository: yt
details: yt/rev/1f35ab52aff4
changeset: 1651:1f35ab52aff4
user: mturk
date:
Thu Apr 29 12:11:51 2010 -0700
description:
[svn r1710] Missed fixing this syntax error when fixing the hg errors
hg Repository: yt
details: yt/rev/ca2adfd3a6d4
changeset: 1652:ca2adfd3a6d4
user: sskory
date:
Thu Apr 29 16:28:22 2010 -0700
description:
[svn r1711] Halo maximum density location fix.
hg Repository: yt
details: yt/rev/e89f2ff0a643
changeset: 1653:e89f2ff0a643
user: skillman
date:
Thu Apr 29 17:44:38 2010 -0700
description:
[svn r1712] minmaxtick had a backwards if statement that caused log_fields to not allow the minmaxtick=True parameter. Also needed to update how the ticker worked to set the ticks correctly.
hg Repository: yt
details: yt/rev/b90cc79fa072
changeset: 1654:b90cc79fa072
user: sskory
date:
Fri Apr 30 11:03:12 2010 -0700
description:
[svn r1713] A modification to the Merger Tree that substaintailly speeds up the database writing steps.
hg Repository: yt
details: yt/rev/02a53234909b
changeset: 1655:02a53234909b
user: sskory
date:
Sat May 01 09:19:02 2010 -0700
description:
[svn r1714] Prevent divide by zero when there is exactly one halo in a snapshot.
hg Repository: yt
details: yt/rev/a07813da75ec
changeset: 1656:a07813da75ec
user: mturk
date:
Thu May 06 16:23:07 2010 -0700
description:
[svn r1715] Use curl instead of wget
hg Repository: yt
details: yt/rev/ec7de6f30063
changeset: 1657:ec7de6f30063
user: Matthew Turk <matthewturk at gmail.com>
date:
Thu May 06 16:47:57 2010 -0700
description:
Merging from trunk
hg Repository: yt
details: yt/rev/450475d5a473
changeset: 1658:450475d5a473
user: Matthew Turk <matthewturk at gmail.com>
date:
Thu May 06 20:32:51 2010 -0700
description:
Fixing Chombo
hg Repository: yt
details: yt/rev/a7ea426bdd64
changeset: 1659:a7ea426bdd64
user: mturk
date:
Thu May 06 16:51:19 2010 -0700
description:
[svn r1716] Backport from hg:
* Changing fortran kD-tree warning back to being mostly silent unless called upon.
* Adding some chaco colormaps.
* Import some structure function stuff into mods.
hg Repository: yt
details: yt/rev/25a717e2ba3f
changeset: 1660:25a717e2ba3f
user: Matthew Turk <matthewturk at gmail.com>
date:
Thu May 06 20:33:49 2010 -0700
description:
Merging from trunk
hg Repository: yt
details: yt/rev/d4fbd7acde24
changeset: 1661:d4fbd7acde24
user: Matthew Turk <matthewturk at gmail.com>
date:
Mon May 10 22:57:14 2010 -0700
description:
Adding initial Octree code. Uses a lot from Quadtree, might merge them
someday.
hg Repository: yt
details: yt/rev/92c6af9b8383
changeset: 1662:92c6af9b8383
user: Matthew Turk <matthewturk at gmail.com>
date:
Mon May 10 22:57:55 2010 -0700
description:
Merge
diffstat:
.hgignore | 3 +
doc/install_script_osx106.sh | 4 +-
scripts/fbranch | 5 +-
scripts/fbury | 5 +-
scripts/fdigup | 5 +-
scripts/fido | 5 +-
scripts/fimport | 5 +-
yt/_amr_utils/Octree.pyx | 280 +++
yt/_amr_utils/QuadTree.pyx | 257 ++
yt/amr_utils.c | 2451 +++++++++++---------------
yt/amr_utils.pyx | 1 +
yt/arraytypes.py | 11 +
yt/extensions/DualEPS.py | 696 +++++++
yt/extensions/MergerTree.py | 106 +-
yt/extensions/image_panner/__init__.py | 2 +-
yt/extensions/image_panner/pan_and_scan_widget.py | 37 +-
yt/extensions/image_panner/vm_panner.py | 62 +-
yt/extensions/volume_rendering/multi_texture.py | 302 +++
yt/fido/share_data.py | 83 +
yt/lagos/BaseDataTypes.py | 29 +-
yt/lagos/BaseGridType.py | 22 +-
yt/lagos/Cosmology.py | 6 +
yt/lagos/EnzoFields.py | 2 +-
yt/lagos/HaloFinding.py | 149 +-
yt/lagos/HierarchyType.py | 20 +-
yt/lagos/OutputTypes.py | 5 +
yt/lagos/StructureFunctionGenerator.py | 6 +-
yt/lagos/setup.py | 4 +-
yt/mods.py | 2 +-
yt/raven/PlotTypes.py | 4 +-
yt/raven/_MPL.c | 2 +-
yt/raven/__init__.py | 2 +-
yt/reason/plot_editors.py | 10 +-
yt/reason/reason_v2.py | 5 +-
yt/reason/tvtk_interface.py | 5 +-
35 files changed, 3026 insertions(+), 1567 deletions(-)
diffs (truncated from 11985 to 300 lines):
diff -r 780ddf17eec3 -r 92c6af9b8383 .hgignore
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore Mon May 10 22:57:55 2010 -0700
@@ -0,0 +1,3 @@
+syntax: glob
+*.pyc
+.*.swp
diff -r 780ddf17eec3 -r 92c6af9b8383 doc/install_script_osx106.sh
--- a/doc/install_script_osx106.sh Thu Apr 29 08:15:47 2010 -0700
+++ b/doc/install_script_osx106.sh Mon May 10 22:57:55 2010 -0700
@@ -64,8 +64,8 @@
{
echo "Downloading $1 from yt.enzotools.org"
[ -e $1 ] && return
- wget -nv "http://yt.enzotools.org/dependencies/osx/$1" || do_exit
- wget -nv "http://yt.enzotools.org/dependencies/osx/$1.md5" || do_exit
+ curl "http://yt.enzotools.org/dependencies/osx/$1" -o $1 || do_exit
+ curl "http://yt.enzotools.org/dependencies/osx/$1.md5" -o $1.md5 || do_exit
( which md5sum &> /dev/null ) || return # return if we don't have md5sum
( md5sum -c $1.md5 2>&1 ) 1>> ${LOG_FILE} || do_exit
}
diff -r 780ddf17eec3 -r 92c6af9b8383 scripts/fbranch
--- a/scripts/fbranch Thu Apr 29 08:15:47 2010 -0700
+++ b/scripts/fbranch Mon May 10 22:57:55 2010 -0700
@@ -1,1 +1,4 @@
-basic.py
\ No newline at end of file
+#!python2.5
+import yt.fido
+
+yt.fido.runAction()
diff -r 780ddf17eec3 -r 92c6af9b8383 scripts/fbury
--- a/scripts/fbury Thu Apr 29 08:15:47 2010 -0700
+++ b/scripts/fbury Mon May 10 22:57:55 2010 -0700
@@ -1,1 +1,4 @@
-basic.py
\ No newline at end of file
+#!python2.5
+import yt.fido
+
+yt.fido.runAction()
diff -r 780ddf17eec3 -r 92c6af9b8383 scripts/fdigup
--- a/scripts/fdigup Thu Apr 29 08:15:47 2010 -0700
+++ b/scripts/fdigup Mon May 10 22:57:55 2010 -0700
@@ -1,1 +1,4 @@
-basic.py
\ No newline at end of file
+#!python2.5
+import yt.fido
+
+yt.fido.runAction()
diff -r 780ddf17eec3 -r 92c6af9b8383 scripts/fido
--- a/scripts/fido Thu Apr 29 08:15:47 2010 -0700
+++ b/scripts/fido Mon May 10 22:57:55 2010 -0700
@@ -1,1 +1,4 @@
-basic.py
\ No newline at end of file
+#!python2.5
+from yt.mods import *
+
+fido.runAction()
diff -r 780ddf17eec3 -r 92c6af9b8383 scripts/fimport
--- a/scripts/fimport Thu Apr 29 08:15:47 2010 -0700
+++ b/scripts/fimport Mon May 10 22:57:55 2010 -0700
@@ -1,1 +1,4 @@
-basic.py
\ No newline at end of file
+#!python2.5
+from yt.mods import *
+
+fido.runAction()
diff -r 780ddf17eec3 -r 92c6af9b8383 yt/_amr_utils/Octree.pyx
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/yt/_amr_utils/Octree.pyx Mon May 10 22:57:55 2010 -0700
@@ -0,0 +1,280 @@
+"""
+A refine-by-two AMR-specific octree
+
+Author: Matthew Turk <matthewturk at gmail.com>
+Affiliation: UCSD
+Homepage: http://yt.enzotools.org/
+License:
+ Copyright (C) 2010 Matthew Turk. All Rights Reserved.
+
+ This file is part of yt.
+
+ yt is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+
+
+import numpy as np
+cimport numpy as np
+# Double up here for def'd functions
+cimport numpy as cnp
+cimport cython
+
+from stdlib cimport malloc, free, abs
+
+cdef extern from "stdlib.h":
+ # NOTE that size_t might not be int
+ void *alloca(int)
+
+cdef struct OctreeNode:
+ np.float64_t *val
+ np.float64_t weight_val
+ np.int64_t pos[3]
+ int level
+ int nvals
+ OctreeNode *children[2][2][2]
+
+cdef void OTN_add_value(OctreeNode *self,
+ np.float64_t *val, np.float64_t weight_val):
+ cdef int i
+ for i in range(self.nvals):
+ self.val[i] += val[i]
+ self.weight_val += weight_val
+
+cdef void OTN_refine(OctreeNode *self):
+ cdef int i, j, i1, j1
+ cdef np.int64_t npos[3]
+ cdef OctreeNode *node
+ for i in range(2):
+ npos[0] = self.pos[0] * 2 + i
+ for j in range(2):
+ npos[1] = self.pos[1] * 2 + j
+ # We have to be careful with allocation...
+ for k in range(2):
+ npos[2] = self.pos[2] * 2 + k
+ self.children[i][j][k] = OTN_initialize(
+ npos,
+ self.nvals, self.val, self.weight_val,
+ self.level + 1)
+ for i in range(self.nvals): self.val[i] = 0.0
+ self.weight_val = 0.0
+
+cdef OctreeNode *OTN_initialize(np.int64_t pos[3], int nvals,
+ np.float64_t *val, np.float64_t weight_val,
+ int level):
+ cdef OctreeNode *node
+ cdef int i, j
+ node = <OctreeNode *> malloc(sizeof(OctreeNode))
+ node.pos[0] = pos[0]
+ node.pos[1] = pos[1]
+ node.pos[2] = pos[2]
+ node.nvals = nvals
+ node.val = <np.float64_t *> malloc(
+ nvals * sizeof(np.float64_t))
+ for i in range(nvals):
+ node.val[i] = val[i]
+ node.weight_val = weight_val
+ for i in range(2):
+ for j in range(2):
+ for k in range(2):
+ node.children[i][j][k] = NULL
+ node.level = level
+ return node
+
+cdef void OTN_free(OctreeNode *node):
+ cdef int i, j
+ for i in range(2):
+ for j in range(2):
+ for k in range(2):
+ if node.children[i][j][k] == NULL: continue
+ OTN_free(node.children[i][j][k])
+ free(node.val)
+ free(node)
+
+cdef class Octree:
+ cdef int nvals
+ cdef np.int64_t po2[80]
+ cdef OctreeNode ****root_nodes
+ cdef np.int64_t top_grid_dims[3]
+
+ def __cinit__(self, np.ndarray[np.int64_t, ndim=1] top_grid_dims,
+ int nvals):
+ cdef int i, j
+ cdef OctreeNode *node
+ cdef np.int64_t pos[3]
+ cdef np.float64_t *vals = <np.float64_t *> alloca(
+ sizeof(np.float64_t)*nvals)
+ cdef np.float64_t weight_val = 0.0
+ self.nvals = nvals
+ for i in range(nvals): vals[i] = 0.0
+
+ self.top_grid_dims[0] = top_grid_dims[0]
+ self.top_grid_dims[1] = top_grid_dims[1]
+ self.top_grid_dims[2] = top_grid_dims[2]
+
+ # This wouldn't be necessary if we did bitshifting...
+ for i in range(80):
+ self.po2[i] = 2**i
+ # Cython doesn't seem to like sizeof(OctreeNode ***)
+ self.root_nodes = <OctreeNode ****> \
+ malloc(sizeof(void*) * top_grid_dims[0])
+
+ # We initialize our root values to 0.0.
+ for i in range(top_grid_dims[0]):
+ pos[0] = i
+ self.root_nodes[i] = <OctreeNode ***> \
+ malloc(sizeof(OctreeNode **) * top_grid_dims[1])
+ for j in range(top_grid_dims[1]):
+ pos[1] = j
+ self.root_nodes[i][j] = <OctreeNode **> \
+ malloc(sizeof(OctreeNode *) * top_grid_dims[1])
+ for k in range(top_grid_dims[2]):
+ pos[2] = k
+ self.root_nodes[i][j][k] = OTN_initialize(
+ pos, nvals, vals, weight_val, 0)
+
+ cdef void add_to_position(self,
+ int level, np.int64_t pos[3],
+ np.float64_t *val,
+ np.float64_t weight_val):
+ cdef int i, j
+ cdef OctreeNode *node
+ node = self.find_on_root_level(pos, level)
+ cdef np.int64_t fac
+ for L in range(level):
+ if node.children[0][0][0] == NULL:
+ OTN_refine(node)
+ # Maybe we should use bitwise operators?
+ fac = self.po2[level - L - 1]
+ i = (pos[0] >= fac*(2*node.pos[0]+1))
+ j = (pos[1] >= fac*(2*node.pos[1]+1))
+ k = (pos[2] >= fac*(2*node.pos[2]+1))
+ node = node.children[i][j][k]
+ OTN_add_value(node, val, weight_val)
+
+ cdef OctreeNode *find_on_root_level(self, np.int64_t pos[3], int level):
+ # We need this because the root level won't just have four children
+ # So we find on the root level, then we traverse the tree.
+ cdef np.int64_t i, j
+ i = <np.int64_t> (pos[0] / self.po2[level])
+ j = <np.int64_t> (pos[1] / self.po2[level])
+ k = <np.int64_t> (pos[2] / self.po2[level])
+ return self.root_nodes[i][j][k]
+
+
+ @cython.boundscheck(False)
+ @cython.wraparound(False)
+ def add_array_to_tree(self, int level,
+ np.ndarray[np.int64_t, ndim=1] pxs,
+ np.ndarray[np.int64_t, ndim=1] pys,
+ np.ndarray[np.int64_t, ndim=1] pzs,
+ np.ndarray[np.float64_t, ndim=2] pvals,
+ np.ndarray[np.float64_t, ndim=1] pweight_vals):
+ cdef int np = pxs.shape[0]
+ cdef int p
+ cdef cnp.float64_t *vals
+ cdef cnp.float64_t *data = <cnp.float64_t *> pvals.data
+ cdef cnp.int64_t pos[3]
+ for p in range(np):
+ vals = data + self.nvals*p
+ pos[0] = pxs[p]
+ pos[1] = pys[p]
+ pos[2] = pzs[p]
+ self.add_to_position(level, pos, vals, pweight_vals[p])
+
+ def add_grid_to_tree(self, int level,
+ np.ndarray[np.int64_t, ndim=1] start_index,
+ np.ndarray[np.float64_t, ndim=2] pvals,
+ np.ndarray[np.float64_t, ndim=2] wvals,
+ np.ndarray[np.int32_t, ndim=2] cm):
+ pass
+
+ @cython.boundscheck(False)
+ @cython.wraparound(False)
+ def get_all_from_level(self, int level, int count_only = 0):
+ cdef int i, j
+ cdef int total = 0
+ vals = []
+ for i in range(self.top_grid_dims[0]):
+ for j in range(self.top_grid_dims[1]):
+ for k in range(self.top_grid_dims[2]):
+ total += self.count_at_level(self.root_nodes[i][j][k], level)
+ if count_only: return total
+ # Allocate our array
+ cdef np.ndarray[np.int64_t, ndim=2] npos
+ cdef np.ndarray[np.float64_t, ndim=2] nvals
+ cdef np.ndarray[np.float64_t, ndim=1] nwvals
+ npos = np.zeros( (total, 2), dtype='int64')
+ nvals = np.zeros( (total, self.nvals), dtype='float64')
+ nwvals = np.zeros( total, dtype='float64')
+ cdef np.int64_t curpos = 0
+ cdef np.int64_t *pdata = <np.int64_t *> npos.data
+ cdef np.float64_t *vdata = <np.float64_t *> nvals.data
+ cdef np.float64_t *wdata = <np.float64_t *> nwvals.data
+ for i in range(self.top_grid_dims[0]):
+ for j in range(self.top_grid_dims[1]):
More information about the yt-svn
mailing list