multidim — GDA Toolbox v1.0 Manual

# multidim

The `multidim` class provides user-facing tools for topological data analysis of multi-dimensional data.

The goal is to be honest about topology while also using speed/cleverness with a minimal amount of user headache.

Included are:
  - `PointCloud`, for data points in Euclidean space.
  - `SimplicialComplex`, for abstract simplicial complexes, built from `Simplex` objects sorted by dimension into `SimplexStratum` objects.

## Copyright

- This file is part of https://github.com/geomdata/gda-public/
- 2015, 2016, 2017 by Geometric Data Analytics, Inc. (http://geomdata.com)
- AGPL license. See LICENSE or https://github.com/geomdata/gda-public/blob/master/LICENSE

## Examples

    >>> X = np.load("tests/circle.npy")
    >>> pc = PointCloud(X, max_length=-1)
    >>> pc
    A SimplicialComplex with 1000 points, 499500 edges, and 0 faces.
    >>> np.all(pc.stratum[0]['pos'].values == True)
    True
    >>> pc.check()
    >>> pc.make_pers0(cutoff=0.15)
    >>> for v in pc.cells(0):
    ...     if v.positive:
    ...         print(v)
    0+ Simplex 0 of height 0.0 and mass 1.0
    0+ Simplex 74 of height 0.0 and mass 1.0
    0+ Simplex 183 of height 0.0 and mass 1.0
    0+ Simplex 195 of height 0.0 and mass 1.0
    0+ Simplex 197 of height 0.0 and mass 1.0
    0+ Simplex 231 of height 0.0 and mass 1.0
    0+ Simplex 354 of height 0.0 and mass 1.0
    0+ Simplex 397 of height 0.0 and mass 1.0
    0+ Simplex 489 of height 0.0 and mass 1.0
    0+ Simplex 530 of height 0.0 and mass 1.0
    0+ Simplex 607 of height 0.0 and mass 1.0
    0+ Simplex 757 of height 0.0 and mass 1.0
    0+ Simplex 781 of height 0.0 and mass 1.0
    0+ Simplex 800 of height 0.0 and mass 1.0
    0+ Simplex 903 of height 0.0 and mass 1.0
    0+ Simplex 980 of height 0.0 and mass 1.0
    >>> pc.pers0.grab(5)['keepcode']
         birth_index  death_index  birth     death      pers
    979          213          316    0.0  0.136923  0.136923
    980          135          135    0.0  0.136992  0.136992
    981          439          477    0.0  0.138059  0.138059
    982          610          630    0.0  0.138474  0.138474
    983          603          603    0.0  0.139332  0.139332
    >>> pc.make_pers1_rca1(cutoff=0.2)
    >>> pc.pers1.grab(5)['keepcode']
         birth_index  death_index     birth     death      pers
    221         3217         9700  0.095619  0.168120  0.072501
    220         2942         9661  0.091542  0.167720  0.076177
    219         2713         9279  0.087438  0.164152  0.076713
    224         3333        10439  0.097564  0.174643  0.077079
    200         1816         7688  0.071490  0.149336  0.077846
    >>> V=pc.stratum[0]
    >>> V.loc[:10]
        height  mass    pos  rep
    0      0.0   1.0   True    0
    1      0.0   1.0  False    0
    2      0.0   1.0  False    1
    3      0.0   1.0  False    0
    4      0.0   1.0  False    0
    5      0.0   1.0  False    4
    6      0.0   1.0  False    1
    7      0.0   1.0  False    0
    8      0.0   1.0  False    0
    9      0.0   1.0  False    0
    10     0.0   1.0  False    1
    >>> pc.cells(0)[0]
    0+ Simplex 0 of height 0.0 and mass 1.0
    >>> pc.cells(0)[2]
    0- Simplex 2 of height 0.0 and mass 1.0
    >>> E=pc.stratum[1]
    >>> E.loc[:10]
          height    pos  rep  bdy0  bdy1
    0   0.001142  False    0   858   866
    1   0.001997  False    1    98   187
    2   0.002471  False    2   251   313
    3   0.002670  False    3   599   629
    4   0.002766  False    4   150   167
    5   0.003405  False    5   573   620
    6   0.003812  False    6   474   517
    7   0.005357  False    7   893   988
    8   0.005533  False    8   623   644
    9   0.005914  False    9   648   744
    10  0.006056  False   10   612   640
    >>> pc.cells(1)[2]
    1- Simplex 2 of height 0.0024707293775457456 and mass None

Functions

`lower_star_for_image`(img_array) | Compute the lower star weighted simplicial complex from a 2d grid/image.
`stratum_from_distances`(dists[, max_length, …]) | Construct a stratum dictionary from a symmetric matrix of distances.
`stratum_maker`([dim]) | Make an empty stratum `pandas.DataFrame` of the appropriate dimension.

Classes

`PointCloud`(data_array[, max_length, …]) | PointCloud is a class for embedded, weighted simplicial complexes.
`Simplex`(cellcomplex, dim, index) | This class is a convenient container to access the data in the pd DataFrame stratum[dim] of a SimplicialComplex.
`SimplexStratum`(cell_complex, dim) | SimplexStratum is a thin class for calling `Simplex` objects of a certain dimension from a `SimplicialComplex`.
`SimplicialComplex`([stratum]) | A class for abstract weighted simplicial complexes.

### Table of Contents

- multidim
  - Copyright
  - Examples

#### Previous topic

homology.dim1

#### Next topic

multidim.covertree