<Chapter><Heading> Topological Data Analysis</Heading>

<Table Align="|l|" >

<Row>
<Item>
<Index>MatrixToTopologicalSpace</Index>
<C> MatrixToTopologicalSpace(A,n)</C>


<P/>
Inputs an integer matrix <M>A</M> 
and an integer <M>n</M>.
It returns a 2-dimensional topological space corresponding to the
 black/white image determined by the threshold <M>n</M> and the values of the pixels in <M>A</M>.
 </Item>
 </Row>
 
<Row>
<Item>
<Index>ReadImageAsTopologicalSpace</Index>
<C> ReadImageAsTopologicalSpace("file.png",n)</C>
<C> ReadImageAsTopologicalSpace("file.png",[m,n])</C>


<P/>
Reads an image file ("file.png", "file.eps", "file.bmp" etc)  
and an integer <M>n</M> or pair <M>[m,n]</M> of integers 
between 0 and 765. 
It returns a topological space based on the
 black/white version of the image determined by the threshold <M>n</M> or threshold range <M>[m,n]</M>. 
</Item>
</Row>

<Row>
<Item>
<Index>ReadImageAsMatrix</Index>
<C> ReadImageAsMatrix("file.png")</C>


<P/>
Reads an image file ("file.png", "file.eps", "file.bmp" etc) and 
 returns an integer matrix whose entries are the sum of the RGB values of the pixels in the image. 
 </Item>
 </Row>

<Row>
<Item>
<Index>WriteTopologicalSpaceAsImage</Index>
<C> WriteTopologicalSpaceAsImage(T,"filename","ext")</C>


<P/>
Inputs a 2-dimensional topological space T, and a filename followed by its extension 
(e.g. "myfile" followed by "png"). A black/white image is saved to the file.

</Item>
</Row>

<Row>
<Item>
<Index>ViewTopologicalSpace</Index>
<C> ViewTopologicalSpace(T)</C>
<C> ViewTopologicalSpace(T,"mozilla")</C>


<P/>
Inputs a topological space T, and optionally a command such as "mozilla" for viewing image files.
A black/white image is displayed. 
</Item>
</Row>

<Row>
<Item>
<Index>Bettinumbers</Index>
<C> Bettinumbers(T,n)</C>
<C> Bettinumbers(T)</C>

<P/>
Inputs a topological space <M>T</M> 
and a non-negative integer <M>n</M>. It returns the n-th betti number of <M>T</M>. 
If the integer <M>n</M> is not input then a list of all betti numbers is returned.
</Item>
</Row>

<Row>
<Item>
<Index>PathComponent</Index>
<C> PathComponent(T,n)</C>


<P/>
Inputs a topological space <M>T</M>
and an integer <M>n</M> in the rane 0, ..., Bettinumbers(T,0) . It returns the n-th path component of
 <M>T</M> as a topological space.
</Item>
</Row>

<Row>
<Item>
<Index>SingularChainComplex</Index>
<C> SingularChainComplex(T)</C>


<P/>
Inputs a  topological space <M>T</M>
and returns a (usually very large)  integral chain complex that is
homotopy equivalent to the singular chain complex of  <M>T</M>.

</Item>
</Row>


<Row>
<Item>
<Index>ContractTopologicalSpace</Index>
<C> ContractTopologicalSpace(T)</C>


<P/>
Inputs a  topological space <M>T</M> of dimension <M>d</M> and removes <M>d</M>-dimensional cells from <M>T</M>
without changing the  homotopy type of <M>T</M>. 
When the function has been applied, no further <M>d</M>-cells can be removed 
from <M>T</M> without changing the homotopy type.  

</Item>
</Row>

<Row>
<Item>
<Index>BoundaryTopologicalSpace</Index>
<C> BoundaryTopologicalSpace(T)</C>


<P/>
Inputs a  topological space <M>T</M> and  returns its boundars as a topological space.

</Item>
</Row>

<Row>
<Item>
<Index>BoundarySingularities</Index>
<C> BoundarySingularities(T)</C>


<P/>
Inputs a  topological space <M>T</M> 
and returns the subspace of points in the boundary where the boundary
is not differentiable. (The method for deciding differentiability at a point is crude/discrete and prone to errors.) The zeroth betti number of the 
set of points is a measure of the number of "corners" in the boundary of <M>T</M>.

 </Item>
 </Row>
 


<Row>
<Item>
<Index>ThickenedTopologicalSpace</Index>
<C> ThickenedTopologicalSpace(T)</C>
<C> ThickenedTopologicalSpace(T,n)</C>


<P/>
Inputs a  topological space <M>T</M> 
 and returns a topological space  <M>S</M>. If a euclidean point is
 in <M>T</M> then this point and all its perpendicularly neighbouring euclidean points
 are included in <M>S</M>.
<P/> If a positive integer <M>n</M> is input as a second argument then the thickening process is repeated <M>n</M> times.

</Item>
</Row>

<Row>
<Item>
<Index>ComplementTopologicalSpace</Index>
<C> ComplementTopologicalSpace(T)</C>


<P/>
Inputs a  topological space <M>T</M>
 and returns a topological space <M>S</M>. A euclidean point is in <M>S</M>  precisely when  the point is not in <M>T</M>.

 </Item>
 </Row>

<Row>
<Item>
<Index>ConcatenatedTopologicalSpace</Index>
<C> ConcatenatedTopologicalSpace(L)</C>


<P/>
Inputs a  list <M>L</M> of topological spaces whose underlying arrays of numbers
all have 
 equal dimensions. It
  returns a topological space <M>T</M> got by juxtaposing the spaces <M>L[1], L[2], ..., L[Length(L)]</M>. 

  </Item>
   </Row>
   

</Table>
</Chapter>


