[yt-svn] commit/yt: 8 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Nov 5 10:06:53 PST 2014


8 new commits in yt:

https://bitbucket.org/yt_analysis/yt/commits/3b9daf8a952b/
Changeset:   3b9daf8a952b
Branch:      yt
User:        ngoldbaum
Date:        2014-11-04 19:49:16+00:00
Summary:     Ensure profiled data are in the correct units.
Affected #:  1 file

diff -r b4349fc571eab65546c041ae955591ca3688aac4 -r 3b9daf8a952b249d937367bad02866e3b5b293c6 yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -907,9 +907,11 @@
         if not np.any(filter): return None
         arr = np.zeros((bin_fields[0].size, len(fields)), dtype="float64")
         for i, field in enumerate(fields):
-            arr[:,i] = chunk[field][filter]
+            units = chunk.ds.field_info[field].units
+            arr[:,i] = chunk[field][filter].in_units(units)
         if self.weight_field is not None:
-            weight_data = chunk[self.weight_field]
+            units = chunk.ds.field_info[weight_field].units
+            weight_data = chunk[self.weight_field].in_units(units)
         else:
             weight_data = np.ones(filter.size, dtype="float64")
         weight_data = weight_data[filter]


https://bitbucket.org/yt_analysis/yt/commits/45faac242956/
Changeset:   45faac242956
Branch:      yt
User:        ngoldbaum
Date:        2014-11-04 21:32:48+00:00
Summary:     Fix a NameError introduced in the previous commit.
Affected #:  1 file

diff -r 3b9daf8a952b249d937367bad02866e3b5b293c6 -r 45faac2429567fcfabe3424042fb2e82dd250f4e yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -910,7 +910,7 @@
             units = chunk.ds.field_info[field].units
             arr[:,i] = chunk[field][filter].in_units(units)
         if self.weight_field is not None:
-            units = chunk.ds.field_info[weight_field].units
+            units = chunk.ds.field_info[self.weight_field].units
             weight_data = chunk[self.weight_field].in_units(units)
         else:
             weight_data = np.ones(filter.size, dtype="float64")


https://bitbucket.org/yt_analysis/yt/commits/4a11441424f9/
Changeset:   4a11441424f9
Branch:      yt
User:        ngoldbaum
Date:        2014-11-04 21:37:43+00:00
Summary:     Ensuring profiled fields are always fully qualified field tuples.
Affected #:  1 file

diff -r 45faac2429567fcfabe3424042fb2e82dd250f4e -r 4a11441424f92b878f8b02c4e50c15dfb057f36e yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -761,6 +761,7 @@
         self.field_data = YTFieldData()
         if weight_field is not None:
             self.variance = YTFieldData()
+            weight_field = self.data_source._determine_fields(weight_field)[0]
         self.weight_field = weight_field
         self.field_units = {}
         ParallelAnalysisInterface.__init__(self, comm=data_source.comm)
@@ -774,7 +775,7 @@
             A list of fields to create profile histograms for
         
         """
-        fields = ensure_list(fields)
+        fields = self.data_source._determine_fields(fields)
         temp_storage = ProfileFieldAccumulator(len(fields), self.size)
         cfields = fields + list(self.bin_fields)
         citer = self.data_source.chunks(cfields, "io")


https://bitbucket.org/yt_analysis/yt/commits/0616ccc122d1/
Changeset:   0616ccc122d1
Branch:      yt
User:        ngoldbaum
Date:        2014-11-05 00:12:40+00:00
Summary:     Don't rely on input data not being field tuples in create_profile
Affected #:  1 file

diff -r 4a11441424f92b878f8b02c4e50c15dfb057f36e -r 0616ccc122d1187d7897194f579549cc493fc4b9 yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -1296,7 +1296,7 @@
     >>> print profile["gas", "temperature"]
 
     """
-    bin_fields = ensure_list(bin_fields)
+    bin_fields = data_source._determine_fields(bin_fields)
     fields = ensure_list(fields)
     if len(bin_fields) == 1:
         cls = Profile1D
@@ -1318,6 +1318,11 @@
         for item in extrema:
             dummy[data_source._determine_fields(item)[0]] = extrema[item]
         extrema.update(dummy)
+    if logs is not None:
+        dummy = {}
+        for item in logs:
+            dummy[data_source._determine_fields(item)[0]] = logs[item]
+        logs.update(dummy)
     if weight_field is not None:
         weight_field, = data_source._determine_fields([weight_field])
     if not iterable(n_bins):
@@ -1328,7 +1333,7 @@
         logs = [data_source.ds._get_field_info(f[0],f[1]).take_log
                 for f in bin_fields]
     else:
-        logs = [logs[bin_field[-1]] for bin_field in bin_fields]
+        logs = [logs[bin_field] for bin_field in bin_fields]
     if extrema is None:
         ex = [data_source.quantities["Extrema"](f, non_zero=l)
               for f, l in zip(bin_fields, logs)]


https://bitbucket.org/yt_analysis/yt/commits/4d7a1a506862/
Changeset:   4d7a1a506862
Branch:      yt
User:        ngoldbaum
Date:        2014-11-05 00:43:26+00:00
Summary:     Factor out duplicated dict key handling code into its own function.
Affected #:  1 file

diff -r 0616ccc122d1187d7897194f579549cc493fc4b9 -r 4d7a1a506862fa806b458bd04625c398152055d6 yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -1233,6 +1233,16 @@
         self.z_bins.convert_to_units(new_unit)
         self.z = 0.5*(self.z_bins[1:]+self.z_bins[:-1])
 
+
+def sanitize_field_tuple_keys(input_dict, data_source):
+    if input_dict is not None:
+        dummy = {}
+        for item in input_dict:
+            dummy[data_source._determine_fields(item)[0]] = input_dict[item]
+        return dummy
+    else:
+        return input_dict
+
 def create_profile(data_source, bin_fields, fields, n_bins=64,
                    extrema=None, logs=None, units=None,
                    weight_field="cell_mass",
@@ -1308,21 +1318,9 @@
         raise NotImplementedError
     bin_fields = data_source._determine_fields(bin_fields)
     fields = data_source._determine_fields(fields)
-    if units is not None:
-        dummy = {}
-        for item in units:
-            dummy[data_source._determine_fields(item)[0]] = units[item]
-        units.update(dummy)
-    if extrema is not None:
-        dummy = {}
-        for item in extrema:
-            dummy[data_source._determine_fields(item)[0]] = extrema[item]
-        extrema.update(dummy)
-    if logs is not None:
-        dummy = {}
-        for item in logs:
-            dummy[data_source._determine_fields(item)[0]] = logs[item]
-        logs.update(dummy)
+    units = sanitize_field_tuple_keys(units, data_source)
+    extrema = sanitize_field_tuple_keys(extrema, data_source)
+    logs = sanitize_field_tuple_keys(logs, data_source)
     if weight_field is not None:
         weight_field, = data_source._determine_fields([weight_field])
     if not iterable(n_bins):


https://bitbucket.org/yt_analysis/yt/commits/0ea3f42df646/
Changeset:   0ea3f42df646
Branch:      yt
User:        ngoldbaum
Date:        2014-11-05 00:43:56+00:00
Summary:     Don't assume log settings for all fields are provided by the user.
Affected #:  1 file

diff -r 4d7a1a506862fa806b458bd04625c398152055d6 -r 0ea3f42df646daa6ad5cf0c48f1a2b1617e5ce56 yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -1328,10 +1328,14 @@
     if not iterable(accumulation):
         accumulation = [accumulation] * len(bin_fields)
     if logs is None:
-        logs = [data_source.ds._get_field_info(f[0],f[1]).take_log
-                for f in bin_fields]
-    else:
-        logs = [logs[bin_field] for bin_field in bin_fields]
+        logs = {}
+    logs_list = []
+    for bin_field in bin_fields:
+        if bin_field in logs:
+            logs_list.append(logs[bin_field])
+        else:
+            logs_list.append(data_source.ds.field_info[bin_field].take_log)
+    logs = logs_list
     if extrema is None:
         ex = [data_source.quantities["Extrema"](f, non_zero=l)
               for f, l in zip(bin_fields, logs)]


https://bitbucket.org/yt_analysis/yt/commits/45b7d1d7efca/
Changeset:   45b7d1d7efca
Branch:      yt
User:        ngoldbaum
Date:        2014-11-05 00:44:23+00:00
Summary:     Use field_info instead of _get_field_info since we know we have field tuples.
Affected #:  1 file

diff -r 0ea3f42df646daa6ad5cf0c48f1a2b1617e5ce56 -r 45b7d1d7efca30a84925f2217302613ddde1175a yt/data_objects/profiles.py
--- a/yt/data_objects/profiles.py
+++ b/yt/data_objects/profiles.py
@@ -1342,8 +1342,7 @@
     else:
         ex = []
         for bin_field in bin_fields:
-            bf_units = data_source.ds._get_field_info(
-                bin_field[0], bin_field[1]).units
+            bf_units = data_source.ds.field_info[bin_field].units
             try:
                 field_ex = list(extrema[bin_field[-1]])
             except KeyError:


https://bitbucket.org/yt_analysis/yt/commits/072728c9e458/
Changeset:   072728c9e458
Branch:      yt
User:        ngoldbaum
Date:        2014-11-05 00:44:36+00:00
Summary:     Add tests for create_profile.
Affected #:  1 file

diff -r 45b7d1d7efca30a84925f2217302613ddde1175a -r 072728c9e45816127efc793be46ff045fafe96cd yt/data_objects/tests/test_profiles.py
--- a/yt/data_objects/tests/test_profiles.py
+++ b/yt/data_objects/tests/test_profiles.py
@@ -1,7 +1,7 @@
 from yt.testing import *
 from yt.data_objects.profiles import \
     BinnedProfile1D, BinnedProfile2D, BinnedProfile3D, \
-    Profile1D, Profile2D, Profile3D
+    Profile1D, Profile2D, Profile3D, create_profile
 
 _fields = ("density", "temperature", "dinosaurs", "tribbles")
 _units = ("g/cm**3", "K", "dyne", "erg")
@@ -87,13 +87,26 @@
     for nb in [8, 16, 32, 64]:
         # We log all the fields or don't log 'em all.  No need to do them
         # individually.
-        for lf in [True, False]: 
-            p1d = Profile1D(dd, 
-                "density",     nb, rmi*e1, rma*e2, lf,
-                weight_field = None)
-            p1d.add_fields(["ones", "temperature"])
-            yield assert_equal, p1d["ones"].sum(), nv
-            yield assert_rel_equal, tt, p1d["temperature"].sum(), 7
+        for lf in [True, False]:
+            direct_profile = Profile1D(
+                dd, "density", nb, rmi*e1, rma*e2, lf, weight_field = None)
+            direct_profile.add_fields(["ones", "temperature"])
+
+            indirect_profile_s = create_profile(
+                dd, "density", ["ones", "temperature"], n_bins=nb,
+                extrema={'density': (rmi*e1, rma*e2)}, logs={'density': lf}, 
+                weight_field=None)
+
+            indirect_profile_t = create_profile(
+                dd, ("gas", "density"),
+                [("index", "ones"), ("gas", "temperature")], n_bins=nb,
+                extrema={'density': (rmi*e1, rma*e2)}, logs={'density': lf}, 
+                weight_field=None)
+
+            for p1d in [direct_profile, indirect_profile_s,
+                        indirect_profile_t]:
+                yield assert_equal, p1d["index", "ones"].sum(), nv
+                yield assert_rel_equal, tt, p1d["gas", "temperature"].sum(), 7
 
             p2d = Profile2D(dd, 
                 "density",     nb, rmi*e1, rma*e2, lf,
@@ -154,6 +167,12 @@
         p3d.add_fields(["ones"])
         yield assert_equal, p3d["ones"], np.ones((nb,nb,nb))
 
+extrema_s = {'particle_position_x': (0, 1)}
+logs_s = {'particle_position_x': False}
+
+extrema_t = {('all', 'particle_position_x'): (0, 1)}
+logs_t = {('all', 'particle_position_x'): False}
+
 def test_particle_profiles():
     for nproc in [1, 2, 4, 8]:
         ds = fake_random_ds(32, nprocs=nproc, particles = 32**3)
@@ -164,6 +183,18 @@
         p1d.add_fields(["particle_ones"])
         yield assert_equal, p1d["particle_ones"].sum(), 32**3
 
+        p1d = create_profile(dd, ["particle_position_x"], ["particle_ones"],
+                             weight_field=None, n_bins=128, extrema=extrema_s,
+                             logs=logs_s)
+        yield assert_equal, p1d["particle_ones"].sum(), 32**3
+
+        p1d = create_profile(dd,
+                             [("all", "particle_position_x")],
+                             [("all", "particle_ones")],
+                             weight_field=None, n_bins=128, extrema=extrema_t,
+                             logs=logs_t)
+        yield assert_equal, p1d["particle_ones"].sum(), 32**3
+
         p2d = Profile2D(dd, "particle_position_x", 128, 0.0, 1.0, False,
                             "particle_position_y", 128, 0.0, 1.0, False,
                         weight_field = None)

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

--

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