[Yt-svn] yt: 10 new changesets
hg at spacepope.org
hg at spacepope.org
Wed Apr 21 06:44:19 PDT 2010
hg Repository: yt
details: yt/rev/c4f79b37944c
changeset: 1570:c4f79b37944c
user: Matthew Turk <matthewturk at gmail.com>
date:
Tue Apr 20 14:34:40 2010 -0400
description:
Pre-pending the sorting field to the list of fields to get in AMR rays
hg Repository: yt
details: yt/rev/78219124cc0e
changeset: 1571:78219124cc0e
user: Matthew Turk <matthewturk at gmail.com>
date:
Tue Apr 20 15:28:39 2010 -0700
description:
Merging in image writing
hg Repository: yt
details: yt/rev/c0fceffda137
changeset: 1572:c0fceffda137
user: Matthew Turk <matthewturk at gmail.com>
date:
Tue Apr 20 18:11:55 2010 -0700
description:
Adding better bounds detection for infs and nans to the image writer
hg Repository: yt
details: yt/rev/54cdd56fb83c
changeset: 1573:54cdd56fb83c
user: Matthew Turk <matthewturk at gmail.com>
date:
Tue Apr 20 18:12:16 2010 -0700
description:
Merging from yt
hg Repository: yt
details: yt/rev/a4e2e55dcd88
changeset: 1574:a4e2e55dcd88
user: mturk
date:
Tue Apr 13 17:13:11 2010 -0400
description:
[svn r1690] Adding preliminary, currently-off GUI toolkit installation methods to the OSX
10.6 script.
hg Repository: yt
details: yt/rev/068616dba922
changeset: 1575:068616dba922
user: jwise
date:
Wed Apr 14 07:21:17 2010 -0700
description:
[svn r1691] Specifying the qmake from the installed Qt4 package for the PyQt build.
hg Repository: yt
details: yt/rev/351362604508
changeset: 1576:351362604508
user: jwise
date:
Wed Apr 14 07:22:29 2010 -0700
description:
[svn r1692] People don't need my paths! Removing them.
hg Repository: yt
details: yt/rev/54b40176db2a
changeset: 1577:54b40176db2a
user: mturk
date:
Thu Apr 15 08:32:10 2010 -0700
description:
[svn r1693] Adding wxpython gdi wrap patch. Thanks to Michael Kuhlen for the heads up!
hg Repository: yt
details: yt/rev/2e36a35b85cf
changeset: 1578:2e36a35b85cf
user: Matthew Turk <matthewturk at gmail.com>
date:
Wed Apr 21 06:43:42 2010 -0700
description:
Merging
hg Repository: yt
details: yt/rev/8190256cc360
changeset: 1579:8190256cc360
user: Matthew Turk <matthewturk at gmail.com>
date:
Wed Apr 21 06:44:11 2010 -0700
description:
Merging from trunk
diffstat:
doc/install_script.sh | 2 +
doc/install_script_osx106.sh | 77 ++++++++++++++++++++++++++++++++++++++-
yt/extensions/EnzoSimulation.py | 44 +++++++++++++++++++++-
yt/extensions/image_writer.py | 4 +-
yt/lagos/BaseDataTypes.py | 2 +-
yt/lagos/StructureFunctionGenerator.py | 76 ++++++++++++++++++++-----------------
6 files changed, 166 insertions(+), 39 deletions(-)
diffs (truncated from 334 to 300 lines):
diff -r d0f87ad5ac49 -r 8190256cc360 doc/install_script.sh
--- a/doc/install_script.sh Thu Apr 15 13:39:49 2010 -0400
+++ b/doc/install_script.sh Wed Apr 21 06:44:11 2010 -0700
@@ -330,6 +330,8 @@
[ ! -e wxPython-src-2.8.10.1 ] && tar xfj wxPython-src-2.8.10.1.tar.bz2
cd wxPython-src-2.8.10.1
+ get_enzotools wxpython28101_gdiwrap.diff
+ patch -p0 < wxpython28101_gdiwrap.diff
( ./configure --prefix=${DEST_DIR}/ --with-opengl 2>&1 ) 1>> ${LOG_FILE} || do_exit
( make install 2>&1 ) 1>> ${LOG_FILE} || do_exit
cd contrib
diff -r d0f87ad5ac49 -r 8190256cc360 doc/install_script_osx106.sh
--- a/doc/install_script_osx106.sh Thu Apr 15 13:39:49 2010 -0400
+++ b/doc/install_script_osx106.sh Wed Apr 21 06:44:11 2010 -0700
@@ -22,8 +22,9 @@
HDF5_DIR=
INST_HG=1 # Install Mercurial or not?
+INST_GUI=1 # Install the necessary bits for the GUI?
# If you've got YT some other place, set this to point to it.
-YT_DIR=""
+YT_DIR=
#------------------------------------------------------------------------------#
# #
@@ -216,6 +217,70 @@
( sudo ${PY_DIR}/bin/pip install -U mercurial 2>&1 ) 1>> ${LOG_FILE} || do_exit
fi
+
+if [ $INST_GUI -eq 1 ]
+then
+ # This is a long, long list.
+ get_enzotools qt-mac-cocoa-opensource-4.6.2.dmg
+ get_enzotools VTK-5.5.0-Darwin.dmg
+ get_enzotools VTK-5.5-Darwin-Python.dmg
+ get_enzotools ETS-20100316.tar.gz
+ get_enzotools sip-4.9.1.tar.gz
+ get_enzotools PyQt-mac-gpl-4.6.1.tar.gz
+
+ # We do these in order! Hooray!
+ [ ! -e ${DEST_DIR}/src/qt_done ] && self_install \
+ qt-mac-cocoa-opensource-4.6.2.dmg
+ touch ${DEST_DIR}/src/qt_done
+
+ [ ! -e ${DEST_DIR}/src/vtk_done ] && self_install \
+ VTK-5.5.0-Darwin.dmg
+ touch ${DEST_DIR}/src/vtk_done
+
+ [ ! -e ${DEST_DIR}/src/pyvtk_done ] && self_install \
+ VTK-5.5-Darwin-Python.dmg
+ touch ${DEST_DIR}/src/pyvtk_done
+
+ if [ ! -e ${DEST_DIR}/src/sip-4.9.1/done ]
+ then
+ [ ! -e sip-4.9.1 ] && tar xvfz sip-4.9.1.tar.gz
+ echo "Installing SIP."
+ echo "You may be asked to accept a license, and this may require sudo."
+ cd sip-4.9.1
+ ( ${PY_DIR}/bin/python2.6 configure.py 0>&0 2>&1 ) 1>> ${LOG_FILE} || do_exit
+ ( make 2>&1 ) 1>> ${LOG_FILE} || do_exit
+ ( sudo make install 2>&1 ) 1>> ${LOG_FILE} || do_exit
+ touch done
+ cd ..
+ fi
+
+ if [ ! -e ${DEST_DIR}/src/PyQt-mac-gpl-4.6.1/done ]
+ then
+ [ ! -e PyQt-mac-gpl-4.6.1 ] && tar xvfz PyQt-mac-gpl-4.6.1.tar.gz
+ echo
+ echo "Installing PyQt4."
+ echo "You may be asked to accept a license, and this may require sudo."
+ echo "Once you've answered, the compilation may take a while. You could get a sandwich."
+ echo
+ cd PyQt-mac-gpl-4.6.1
+ ( ${PY_DIR}/bin/python2.6 configure.py --qmake=/usr/bin/qmake 0>&0 2>&1 ) | tee -a ${LOG_FILE} || do_exit
+ ( make 2>&1 ) 1>> ${LOG_FILE} || do_exit
+ ( sudo make install 2>&1 ) 1>> ${LOG_FILE} || do_exit
+ touch done
+ cd ..
+ fi
+
+ if [ ! -e ${DEST_DIR}/src/ets_done ]
+ then
+ echo "Installing ETS (needs sudo)"
+ tar xvfz ETS-20100316.tar.gz
+ sudo easy_install -N ETS_3.3.1/dist/*.egg
+ fi
+ touch ${DEST_DIR}/src/ets_done
+
+ echo "GUI installed successfully."
+fi
+
echo
echo
echo "========================================================================"
@@ -247,6 +312,12 @@
echo "$DEST_DIR/bin/hg"
echo
fi
+if [ $INST_GUI -eq 1 ]
+then
+ echo "The GUI toolkit dependencies have also been installed."
+ echo "You will need to add /usr/lib/vtk-5.5/ to your DYLD_LIBRARY_PATH ."
+ echo "Additionally, set ETS_TOOLKIT to 'qt4' in your environment."
+fi
echo
echo "For support, see one of the following websites:"
echo
@@ -258,3 +329,7 @@
echo " http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org"
echo
echo "========================================================================"
+echo
+echo " Everything is fine. Nothing is ruined."
+echo
+echo "========================================================================"
diff -r d0f87ad5ac49 -r 8190256cc360 yt/extensions/EnzoSimulation.py
--- a/yt/extensions/EnzoSimulation.py Thu Apr 15 13:39:49 2010 -0400
+++ b/yt/extensions/EnzoSimulation.py Wed Apr 21 06:44:11 2010 -0700
@@ -1,5 +1,6 @@
+from yt.logger import lagosLogger as mylog
import yt.lagos as lagos
-from yt.logger import lagosLogger as mylog
+import yt.funcs as funcs
import numpy as na
import os
@@ -368,8 +369,49 @@
mylog.info("create_cosmology_splice: Used %d data dumps to get from z = %f to %f." %
(len(cosmology_splice),initial_redshift,final_redshift))
+ self.allOutputs.sort(key=lambda obj: obj['time'])
return cosmology_splice
+ def get_data_by_redshift(self, redshifts, tolerance=None):
+ """
+ : param redshifts: a list of redshifts.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of redshifts.
+ """
+
+ redshifts = funcs.ensure_list(redshifts)
+ my_datasets = []
+ for redshift in redshifts:
+ self.allOutputs.sort(key=lambda obj:na.fabs(redshift - obj['redshift']))
+ if (tolerance is None or na.abs(redshift - self.allOutputs[0]['redshift']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % redshift)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
+ def get_data_by_time(self, times, tolerance=None):
+ """
+ : param redshifts: a list of times.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of times.
+ """
+
+ times = funcs.ensure_list(times)
+ my_datasets = []
+ for my_time in times:
+ self.allOutputs.sort(key=lambda obj:na.fabs(my_time - obj['time']))
+ if (tolerance is None or na.abs(my_time - self.allOutputs[0]['time']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % my_time)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
def _calculate_deltaz_max(self):
"Calculate delta z that corresponds to full box length going from z to (z - delta z)."
diff -r d0f87ad5ac49 -r 8190256cc360 yt/extensions/image_writer.py
--- a/yt/extensions/image_writer.py Thu Apr 15 13:39:49 2010 -0400
+++ b/yt/extensions/image_writer.py Wed Apr 21 06:44:11 2010 -0700
@@ -27,7 +27,9 @@
def write_image(image, filename, color_bounds = None, cmap = "algae"):
if color_bounds is None:
- color_bounds = image.min(), image.max()
+ mi = na.nanmin(image[~na.isinf(image)])
+ ma = na.nanmax(image[~na.isinf(image)])
+ color_bounds = mi, ma
image = (image - color_bounds[0])/(color_bounds[1] - color_bounds[0])
if cmap not in cmd.color_map_luts:
print "Your color map was not found in the extracted colormap file."
diff -r d0f87ad5ac49 -r 8190256cc360 yt/lagos/BaseDataTypes.py
--- a/yt/lagos/BaseDataTypes.py Thu Apr 15 13:39:49 2010 -0400
+++ b/yt/lagos/BaseDataTypes.py Wed Apr 21 06:44:11 2010 -0700
@@ -410,7 +410,7 @@
fields_to_get = ensure_list(fields)
if not self.sort_by in fields_to_get and \
self.sort_by not in self.data:
- fields_to_get.append(self.sort_by)
+ fields_to_get.insert(0, self.sort_by)
mylog.debug("Going to obtain %s", fields_to_get)
for field in fields_to_get:
if self.data.has_key(field):
diff -r d0f87ad5ac49 -r 8190256cc360 yt/lagos/StructureFunctionGenerator.py
--- a/yt/lagos/StructureFunctionGenerator.py Thu Apr 15 13:39:49 2010 -0400
+++ b/yt/lagos/StructureFunctionGenerator.py Wed Apr 21 06:44:11 2010 -0700
@@ -69,14 +69,14 @@
self.size = self._mpi_get_size()
self.mine = self._mpi_get_rank()
self.vol_ratio = vol_ratio
- self.total_values = total_values / self.size
+ self.total_values = int(total_values / self.size)
# For communication.
self.recv_hooks = []
self.send_hooks = []
self.done_hooks = []
- self.comm_size = comm_size
+ self.comm_size = min(int(comm_size), self.total_values)
self.pf = pf
- self.nlevels = na.unique(self.pf.h.grid_levels).size
+ self.nlevels = pf.h.max_level
self.period = self.pf['DomainRightEdge'] - self.pf['DomainLeftEdge']
self.min_edge = min(self.period)
self.hierarchy = pf.h
@@ -198,7 +198,7 @@
self.comm_cycle_count = 0
self.final_comm_cycle_count = 0
self.sent_done = False
- self._setup_done_hooks()
+ self._setup_done_hooks_on_root()
# While everyone else isn't done or I'm not done, we loop.
while self._should_cycle():
self._setup_recv_arrays()
@@ -218,7 +218,7 @@
self.gen_array[self.mine] = self.generated_points
self.comm_cycle_count += 1
if self.generated_points == self.total_values:
- self._send_done_toall()
+ self._send_done_to_root()
if self.mine == 0:
mylog.info("Length (%d of %d) %1.5e took %d communication cycles to complete." % \
(bigloop+1, len(self.lengths), length, self.comm_cycle_count))
@@ -282,53 +282,59 @@
to start with.
"""
self.points = na.ones((self.comm_size, 6), dtype='float64') * -1.0
-
- def _setup_done_hooks(self):
+
+ def _setup_done_hooks_on_root(self):
"""
- Opens non-blocking receives pointing to all the other tasks.
+ Opens non-blocking receives on root pointing to all the other tasks
"""
+ if self.mine != 0:
+ return
self.recv_done = {}
for task in xrange(self.size):
if task == self.mine: continue
self.recv_done[task] = na.zeros(1, dtype='int64')
self.done_hooks.append(self._mpi_Irecv_long(self.recv_done[task], \
task, tag=15))
-
- def _send_done_toall(self):
+
+ def _send_done_to_root(self):
"""
- Signal all the other tasks that this task has created all the points
- it needs to.
+ Tell the root process that I'm done.
"""
# If I've already done this, don't do it again.
if self.sent_done: return
- self.send_done = {}
- for task in xrange(self.size):
- if task == self.mine: continue
- # We'll send the cycle at which I think things should stop.
- self.send_done[task] = na.ones(1, dtype='int64') * \
+ if self.mine !=0:
+ # I send when I *think* things should finish.
+ self.send_done = na.ones(1, dtype='int64') * \
(self.size / self.vol_ratio -1) + self.comm_cycle_count
- self.done_hooks.append(self._mpi_Isend_long(self.send_done[task], \
- task, tag=15))
- # I need to mark my *own*, too!
- self.recv_done[self.mine] = (self.size / self.vol_ratio -1) + \
- self.comm_cycle_count
+ self.done_hooks.append(self._mpi_Isend_long(self.send_done, \
+ 0, tag=15))
+ else:
+ # As root, I need to mark myself!
+ self.recv_done[0] = na.ones(1, dtype='int64') * \
+ (self.size / self.vol_ratio -1) + self.comm_cycle_count
self.sent_done = True
-
+
def _should_cycle(self):
"""
More information about the yt-svn
mailing list