From f1df2688e6f3a9f077ab8e0c670d1615241c3148 Mon Sep 17 00:00:00 2001
From: Blaise Thompson <blaise@untzag.com>
Date: Sun, 8 Apr 2018 10:27:59 -0500
Subject: 2018-04-08 10:27

---
 processing/chapter.tex | 152 +++++++++++++++++++++++++------------------------
 1 file changed, 78 insertions(+), 74 deletions(-)

(limited to 'processing/chapter.tex')

diff --git a/processing/chapter.tex b/processing/chapter.tex
index c1e46f4..2feec22 100644
--- a/processing/chapter.tex
+++ b/processing/chapter.tex
@@ -44,21 +44,24 @@ The biggest challenge is to find a really good definition for what constitutes a
 Once understood, this common denominator can be enshrined into software and built upon.  %
 
 WrightTools is a software package written in Python, built using the excellent tools provided by
-the scientific Python collection of packages, especially Scipy and Numpy. [CITE?]  %
+the scientific Python collection of packages, especially Scipy \cite{SciPy} and Numpy
+\cite{OliphantTravisE2006a}.  %
 WrightTools defines a universal file-format that is flexible enough to encompass the diversity of
 CMDS while still being entirely self-describing.  %
-This file format is based on the popular binary format ``HDF5''. \cite{h5py}  %
+This file format is based on the popular binary format ``HDF5'' \cite{FolkMike2011a}, as
+interfaced by the h5py python library \cite{h5py}.  %
 This format allows for computers to interact with the arrays piece-by-piece in a very fast and
 reliable way, without loading the entire array in and out of memory.  %
-WrightTools piggybacks on this, allowing users to interact with legitimately large CMDS datasets
-without worrying about memory overflow.  %
+Using object oriented programming, the main classes in WrightTools are children of h5py classes,
+allowing users to interact with legitimately large CMDS datasets without worrying about memory
+overflow.  %
 WrightTools takes a unique approach to representing CMDS data in array format, nick-named
 ``semi-structure'', that allows for greater flexibility in representing CMDS in different
 coordinate spaces.  %
 
 WrightTools is written to be used in scripts and in the command line.  %
 It does not have any graphical components built in, except for the ability to generate plots using
-matplotlib. [CITE?]  %
+matplotlib \cite{HunterJohnD2007a}.  %
 Being built in this way gives WrightTools users maximum flexibility, and allows for rapid
 collaborative development.  %
 It also allows other software packages to use WrightTools as a ``back-end'' foundational software,
@@ -78,6 +81,8 @@ To use WrightTools, simply import:
 I'll discuss more about how exactly WrightTools packaging, distribution, and instillation works in
 \autoref{pro:sec:distribution}.
 
+% TODO: consider making the following into a table
+
 We can use the builtin Python function \python{dir} to interrogate the contents of the
 WrightTools package.  %
 \begin{codefragment}{python}
@@ -149,38 +154,38 @@ Typical variables might be \python{[w1, w2, w3, d1, d2]}, and typical channels
 \begin{table}
   \begin{tabular}{c | c | l}
     & type & description \\ \hline
-    \python{collapse} & method & Collapse along one dimension in a well-defined way. \\ \hline
-    \python{convert} & method & Convert all axes of a certain kind. \\ \hline
-    \python{create_channel} & method & Create a new channel. \\ \hline
-    \python{create_variable} & method & Create a new variable. \\ \hline
-    \python{fullpath} & attribute & \\ \hline
-    \python{get_nadir} & & \\ \hline
-    \python{get_zenith} & & \\ \hline
-    \python{heal} & & \\ \hline
-    \python{kind} & & \\ \hline
-    \python{level} & & \\ \hline
-    \python{map_variable} & & \\ \hline
-    \python{natural_name} & & \\ \hline
-    \python{ndim} & & \\ \hline
-    \python{offset} & & \\ \hline
-    \python{print_tree} & & \\ \hline
-    \python{remove_channel} & & \\ \hline
-    \python{remove_variable} & & \\ \hline
-    \python{rename_channels} & & \\ \hline
-    \python{shape} & & \\ \hline
-    \python{share_nans} & & \\ \hline
-    \python{size} & & \\ \hline
-    \python{smooth} & & \\ \hline
-    \python{source} & & \\ \hline
-    \python{split} & & \\ \hline
-    \python{transform} & & \\ \hline
-    \python{units} & & \\ \hline
-    \python{variable_names} & & \\ \hline
-    \python{variables} & & \\ \hline
-    \python{zoom} & & \\ \hline
+    \texttt{collapse} & method & Collapse along one dimension in a well-defined way. \\ \hline
+    \texttt{convert} & method & Convert all axes of a certain kind. \\ \hline
+    \texttt{create\_channel} & method & Create a new channel. \\ \hline
+    \texttt{create\_variable} & method & Create a new variable. \\ \hline
+    \texttt{fullpath} & attribute & \\ \hline
+    \texttt{get\_nadir} & method & Get the coordinates, in units, of the minimum of a channel. \\ \hline
+    \texttt{get\_zenith} & method & Get the coordinates, in units, of the maximum of a channel \\ \hline
+    \texttt{heal} & method & Remove nans from channel using interpolation. \\ \hline
+    \texttt{kind} & attribute & \\ \hline
+    \texttt{level} & method & Subtract the average value of npts at the edge of a given axis. \\ \hline
+    \texttt{map\_variable} & method & Map points of a variable to new points using linear interpolation. \\ \hline
+    \texttt{natural\_name} & attribute & \\ \hline
+    \texttt{ndim} & attribute & \\ \hline
+    \texttt{offset} & method & Offset one variable based on another variables' values. \\ \hline
+    \texttt{print\_tree} & method & \\ \hline
+    \texttt{remove\_channel} & method & \\ \hline
+    \texttt{remove\_variable} & method & \\ \hline
+    \texttt{rename\_channels} & method & \\ \hline
+    \texttt{shape} & attribute & \\ \hline
+    \texttt{share\_nans} & method & Share not-a-numbers between all channels. \\ \hline
+    \texttt{size} & attribute & \\ \hline
+    \texttt{smooth} & method & Smooth a channel using an n-dimensional Kaiser window. \\ \hline
+    \texttt{source} & attribute & \\ \hline
+    \texttt{split} & method & Split the data along a given axis, in units. \\ \hline
+    \texttt{transform} & method & Transform the data. \\ \hline
+    \texttt{units} & attribute & \\ \hline
+    \texttt{variable\_names} & attribute & \\ \hline
+    \texttt{variables} & attribute & \\ \hline
+    \texttt{zoom} & method & Zoom the data using spline interpolation of the requested order. \\ \hline
   \end{tabular}
-  \caption[Attributes and methods of Data]{
-    Key attributes and methods of data, lexicographically listed
+  \caption[Attributes and methods of Data.]{
+    Key attributes and methods of data, lexicographically listed.
   }
 \end{table}
 
@@ -195,31 +200,31 @@ discussed more in...  % TODO: where is it discussed more?
 \begin{table}
   \begin{tabular}{c | c | c | l}
     & type & of & description \\ \hline
-    \python{argmax} & method & both & \\ \hline
-    \python{argmin} & & & \\ \hline
-    \python{chunkwise} & & & \\ \hline
-    \python{clip} & & & \\ \hline
-    \python{convert} & & & \\ \hline
-    \python{full} & & & \\ \hline
-    \python{fullpath} & & & \\ \hline
-    \python{label} & attribute & variable & \\ \hline
-    \python{log} & & & \\ \hline
-    \python{log10} & & & \\ \hline
-    \python{log2} & & & \\ \hline
-    \python{mag} & & & \\ \hline
-    \python{major_extent} & attribute & channel & \\ \hline
-    \python{max} & & & \\ \hline
-    \python{min} & & & \\ \hline
-    \python{minor_extent} & attribute & channel & \\ \hline
-    \python{natural_name} & & & \\ \hline
-    \python{normalize} & & channel & \\ \hline
-    \python{null} & & channel & \\ \hline
-    \python{parent} & & & \\ \hline
-    \python{points} & & & \\ \hline
-    \python{signed} & & channel & \\ \hline
-    \python{slices} & & & \\ \hline
-    \python{symmetric_root}
-    \python{trim} & & channel & \\ \hline
+    \texttt{argmax} & method & both & Index of maximum, ignoring nans. \\ \hline
+    \texttt{argmin} & method & both & Index of minimum, ignoring nans. \\ \hline
+    \texttt{chunkwise} & method & both & Execute a function for each chunk in the dataset. \\ \hline
+    \texttt{clip} & method & both & Clip values outside of a desired range. \\ \hline
+    \texttt{convert} & method & both & Convert units, writing to disk. \\ \hline
+    \texttt{full} & attribute & both & \\ \hline
+    \texttt{fullpath} & attribute & both & \\ \hline
+    \texttt{label} & attribute & variable & \\ \hline
+    \texttt{log} & method & both & Take the log of the entire dataset, with choice of base. \\ \hline
+    \texttt{log10} & method & both & Take the base 10 log of the entire dataset. \\ \hline
+    \texttt{log2} & method & both & Take the base 2 log of the entire dataset. \\ \hline
+    \texttt{mag} & method & channel & \\ \hline
+    \texttt{major\_extent} & attribute & channel & \\ \hline
+    \texttt{max} & method & both & Maximum, ignoring nans. \\ \hline
+    \texttt{min} & method & both & Minimum, ignoring nans. \\ \hline
+    \texttt{minor\_extent} & attribute & channel & \\ \hline
+    \texttt{natural\_name} & attribute & both & \\ \hline
+    \texttt{normalize} & method & channel & \\ \hline
+    \texttt{null} & attribute & channel & \\ \hline
+    \texttt{parent} & attribute & both & \\ \hline
+    \texttt{points} & attribute & both & \\ \hline
+    \texttt{signed} & attribute & channel & \\ \hline
+    \texttt{slices} & method & both & Returns a generator yielding tuple of slice objects. \\ \hline
+    \texttt{symmetric\_root} & method & both & \\ \hline
+    \texttt{trim} & method & channel & \\ \hline
   \end{tabular}
   \caption[Attributes and methods of Channel and Variable.]{
     Key attributes and methods of channel and variable, lexicographically listed
@@ -240,22 +245,21 @@ Axes can be directly indexed / sliced into using \python{__getitem__}, and they
 ``numpy-like'' attributes.  %
 A lexicographical list of axis attributes and methods follows.
 
-
 \begin{table}
   \begin{tabular}{c | c | l}
     & type & description \\ \hline
-    \python{full} & & \\ \hline
-    \python{label} & & \\ \hline
-    \python{natural_name} & & \\ \hline
-    \python{ndim} & & \\ \hline
-    \python{points} & & \\ \hline
-    \python{shape} & & \\ \hline
-    \python{size} & & \\ \hline
-    \python{units_kind} & & \\ \hline
-    \python{variables} & & \\ \hline
-    \python{convert} & & \\ \hline
-    \python{min} & & \\ \hline
-    \python{max} & & \\ \hline
+    \texttt{full} & & \\ \hline
+    \texttt{label} & & \\ \hline
+    \texttt{natural\_name} & & \\ \hline
+    \texttt{ndim} & & \\ \hline
+    \texttt{points} & & \\ \hline
+    \texttt{shape} & & \\ \hline
+    \texttt{size} & & \\ \hline
+    \texttt{units\_kind} & & \\ \hline
+    \texttt{variables} & & \\ \hline
+    \texttt{convert} & & \\ \hline
+    \texttt{min} & & \\ \hline
+    \texttt{max} & & \\ \hline
   \end{tabular}
   \caption[Attributes and methods of Axis.]{
     Key attributes and methods of axis, lexicographically listed
-- 
cgit v1.2.3

