<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>astropy.nddata.nddata — Astropy v0.2.4</title> <link rel="stylesheet" href="../../../_static/bootstrap-astropy.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../../', VERSION: '0.2.4', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/underscore.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script> <script type="text/javascript" src="../../../_static/sidebar.js"></script> <link rel="shortcut icon" href="../../../_static/astropy_logo.ico"/> <link rel="top" title="Astropy v0.2.4" href="../../../index.html" /> <link rel="up" title="Module code" href="../../index.html" /> </head> <body> <div class="topbar"> <a class="brand" title="Documentation Home" href="../../../index.html"></a> <ul> <li><a class="homelink" title="AstroPy Homepage" href="http://www.astropy.org"></a></li> <li><a title="General Index" href="../../../genindex.html">Index</a></li> <li><a title="Python Module Index" href="../../../py-modindex.html">Modules</a></li> <li> <form action="../../../search.html" method="get"> <input type="text" name="q" placeholder="Search" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </li> </ul> </div> <div class="related"> <h3>Navigation</h3> <ul> <li> <a href="../../../index.html">Astropy v0.2.4</a> » </li> <li><a href="../../index.html" accesskey="U">Module code</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <h1>Source code for astropy.nddata.nddata</h1><div class="highlight"><pre> <span class="c"># Licensed under a 3-clause BSD style license - see LICENSE.rst</span> <span class="c">#This module implements the base NDData class.</span> <span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'NDData'</span><span class="p">]</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span> <span class="kn">from</span> <span class="nn">..units</span> <span class="kn">import</span> <span class="n">Unit</span> <span class="kn">from</span> <span class="nn">..</span> <span class="kn">import</span> <span class="n">log</span> <span class="kn">from</span> <span class="nn">.flag_collection</span> <span class="kn">import</span> <span class="n">FlagCollection</span> <span class="kn">from</span> <span class="nn">.nduncertainty</span> <span class="kn">import</span> <span class="n">IncompatibleUncertaintiesException</span><span class="p">,</span> <span class="n">NDUncertainty</span> <span class="kn">from</span> <span class="nn">..utils.compat.odict</span> <span class="kn">import</span> <span class="n">OrderedDict</span> <span class="kn">from</span> <span class="nn">..io</span> <span class="kn">import</span> <span class="n">registry</span> <span class="k">as</span> <span class="n">io_registry</span> <span class="kn">from</span> <span class="nn">..config</span> <span class="kn">import</span> <span class="n">ConfigurationItem</span> <span class="n">WARN_UNSUPPORTED_CORRELATED</span> <span class="o">=</span> <span class="n">ConfigurationItem</span><span class="p">(</span> <span class="s">'warn_unsupported_correlated'</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span> <span class="s">'Whether to issue a warning if NDData arithmetic is performed with '</span> <span class="s">'uncertainties and the uncertainties do not support the propagation '</span> <span class="s">'of correlated uncertainties.'</span> <span class="p">)</span> <div class="viewcode-block" id="NDData"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData">[docs]</a><span class="k">class</span> <span class="nc">NDData</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="sd">"""A Superclass for array-based data in Astropy.</span> <span class="sd"> The key distinction from raw numpy arrays is the presence of</span> <span class="sd"> additional metadata such as uncertainties, a mask, units, flags,</span> <span class="sd"> and/or a coordinate system.</span> <span class="sd"> Parameters</span> <span class="sd"> -----------</span> <span class="sd"> data : `~numpy.ndarray` or `~astropy.nddata.NDData`</span> <span class="sd"> The actual data contained in this `NDData` object. Not that this</span> <span class="sd"> will always be copies by *reference* , so you should make copy</span> <span class="sd"> the `data` before passing it in if that's the desired behavior.</span> <span class="sd"> uncertainty : `~astropy.nddata.NDUncertainty`, optional</span> <span class="sd"> Uncertainties on the data.</span> <span class="sd"> mask : `~numpy.ndarray`, optional</span> <span class="sd"> Mask for the data, given as a boolean Numpy array with a shape</span> <span class="sd"> matching that of the data. The values must be ``False`` where</span> <span class="sd"> the data is *valid* and ``True`` when it is not (like Numpy</span> <span class="sd"> masked arrays). If `data` is a numpy masked array, providing</span> <span class="sd"> `mask` here will causes the mask from the masked array to be</span> <span class="sd"> ignored.</span> <span class="sd"> flags : `~numpy.ndarray` or `~astropy.nddata.FlagCollection`, optional</span> <span class="sd"> Flags giving information about each pixel. These can be specified</span> <span class="sd"> either as a Numpy array of any type with a shape matching that of the</span> <span class="sd"> data, or as a `~astropy.nddata.FlagCollection` instance which has a</span> <span class="sd"> shape matching that of the data.</span> <span class="sd"> wcs : undefined, optional</span> <span class="sd"> WCS-object containing the world coordinate system for the data.</span> <span class="sd"> .. warning::</span> <span class="sd"> This is not yet defind because the discussion of how best to</span> <span class="sd"> represent this class's WCS system generically is still under</span> <span class="sd"> consideration. For now just leave it as None</span> <span class="sd"> meta : `dict`-like object, optional</span> <span class="sd"> Metadata for this object. "Metadata" here means all information that</span> <span class="sd"> is included with this object but not part of any other attribute</span> <span class="sd"> of this particular object. e.g., creation date, unique identifier,</span> <span class="sd"> simulation parameters, exposure time, telescope name, etc.</span> <span class="sd"> unit : `astropy.units.UnitBase` instance or str, optional</span> <span class="sd"> The units of the data.</span> <span class="sd"> Raises</span> <span class="sd"> ------</span> <span class="sd"> ValueError</span> <span class="sd"> If the `uncertainty` or `mask` inputs cannot be broadcast (e.g., match</span> <span class="sd"> shape) onto `data`.</span> <span class="sd"> Notes</span> <span class="sd"> -----</span> <span class="sd"> `NDData` objects can be easily converted to a regular Numpy array</span> <span class="sd"> using `numpy.asarray`</span> <span class="sd"> For example::</span> <span class="sd"> >>> from astropy.nddata import NDData</span> <span class="sd"> >>> import numpy as np</span> <span class="sd"> >>> x = NDData([1,2,3])</span> <span class="sd"> >>> np.asarray(x)</span> <span class="sd"> array([1, 2, 3])</span> <span class="sd"> If the `NDData` object has a `mask`, `numpy.asarray` will return a</span> <span class="sd"> Numpy masked array.</span> <span class="sd"> This is useful, for example, when plotting a 2D image using</span> <span class="sd"> matplotlib::</span> <span class="sd"> >>> from astropy.nddata import NDData</span> <span class="sd"> >>> from matplotlib import pyplot as plt</span> <span class="sd"> >>> x = NDData([[1,2,3], [4,5,6]])</span> <span class="sd"> >>> plt.imshow(x)</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">uncertainty</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">wcs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">meta</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">subok</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">uncertainty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="n">uncertainty</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"Overwriting NDData's current uncertainty being overwritten with specified uncertainty"</span><span class="p">)</span> <span class="k">if</span> <span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"Overwriting NDData's current mask being overwritten with specified mask"</span><span class="p">)</span> <span class="k">if</span> <span class="n">flags</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"Overwriting NDData's current flags being overwritten with specified flag"</span><span class="p">)</span> <span class="k">if</span> <span class="n">wcs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="o">=</span> <span class="n">wcs</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"Overwriting NDData's current wcs being overwritten with specified wcs"</span><span class="p">)</span> <span class="k">if</span> <span class="n">meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="n">meta</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"Overwriting NDData's current meta being overwritten with specified meta"</span><span class="p">)</span> <span class="k">if</span> <span class="n">unit</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'To convert to different unit please use .to'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s">'mask'</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">subok</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"NDData was created with a masked array, and a "</span> <span class="s">"mask was explictly provided to NDData. The explicitly "</span> <span class="s">"passed-in mask will be used and the masked array's "</span> <span class="s">"mask will be ignored."</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">mask</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">subok</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="n">uncertainty</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="o">=</span> <span class="n">wcs</span> <span class="bp">self</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="n">meta</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="o">=</span> <span class="n">unit</span> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">mask</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mask</span> <span class="nd">@mask.setter</span> <div class="viewcode-block" id="NDData.mask"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.mask">[docs]</a> <span class="k">def</span> <span class="nf">mask</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">dtype</span> <span class="o">!=</span> <span class="n">np</span><span class="o">.</span><span class="n">bool_</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"mask must be a boolean Numpy array"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"dimensions of mask do not match data"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mask</span> <span class="o">=</span> <span class="n">value</span> <span class="k">else</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"mask must be a Numpy array"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mask</span> <span class="o">=</span> <span class="n">value</span> </div> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">flags</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_flags</span> <span class="nd">@flags.setter</span> <div class="viewcode-block" id="NDData.flags"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.flags">[docs]</a> <span class="k">def</span> <span class="nf">flags</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"dimensions of flags do not match data"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_flags</span> <span class="o">=</span> <span class="n">value</span> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">FlagCollection</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"dimensions of FlagCollection does not match data"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_flags</span> <span class="o">=</span> <span class="n">value</span> <span class="k">else</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"flags should be a Numpy array or a FlagCollection instance"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_flags</span> <span class="o">=</span> <span class="n">value</span> </div> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_uncertainty</span> <span class="nd">@uncertainty.setter</span> <div class="viewcode-block" id="NDData.uncertainty"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.uncertainty">[docs]</a> <span class="k">def</span> <span class="nf">uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">NDUncertainty</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">_uncertainty</span> <span class="o">=</span> <span class="n">value</span> <span class="bp">self</span><span class="o">.</span><span class="n">_uncertainty</span><span class="o">.</span><span class="n">parent_nddata</span> <span class="o">=</span> <span class="bp">self</span> <span class="k">else</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"Uncertainty must be an instance of a NDUncertainty object"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_uncertainty</span> <span class="o">=</span> <span class="n">value</span> </div> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">meta</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="nd">@meta.setter</span> <div class="viewcode-block" id="NDData.meta"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.meta">[docs]</a> <span class="k">def</span> <span class="nf">meta</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span> <span class="k">else</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">'NDData meta attribute must be dict-like'</span><span class="p">)</span> </div> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unit</span> <span class="nd">@unit.setter</span> <div class="viewcode-block" id="NDData.unit"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.unit">[docs]</a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unit</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unit</span> <span class="o">=</span> <span class="n">Unit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </div> <span class="nd">@property</span> <div class="viewcode-block" id="NDData.shape"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.shape">[docs]</a> <span class="k">def</span> <span class="nf">shape</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> shape tuple of this object's data.</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">shape</span> </div> <span class="nd">@property</span> <div class="viewcode-block" id="NDData.size"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.size">[docs]</a> <span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> integer size of this object's data.</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">size</span> </div> <span class="nd">@property</span> <div class="viewcode-block" id="NDData.dtype"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.dtype">[docs]</a> <span class="k">def</span> <span class="nf">dtype</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> `numpy.dtype` of this object's data.</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">dtype</span> </div> <span class="nd">@property</span> <div class="viewcode-block" id="NDData.ndim"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.ndim">[docs]</a> <span class="k">def</span> <span class="nf">ndim</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> integer dimensions of this object's data</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">ndim</span> </div> <span class="k">def</span> <span class="nf">__array__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> This allows code that requests a Numpy array to use an NDData</span> <span class="sd"> object as a Numpy array.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">ma</span><span class="o">.</span><span class="n">masked_array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item</span><span class="p">):</span> <span class="n">new_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="n">new_uncertainty</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="k">else</span><span class="p">:</span> <span class="n">new_uncertainty</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="n">new_mask</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="k">else</span><span class="p">:</span> <span class="n">new_mask</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flags</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span> <span class="n">new_flags</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flags</span><span class="p">,</span> <span class="n">FlagCollection</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'Slicing complex Flags is currently not implemented'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">new_flags</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'Slicing for WCS is not currently implemented'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">new_wcs</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="n">new_data</span><span class="p">,</span> <span class="n">uncertainty</span><span class="o">=</span><span class="n">new_uncertainty</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">new_mask</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">new_flags</span><span class="p">,</span> <span class="n">wcs</span><span class="o">=</span><span class="n">new_wcs</span><span class="p">,</span> <span class="n">meta</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">meta</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="p">)</span> <span class="k">def</span> <span class="nf">_arithmetic</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> {name} another dataset (`operand`) to this dataset.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> operand : `~astropy.nddata.NDData`</span> <span class="sd"> The second operand in the operation a {operator} b</span> <span class="sd"> propagate_uncertainties : bool</span> <span class="sd"> Whether to propagate uncertainties following the propagation rules</span> <span class="sd"> defined by the class used for the `uncertainty` attribute.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> result : `~astropy.nddata.NDData`</span> <span class="sd"> The resulting dataset</span> <span class="sd"> Notes</span> <span class="sd"> -----</span> <span class="sd"> This method requires the datasets to have identical WCS properties,</span> <span class="sd"> equivalent units, and identical shapes. Flags and meta-data get set to</span> <span class="sd"> None in the resulting dataset. The unit in the result is the same as</span> <span class="sd"> the unit in `self`. Uncertainties are propagated, although correlated</span> <span class="sd"> errors are not supported by any of the built-in uncertainty classes.</span> <span class="sd"> If uncertainties are assumed to be correlated, a warning is issued by</span> <span class="sd"> default (though this can be disabled via the</span> <span class="sd"> `WARN_UNSUPPORTED_CORRELATED` configuration item). Values masked in</span> <span class="sd"> either dataset before the operation are masked in the resulting</span> <span class="sd"> dataset.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="o">!=</span> <span class="n">operand</span><span class="o">.</span><span class="n">wcs</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"WCS properties do not match"</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">operand</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">):</span> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">operand</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">is_equivalent</span><span class="p">(</span><span class="n">operand</span><span class="o">.</span><span class="n">unit</span><span class="p">)):</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"operand units do not match"</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="n">operand</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"operand shapes do not match"</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="n">operand_data</span> <span class="o">=</span> <span class="n">operand</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="p">,</span> <span class="n">operand</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">operand_data</span> <span class="o">=</span> <span class="n">operand</span><span class="o">.</span><span class="n">data</span> <span class="n">data</span> <span class="o">=</span> <span class="n">operation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">operand_data</span><span class="p">)</span> <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c"># in case we are dealing with an inherited type</span> <span class="k">if</span> <span class="n">propagate_uncertainties</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">operand</span><span class="o">.</span><span class="n">uncertainty</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="n">operand</span><span class="o">.</span><span class="n">uncertainty</span> <span class="k">elif</span> <span class="n">operand</span><span class="o">.</span><span class="n">uncertainty</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="k">else</span><span class="p">:</span> <span class="c"># both self and operand have uncertainties</span> <span class="k">if</span> <span class="n">WARN_UNSUPPORTED_CORRELATED</span><span class="p">()</span> <span class="ow">and</span> \ <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span><span class="o">.</span><span class="n">support_correlated</span> <span class="ow">or</span> \ <span class="ow">not</span> <span class="n">operand</span><span class="o">.</span><span class="n">uncertainty</span><span class="o">.</span><span class="n">support_correlated</span><span class="p">):</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"The uncertainty classes used do not support the "</span> <span class="s">"propagation of correlated errors, so uncertainties"</span> <span class="s">" will be propagated assuming they are uncorrelated"</span><span class="p">)</span> <span class="k">try</span><span class="p">:</span> <span class="n">method</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">)</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="n">method</span><span class="p">(</span><span class="n">operand</span><span class="p">,</span> <span class="n">result</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="k">except</span> <span class="n">IncompatibleUncertaintiesException</span><span class="p">:</span> <span class="k">raise</span> <span class="n">IncompatibleUncertaintiesException</span><span class="p">(</span> <span class="s">"Cannot propagate uncertainties of type {0:s} with uncertainties of "</span> <span class="s">"type {1:s} for {2:s}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">operand</span><span class="o">.</span><span class="n">uncertainty</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">operand</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">operand</span><span class="o">.</span><span class="n">mask</span> <span class="k">elif</span> <span class="n">operand</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="k">else</span><span class="p">:</span> <span class="c"># combine masks as for Numpy masked arrays</span> <span class="n">result</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">&</span> <span class="n">operand</span><span class="o">.</span><span class="n">mask</span> <span class="n">result</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="bp">None</span> <span class="n">result</span><span class="o">.</span><span class="n">wcs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="n">result</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="bp">None</span> <span class="n">result</span><span class="o">.</span><span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="k">return</span> <span class="n">result</span> <div class="viewcode-block" id="NDData.add"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> <span class="k">if</span> <span class="n">propagate_uncertainties</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="s">"propagate_add"</span> <span class="k">else</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arithmetic</span><span class="p">(</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">,</span> <span class="s">"addition"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">add</span><span class="p">)</span></div> <span class="n">add</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">_arithmetic</span><span class="o">.</span><span class="n">__doc__</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"Add"</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">"+"</span><span class="p">)</span> <div class="viewcode-block" id="NDData.subtract"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.subtract">[docs]</a> <span class="k">def</span> <span class="nf">subtract</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> <span class="k">if</span> <span class="n">propagate_uncertainties</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="s">"propagate_subtract"</span> <span class="k">else</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arithmetic</span><span class="p">(</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">,</span> <span class="s">"subtraction"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">subtract</span><span class="p">)</span></div> <span class="n">subtract</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">_arithmetic</span><span class="o">.</span><span class="n">__doc__</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"Subtract"</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">"-"</span><span class="p">)</span> <div class="viewcode-block" id="NDData.multiply"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.multiply">[docs]</a> <span class="k">def</span> <span class="nf">multiply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> <span class="k">if</span> <span class="n">propagate_uncertainties</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="s">"propagate_multiply"</span> <span class="k">else</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arithmetic</span><span class="p">(</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">,</span> <span class="s">"multiplication"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">multiply</span><span class="p">)</span></div> <span class="n">multiply</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">_arithmetic</span><span class="o">.</span><span class="n">__doc__</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"Multiply"</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">"*"</span><span class="p">)</span> <div class="viewcode-block" id="NDData.divide"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.divide">[docs]</a> <span class="k">def</span> <span class="nf">divide</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> <span class="k">if</span> <span class="n">propagate_uncertainties</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="s">"propagate_divide"</span> <span class="k">else</span><span class="p">:</span> <span class="n">propagate_uncertainties</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arithmetic</span><span class="p">(</span> <span class="n">operand</span><span class="p">,</span> <span class="n">propagate_uncertainties</span><span class="p">,</span> <span class="s">"division"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">divide</span><span class="p">)</span></div> <span class="n">divide</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">_arithmetic</span><span class="o">.</span><span class="n">__doc__</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"Divide"</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">"/"</span><span class="p">)</span> <div class="viewcode-block" id="NDData.convert_unit_to"><a class="viewcode-back" href="../../../_generated/astropy.nddata.nddata.NDData.html#astropy.nddata.nddata.NDData.convert_unit_to">[docs]</a> <span class="k">def</span> <span class="nf">convert_unit_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unit</span><span class="p">,</span> <span class="n">equivalencies</span><span class="o">=</span><span class="p">[]):</span> <span class="sd">"""</span> <span class="sd"> Returns a new `NDData` object whose values have been converted</span> <span class="sd"> to a new unit.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> unit : `astropy.units.UnitBase` instance or str</span> <span class="sd"> The unit to convert to.</span> <span class="sd"> equivalencies : list of equivalence pairs, optional</span> <span class="sd"> A list of equivalence pairs to try if the units are not</span> <span class="sd"> directly convertible. See :ref:`unit_equivalencies`.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> result : `~astropy.nddata.NDData`</span> <span class="sd"> The resulting dataset</span> <span class="sd"> Raises</span> <span class="sd"> ------</span> <span class="sd"> UnitsException</span> <span class="sd"> If units are inconsistent.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">"No unit specified on source data"</span><span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">equivalencies</span><span class="o">=</span><span class="n">equivalencies</span><span class="p">)</span> <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c"># in case we are dealing with an inherited type</span> <span class="n">result</span><span class="o">.</span><span class="n">uncertainty</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">uncertainty</span> <span class="n">result</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="n">result</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="bp">None</span> <span class="n">result</span><span class="o">.</span><span class="n">wcs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wcs</span> <span class="n">result</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">meta</span> <span class="n">result</span><span class="o">.</span><span class="n">unit</span> <span class="o">=</span> <span class="n">unit</span> <span class="k">return</span> <span class="n">result</span> </div> <span class="n">read</span> <span class="o">=</span> <span class="nb">classmethod</span><span class="p">(</span><span class="n">io_registry</span><span class="o">.</span><span class="n">read</span><span class="p">)</span> <span class="n">write</span> <span class="o">=</span> <span class="n">io_registry</span><span class="o">.</span><span class="n">write</span></div> </pre></div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"><h3>Page Contents</h3> </div> </div> <div class="clearer"></div> </div> <footer class="footer"> <p class="pull-right"> <a href="#">Back to Top</a></p> <p> © Copyright 2011-2013, The Astropy Developers.<br/> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. Last built 22 Oct 2013. <br/> </p> </footer> </body> </html>