Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 82fd441cd3f2a8bc33fc3ed41403eced > files > 1506

python-astropy-0.2.4-4.mga4.x86_64.rpm


<!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 &mdash; 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>
	 &raquo;
      </li>
      <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</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">&#39;NDData&#39;</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">&#39;warn_unsupported_correlated&#39;</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span>
    <span class="s">&#39;Whether to issue a warning if NDData arithmetic is performed with &#39;</span>
    <span class="s">&#39;uncertainties and the uncertainties do not support the propagation &#39;</span>
    <span class="s">&#39;of correlated uncertainties.&#39;</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">&quot;&quot;&quot;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&#39;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&#39;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.  &quot;Metadata&quot; 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">        &gt;&gt;&gt; from astropy.nddata import NDData</span>
<span class="sd">        &gt;&gt;&gt; import numpy as np</span>
<span class="sd">        &gt;&gt;&gt; x = NDData([1,2,3])</span>
<span class="sd">        &gt;&gt;&gt; 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">        &gt;&gt;&gt; from astropy.nddata import NDData</span>
<span class="sd">        &gt;&gt;&gt; from matplotlib import pyplot as plt</span>
<span class="sd">        &gt;&gt;&gt; x = NDData([[1,2,3], [4,5,6]])</span>
<span class="sd">        &gt;&gt;&gt; plt.imshow(x)</span>

<span class="sd">    &quot;&quot;&quot;</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">&quot;Overwriting NDData&#39;s current uncertainty being overwritten with specified uncertainty&quot;</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">&quot;Overwriting NDData&#39;s current mask being overwritten with specified mask&quot;</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">&quot;Overwriting NDData&#39;s current flags being overwritten with specified flag&quot;</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">&quot;Overwriting NDData&#39;s current wcs being overwritten with specified wcs&quot;</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">&quot;Overwriting NDData&#39;s current meta being overwritten with specified meta&quot;</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">&#39;To convert to different unit please use .to&#39;</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">&#39;mask&#39;</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">&quot;NDData was created with a masked array, and a &quot;</span>
                        <span class="s">&quot;mask was explictly provided to NDData. The explicitly &quot;</span>
                        <span class="s">&quot;passed-in mask will be used and the masked array&#39;s &quot;</span>
                        <span class="s">&quot;mask will be ignored.&quot;</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">&quot;mask must be a boolean Numpy array&quot;</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">&quot;dimensions of mask do not match data&quot;</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">&quot;mask must be a Numpy array&quot;</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">&quot;dimensions of flags do not match data&quot;</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">&quot;dimensions of FlagCollection does not match data&quot;</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">&quot;flags should be a Numpy array or a FlagCollection instance&quot;</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">&quot;Uncertainty must be an instance of a NDUncertainty object&quot;</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">&#39;NDData meta attribute must be dict-like&#39;</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">&quot;&quot;&quot;</span>
<span class="sd">        shape tuple of this object&#39;s data.</span>
<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;</span>
<span class="sd">        integer size of this object&#39;s data.</span>
<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;</span>
<span class="sd">        `numpy.dtype` of this object&#39;s data.</span>
<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;</span>
<span class="sd">        integer dimensions of this object&#39;s data</span>
<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;</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">        &quot;&quot;&quot;</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">&#39;Slicing complex Flags is currently not implemented&#39;</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">&#39;Slicing for WCS is not currently implemented&#39;</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">&quot;&quot;&quot;</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">        &quot;&quot;&quot;</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">&quot;WCS properties do not match&quot;</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">&quot;operand units do not match&quot;</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">&quot;operand shapes do not match&quot;</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">&quot;The uncertainty classes used do not support the &quot;</span>
                         <span class="s">&quot;propagation of correlated errors, so uncertainties&quot;</span>
                         <span class="s">&quot; will be propagated assuming they are uncorrelated&quot;</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">&quot;Cannot propagate uncertainties of type {0:s} with uncertainties of &quot;</span>
                    <span class="s">&quot;type {1:s} for {2:s}&quot;</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">&amp;</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">&quot;propagate_add&quot;</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">&quot;addition&quot;</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">&quot;Add&quot;</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">&quot;+&quot;</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">&quot;propagate_subtract&quot;</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">&quot;subtraction&quot;</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">&quot;Subtract&quot;</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">&quot;-&quot;</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">&quot;propagate_multiply&quot;</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">&quot;multiplication&quot;</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">&quot;Multiply&quot;</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">&quot;*&quot;</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">&quot;propagate_divide&quot;</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">&quot;division&quot;</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">&quot;Divide&quot;</span><span class="p">,</span> <span class="n">operator</span><span class="o">=</span><span class="s">&quot;/&quot;</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">&quot;&quot;&quot;</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">        &quot;&quot;&quot;</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">&quot;No unit specified on source data&quot;</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"> &nbsp;
    <a href="#">Back to Top</a></p>
  <p>
    &copy; Copyright 2011-2013, The Astropy Developers.<br/>
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. &nbsp;
    Last built 22 Oct 2013. <br/>
  </p>
</footer>
  </body>
</html>