[yt-svn] commit/yt: atmyers: Merged in MatthewTurk/yt (pull request #1952)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Wed Feb 3 09:12:58 PST 2016
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/9cd43900dce5/
Changeset: 9cd43900dce5
Branch: yt
User: atmyers
Date: 2016-02-03 17:12:48+00:00
Summary: Merged in MatthewTurk/yt (pull request #1952)
Add longitude and latitude
Affected #: 4 files
diff -r 07b81a8cb3eb2dbb24d4ba988539b760b784872d -r 9cd43900dce52ab4ff5f59d63b28a5bd6ccdd92c yt/units/tests/test_units.py
--- a/yt/units/tests/test_units.py
+++ b/yt/units/tests/test_units.py
@@ -37,6 +37,7 @@
# objects
from yt.units.unit_lookup_table import \
default_unit_symbol_lut, unit_prefixes, prefixable_units
+import yt.units.unit_symbols as unit_symbols
# unit definitions
from yt.utilities.physical_ratios import \
cm_per_pc, sec_per_year, cm_per_km, cm_per_mpc, \
@@ -476,6 +477,27 @@
test_unit = Unit('cm**-3', base_value=1.0, registry=ds.unit_registry)
assert_equal(test_unit.latex_repr, '\\frac{1}{\\rm{cm}^{3}}')
+def test_latitude_longitude():
+ lat = unit_symbols.lat
+ lon = unit_symbols.lon
+ deg = unit_symbols.deg
+ yield assert_equal, lat.units.base_offset, 90.0
+ yield assert_equal, (deg*90.0).in_units("lat").value, 0.0
+ yield assert_equal, (deg*180).in_units("lat").value, -90.0
+ yield assert_equal, (lat*0.0).in_units("deg"), deg*90.0
+ yield assert_equal, (lat*-90).in_units("deg"), deg*180
+
+ yield assert_equal, lon.units.base_offset, -180.0
+ yield assert_equal, (deg*0.0).in_units("lon").value, -180.0
+ yield assert_equal, (deg*90.0).in_units("lon").value, -90.0
+ yield assert_equal, (deg*180).in_units("lon").value, 0.0
+ yield assert_equal, (deg*360).in_units("lon").value, 180.0
+
+ yield assert_equal, (lon*-180.0).in_units("deg"), deg*0.0
+ yield assert_equal, (lon*-90.0).in_units("deg"), deg*90.0
+ yield assert_equal, (lon*0.0).in_units("deg"), deg*180.0
+ yield assert_equal, (lon*180.0).in_units("deg"), deg*360
+
def test_registry_json():
reg = UnitRegistry()
json_reg = reg.to_json()
diff -r 07b81a8cb3eb2dbb24d4ba988539b760b784872d -r 9cd43900dce52ab4ff5f59d63b28a5bd6ccdd92c yt/units/unit_lookup_table.py
--- a/yt/units/unit_lookup_table.py
+++ b/yt/units/unit_lookup_table.py
@@ -104,6 +104,8 @@
r"\rm{mas}"), # milliarcseconds
"hourangle": (np.pi/12., dimensions.angle, 0.0, r"\rm{HA}"), # hour angle
"steradian": (1.0, dimensions.solid_angle, 0.0, r"\rm{sr}"),
+ "lat": (-np.pi/180.0, dimensions.angle, 90.0, r"\rm{Latitude}"),
+ "lon": (np.pi/180.0, dimensions.angle, -180.0, r"\rm{Longitude}"),
# misc
"eV": (erg_per_eV, dimensions.energy, 0.0, r"\rm{eV}"),
diff -r 07b81a8cb3eb2dbb24d4ba988539b760b784872d -r 9cd43900dce52ab4ff5f59d63b28a5bd6ccdd92c yt/units/unit_object.py
--- a/yt/units/unit_object.py
+++ b/yt/units/unit_object.py
@@ -24,7 +24,8 @@
from keyword import iskeyword
from yt.units.dimensions import \
base_dimensions, temperature, \
- dimensionless, current_mks
+ dimensionless, current_mks, \
+ angle
from yt.units.unit_lookup_table import \
unit_prefixes, prefixable_units, cgs_base_units, \
mks_base_units, latex_prefixes, yt_base_units
@@ -295,13 +296,13 @@
base_offset = 0.0
if self.base_offset or u.base_offset:
- if u.dimensions is temperature and self.is_dimensionless:
+ if u.dimensions in (temperature, angle) and self.is_dimensionless:
base_offset = u.base_offset
- elif self.dimensions is temperature and u.is_dimensionless:
+ elif self.dimensions in (temperature, angle) and u.is_dimensionless:
base_offset = self.base_offset
else:
raise InvalidUnitOperation("Quantities with units of Fahrenheit "
- "and Celsius cannot be multiplied.")
+ "and Celsius or angles cannot be multiplied.")
return Unit(self.expr * u.expr,
base_value=(self.base_value * u.base_value),
@@ -318,9 +319,9 @@
base_offset = 0.0
if self.base_offset or u.base_offset:
- if u.dimensions is temperature and self.is_dimensionless:
+ if u.dimensions in (temperature, angle) and self.is_dimensionless:
base_offset = u.base_offset
- elif self.dimensions is temperature and u.is_dimensionless:
+ elif self.dimensions in (temperature, angle) and u.is_dimensionless:
base_offset = self.base_offset
else:
raise InvalidUnitOperation("Quantities with units of Farhenheit "
@@ -476,7 +477,7 @@
if old_units.base_offset == 0 and new_units.base_offset == 0:
return (ratio, None)
else:
- if old_units.dimensions is temperature:
+ if old_units.dimensions in (temperature, angle):
return ratio, ratio*old_units.base_offset - new_units.base_offset
else:
raise InvalidUnitOperation(
diff -r 07b81a8cb3eb2dbb24d4ba988539b760b784872d -r 9cd43900dce52ab4ff5f59d63b28a5bd6ccdd92c yt/units/unit_symbols.py
--- a/yt/units/unit_symbols.py
+++ b/yt/units/unit_symbols.py
@@ -172,3 +172,10 @@
A = ampere = Ampere = quan(1.0, "A")
V = volt = Volt = quan(1.0, "V")
ohm = Ohm = quan(1.0, "ohm")
+
+#
+# Geographic units
+#
+
+latitude = lat = quan(1.0, "lat")
+longitude = lon = quan(1.0, "lon")
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