[yt-svn] commit/yt-3.0: 52 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Thu Mar 14 14:37:36 PDT 2013


52 new commits in yt-3.0:

https://bitbucket.org/yt_analysis/yt-3.0/commits/f77aff9bb79e/
changeset:   f77aff9bb79e
branch:      yt-3.0
user:        sleitner
date:        2013-02-09 00:06:13
summary:     removing prints from data_containers
affected #:  1 file

diff -r 45d0c1d30e0a2291faa0f391469905c0b4b92c86 -r f77aff9bb79e677e96439b42baca865c970b6c69 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -461,22 +461,15 @@
             self.hierarchy._identify_base_chunk(self)
         if fields is None: return
         fields = self._determine_fields(fields)
-        print 'snl we are in data_containers.py'
         # Now we collect all our fields
         fields_to_get = [f for f in fields if f not in self.field_data]
-        print 'snl we are in data_containers.py 1a'
         if len(fields_to_get) == 0:
-            print 'snl we are in data_containers.py return'
             return
         elif self._locked == True:
-            print 'snl we are in data_containers.py raise'
             raise GenerationInProgress(fields)
-        print 'snl we are in data_containers.py 2'
         # At this point, we want to figure out *all* our dependencies.
-	print 'kln identifying dependencies'
         fields_to_get = self._identify_dependencies(fields_to_get)
         # We now split up into readers for the types of fields
-        print 'snl we are in data_containers.py splitting fields'
         fluids, particles = [], []
         for ftype, fname in fields_to_get:
             finfo = self.pf._get_field_info(ftype, fname)
@@ -486,7 +479,6 @@
                 fluids.append((ftype, fname))
 	print 'fluid fields: ', fluids
 	print 'particle fields: ', particles
-        print 'snl we are in data_containers.py before reading fluids'
         # The _read method will figure out which fields it needs to get from
         # disk, and return a dict of those fields along with the fields that
         # need to be generated.
@@ -497,7 +489,6 @@
         read_particles, gen_particles = self.hierarchy._read_particle_fields(
                                         particles, self, self._current_chunk)
         self.field_data.update(read_particles)
-        print 'snl we are in data_containers.py after reading particles'
         fields_to_generate = gen_fluids + gen_particles
         self._generate_fields(fields_to_generate)
 


https://bitbucket.org/yt_analysis/yt-3.0/commits/2f8643b5862e/
changeset:   2f8643b5862e
branch:      yt-3.0
user:        sleitner
date:        2013-02-09 00:06:56
summary:     adding particle index for data files and fixing units for particles
affected #:  4 files

diff -r f77aff9bb79e677e96439b42baca865c970b6c69 -r 2f8643b5862e22c46f21df913d590449d003542b yt/frontends/artio/_artio_caller.pyx
--- a/yt/frontends/artio/_artio_caller.pyx
+++ b/yt/frontends/artio/_artio_caller.pyx
@@ -441,11 +441,11 @@
             else : 
                 labels_secondary[ispec] = []
 
-            #the only static label for now is NBODY mass
             if labels_species[ispec] == 'N-BODY' :
-                labels_static[ispec] = "particle_species_mass"
+                labels_static[ispec] = ["particle_species_mass"]
             else : 
                 labels_static[ispec] = [] 
+            labels_static[ispec].append("particle_index") 
 
             for i, f in enumerate(fields):
                 if   f in labels_primary[ispec]:
@@ -455,9 +455,14 @@
                     howtoread[ispec,i]= 'secondary'
                     fieldtoindex[ispec][i] = labels_secondary[ispec].index(f)
                 elif f in labels_static[ispec]:
-                    howtoread[ispec,i]= 'static'
-                    fieldtoindex[ispec][i] = countnbody
-                    countnbody += 1 #particle_mass happens once per N-BODY species
+                    #each new N-BODY spec adds one to the static mass location
+                    if labels_species[ispec] == 'N-BODY' and f == 'particle_species_mass' :
+                        howtoread[ispec,i]= 'staticNBODY'
+                        fieldtoindex[ispec][i] = countnbody
+                        countnbody += 1 #particle_mass happens once per N-BODY species
+                        print 'count the nbody species',countnbody
+                    else :
+                        howtoread[ispec,i]= 'staticINDEX'
                 else : 
                     howtoread[ispec,i]= 'empty'
                     fieldtoindex[ispec][i] = 9999999
@@ -559,8 +564,10 @@
                                      fpoint[i][ipall] = primary_variables[aspec][fieldtoindex[ispec][i]]
                                  elif howtoread[ispec,i] == 'secondary' : 
                                      fpoint[i][ipall] = secondary_variables[aspec][fieldtoindex[ispec][i]]
-                                 elif howtoread[ispec,i] == 'static' : 
-                                     fpoint[i][ipall] = self.parameters[labels_static[ispec]][fieldtoindex[ispec][i]]
+                                 elif howtoread[ispec,i] == 'staticNBODY' : 
+                                     fpoint[i][ipall] = self.parameters["particle_species_mass"][fieldtoindex[ispec][i]]
+                                 elif howtoread[ispec,i] == 'staticINDEX' : 
+                                     fpoint[i][ipall] = ipall
                                  elif howtoread[ispec,i] == 'empty' : 
                                      fpoint[i][ipall] = 0
                                  else : 

diff -r f77aff9bb79e677e96439b42baca865c970b6c69 -r 2f8643b5862e22c46f21df913d590449d003542b yt/frontends/artio/data_structures.py
--- a/yt/frontends/artio/data_structures.py
+++ b/yt/frontends/artio/data_structures.py
@@ -322,15 +322,15 @@
         self.conversion_factors["Temperature"] = self.parameters['unit_T']*constants.wmu*(constants.gamma-1) #*cell_gas_internal_energy(cell)/cell_gas_density(cell);
         print 'note temperature conversion is currently using fixed gamma not variable'
 
-        for particle_field in particle_fields:
-            self.conversion_factors[particle_field] =  1.0
+#        for particle_field in particle_fields:
+#            self.conversion_factors[particle_field] =  1.0
         for ax in 'xyz':
             self.conversion_factors["particle_velocity_%s"%ax] = self.parameters['unit_v']
         for unit in sec_conversion.keys():
             self.time_units[unit] = 1.0 / sec_conversion[unit]
         self.conversion_factors['particle_mass'] = self.parameters['unit_m']
-        self.conversion_factors['particle_creation_time'] =  31556926.0
-        self.conversion_factors['Msun'] = 5.027e-34 
+        self.conversion_factors['particle_creation_time'] =  self.parameters['unit_t']
+        self.conversion_factors['particle_mass_msun'] = self.parameters['unit_m']/constants.Msun
        
     def _parse_parameter_file(self):
         # hard-coded -- not provided by headers 

diff -r f77aff9bb79e677e96439b42baca865c970b6c69 -r 2f8643b5862e22c46f21df913d590449d003542b yt/frontends/artio/definitions.py
--- a/yt/frontends/artio/definitions.py
+++ b/yt/frontends/artio/definitions.py
@@ -42,7 +42,7 @@
 
 particle_fields= [
 #    'particle_age',
-#    'particle_index',
+    'particle_index',
     'particle_mass',
     'particle_mass_initial',
     'particle_creation_time',
@@ -87,7 +87,8 @@
     'particle_velocity_x': 'VELOCITY_X',
     'particle_velocity_y': 'VELOCITY_Y',
     'particle_velocity_z': 'VELOCITY_Z',
-    'particle_mass': 'particle_species_mass'
+    'particle_mass': 'particle_species_mass',
+    'particle_index': 'particle_index'
 }
 
 class ARTIOconstants():

diff -r f77aff9bb79e677e96439b42baca865c970b6c69 -r 2f8643b5862e22c46f21df913d590449d003542b yt/frontends/artio/fields.py
--- a/yt/frontends/artio/fields.py
+++ b/yt/frontends/artio/fields.py
@@ -151,17 +151,11 @@
 ####### Derived fields
 import sys
 def _temperature(field, data):
-    tr = data["GasEnergy"]/data.pf.conversion_factors["GasEnergy"]*data.pf.conversion_factors["Density"]/data["Density"] #*(data["Gamma"]-1)*wmu 
-    #ghost cells have zero density?
+    tr = data["GasEnergy"]/data["Density"] #Gamma fixed not field *(data["Gamma"]-1)*wmu 
     tr[np.isnan(tr)] = 0.0
-    #dd[di] = -1.0
-    #if data.id==460:
-    #tr[di] = -1.0 #replace the zero-density points with zero temp
-    #print tr.min()
-    #assert np.all(np.isfinite(tr))
     return tr
 def _converttemperature(data):
-    x = data.pf.conversion_factors["Temperature"]
+    x = data.pf.conversion_factors["Temperature"]*data.pf.conversion_factors["Density"]/data.pf.conversion_factors["GasEnergy"]
     return x
 add_field("Temperature", function=_temperature, units = r"\mathrm{K}",take_log=True)
 ARTIOFieldInfo["Temperature"]._units = r"\mathrm{K}"
@@ -225,8 +219,8 @@
     pf = "particle_velocity_%s" % ax
     add_artio_field(pf, function=NullFunc,
               particle_type=True)
-
 add_artio_field("particle_mass", function=NullFunc, particle_type=True)
+add_artio_field("particle_index", function=NullFunc, particle_type=True)
 
 for ax in 'xyz':
     pf = "particle_position_%s" % ax
@@ -235,14 +229,19 @@
 
 def ParticleMass(field,data):
     return data['particle_mass']
-add_field("ParticleMass",function=ParticleMass,units=r"\rm{g}",particle_type=True)
-
-
-#Derived particle fields
+def _convertParticleMass(field,data):
+    return data.convert('particle_mass')
+add_field("ParticleMass",
+          function=ParticleMass,
+          convert_function=_convertParticleMass,
+          units=r"\rm{g}",
+          particle_type=True)
 
 def ParticleMassMsun(field,data):
-    return data['particle_mass']/1.989e33 #*data.pf['Msun']
-add_field("ParticleMassMsun",function=ParticleMassMsun,units=r"\rm{g}",particle_type=True)
+    return data['particle_mass']*data.pf.conversion_factors['particle_mass_msun']
+add_field("ParticleMassMsun",
+          function=ParticleMassMsun,
+          units=r"\rm{M\odot}",particle_type=True)
 
 def _creation_time(field,data):
     pa = data["particle_age"]


https://bitbucket.org/yt_analysis/yt-3.0/commits/887d13d0c418/
changeset:   887d13d0c418
branch:      yt-3.0
user:        sleitner
date:        2013-02-09 00:33:50
summary:     halo_finder changes: manually pulled in changes to COM calculation and temporarily using "region" until periodicity changes are implemented.
affected #:  1 file

diff -r 2f8643b5862e22c46f21df913d590449d003542b -r 887d13d0c418b9c13c24bcad49385f122686a320 yt/analysis_modules/halo_finding/halo_objects.py
--- a/yt/analysis_modules/halo_finding/halo_objects.py
+++ b/yt/analysis_modules/halo_finding/halo_objects.py
@@ -129,7 +129,7 @@
         # This matches them up.
         self._particle_mask = np.in1d(sp_pid, pid)
         return self._particle_mask
-
+    
     def center_of_mass(self):
         r"""Calculate and return the center of mass.
 
@@ -142,18 +142,30 @@
         if self.CoM is not None:
             return self.CoM
         pm = self["ParticleMassMsun"]
-        cx = self["particle_position_x"]
-        cy = self["particle_position_y"]
-        cz = self["particle_position_z"]
-        if isinstance(self, FOFHalo):
-            c_vec = np.array([cx[0], cy[0], cz[0]]) - self.pf.domain_center
-        else:
-            c_vec = self.maximum_density_location() - self.pf.domain_center
-        cx = (cx - c_vec[0])
-        cy = (cy - c_vec[1])
-        cz = (cz - c_vec[2])
-        com = np.array([v - np.floor(v) for v in [cx, cy, cz]])
-        return (com * pm).sum(axis=1) / pm.sum() + c_vec
+        c = {}
+        c[0] = self["particle_position_x"]
+        c[1] = self["particle_position_y"]
+        c[2] = self["particle_position_z"]
+        c_vec = np.zeros(3)
+        com = []
+        for i in range(3):
+            # A halo is likely periodic around a boundary if the distance 
+            # between the max and min particle
+            # positions are larger than half the box. 
+            # So skip the rest if the converse is true.
+            # Note we might make a change here when periodicity-handling is
+            # fully implemented.
+            if (c[i].max() - c[i].min()) < (self.pf.domain_width[i] / 2.):
+                com.append(c[i])
+                continue
+            # Now we want to flip around only those close to the left boundary.
+            d_left = c[i] - self.pf.domain_left_edge[i]
+            sel = (d_left <= (self.pf.domain_width[i]/2))
+            c[i][sel] += self.pf.domain_width[i]
+            com.append(c[i])
+        com = np.array(com)
+        c = (com * pm).sum(axis=1) / pm.sum()
+        return c%self.pf.domain_width
 
     def maximum_density(self):
         r"""Return the HOP-identified maximum density. Not applicable to
@@ -2197,7 +2209,8 @@
         # If this isn't parallel, define the region as an AMRRegionStrict so
         # particle IO works.
         if self.comm.size == 1:
-            self._data_source = self.hierarchy.periodic_region_strict([0.5] * 3,
+        #snl temporary fix until periodicity comes along:
+            self._data_source = self.hierarchy.region([0.5] * 3,
                 LE, RE)
         # get the average spacing between particles for this region
         # The except is for the serial case where the full box is what we want.


https://bitbucket.org/yt_analysis/yt-3.0/commits/d656f82fca66/
changeset:   d656f82fca66
branch:      yt-3.0
user:        sleitner
date:        2013-03-02 23:10:44
summary:     improving star particle handling but hitting seg faults during particle fill/masking
affected #:  8 files

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/analysis_modules/halo_profiler/multi_halo_profiler.py
--- a/yt/analysis_modules/halo_profiler/multi_halo_profiler.py
+++ b/yt/analysis_modules/halo_profiler/multi_halo_profiler.py
@@ -522,6 +522,7 @@
                 profiledHalo = self._get_halo_profile(halo, profile_filename,
                                                       virial_filter=virial_filter)
 
+                print 'made it here!!!!!!!!!!!!!!!!!!!!!!!!!!!', filter_result, len(self.profile_fields), profiledHalo
                 if profiledHalo is None:
                     continue
 
@@ -535,10 +536,14 @@
                     if filterQuantities is not None:
                         haloQuantities.update(filterQuantities)
 
+            print 'made it here!!!!!!!!!!!!!!!!!!!!!!!!!!!', filter_result, len(self.profile_fields)
             if filter_result:
                 for quantity in self.filter_quantities:
                     if halo.has_key(quantity): haloQuantities[quantity] = halo[quantity]
+                    print quantity
 
+                print profile_filename
+                print 'made it here!!!!!!!!!!!!!!!!!!!!!!!!!!!'
                 only_on_root(self.filtered_halos.append, haloQuantities)
 
             # If we've gotten this far down, this halo is good and we want
@@ -574,20 +579,24 @@
         # Make profile if necessary.
         newProfile = profile is None
         if newProfile:
+            print 'here1!!!!!!!!!'
 
             r_min = 2 * self.pf.h.get_smallest_dx() * self.pf['mpc']
             if (halo['r_max'] / r_min < PROFILE_RADIUS_THRESHOLD):
                 mylog.error("Skipping halo with r_max / r_min = %f." % (halo['r_max']/r_min))
                 return None
 
+            print 'here2!!!!!!!!!'
             # get a sphere object to profile
             sphere = self._get_halo_sphere(halo)
             if sphere is None: return None
 
+            print 'here3!!!!!!!!!'
             try:
                 profile = BinnedProfile1D(sphere, self.n_profile_bins, "RadiusMpc",
                                                 r_min, halo['r_max'],
                                                 log_space=True, end_collect=True)
+
             except EmptyProfileData:
                 mylog.error("Caught EmptyProfileData exception, returning None for this halo.")
                 return None
@@ -603,6 +612,7 @@
         if virial_filter:
             self._add_actual_overdensity(profile)
 
+        print 'here4!!!!!!!!!'
         if newProfile:
             mylog.info("Writing halo %d" % halo['id'])
             if os.path.exists(filename): os.remove(filename)
@@ -633,6 +643,9 @@
         """
 
         sphere = self.pf.h.sphere(halo['center'], halo['r_max']/self.pf.units['mpc'])
+        if sphere._grids == None: 
+            sphere = self.pf.h.sphere(halo['center'], halo['r_max']/self.pf.units['mpc'])
+            return sphere
         if len(sphere._grids) == 0: return None
         new_sphere = False
 
@@ -760,6 +773,7 @@
             proj_level = self.pf.h.max_level
         else:
             proj_level = int(self.project_at_level)
+        print self.pf.parameters.keys() # ['DomainLeftEdge'][w]
         proj_dx = self.pf.units[self.projection_width_units] / \
             self.pf.parameters['TopGridDimensions'][0] / \
             (self.pf.parameters['RefineBy']**proj_level)
@@ -794,12 +808,13 @@
                     (rightEdge[w] > self.pf.parameters['DomainRightEdge'][w])):
                     need_per = True
                     break
-
+                
+            need_per = False
             if need_per:
                 region = self.pf.h.periodic_region(halo['center'], leftEdge, rightEdge)
             else:
                 region = self.pf.h.region(halo['center'], leftEdge, rightEdge)
-
+            
             # Make projections.
             if not isinstance(axes, types.ListType): axes = list([axes])
             for w in axes:
@@ -813,8 +828,8 @@
                 for hp in self.projection_fields:
                     projections.append(self.pf.h.proj(hp['field'], w,
                                                       weight_field=hp['weight_field'],
-                                                      source=region, center=halo['center'],
-                                                      serialize=False))
+                                                      center=halo['center']))
+                                                      
 
                 # Set x and y limits, shift image if it overlaps domain boundary.
                 if need_per:
@@ -1132,7 +1147,8 @@
         hop_results.write_out(hop_file)
 
         del hop_results
-        self.pf.h.clear_all_data()
+        print 'snl in multi_halo_profiler.py: no hierarchy method to clear oct data currently'  #snl cannot clear_all_data
+        #self.pf.h.clear_all_data()
 
     @parallel_root_only
     def _write_filtered_halo_list(self, filename, format="%s"):

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/analysis_modules/star_analysis/sfr_spectrum.py
--- a/yt/analysis_modules/star_analysis/sfr_spectrum.py
+++ b/yt/analysis_modules/star_analysis/sfr_spectrum.py
@@ -31,6 +31,7 @@
 from yt.utilities.cosmology import \
     Cosmology, \
     EnzoCosmology
+import sys
 
 YEAR = 3.155693e7 # sec / year
 LIGHT = 2.997925e10 # cm / s
@@ -96,8 +97,10 @@
             self._pf.current_redshift) # seconds
         # Build the distribution.
         self.build_dist()
+        sys.exit(1)
         # Attach some convenience arrays.
         self.attach_arrays()
+        print 'snl $################## sfr_spectrum#'
 
     def build_dist(self):
         """
@@ -111,6 +114,7 @@
         elif self.mode == 'provided':
             ct_stars = self.star_creation_time
             mass_stars = self.star_mass
+        print 'snl sfr_spectrum', ct_stars
         # Find the oldest stars in units of code time.
         tmin= min(ct_stars)
         # Multiply the end to prevent numerical issues.
@@ -155,6 +159,7 @@
         for i, time in enumerate((self.time_bins[1:] + self.time_bins[:-1])/2.):
             self.time.append(time * tc / YEAR)
             self.lookback_time.append((self.time_now - time * tc)/YEAR)
+            print 'snl timtime', time, tc
             self.redshift.append(self.cosm.ComputeRedshiftFromTime(time * tc))
             self.Msol_yr.append(self.mass_bins[i] / \
                 (self.time_bins_dt[i] * tc / YEAR))

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/_artio_caller.pyx
--- a/yt/frontends/artio/_artio_caller.pyx
+++ b/yt/frontends/artio/_artio_caller.pyx
@@ -102,6 +102,7 @@
         print 'failure with status', status, 'in function',fname,'from caller', callername, nline 
         sys.exit(1)
 
+
 cdef class artio_fileset :
     cdef public object parameters 
     cdef ARTIOOctreeContainer oct_handler
@@ -372,27 +373,15 @@
         if len(accessed_species) != 1 : 
             print 'multiple particle species access needs serious thought'
             sys.exit(1)
-            
+ 
+        print 'fields in var_fill:', fields
         # setup the range for all reads:
         status = artio_particle_cache_sfc_range( self.particle_handle, 
                                                  self.sfc_min, self.sfc_max )
         check_artio_status(status)
 	
-        # mask ####################
-        # mask[spec][particle] fields are irrelevant for masking 
-        # -- masking only cares abount position
+        # particle species ##########        
         num_acc_species = len(accessed_species)
-        mask = <int**>malloc(sizeof(int*)*num_acc_species)
-        if not mask :
-            raise MemoryError
-        for aspec in range(num_acc_species) :
-             mask[aspec] = <int*>malloc(
-                 self.parameters['particle_species_num'][aspec] 
-                 * sizeof(int))
-             if not mask[aspec] :
-                 raise MemoryError
- 
-        # particle species ##########        
         num_species = self.parameters['num_particle_species'][0]
         labels_species = self.parameters['particle_species_labels']
 
@@ -418,6 +407,21 @@
                     print iacctoispec[i]
                     print 'some accessed species indices point to the same ispec; exitting'
                     sys.exit(1)
+
+        # mask ####################
+        # mask[spec][particle] fields are irrelevant for masking 
+        # -- masking only cares abount position
+        mask = <int**>malloc(sizeof(int*)*num_acc_species)
+        if not mask :
+            raise MemoryError
+        for aspec in range(num_acc_species) :
+            ispec=iacctoispec[aspec]
+            mask[aspec] = <int*>malloc(
+                 self.parameters['particle_species_num'][ispec] 
+                 * sizeof(int))
+            if not mask[aspec] :
+                 raise MemoryError
+ 
             
         # particle field labels and order ##########        
         labels_primary={}
@@ -442,7 +446,7 @@
                 labels_secondary[ispec] = []
 
             if labels_species[ispec] == 'N-BODY' :
-                labels_static[ispec] = ["particle_species_mass"]
+                labels_static[ispec] = ["MASS"]
             else : 
                 labels_static[ispec] = [] 
             labels_static[ispec].append("particle_index") 
@@ -454,18 +458,21 @@
                 elif f in labels_secondary[ispec]:
                     howtoread[ispec,i]= 'secondary'
                     fieldtoindex[ispec][i] = labels_secondary[ispec].index(f)
+                        
                 elif f in labels_static[ispec]:
                     #each new N-BODY spec adds one to the static mass location
-                    if labels_species[ispec] == 'N-BODY' and f == 'particle_species_mass' :
+                    if labels_species[ispec] == 'N-BODY' and f == 'MASS' :
                         howtoread[ispec,i]= 'staticNBODY'
                         fieldtoindex[ispec][i] = countnbody
-                        countnbody += 1 #particle_mass happens once per N-BODY species
+                        countnbody += 1 #MASS happens once per N-BODY species
                         print 'count the nbody species',countnbody
                     else :
                         howtoread[ispec,i]= 'staticINDEX'
                 else : 
                     howtoread[ispec,i]= 'empty'
                     fieldtoindex[ispec][i] = 9999999
+                    
+                print 'ispec', ispec,'field',f, 'howtoread', howtoread[ispec,i] 
             #fix pos_index
             pos_index[ispec] = <int*>malloc(3*sizeof(int))
             pos_index[ispec][0] = labels_primary[ispec].index('POSITION_X')
@@ -505,24 +512,30 @@
                 status = artio_particle_read_species_begin(
                     self.particle_handle, ispec)
                 check_artio_status(status)
+#                if num_particles_per_species[ispec]  >0 :
+#                    print "masking root cell of np=",num_particles_per_species[ispec] 
+
                 for particle in range( num_particles_per_species[ispec] ) :
-                    # print 'snl in caller: aspec count_mask count',aspec,ispec, count_mask[aspec], ipspec[aspec]
+#                    print 'snl in caller: aspec count_mask count',aspec,ispec, count_mask[aspec], ipspec[aspec] #, sizeof(primary_variables[aspec]), sizeof(secondary_variables[aspec])
                     status = artio_particle_read_particle(
                         self.particle_handle,
                         pid, subspecies, primary_variables[aspec],
                         secondary_variables[aspec])
                     check_artio_status(status)
+#                    print 'snl in caller2: aspec count_mask count',aspec,ispec, count_mask[aspec], ipspec[aspec]
                     pos[0] = primary_variables[aspec][pos_index[aspec][0]]
                     pos[1] = primary_variables[aspec][pos_index[aspec][1]]
                     pos[2] = primary_variables[aspec][pos_index[aspec][2]]
                     mask[aspec][ipspec[aspec]] = selector.select_cell(pos, dds, eterm)
                     count_mask[aspec] += mask[aspec][count_mask[aspec]]
                     ipspec[aspec] += 1
+#                    print 'ipspec',ipspec[aspec], pos[1], pos[0], pos[2], \
+#                        secondary_variables[aspec][0]
                 status = artio_particle_read_species_end( self.particle_handle )
                 check_artio_status(status)
             status = artio_particle_read_root_cell_end( self.particle_handle )
             check_artio_status(status)
-        print 'finished masking'
+        print 'done masking'
 	##########################################################
 
         cdef np.float32_t **fpoint
@@ -545,24 +558,26 @@
                 status = artio_particle_read_root_cell_begin( self.particle_handle, sfc,
                     num_particles_per_species )
                 check_artio_status(status)	
-
+                
                 for aspec in range(num_acc_species) :
                     ispec = iacctoispec[aspec]
                     status = artio_particle_read_species_begin(self.particle_handle, ispec);
                     check_artio_status(status)
                     for particle in range( num_particles_per_species[ispec] ) :
-
+                        
                         status = artio_particle_read_particle(self.particle_handle,
                                         pid, subspecies, primary_variables[aspec],
                                         secondary_variables[aspec])
                         check_artio_status(status)
-
-                        ########## snl this is not right because of primary overflow
+                        
                         if mask[aspec][ipspec[aspec]] == 1 :
                              for i in range(nf):
+                                 
+                                 if not (howtoread[ispec,i] == 'empty') : 
+                                     assert(fieldtoindex[ispec][i]<100)
                                  if   howtoread[ispec,i] == 'primary' : 
                                      fpoint[i][ipall] = primary_variables[aspec][fieldtoindex[ispec][i]]
-                                 elif howtoread[ispec,i] == 'secondary' : 
+                                 elif howtoread[ispec,i] == 'secondary' :
                                      fpoint[i][ipall] = secondary_variables[aspec][fieldtoindex[ispec][i]]
                                  elif howtoread[ispec,i] == 'staticNBODY' : 
                                      fpoint[i][ipall] = self.parameters["particle_species_mass"][fieldtoindex[ispec][i]]
@@ -576,25 +591,25 @@
                                      sys.exit(1)
                                  # print 'reading into fpoint', ipall,fpoint[i][ipall], fields[i]
                              ipall += 1
-                        ########## snl this is not right because of primary overflow
                         ipspec[aspec] += 1
-
+                        
                     status = artio_particle_read_species_end( self.particle_handle )
                     check_artio_status(status)
-
+                    
                 status = artio_particle_read_root_cell_end( self.particle_handle )
                 check_artio_status(status)
+ 
 
         free(subspecies)
         free(pid)
-        free(mask)
-        free(pos_index)
         free(num_particles_per_species)
         free(iacctoispec)
+        free(mask)
+        free(fieldtoindex)
+        free(pos_index)
         free(primary_variables)
         free(secondary_variables)
         free(fpoint)
-        free(fieldtoindex)
 
         print 'done filling particle variables', ipall
 

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/artio_headers/artio_particle.c
--- a/yt/frontends/artio/artio_headers/artio_particle.c
+++ b/yt/frontends/artio/artio_headers/artio_particle.c
@@ -759,11 +759,10 @@
 		double * primary_variables, float * secondary_variables) {
 	int ret;
 	artio_particle_file *phandle;
-
 	if ( handle == NULL ) {
 		return ARTIO_ERR_INVALID_HANDLE;
 	}
-
+        
 	if (handle->open_mode != ARTIO_FILESET_READ || 
 			!(handle->open_type & ARTIO_OPEN_PARTICLES) ||
 			handle->particle == NULL ) {

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/data_structures.py
--- a/yt/frontends/artio/data_structures.py
+++ b/yt/frontends/artio/data_structures.py
@@ -34,6 +34,7 @@
 from yt.utilities.definitions import \
     mpc_conversion, sec_conversion 
 from .fields import ARTIOFieldInfo, KnownARTIOFields
+from .definitions import codetime_fields
 #######
 
 ###############################
@@ -63,6 +64,8 @@
 from yt.geometry.oct_container import \
     ARTIOOctreeContainer
 
+from io import b2t
+
 class ARTIODomainFile(object):
 
     def __init__(self, pf, domain_id):
@@ -119,7 +122,19 @@
         ncum_masked_level[0] = 0
         self.ncum_masked_level = np.add.accumulate(ncum_masked_level)
         print 'cumulative masked level counts',self.ncum_masked_level
+
+        nsampleb2t=20
+        samplemax = -np.log10(10) #tl=-10
+        samplemin = -np.log10(0.0001) #tl=-0.0001)
+        print 'interpolating time grid accurate to <10% after 0.5Gyr for 20 n=',nsampleb2t
+        self.xb2t = np.linspace(-1,4,nsampleb2t) # must be increasing for interpolation
+        self.yb2t = b2t(-10**-self.xb2t,n=nsampleb2t)*1e9*24*3600
         
+    def interpb2t(self, x): 
+        xp = -np.log10(-x)
+        tr = np.interp(xp,self.xb2t, self.yb2t)
+        return tr 
+
     def icoords(self, dobj):
         return self.oct_handler.icoords(self.domain.domain_id, self.mask,
                                         self.masked_cell_count,
@@ -187,6 +202,14 @@
         assert ( art_fields != None )
 	self.domain._handle.particle_var_fill(accessed_species, masked_particles, selector, art_fields )
 
+        #convert time variables from code units
+        for fieldtype, fieldname in fields :
+            if fieldname in codetime_fields : 
+                print 'convert time variables from code units'
+                masked_particles[yt_to_art[fieldname]] = \
+                    self.interpb2t(masked_particles[yt_to_art[fieldname]])
+                print 'convert time variables from code units'
+
 	# dhr - make sure these are shallow copies
         tr = {}
         for fieldtype, fieldname in fields :
@@ -331,6 +354,13 @@
         self.conversion_factors['particle_mass'] = self.parameters['unit_m']
         self.conversion_factors['particle_creation_time'] =  self.parameters['unit_t']
         self.conversion_factors['particle_mass_msun'] = self.parameters['unit_m']/constants.Msun
+
+        #for mult_halo_profiler.py:
+        self.parameters['TopGridDimensions'] = [128,128,128]
+        self.parameters['RefineBy'] = 2
+        self.parameters['DomainLeftEdge'] = [0,0,0]
+        self.parameters['DomainRightEdge'] =  [128,128,128]
+        self.parameters['TopGridRank'] = 3 #number of dimensions
        
     def _parse_parameter_file(self):
         # hard-coded -- not provided by headers 
@@ -364,6 +394,7 @@
             self.current_redshift = 1.0/self._handle.parameters["abox"][0] - 1.0
 
             self.parameters["initial_redshift"] = 1.0/self._handle.parameters["auni_init"][0] - 1.0
+            self.parameters["CosmologyInitialRedshift"] =  self.parameters["initial_redshift"] #for sfr
         else :
             self.cosmological_simulation = False
  

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/definitions.py
--- a/yt/frontends/artio/definitions.py
+++ b/yt/frontends/artio/definitions.py
@@ -41,11 +41,11 @@
 ]
 
 particle_fields= [
-#    'particle_age',
+    'particle_age',
     'particle_index',
     'particle_mass',
     'particle_mass_initial',
-    'particle_creation_time',
+    'creation_time',
     'particle_metallicity1',
     'particle_metallicity2',
     'particle_metallicity',
@@ -54,19 +54,23 @@
     'particle_position_z',
     'particle_velocity_x',
     'particle_velocity_y',
-    'particle_velocity_z',
+    'particle_velocity_z'
 ]
 
 particle_star_fields = [
     'particle_age',
     'particle_mass',
     'particle_mass_initial',
-    'particle_creation_time',
+    'creation_time',
     'particle_metallicity1',
     'particle_metallicity2',
     'particle_metallicity',
 ]
 
+codetime_fields = [
+    'creation_time'
+]
+
 
 yt_to_art = { 
     'Density':'HVAR_GAS_DENSITY',
@@ -87,8 +91,12 @@
     'particle_velocity_x': 'VELOCITY_X',
     'particle_velocity_y': 'VELOCITY_Y',
     'particle_velocity_z': 'VELOCITY_Z',
-    'particle_mass': 'particle_species_mass',
-    'particle_index': 'particle_index'
+    'particle_mass': 'MASS',
+    'particle_index': 'particle_index',
+    'creation_time': 'BIRTH_TIME' ,
+    'particle_initial_mass': 'INITIAL_MASS', 
+    'particle_metallicity1': 'METALLICITY_SNIa',
+    'particle_metallicity2': 'METALLICITY_SNII'
 }
 
 class ARTIOconstants():

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/fields.py
--- a/yt/frontends/artio/fields.py
+++ b/yt/frontends/artio/fields.py
@@ -243,12 +243,15 @@
           function=ParticleMassMsun,
           units=r"\rm{M\odot}",particle_type=True)
 
-def _creation_time(field,data):
-    pa = data["particle_age"]
-    tr = np.zeros(pa.shape,dtype='float')-1.0
-    tr[pa>0] = pa[pa>0]
+add_artio_field("creation_time", function=NullFunc, particle_type=True)
+from io import b2t
+def _particle_age(field,data):
+    pa = data['creation_time']
+#    tr = np.zeros(pa.shape,dtype='float')-1.0
+#    tr[pa>0] = pa[pa>0]
+    tr = pa
     return tr
-add_field("creation_time",function=_creation_time,units=r"\rm{s}",particle_type=True)
+add_field("particle_age",function=_particle_age,units=r"\rm{s}",particle_type=True)
 
 def mass_dm(field, data):
     tr = np.ones(data.ActiveDimensions, dtype='float32')

diff -r 887d13d0c418b9c13c24bcad49385f122686a320 -r d656f82fca66e36a2662e003565b537fe78088f1 yt/frontends/artio/io.py
--- a/yt/frontends/artio/io.py
+++ b/yt/frontends/artio/io.py
@@ -56,7 +56,8 @@
 	print "reading particle data"
         #
         # FIX need an input for particle type (in fields?)
-        accessed_species = ['N-BODY']#,'STAR']
+#        accessed_species = ['N-BODY','STAR']
+        accessed_species = ['STAR']
         #
 	print 'io.py particle fields ',fields
         cp = 0
@@ -79,3 +80,102 @@
 		cp = cp_newsize
         return tr
 
+#stolen from frontends/art/
+#All of these functions are to convert from hydro time var to 
+#proper time
+sqrt = np.sqrt
+sign = np.sign
+
+def find_root(f,a,b,tol=1e-6):
+    c = (a+b)/2.0
+    last = -np.inf
+    assert(sign(f(a)) != sign(f(b)))  
+    while np.abs(f(c)-last) > tol:
+        last=f(c)
+        if sign(last)==sign(f(b)):
+            b=c
+        else:
+            a=c
+        c = (a+b)/2.0
+    return c
+
+def quad(fintegrand,xmin,xmax,n=1e4):
+    spacings = np.logspace(np.log10(xmin),np.log10(xmax),n)
+    integrand_arr = fintegrand(spacings)
+    val = np.trapz(integrand_arr,dx=np.diff(spacings))
+    return val
+
+def a2b(at,Om0=0.27,Oml0=0.73,h=0.700):
+    def f_a2b(x):
+        val = 0.5*sqrt(Om0) / x**3.0
+        val /= sqrt(Om0/x**3.0 +Oml0 +(1.0 - Om0-Oml0)/x**2.0)
+        return val
+    #val, err = si.quad(f_a2b,1,at)
+    val = quad(f_a2b,1,at)
+    return val
+
+def b2a(bt,**kwargs):
+    #converts code time into expansion factor 
+    #if Om0 ==1and OmL == 0 then b2a is (1 / (1-td))**2
+    #if bt < -190.0 or bt > -.10:  raise 'bt outside of range'
+    f_b2a = lambda at: a2b(at,**kwargs)-bt
+    return find_root(f_b2a,1e-4,1.1)
+    #return so.brenth(f_b2a,1e-4,1.1)
+    #return brent.brent(f_b2a)
+
+def a2t(at,Om0=0.27,Oml0=0.73,h=0.700):
+    integrand = lambda x : 1./(x*sqrt(Oml0+Om0*x**-3.0))
+    #current_time,err = si.quad(integrand,0.0,at,epsabs=1e-6,epsrel=1e-6)
+    current_time = quad(integrand,1e-4,at)
+    #spacings = np.logspace(-5,np.log10(at),1e5)
+    #integrand_arr = integrand(spacings)
+    #current_time = np.trapz(integrand_arr,dx=np.diff(spacings))
+    current_time *= 9.779/h
+    return current_time
+
+def b2t(tb,n = 1e2,logger=None,**kwargs):
+    tb = np.array(tb)
+    if type(tb) == type(1.1): 
+        return a2t(b2a(tb))
+    if tb.shape == (): 
+        return a2t(b2a(tb))
+    if len(tb) < n: n= len(tb)
+    age_min = a2t(b2a(tb.max(),**kwargs),**kwargs)
+    age_max = a2t(b2a(tb.min(),**kwargs),**kwargs)
+    tbs  = -1.*np.logspace(np.log10(-tb.min()),
+                          np.log10(-tb.max()),n)
+    ages = []
+    for i,tbi in enumerate(tbs):
+        ages += a2t(b2a(tbi)),
+        if logger: logger(i)
+    ages = np.array(ages)
+    fb2t = np.interp(tb,tbs,ages)
+    #fb2t = interp1d(tbs,ages)
+    return fb2t
+
+def spread_ages(ages,logger=None,spread=1.0e7*365*24*3600):
+    #stars are formed in lumps; spread out the ages linearly
+    da= np.diff(ages)
+    assert np.all(da<=0)
+    #ages should always be decreasing, and ordered so
+    agesd = np.zeros(ages.shape)
+    idx, = np.where(da<0)
+    idx+=1 #mark the right edges
+    #spread this age evenly out to the next age
+    lidx=0
+    lage=0
+    for i in idx:
+        n = i-lidx #n stars affected
+        rage = ages[i]
+        lage = max(rage-spread,0.0)
+        agesd[lidx:i]=np.linspace(lage,rage,n)
+        lidx=i
+        #lage=rage
+        if logger: logger(i)
+    #we didn't get the last iter
+    i=ages.shape[0]-1
+    n = i-lidx #n stars affected
+    rage = ages[i]
+    lage = max(rage-spread,0.0)
+    agesd[lidx:i]=np.linspace(lage,rage,n)
+    return agesd


https://bitbucket.org/yt_analysis/yt-3.0/commits/06cbea3e3ddf/
changeset:   06cbea3e3ddf
branch:      yt-3.0
user:        drudd
date:        2013-03-07 18:33:59
summary:     Updated artio to latest development version
affected #:  11 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/0bbb03b5a1b8/
changeset:   0bbb03b5a1b8
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 01:05:32
summary:     Merged yt_analysis/yt-3.0 into yt-3.0
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/1b6b8687ab84/
changeset:   1b6b8687ab84
branch:      yt-3.0
user:        drudd
date:        2013-03-08 00:55:39
summary:     Added ARTIOChunk and rewrote grid fill function
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/18b2cb62de57/
changeset:   18b2cb62de57
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 00:45:32
summary:     no more octgeometryhandler
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/c958fb499cca/
changeset:   c958fb499cca
branch:      yt-3.0
user:        drudd
date:        2013-03-08 01:04:11
summary:     Merged data_structures.py
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/59486a430c95/
changeset:   59486a430c95
branch:      yt-3.0
user:        drudd
date:        2013-03-08 01:28:10
summary:     Completed fwidth function
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/e540f3180036/
changeset:   e540f3180036
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 01:05:54
summary:     Merged sleitner/yt-3.0-artio into yt-3.0
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/5f957500c586/
changeset:   5f957500c586
branch:      yt-3.0
user:        sername=kayleanelson
date:        2013-03-08 01:11:54
summary:     changed coords from int to float in root_sfc_ranges
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/364c9867167b/
changeset:   364c9867167b
branch:      yt-3.0
user:        sername=kayleanelson
date:        2013-03-08 01:12:57
summary:     merged
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/c6ae1df09539/
changeset:   c6ae1df09539
branch:      yt-3.0
user:        drudd
date:        2013-03-08 01:29:23
summary:     Merged
affected #:  5 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/c8edfe3a2793/
changeset:   c8edfe3a2793
branch:      yt-3.0
user:        drudd
date:        2013-03-08 01:38:16
summary:     Removed delta
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/dfc0ba5f9ce0/
changeset:   dfc0ba5f9ce0
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 01:31:41
summary:     new icoords
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/b4d633b82825/
changeset:   b4d633b82825
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 01:35:30
summary:     fwidth
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/dbf5853e2046/
changeset:   dbf5853e2046
branch:      yt-3.0
user:        sername=kayleanelson
date:        2013-03-08 01:36:16
summary:     refixed root_sfc_ranges
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/d92a63500d83/
changeset:   d92a63500d83
branch:      yt-3.0
user:        drudd
date:        2013-03-08 01:38:59
summary:     Merged
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/ee9e96ea8dda/
changeset:   ee9e96ea8dda
branch:      yt-3.0
user:        drudd
date:        2013-03-08 02:01:18
summary:     Fixed numerous compile errors
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/4434c50fdc77/
changeset:   4434c50fdc77
branch:      yt-3.0
user:        drudd
date:        2013-03-08 02:22:57
summary:     Fixes to identify base chunk, now segfaults on readslice.py
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/f2561c366bb0/
changeset:   f2561c366bb0
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 06:34:15
summary:     removing domain from io
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/ae563fe5a69c/
changeset:   ae563fe5a69c
branch:      yt-3.0
user:        drudd
date:        2013-03-08 08:46:07
summary:     Now builds and produces an image, which is wrong and takes too long to generate
affected #:  4 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/620c7fe65f39/
changeset:   620c7fe65f39
branch:      yt-3.0
user:        drudd
date:        2013-03-08 18:50:46
summary:     Fixes to artio_caller read_chunk
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/aacb448438f9/
changeset:   aacb448438f9
branch:      yt-3.0
user:        drudd
date:        2013-03-08 21:13:08
summary:     Fixed selector subcycling in artio
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/83c5639a79bf/
changeset:   83c5639a79bf
branch:      yt-3.0
user:        sleitner
date:        2013-03-08 20:45:25
summary:     minor updates
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/ba254251ba55/
changeset:   ba254251ba55
branch:      yt-3.0
user:        sername=kayleanelson
date:        2013-03-08 21:12:01
summary:     edits to particle
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/e52b9645648f/
changeset:   e52b9645648f
branch:      yt-3.0
user:        drudd
date:        2013-03-08 21:13:41
summary:     Merged
affected #:  4 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/5ec54129f52a/
changeset:   5ec54129f52a
branch:      yt-3.0
user:        sleitner
date:        2013-03-11 21:20:30
summary:     major restructuring of particle read for chunking and multiple particle species. temporarily exists as a masked and unmasked methods
affected #:  5 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/7d041ee9942e/
changeset:   7d041ee9942e
branch:      yt-3.0
user:        drudd
date:        2013-03-11 21:48:25
summary:     Changes to data_structures
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/c3dbd9cf96bd/
changeset:   c3dbd9cf96bd
branch:      yt-3.0
user:        drudd
date:        2013-03-11 21:48:51
summary:     Changed particle sfc range caching code for performance
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/1b7698938063/
changeset:   1b7698938063
branch:      yt-3.0
user:        drudd
date:        2013-03-11 22:10:43
summary:     Fix to first iteration in particle var fill
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/59ff3cc05794/
changeset:   59ff3cc05794
branch:      yt-3.0
user:        drudd
date:        2013-03-11 22:14:19
summary:     Fixed memory leak in particles
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/e9caf5019828/
changeset:   e9caf5019828
branch:      yt-3.0
user:        drudd
date:        2013-03-13 17:51:11
summary:     Committing broken version for the sake of merging
affected #:  3 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/2821e2e522f8/
changeset:   2821e2e522f8
branch:      yt-3.0
user:        drudd
date:        2013-03-13 17:59:12
summary:     Merged with upstream
affected #:  118 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/be387cedd235/
changeset:   be387cedd235
branch:      yt-3.0
user:        drudd
date:        2013-03-14 04:50:47
summary:     New version of particle support.  Very slow due to python in cython
affected #:  7 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/2b01ec8070e2/
changeset:   2b01ec8070e2
branch:      yt-3.0
user:        drudd
date:        2013-03-14 05:04:37
summary:     Removed some print statements
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/52f79c5b6860/
changeset:   52f79c5b6860
branch:      yt-3.0
user:        drudd
date:        2013-03-14 05:43:51
summary:     Fixed slice code, all_data optimization now works (but is a hack using hasattr)
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/69eed5f959e8/
changeset:   69eed5f959e8
branch:      yt-3.0
user:        drudd
date:        2013-03-14 06:09:49
summary:     More pythonic method of optimizing all_data case
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/f00db6e5c6a4/
changeset:   f00db6e5c6a4
branch:      yt-3.0
user:        drudd
date:        2013-03-14 16:36:30
summary:     Removed all remaining print statements and converted to mylog calls and RaiseError.  Added @property wrapper to ARTIOChunk.data_size to catch size calls before fill
affected #:  5 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/56bfc5b1498f/
changeset:   56bfc5b1498f
branch:      yt-3.0
user:        drudd
date:        2013-03-14 16:59:33
summary:     Fixed bug in ARTIOGeometryHandler.get_smallest_dx returning an array
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/424c756bbd53/
changeset:   424c756bbd53
branch:      yt-3.0
user:        drudd
date:        2013-03-14 18:44:11
summary:     Removed 2 unused variables from _artio_caller.pyx
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/bd139c12e845/
changeset:   bd139c12e845
branch:      yt-3.0
user:        drudd
date:        2013-03-14 18:57:14
summary:     Fixed funding
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/9e56a409651b/
changeset:   9e56a409651b
branch:      yt-3.0
user:        sleitner
date:        2013-03-14 19:15:19
summary:     cleaning up
affected #:  6 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/e72eac7fa59e/
changeset:   e72eac7fa59e
branch:      yt-3.0
user:        sleitner
date:        2013-03-14 19:17:42
summary:     Merged yt_analysis/yt-3.0 into yt-3.0
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/c09e7d2fd4b7/
changeset:   c09e7d2fd4b7
branch:      yt-3.0
user:        drudd
date:        2013-03-14 19:30:52
summary:     Changes to comply with pep8
affected #:  4 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/5199a6bc5520/
changeset:   5199a6bc5520
branch:      yt-3.0
user:        drudd
date:        2013-03-14 19:31:21
summary:     Merge
affected #:  7 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/3ad63a6adfd4/
changeset:   3ad63a6adfd4
branch:      yt-3.0
user:        drudd
date:        2013-03-14 19:35:18
summary:     pep8 changes
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/44eed3700ab2/
changeset:   44eed3700ab2
branch:      yt-3.0
user:        drudd
date:        2013-03-14 19:53:30
summary:     Fixed osx gcc compilation warnings
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/746578ff1410/
changeset:   746578ff1410
branch:      yt-3.0
user:        sername=kayleanelson
date:        2013-03-14 20:01:28
summary:     pep8 changes
affected #:  2 files
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/875b5f9c5706/
changeset:   875b5f9c5706
branch:      yt-3.0
user:        sleitner
date:        2013-03-14 20:20:13
summary:     pep8 compliance for data_structures.py
affected #:  1 file
Diff not available.

https://bitbucket.org/yt_analysis/yt-3.0/commits/a71dffe4bc81/
changeset:   a71dffe4bc81
branch:      yt-3.0
user:        sleitner
date:        2013-03-14 20:21:00
summary:     merging
affected #:  9 files
Diff not available.

Repository URL: https://bitbucket.org/yt_analysis/yt-3.0/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the yt-svn mailing list