[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