[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