[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