<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Read an adp File in Nortek Aquadopp Format — read.aquadoppProfiler • oce</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.4.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.4.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Read an adp File in Nortek Aquadopp Format — read.aquadoppProfiler"><meta name="description" content="The R code is based on information in
the Nortek System Integrator Guide (2008) and on postings on the Nortek
“knowledge center” discussion board.  One might assume that the latter is
less authoritative than the former.  For example, the inference of cell size
follows advice found at
https://www.nortekusa.com/en/knowledge-center/forum/hr-profilers/736804717,
which contains a typo in an early posting that is
corrected later on."><meta property="og:description" content="The R code is based on information in
the Nortek System Integrator Guide (2008) and on postings on the Nortek
“knowledge center” discussion board.  One might assume that the latter is
less authoritative than the former.  For example, the inference of cell size
follows advice found at
https://www.nortekusa.com/en/knowledge-center/forum/hr-profilers/736804717,
which contains a typo in an early posting that is
corrected later on."></head><body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>


    <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="light" aria-label="Site navigation"><div class="container">

    <a class="navbar-brand me-2" href="../index.html">oce</a>

    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">1.8-4</small>


    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div id="navbar" class="collapse navbar-collapse ms-3">
      <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li>
<li class="nav-item dropdown">
  <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
  <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/A_oce.html">1. Introduction to Oce</a></li>
    <li><a class="dropdown-item" href="../articles/B_ctd.html">2. Analysis of CTD data</a></li>
    <li><a class="dropdown-item" href="../articles/C_adp.html">3. Analysis of acoustic-Doppler data</a></li>
    <li><a class="dropdown-item" href="../articles/D_map_projections.html">4. Using map projections</a></li>
    <li><a class="dropdown-item" href="../articles/E_flags.html">5. Dealing with data-quality flags</a></li>
    <li><a class="dropdown-item" href="../articles/F_subclassing.html">6. Subclassing oce objects</a></li>
    <li><a class="dropdown-item" href="../articles/G_altering_defaults.html">7. Altering oce Defaults</a></li>
    <li><a class="dropdown-item" href="../articles/H_tides.html">8. Tidal Analysis</a></li>
  </ul></li>
<li class="nav-item"><a class="nav-link" href="../news/index.html">Changelog</a></li>
      </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
 <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li>
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/dankelley/oce/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
      </ul></div>


  </div>
</nav><div class="container template-reference-topic">
<div class="row">
  <main id="main" class="col-md-9"><div class="page-header">

      <h1>Read an adp File in Nortek Aquadopp Format</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/adp.nortek.R" class="external-link"><code>R/adp.nortek.R</code></a></small>
      <div class="d-none name"><code>read.aquadoppProfiler.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>The R code is based on information in
the Nortek System Integrator Guide (2008) and on postings on the Nortek
“knowledge center” discussion board.  One might assume that the latter is
less authoritative than the former.  For example, the inference of cell size
follows advice found at
<code>https://www.nortekusa.com/en/knowledge-center/forum/hr-profilers/736804717</code>,
which contains a typo in an early posting that is
corrected later on.</p>
    </div>

    <div class="section level2">
    <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">read.aquadoppProfiler</span><span class="op">(</span></span>
<span>  <span class="va">file</span>,</span>
<span>  from <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  <span class="va">to</span>,</span>
<span>  by <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  tz <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"oceTz"</span><span class="op">)</span>,</span>
<span>  longitude <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  latitude <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  <span class="va">orientation</span>,</span>
<span>  <span class="va">distance</span>,</span>
<span>  monitor <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  despike <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  encoding <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  <span class="va">processingLog</span>,</span>
<span>  debug <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"oceDebug"</span><span class="op">)</span>,</span>
<span>  <span class="va">...</span></span>
<span><span class="op">)</span></span></code></pre></div>
    </div>

    <div class="section level2">
    <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>


<dl><dt id="arg-file">file<a class="anchor" aria-label="anchor" href="#arg-file"></a></dt>
<dd><p>a connection or a character string giving the name of the file
to load.  (For <code>read.adp.sontek.serial</code>, this is generally a list of
files, which will be concatenated.)</p></dd>


<dt id="arg-from">from<a class="anchor" aria-label="anchor" href="#arg-from"></a></dt>
<dd><p>indication of the first profile to read.  This can be an
integer, the sequence number of the first profile to read, or a POSIXt time
before which profiles should be skipped, or a character string that converts
to a POSIXt time (assuming UTC timezone).  See “Examples”, and make
careful note of the use of the <code>tz</code> argument. If <code>from</code> is not
supplied, it defaults to 1.</p></dd>


<dt id="arg-to">to<a class="anchor" aria-label="anchor" href="#arg-to"></a></dt>
<dd><p>an optional indication of the last profile to read, in a
format as described for <code>from</code>.  As a special case, <code>to=0</code> means
to read the file to the end.  If <code>to</code> is not supplied, then it defaults
to 0.</p></dd>


<dt id="arg-by">by<a class="anchor" aria-label="anchor" href="#arg-by"></a></dt>
<dd><p>an optional indication of the stride length to use while walking through
the file.  If this is an integer, then <code>by-1</code> profiles are skipped
between each pair of profiles that is read, e.g. the default <code>by=1</code>
means to read all the data.  (For RDI files <em>only</em>, there are some
extra features to avoid running out of memory; see “Memory considerations”.)</p></dd>


<dt id="arg-tz">tz<a class="anchor" aria-label="anchor" href="#arg-tz"></a></dt>
<dd><p>character string indicating time zone to be assumed in the data.</p></dd>


<dt id="arg-longitude">longitude<a class="anchor" aria-label="anchor" href="#arg-longitude"></a></dt>
<dd><p>optional signed number indicating the longitude in degrees
East.</p></dd>


<dt id="arg-latitude">latitude<a class="anchor" aria-label="anchor" href="#arg-latitude"></a></dt>
<dd><p>optional signed number indicating the latitude in degrees
North.</p></dd>


<dt id="arg-orientation">orientation<a class="anchor" aria-label="anchor" href="#arg-orientation"></a></dt>
<dd><p>Optional character string specifying the orientation of the
sensor, provided for those cases in which it cannot be inferred from the
data file.  The valid choices are <code>"upward"</code>, <code>"downward"</code>, and
<code>"sideward"</code>.</p></dd>


<dt id="arg-distance">distance<a class="anchor" aria-label="anchor" href="#arg-distance"></a></dt>
<dd><p>Optional vector holding the distances of bin centres from the
sensor.  This argument is ignored except for Nortek profilers, and need not
be given if the function determines the distances correctly from the data.
The problem is that the distance is poorly documented in the Nortek System
Integrator Guide (2008 edition, page 31), so the function must rely on
word-of-mouth formulae that do not work in all cases.</p></dd>


<dt id="arg-monitor">monitor<a class="anchor" aria-label="anchor" href="#arg-monitor"></a></dt>
<dd><p>boolean value indicating whether to indicate the progress
of reading the file, by using <code><a href="https://rdrr.io/r/utils/txtProgressBar.html" class="external-link">txtProgressBar()</a></code> or otherwise.  The value
of <code>monitor</code> is changed to <code>FALSE</code> automatically, for non-interactive
sessions.</p></dd>


<dt id="arg-despike">despike<a class="anchor" aria-label="anchor" href="#arg-despike"></a></dt>
<dd><p>if <code>TRUE</code>, <code><a href="despike.html">despike()</a></code> will be used to clean
anomalous spikes in heading, etc.</p></dd>


<dt id="arg-encoding">encoding<a class="anchor" aria-label="anchor" href="#arg-encoding"></a></dt>
<dd><p>ignored.</p></dd>


<dt id="arg-processinglog">processingLog<a class="anchor" aria-label="anchor" href="#arg-processinglog"></a></dt>
<dd><p>if provided, the action item to be stored in the log.
(Typically only provided for internal calls; the default that it provides is
better for normal calls by a user.)</p></dd>


<dt id="arg-debug">debug<a class="anchor" aria-label="anchor" href="#arg-debug"></a></dt>
<dd><p>a flag that turns on debugging.  Set to 1 to get a moderate
amount of debugging information, or to 2 to get more.</p></dd>


<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
<dd><p>optional additional arguments that some (but not all)
<code>read.adp.*()</code> functions pass to lower-level functions.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2>
    <p>An <a href="adp-class.html">adp</a> object.
The contents of that object make sense for the particular instrument
type under study, e.g. if the data file contains
NMEA strings, then navigational data will be stored in an item
called <code>nmea</code> in the <code>data</code> slot).</p>
    </div>
    <div class="section level2">
    <h2 id="how-the-binary-file-is-decoded">How the binary file is decoded<a class="anchor" aria-label="anchor" href="#how-the-binary-file-is-decoded"></a></h2>



<p>This file type, like other acoustic-Doppler types, is read
with a hybrid R/C++ system, for efficiency.
The processing steps are sketched below, for
users who want to inspect the code or build upon it.</p><ol><li><p>In R, <code><a href="https://rdrr.io/r/base/readBin.html" class="external-link">readBin()</a></code> is used to insert the file contents into
a <a href="https://rdrr.io/r/base/vector.html" class="external-link">vector</a> of type <code>raw</code>.</p></li>
<li><p>In C++, this raw vector is scanned byte by byte,
to find the starting indices of data "chunks", or subsections of
the data that correspond to individual sampling times.
Checksum computations are also done at this stage, to detect
possible data corruption.  Warnings are issued for any bad chunks,
and they are skipped in further processing. The valid
starting points are then passed back to R as a <a href="https://rdrr.io/r/base/vector.html" class="external-link">vector</a> of
type <code>integer</code>.</p></li>
<li><p>In R, <code><a href="https://rdrr.io/r/base/readBin.html" class="external-link">readBin()</a></code> is used to read the components of each chunk.
For speed, this is done in a vectorized fashion. For example,
all the velocities in the whole file are read in a single call
to <code><a href="https://rdrr.io/r/base/readBin.html" class="external-link">readBin()</a></code>. This process is done for each of the data
fields that are to be handled.  Importantly, these <code><a href="https://rdrr.io/r/base/readBin.html" class="external-link">readBin()</a></code>
calls are tailored to the data, using values of
the <code>size</code>, <code>endian</code> and <code>signed</code> parameters that are tailored
to the structure of the given component.
Scaling factors are then applied as required, to convert the
components to physical units.</p></li>
<li><p>Finally, in R, the acquired items are inserted into the <code>data</code> or
<code>metadata</code> slot of the return value, according to oce convention.</p></li>
</ol></div>
    <div class="section level2">
    <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2>

<ol><li><p>Information on Nortek profilers (including the System Integrator Guide,
which explains the data format byte-by-byte) is available at
<code>https://www.nortekusa.com/</code>.  (One must join the site to see the
manuals.)</p></li>
<li><p>The Nortek Knowledge Center
<code>https://www.nortekusa.com/en/knowledge-center</code> may be of help if
problems arise in dealing with data from Nortek instruments.</p></li>
</ol></div>
    <div class="section level2">
    <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2>
    <div class="dont-index"><p>Other things related to adp data:
<code><a href="sub-sub-adp-method.html">[[,adp-method</a></code>,
<code>[[&lt;-,adp-method</code>,
<code><a href="ad2cpCodeToName.html">ad2cpCodeToName</a>()</code>,
<code><a href="ad2cpHeaderValue.html">ad2cpHeaderValue</a>()</code>,
<code><a href="adp.html">adp</a></code>,
<code><a href="adp-class.html">adp-class</a></code>,
<code><a href="adpAd2cpFileTrim.html">adpAd2cpFileTrim</a>()</code>,
<code><a href="adpConvertRawToNumeric.html">adpConvertRawToNumeric</a>()</code>,
<code><a href="adpEnsembleAverage.html">adpEnsembleAverage</a>()</code>,
<code><a href="adpFlagPastBoundary.html">adpFlagPastBoundary</a>()</code>,
<code><a href="adpRdiFileTrim.html">adpRdiFileTrim</a>()</code>,
<code><a href="adp_rdi.000.html">adp_rdi.000</a></code>,
<code><a href="applyMagneticDeclination-adp-method.html">applyMagneticDeclination,adp-method</a></code>,
<code><a href="as.adp.html">as.adp</a>()</code>,
<code><a href="beamName.html">beamName</a>()</code>,
<code><a href="beamToXyz.html">beamToXyz</a>()</code>,
<code><a href="beamToXyzAdp.html">beamToXyzAdp</a>()</code>,
<code><a href="beamToXyzAdpAD2CP.html">beamToXyzAdpAD2CP</a>()</code>,
<code><a href="beamToXyzAdv.html">beamToXyzAdv</a>()</code>,
<code><a href="beamUnspreadAdp.html">beamUnspreadAdp</a>()</code>,
<code><a href="binmapAdp.html">binmapAdp</a>()</code>,
<code><a href="enuToOther.html">enuToOther</a>()</code>,
<code><a href="enuToOtherAdp.html">enuToOtherAdp</a>()</code>,
<code><a href="handleFlags-adp-method.html">handleFlags,adp-method</a></code>,
<code><a href="is.ad2cp.html">is.ad2cp</a>()</code>,
<code><a href="plot-adp-method.html">plot,adp-method</a></code>,
<code><a href="read.adp.html">read.adp</a>()</code>,
<code><a href="read.adp.ad2cp.html">read.adp.ad2cp</a>()</code>,
<code><a href="read.adp.nortek.html">read.adp.nortek</a>()</code>,
<code><a href="read.adp.rdi.html">read.adp.rdi</a>()</code>,
<code><a href="read.adp.sontek.html">read.adp.sontek</a>()</code>,
<code><a href="read.adp.sontek.serial.html">read.adp.sontek.serial</a>()</code>,
<code><a href="read.aquadopp.html">read.aquadopp</a>()</code>,
<code><a href="read.aquadoppHR.html">read.aquadoppHR</a>()</code>,
<code><a href="rotateAboutZ.html">rotateAboutZ</a>()</code>,
<code><a href="setFlags-adp-method.html">setFlags,adp-method</a></code>,
<code><a href="subset-adp-method.html">subset,adp-method</a></code>,
<code><a href="subtractBottomVelocity.html">subtractBottomVelocity</a>()</code>,
<code><a href="summary-adp-method.html">summary,adp-method</a></code>,
<code><a href="toEnu.html">toEnu</a>()</code>,
<code><a href="toEnuAdp.html">toEnuAdp</a>()</code>,
<code><a href="velocityStatistics.html">velocityStatistics</a>()</code>,
<code><a href="xyzToEnu.html">xyzToEnu</a>()</code>,
<code><a href="xyzToEnuAdp.html">xyzToEnuAdp</a>()</code>,
<code><a href="xyzToEnuAdpAD2CP.html">xyzToEnuAdpAD2CP</a>()</code></p>
<p>Other functions that read adp data:
<code><a href="read.adp.html">read.adp</a>()</code>,
<code><a href="read.adp.ad2cp.html">read.adp.ad2cp</a>()</code>,
<code><a href="read.adp.nortek.html">read.adp.nortek</a>()</code>,
<code><a href="read.adp.rdi.html">read.adp.rdi</a>()</code>,
<code><a href="read.adp.sontek.html">read.adp.sontek</a>()</code>,
<code><a href="read.adp.sontek.serial.html">read.adp.sontek.serial</a>()</code>,
<code><a href="read.aquadopp.html">read.aquadopp</a>()</code>,
<code><a href="read.aquadoppHR.html">read.aquadoppHR</a>()</code></p></div>
    </div>
    <div class="section level2">
    <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2>
    <p>Dan Kelley</p>
    </div>

  </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
    </nav></aside></div>


    <footer><div class="pkgdown-footer-left">
  <p>Developed by Dan Kelley, Clark Richards.</p>
</div>

<div class="pkgdown-footer-right">
  <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.0.9000.</p>
</div>

    </footer></div>





  </body></html>

