[Yt-svn] yt-commit r1597 - trunk/yt/lagos

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Tue Jan 26 09:54:23 PST 2010


Author: mturk
Date: Tue Jan 26 09:54:21 2010
New Revision: 1597
URL: http://yt.enzotools.org/changeset/1597

Log:
Adding parameter "storage_filename" to the EnzoStaticOutput instantiation, in
cases where the output file is not in a writeable directory and you want to
save, for instance, projections



Modified:
   trunk/yt/lagos/HierarchyType.py
   trunk/yt/lagos/OutputTypes.py

Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py	(original)
+++ trunk/yt/lagos/HierarchyType.py	Tue Jan 26 09:54:21 2010
@@ -135,16 +135,19 @@
 
     def _initialize_data_storage(self):
         if not ytcfg.getboolean('lagos','serialize'): return
-        if os.path.isfile(os.path.join(self.directory,
-                            "%s.yt" % self.pf["CurrentTimeIdentifier"])):
-            fn = os.path.join(self.directory,"%s.yt" % self.pf["CurrentTimeIdentifier"])
-        else:
-            fn = os.path.join(self.directory,
-                    "%s.yt" % self.parameter_file.basename)
+        fn = self.pf.storage_filename
+        if fn is None:
+            if os.path.isfile(os.path.join(self.directory,
+                                "%s.yt" % self.pf["CurrentTimeIdentifier"])):
+                fn = os.path.join(self.directory,"%s.yt" % self.pf["CurrentTimeIdentifier"])
+            else:
+                fn = os.path.join(self.directory,
+                        "%s.yt" % self.parameter_file.basename)
+        dir_to_check = os.path.dirname(fn)
         if os.path.isfile(fn):
             writable = os.access(fn, os.W_OK)
         else:
-            writable = os.access(self.directory, os.W_OK)
+            writable = os.access(dir_to_check, os.W_OK)
         if ytcfg.getboolean('lagos','onlydeserialize') or not writable:
             self._data_mode = mode = 'r'
         else:
@@ -349,8 +352,11 @@
             "%s.hierarchy" % (pf.parameter_filename))
         harray_fn = self.hierarchy_filename[:-9] + "harrays"
         if os.path.exists(harray_fn):
-            harray_fp = h5py.File(harray_fn)
-            self.num_grids = harray_fp["/Level"].len()
+            try:
+                harray_fp = h5py.File(harray_fn)
+                self.num_grids = harray_fp["/Level"].len()
+            except h5py.h5.H5Error:
+                pass
         elif os.path.getsize(self.hierarchy_filename) == 0:
             raise IOError(-1,"File empty", self.hierarchy_filename)
         self.directory = os.path.dirname(self.hierarchy_filename)
@@ -489,7 +495,10 @@
 
     def _parse_binary_hierarchy(self):
         mylog.info("Getting the binary hierarchy")
-        f = h5py.File(self.hierarchy_filename[:-9] + "harrays")
+        try:
+            f = h5py.File(self.hierarchy_filename[:-9] + "harrays")
+        except h5py.h5.H5Error:
+            return False
         self.grid_dimensions[:] = f["/ActiveDimensions"][:]
         self.grid_left_edge[:] = f["/LeftEdges"][:]
         self.grid_right_edge[:] = f["/RightEdges"][:]
@@ -522,7 +531,10 @@
         if self._data_mode == 'r': return
         if self.data_style != "enzo_packed_3d": return
         mylog.info("Storing the binary hierarchy")
-        f = h5py.File(self.hierarchy_filename[:-9] + "harrays", "w")
+        try:
+            f = h5py.File(self.hierarchy_filename[:-9] + "harrays", "w")
+        except h5py.h5.FileError:
+            return
         f.create_dataset("/LeftEdges", data=self.grid_left_edge)
         f.create_dataset("/RightEdges", data=self.grid_right_edge)
         parents, procs, levels = [], [], []

Modified: trunk/yt/lagos/OutputTypes.py
==============================================================================
--- trunk/yt/lagos/OutputTypes.py	(original)
+++ trunk/yt/lagos/OutputTypes.py	Tue Jan 26 09:54:21 2010
@@ -168,7 +168,8 @@
     _fieldinfo_class = EnzoFieldContainer
     def __init__(self, filename, data_style=None,
                  parameter_override = None,
-                 conversion_override = None):
+                 conversion_override = None,
+                 storage_filename = None):
         """
         This class is a stripped down class that simply reads and parses
         *filename* without looking at the hierarchy.  *data_style* gets passed
@@ -182,6 +183,7 @@
         self.__parameter_override = parameter_override
         if conversion_override is None: conversion_override = {}
         self.__conversion_override = conversion_override
+        self.storage_filename = storage_filename
 
         StaticOutput.__init__(self, filename, data_style)
         if "InitialTime" not in self.parameters:



More information about the yt-svn mailing list