[yt-dev] Issue #773: Unitrefactor: cannot process units for magnetic fields (yt_analysis/yt)
John ZuHone
issues-reply at bitbucket.org
Mon Feb 3 21:20:01 PST 2014
New issue 773: Unitrefactor: cannot process units for magnetic fields
https://bitbucket.org/yt_analysis/yt/issue/773/unitrefactor-cannot-process-units-for
John ZuHone:
This script:
```
#!python
pf = load("GasSloshing/sloshing_nomag2_hdf5_plt_cnt_0100")
v, c = pf.h.find_max("density")
sl = pf.h.slice(0, c[0])
print sl["magnetic_field_z"].shape
```
results in this:
```
---------------------------------------------------------------------------
UnitParseError Traceback (most recent call last)
<ipython-input-3-9aa7caa31868> in <module>()
5 print sl["z"]
6 print sl["pdx"]
----> 7 print sl["magnetic_field_z"].shape
/Users/jzuhone/Source/yt-units-notbroke/yt/data_objects/data_containers.pyc in __getitem__(self, key)
203 return self.field_data[f]
204 else:
--> 205 self.get_data(f)
206 # fi.units is the unit expression string. We depend on the registry
207 # hanging off the dataset to define this unit object.
/Users/jzuhone/Source/yt-units-notbroke/yt/data_objects/data_containers.pyc in get_data(self, fields)
607
608 fields_to_generate += gen_fluids + gen_particles
--> 609 self._generate_fields(fields_to_generate)
610
611 def _generate_fields(self, fields_to_generate):
/Users/jzuhone/Source/yt-units-notbroke/yt/data_objects/data_containers.pyc in _generate_fields(self, fields_to_generate)
630 raise RuntimeError
631 self.field_data[field] = fd
--> 632 fd.convert_to_units(fi.units)
633 except GenerationInProgress as gip:
634 for f in gip.fields:
/Users/jzuhone/Source/yt-units-notbroke/yt/units/yt_array.pyc in convert_to_units(self, units)
330
331 """
--> 332 new_units = self._unit_repr_check_same(units)
333 conversion_factor = self.units.get_conversion_factor(new_units)
334
/Users/jzuhone/Source/yt-units-notbroke/yt/units/yt_array.pyc in _unit_repr_check_same(self, units)
312 # let Unit() handle units arg if it's not already a Unit obj.
313 if not isinstance(units, Unit):
--> 314 units = Unit(units, registry = self.units.registry)
315
316 if not self.units.same_dimensions_as(units):
/Users/jzuhone/Source/yt-units-notbroke/yt/units/unit_object.pyc in __new__(cls, unit_expr, cgs_value, dimensions, registry, **assumptions)
133 else:
134 # lookup the unit symbols
--> 135 cgs_value, dimensions = _get_unit_data_from_expr(unit_expr, registry.lut)
136
137 # Sympy trick to get dimensions powers as Rationals
/Users/jzuhone/Source/yt-units-notbroke/yt/units/unit_object.pyc in _get_unit_data_from_expr(unit_expr, unit_symbol_lut)
407 dimensions = 1
408 for expr in unit_expr.args:
--> 409 unit_data = _get_unit_data_from_expr(expr, unit_symbol_lut)
410 cgs_value *= unit_data[0]
411 dimensions *= unit_data[1]
/Users/jzuhone/Source/yt-units-notbroke/yt/units/unit_object.pyc in _get_unit_data_from_expr(unit_expr, unit_symbol_lut)
397
398 if isinstance(unit_expr, Pow):
--> 399 unit_data = _get_unit_data_from_expr(unit_expr.args[0], unit_symbol_lut)
400 power = unit_expr.args[1]
401 conv = float(unit_data[0]**power)
/Users/jzuhone/Source/yt-units-notbroke/yt/units/unit_object.pyc in _get_unit_data_from_expr(unit_expr, unit_symbol_lut)
415 raise UnitParseError("Cannot parse for unit data from '%s'. Please supply" \
416 " an expression of only Unit, Symbol, Pow, and Mul" \
--> 417 "objects." % str(unit_expr))
418
419
UnitParseError: Cannot parse for unit data from 'sqrt(cm)'. Please supply an expression of only Unit, Symbol, Pow, and Mulobjects.
: UnitParseError: Cannot parse for unit data from 'sqrt(cm)'. Please supply an expression of only Unit, Symbol, Pow, and Mulobjects. [yt.units.unit_object]
```
Responsible: MatthewTurk
More information about the yt-dev
mailing list