aboutsummaryrefslogtreecommitdiff
path: root/software
diff options
context:
space:
mode:
authorBlaise Thompson <blaise@untzag.com>2018-04-05 14:37:58 -0500
committerBlaise Thompson <blaise@untzag.com>2018-04-05 14:37:58 -0500
commitf9f611827e436063d77924fbbd64fa0628d584e1 (patch)
tree6f50ef869d3e2b218d108dfa7f533fe3cdf3b879 /software
parentd80603d70f1dbd7bc12f9fe2d67ab25f4b60cc56 (diff)
2018-04-05 14:37
Diffstat (limited to 'software')
-rw-r--r--software/chapter.tex28
1 files changed, 13 insertions, 15 deletions
diff --git a/software/chapter.tex b/software/chapter.tex
index 3ab3831..59dd4a9 100644
--- a/software/chapter.tex
+++ b/software/chapter.tex
@@ -293,7 +293,7 @@ The basic idea of OOP is defining object types (classes) that are self-contained
These classes define pieces of associated data (attributes) and associated procedures (functions)
within themselves. %
Once the class is defined, instances of that class are created. %
-Instances, as the name implies, are just specific ``concrete occurance'' of a given class. %
+Instances, as the name implies, are just specific ``concrete occurances'' of a given class. %
The classic example: \python{Dog} is a class, \python{fido}, \python{spot}, and \python{duke} are
three dogs---three instances of the dog class. %
@@ -314,14 +314,14 @@ class Person():
elif food == self.hated_food:
return 'gross---no thank you'
else:
- return 'meh''
+ return 'meh'
\end{codefragment}
Now I can make some instances of that class, and access their attributes and methods. %
\begin{codefragment}{python}
>>> mary = Person(name='Mary', favorite_food='pizza', hated_food='falafel')
>>> jane = Person(name='Jane', favorite_food='salad'')
>>> mary.react_to('falafel')
-'gross---no thank you''''''
+'gross---no thank you'
>>> jane.react_to('salad')
'yum! my favorite'
>>> mary.favorite_food
@@ -333,7 +333,7 @@ We can already begin to see how powerful this approach is. %
Instances of \python{Person} contain their own attributes and methods. %
Instances can be interacted with in complex or simple ways. %
The attributes \python{favorite_food} and \python{hated_food} are fully accessible, but need not be
-directly dealt with when using the \python{read_to} method. %
+directly dealt with when using the \python{react_to} method. %
When using OOP, one can hide complexity while still being able to access everything. %
One of the most powerful patterns within OOP is \emph{inheritance}. %
@@ -348,7 +348,7 @@ throughout a large piece of software without repeating functionality. %
% TODO: more exposition on inheritance, perhaps including an example
OOP is a deep subject with many patterns and concepts behind it. %
-There are many places to read further [CITES].
+There are many places to read further [CITES]. % BJT: KFS can you give me some citations?
I recommend The Quarks of Object-Oriented Development, by \textcite{ArmstrongDeborahJ2006a}. %
% TODO: consider discussion of polymorphism
@@ -363,11 +363,9 @@ column corresponds to one of the scannable hardwares or one of the sensors in th
The simplicity and portability of these formats is fantastic, but they do not scale well with
increasingly large and higher-dimensional data. %
-% TODO: justify further why flattening UTF8 files are bad idea
-
Heirarchial data files are an alternative strategy that scales much better with large and
high-dimensional data. %
-These are binary files that store the array directly, not in a flattened way. %
+These are binary files that store the arrays directly, not in a flattened way. %
They can contain multiple arrays, with different data types, in the same file under a well-defined
organizational system. %
They support arbitrary metadata, integrated into the same hierarchy as the arrays, so making them
@@ -378,9 +376,9 @@ for storing CMDS data. %
To this author's best knowledge, the Common Data Format (CDF) was the first general purpose
self-describing multidimensional array data format. \cite{TreinshLloydA1987a} %
The engineers at the National Space Science Data Center (a division of NASA) created the CDF. %
-Using this construct, ``scientific softwares at NSSDC ... do not need specific knowledge of the
+Using this construct, \emph{``scientific softwares at NSSDC ... do not need specific knowledge of the
data whith which they are working. This permits users of such systems to apply the same functions
-to different sets of data.''
+to different sets of data.''}
These are exactly the capabilities that CMDS requires. %
A second-order challenge in CMDS data storage is the size of the arrays. %
@@ -392,11 +390,11 @@ the array without reading the entire data into memory. %
Slightly later, NetCDF was introduced \cite{RewRuss1990a}. %
Very similar to CDF, NetCDF focused on enhancments to portability. %
Certain metadata conventions were also introduced, including named dimensions. %
-NetCDF remains popular in the aerospace and
+NetCDF remains popular in the aerospace and geoscience communities. %
The Flexable Image Transform System (FITS) is a similar format with a focus on visualization and
backwards compatibility. \cite{FITS, WellsDC1981a} %
-Fits is still popular in the astronomy community. %
+FITS is still popular in the astronomy community. %
Today, these hierarchical data formats have gathered under the umbrella of the HDF5 format, built
and maintained by the HDF Group. \cite{FolkMike2011a} %
@@ -407,10 +405,10 @@ In Python, HDF5 is supported primarily through the h5py package. \cite{h5py} %
\section{Scientific Python} % --------------------------------------------------------------------
-SciPy is a collection of ``open-source software for mathematics, science, and egnineering.''
+SciPy is a collection of \emph{``open-source software for mathematics, science, and egnineering.''}
\cite{OliphantTravisE2007a, MillmanJarrodK2011a} %
-SciPy was an absolute essential component of this dissertation and the work it describes. %
-There are packages under the SciPy umbrella. %
+SciPy was an absolutely essential component of this dissertation and the work it describes. %
+There are many packages under the SciPy umbrella. %
NumPy is a very powerful and fast package for working with multidimensional arrays.
\cite{OliphantTravisE2006a} %
The SciPy library contains a vast number of scientific computing tools, including many mathematical