  
  [1X23. Topological Data Analysis[0X
  
      | [10X MatrixToTopologicalSpace(A,n)[0X Inputs an integer matrix A and an integer n. It returns a 2-dimensional topological space corresponding to the black/white image determined by the threshold n and the values of the pixels in A.                                                                                                                               | 
      | [10X ReadImageAsTopologicalSpace("file.png",n)[0X [10X ReadImageAsTopologicalSpace("file.png",[m,n])[0X Reads an image file ("file.png", "file.eps", "file.bmp" etc) and an integer n or pair [m,n] of integers between 0 and 765. It returns a topological space based on the black/white version of the image determined by the threshold n or threshold range [m,n].      | 
      | [10X ReadImageAsMatrix("file.png")[0X 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.                                                                                                                                                              | 
      | [10X WriteTopologicalSpaceAsImage(T,"filename","ext")[0X 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.                                                                                                                                            | 
      | [10X ViewTopologicalSpace(T)[0X [10X ViewTopologicalSpace(T,"mozilla")[0X Inputs a topological space T, and optionally a command such as "mozilla" for viewing image files. A black/white image is displayed.                                                                                                                                                                | 
      | [10X Bettinumbers(T,n)[0X [10X Bettinumbers(T)[0X Inputs a topological space T and a non-negative integer n. It returns the n-th betti number of T. If the integer n is not input then a list of all betti numbers is returned.                                                                                                                                              | 
      | [10X PathComponent(T,n)[0X Inputs a topological space T and an integer n in the rane 0, ..., Bettinumbers(T,0) . It returns the n-th path component of T as a topological space.                                                                                                                                                                                      | 
      | [10X SingularChainComplex(A)[0X Inputs a topological space T and returns a (usually very large) integral chain complex that is homotopy equivalent to the singular chain complex of T.                                                                                                                                                                                | 
      | [10X ContractTopologicalSpace(T)[0X Inputs a topological space T of dimension d and removes d-dimensional cells from T without changing the homotopy type of T. When the function has been applied, no further d-cells can be removed from T without changing the homotopy type.                                                                                      | 
      | [10X BoundaryTopologicalSpace(T)[0X Inputs a topological space T and returns its boundars as a topological space.                                                                                                                                                                                                                                                     | 
      | [10X BoundarySingularities(T)[0X Inputs a topological space T 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 T.   | 
      | [10X ThickenedTopologicalSpace(T)[0X [10X ThickenedTopologicalSpace(T,n)[0X Inputs a topological space T and returns a topological space S. If a euclidean point is in T then this point and all its perpendicularly neighbouring euclidean points are included in S. If a positive integer n is input as a second argument then the thickening process is repeated n times. | 
      | [10X ComplementTopologicalSpace(T)[0X Inputs a topological space T and returns a topological space S. A euclidean point is in S precisely when the point is not in T.                                                                                                                                                                                                 | 
      | [10X ConcatenatedTopologicalSpace(L)[0X Inputs a list L of topological spaces whose underlying arrays of numbers all have equal dimensions. It returns a topological space T got by juxtaposing the spaces L[1], L[2], ..., L[Length(L)].                                                                                                                             | 
  
