From f1df2688e6f3a9f077ab8e0c670d1615241c3148 Mon Sep 17 00:00:00 2001 From: Blaise Thompson 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') 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