[Yt-svn] yt-commit r567 - trunk/yt/lagos/hop

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Mon Jun 16 21:15:16 PDT 2008


Author: mturk
Date: Mon Jun 16 21:15:15 2008
New Revision: 567
URL: http://yt.spacepope.org/changeset/567

Log:
Some changes to the way HOP stores the particle info.  This will make it more
useful to galaxy-merger trees, for instance, because you can more easily
identify a *single* list of particles with their groups.

MyHopList.particle_fields["tags"] for instance.



Modified:
   trunk/yt/lagos/hop/HopOutput.py

Modified: trunk/yt/lagos/hop/HopOutput.py
==============================================================================
--- trunk/yt/lagos/hop/HopOutput.py	(original)
+++ trunk/yt/lagos/hop/HopOutput.py	Mon Jun 16 21:15:15 2008
@@ -39,22 +39,33 @@
         self._groups = []
         self._max_dens = {}
         mylog.info("Initializing HOP")
+        self.__obtain_particles()
         self.__run_hop()
         mylog.info("Parsing outputs")
         self.__parse_output()
         mylog.debug("Finished.")
 
-    def __run_hop(self):
+    def __obtain_particles(self):
         if self.dm_only: ii = self.__get_dm_indices()
         else: ii = slice(None)
         self._base_indices = ii
+        self.particle_fields = {}
+        for field in ["particle_position_%s" % ax for ax in 'xyz'] + \
+                     ["ParticleMassMsun"]:
+            self.particle_fields[field] = self.data_source[field][ii]
+        self.particle_fields["particle_index"] = \
+            self.data_source["particle_index"][ii].astype('int64')
+
+    def __run_hop(self):
         self.densities, self.tags = \
-            RunHOP(self.data_source["particle_position_x"][ii],
-                   self.data_source["particle_position_y"][ii],
-                   self.data_source["particle_position_z"][ii],
-                   self.data_source["ParticleMassMsun"][ii],
-                   self.data_source["particle_index"][ii].astype('int64'),
+            RunHOP(self.particle_fields["particle_position_x"],
+                   self.particle_fields["particle_position_y"],
+                   self.particle_fields["particle_position_z"],
+                   self.particle_fields["ParticleMassMsun"],
+                   self.particle_fields["particle_index"],
                    self.threshold)
+        self.particle_fields["densities"] = self.densities
+        self.particle_fields["tags"] = self.tags
 
     def __get_dm_indices(self):
         if 'creation_time' in self.data_source.hierarchy.field_list:
@@ -80,7 +91,7 @@
             group_indices = grab_indices[cp:cp_c]
             self._groups.append(HopGroup(self, i, group_indices))
             md_i = na.argmax(self.densities[sort_indices][cp:cp_c])
-            px, py, pz = [self.data_source['particle_position_%s'%ax][self._base_indices][group_indices]
+            px, py, pz = [self.particle_fields['particle_position_%s'%ax][group_indices]
                                             for ax in 'xyz']
             self._max_dens[i] = (self.densities[sort_indices][cp:cp_c][md_i],
                                  px[md_i], py[md_i], pz[md_i])



More information about the yt-svn mailing list