!/(4@      !"#$%&'()*+,-./0123456789:;<=>?Safe@ABCDEFG(c) Eben Kadile, 2018 BSD 3 Clauseeben.cowley42@gmail.com experimentalNone9](H Persistence Exclusive or.I PersistenceFirst element of a triple.J PersistenceSecond element of a triple.K PersistenceThird element of a triple.L PersistenceLast two elements of a triple.M Persistence$First and last elements of a triple.N PersistenceFirst two elements of a triple.O Persistence Concatenate a vector of vectors.P PersistenceMultiply a vector by a scalar.Q PersistenceAdd two vectors together component-wise. WARNING: If one vector is longer than the other, the longer vector will simply be cut off.R PersistenceSubtract the second vector from the first vector component-wise. WARNING: If one vector is longer than the other, the longer vector will simply be cut off.S Persistence5Dot product. WARNING: Vectors must be the same lengthT PersistenceExtended Euclidean algorithm. Finds the gcd of the two inputs plus the coefficients that multiply each input and sum to give the gcd.U PersistencejReturns whether or not the first number divides the second number. Returns false if the first number is 0.V Persistence9Switches the elements of the vector at the given indices.W Persistence&Remove the element at the given index.X Persistence,Generate a range of integers in vector form.Y PersistenceHReturn all vectors missing exactly one element from the original vector.Z PersistenceDDrop all elements from the right until the predicate is unsatisfied.[ PersistenceRFilter a vector with a predicate that takes into account the index of the element.\ PersistenceAMap a function that takes into account the index of each element.] Persistence&Parallel map a function over a vector.^ PersistenceMMap a function that takes into account the index of each element in parallel._ PersistenceGReturn the element satisfying the predicate and its index if it exists.` Persistence?Return the elements satisfying the predicate and their indices.a PersistenceUGiven a relation and two vectors, find all pairs of elements satisfying the relation.b Persistence7Orders a list of vectors from greatest to least length.c Persistence>Replace the element at the given index with the given element.d Persistence>Replace the element at the given index with the given element.e PersistenceUQuicksort treating the given predicate as the <= operator. Sorts in decreasing order.f PersistenceIf the predicate is the <= operator and the vector is sorted in decreasing order, this inserts the value in the correct position.g Persistence&Takes the union of all of the vectors.h PersistenceiThe element being searched for, the vector being searched, and the lower and upper bounds on the indices.i PersistenceIntersection of SORTED vectors.j Persistence?snocs the element if an only if it isn't already in the vector.k PersistencedIf the relation were the "greater than" operator, this would find the minimum element of the vector.l PersistenceUnsafe index finding.m PersistenceASpark the first argument for parallel evaluation and force evaluation of the second argument, then return the first argument concatenated to the second. This is useful especially if the second argument is a recursive call that calls evalPar again, so that every elemment of the list will be sparked for parallelism.n Persistence,Union minus intersection of ordered vectors.o PersistencedSimple instance of Num where True is 1 and False is 0, all operations work like arithmetic modulo 2.'HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn(c) Eben Kadile, 2018 BSD 3 Clauseeben.cowley42@gmail.com experimentalNoneVRp PersistenceRMatrix of integers modulo 2. Alternatively, matrix over the field with 2 elements.q PersistenceMatrix of integers.r Persistence:Take the transpose a matrix (no fancy optimizations, yet).s PersistenceATake the transpose of a matrix using parallel evaluation of rows.t PersistenceMultiply two matricesu PersistenceHMultiply matrices, evaluate rows in parallel if processors are availablev PersistenceGet the diagonal elements.w PersistenceBGet the absolute value of each of the diagonal elements in a list.x PersistenceJFinds the rank of integer matrix (number of linearly independent columns).y PersistenceJCalculates the rank of a matrix by operating on multiple rows in parallel.z Persistence/Get the Smith normal form of an integer matrix.{ Persistence]Gets the Smith normal form of a matrix, uses lots of parallelism if processors are available.| Persistence_Finds a basis for the kernel of a matrix, arranges the basis vectors into the rows of a matrix.} PersistenceComputes basis vectors for the kernel of an integer matrix and arranges them into the rows of a matrix using lots of parallelism if processors are available.~ PersistenceeCalculates the image of the second matrix represented in the basis of the kernel of the first matrix. PersistenceCalculates the image of the second matrix represented in the basis of the kernel of the first matrix. Uses lots of parallelism if processors are available. PersistenceIFind the rank of a mod 2 matrix (number of linearly independent columns). Persistence`Finds the basis of the kernel of a matrix, arranges the basis vectors into the rows of a matrix. PersistenceeCalculates the image of the second matrix represented in the basis of the kernel of the first matrix.pqrstuvwxyz{|}~(c) Eben Kadile, 2018 BSD 3 Clauseeben.cowley42@gmail.com experimentalNone Persistence This represents the (symmetric) adjacency matrix of some weighted, undirected graph. The type a is whatever distance is in your data analysis procedure. The reason graphs are represented like this is because their main purpose is too speed up the construction of simplicial complexes and filtrations. If the clique complex of this graph were to be constructed, only the adjacencies would matter. But if a filtration is constructed all the distances will be required over and over again - this allows them to be accessed in constant time. PersistenceThe first component of the pair is the number of vertices. The second component is a vector whose entries are vectors of simplices of the same dimension. Index 0 of the vecor corresponds to dimension 1 because there is no need to store individual vertices. PersistenceThis is type synonym exists to make other synonyms more concise. A simplex is represented as a pair: the vector of its vertices (their index in the original data set), and the vector of the indices of the faces in the next lowest dimension of the simplicial complex. 1-simplices are the exception: they do not store reference to their faces because it would be redundant with their vertices. Persistence1Show all the information in a simplicial complex. PersistenceEGet the dimension of the highest dimensional simplex (constant time). PersistenceNIndex into the adjacency matrix of a graph, flipping the indices if necessary. PersistenceTakes the number of vertices and each edge paired with its weight to output the graph encoded as a 2D vector. If only you have an unweighted graph, you can still encode your graph by simply letting the type a be (). If you have a weighted graph but there isn't a distance between every vertex, you can use the Extended type (essentially the same as Maybe) from the Filtration module which is already an instance of Ord. PersistenceGiven a weighted graph, construct a 1-dimensional simplicial complex in the canonical way. Betti numbers of this simplicial complex can be used to count cycles and connected components. PersistenceThe first argument is a scale, the second is a metric, and the third is the data. This function records the distance between every element of the data and whether or not it is smaller than the given scale.  PersistenceParallel version of the above.  Persistence:Makes a simplicial complex where the simplices are the complete subgraphs (cliques) of the given graph. Mainly a helper function for makeRipsComplexFast, but it might be useful if you happen to have a graph you want to analyze. I highly recomend using the parallel version, as this process is very expensive.  PersistenceParallel version of the above.  PersistenceConstructs the Vietoris-Rips complex given a scale, metric, and data set. Also uses O(n^2) memory (where n is the number of data points) for a graph storing all the distances between data points.  PersistenceParallel version of the above. PersistenceIConstructs the Vietoris-Rips complex given a scale, metric, and data set. PersistenceParallel version of the above. Persistence@The nth index of the output corresponds to the nth Betti number.The zeroth Betti number is the number of connected components, the 1st is the number of tunnels/ punctures, the 2nd is the number of hollow volumes, and so on for higher-dimensional holes. Persistence0Calculates all of the Betti numbers in parallel. Persistence^Calculates all homology groups of the complex. An int list represents a single homology group.9Specifically, an int list represents a direct product of cyclic groups - a 0 entry corresponds to the infinite cylic group (also known as the integers), and an entry of n corresponds to a cyclic group of order n (also known as the integers modulo n). The nth index of the output represents the nth homology group.If you don't have a rigorous understanding of what homology is, I recomend using BettiNumbers on large data-sets instead, as the output of those functions is more easily interprettable. PersistencesSame as simplicialHomology except it computes each of the groups in parallel and uses parallel matrix computations.  (c) Eben Kadile, 2018 BSD 3 Clauseeben.cowley42@gmail.com experimentalNone PersistencepType representing an admissible Hasse diagram. Each entry in the vector represents a level in the Hasse diagram. PersistenceType representing a node in a Hasse diagram. Hasse diagrams are being used to represent simplicial complexes so each node represents a simplex. Contents of the tuple in order: Vector of references to vertices of the underlying directed graph, vector of references to the simplices faes in the next lowest level of the Hasse diagram, vector of references to "parent" simplices (simplices who have this simplex as a face) in the next highest level of the Hasse diagram. Persistence,Simple printing function for Hasse diagrams. Persistence Given the number of vertices in a directed graph, and pairs representing the direction of each edge, construct a 1-dimensional simplicial complex in the canonical way. Betti numbers of this simplicial complex can be used to count cycles and connected components. PersistenceGiven the number of vertices in a directed graph, and pairs representing the direction of each edge (initial, terminal), construct a Hasse diagram representing the graph. PersistenceGiven a Hasse diagram representing a directed graph, construct the diagram representing the directed clique/flag complex of the graph. Algorithm adapted from the one shown in the supplementary materials of this paper: Bhttps://www.frontiersin.org/articles/10.3389/fncom.2017.00048/full Persistence0Convert a Hasse diagram to a simplicial complex.(c) Eben Kadile, 2018 BSD 3 Clauseeben.cowley42@gmail.com experimentalNone'" PersistenceA Persistence landscape is a certain type of piecewise linear function based on a barcode diagram. It can be represented as a list of critical points paired with critical values. Useful for taking averages and differences between barcode diagrams. Persistence(x, Finite y) is a topological feature that appears at the index or scale x and disappears at the index or scale y. (x, Infinity) begins at x and doesn't disappear. PersistenceA type extending the number line to positive and negative infinity. Used for representing infinite barcodes, bottleneck distance, and persistence landscapes. PersistenceRepresentation of a filtration which, unlike SimpleFiltration, can cope with vertices that have a non-zero filtration index. Vertices of the filtration are represented like all other simplices except that they don't their own have vertices or faces.Note that, since this library currently only deals with static pointcloud data, all of the filtration construction functions produce vertices whose filtration index is 0. Thus, if you want to use this type you will have to construct the instances yourself.  Persistence)A type representing a filtration whose vertices all have filtration index 0. Slightly faster and slightly less memory usage. The first component is simply the number of vertices. The second component is a vector with an entry for each dimension of simplices, starting at dimension 1 for edges.! PersistenceThis type synonym exists to make other synonyms more concise. Each simplex in a filtration is represented as a triple: its filtration index, the indices of its vertices in the original data, and the indices of its faces in the next lowest dimension. Edges do not have reference to their faces, as it would be redundant with their vertices. All simplices are sorted according to filtration index upon construction of the filtration. In each dimension, all simplices are sorted in increasing order of filtration index, and every simplices face indices are sorted in decreasing order; both of these facts are critical to the computation of persistent homology." Persistence'Shows all the information in a simplex.# Persistence*Shows all the information in a filtration.$ PersistencevGets the simplicial complex specified by the filtration index. This is O(n) with respect to the number of simplices.% PersistenceZReturn the dimension of the highest dimensional simplex in the filtration (constant time).& Persistence8Convert a simple filtration into an ordinary filtration.' PersistencepThis function creates a filtration out of a simplicial complex by removing simplices that contain edges that are too long for each scale in the list. This is really a helper function to be called by makeRipsFiltrationFast, but I decided to expose it in case you have a simplicial complex and weighted graph lying around. The scales MUST be in decreasing order.( PersistenceThis function constructs a filtration of the Vietoris-Rips complexes associated with the scales. Note that this a fast function, meaning it uses O(n^2) memory to quickly access distances where n is the number of data points.) PersistencegSame as above except it uses parallelism when computing the Vietoris-Rips complex of the largest scale.* PersistenceThe same as filterbyWeightsFast except it uses far less memory at the cost of speed. Note that the scales must be in decreasing order.+ PersistenceYConstructs the filtration of Vietoris-Rips complexes corresponding to each of the scales., PersistencegSame as above except it uses parallelism when computing the Vietoris-Rips complex of the largest scale.- PersistenceThe nth entry in the list will describe the n-dimensional topology of the filtration. That is, the first list will represent clusters, the second list will represent tunnels or punctures, the third will represent hollow volumes, and the nth index list will represent n-dimensional holes in the data. Features are encoded by the filtration indices where they appear and disappear.. PersistenceSame as above except this function acts on filtrations whose vertices all have filtration index zero (for a very slight speedup)./ PersistenceThe nth entry in the list will describe the n-dimensional topology of the filtration. However, features are encoded by the scales where they appear and disappear. For consistency, scales must be in decreasing order.0 PersistenceSame as above except acts only on filtrations whose vertices all have filtration index 0. Note that scales must be in decreasing order.1 PersistenceThe standard (Euclidean) metric between index barcodes. The distance between infinite and finite barcodes is infinite, and the distance between two infinite barcodes is the absolute value of the difference of their fst component.2 PersistenceGiven a metric, return the Hausdorff distance (referred to as bottleneck distance in TDA) between the two sets. Returns nothing if either list of barcodes is empty.3 PersistencepGet's all the bottleneck distances; a good way to determine the similarity of the topology of two filtrations.4 PersistenceICompute the persistence landscape of the barcodes for a single dimension.5 Persistence?Evaluate the nth function in the landscape for the given point.6 Persistence8Evaluate all the real-valued functions in the landscape.7 PersistenceCompute a linear combination of the landscapes. If the coefficient list is too short, the rest of the coefficients are assumed to be zero. If it is too long, the extra coefficients are discarded.8 Persistence#Average the persistence landscapes.9 Persistence-Subtract the second landscape from the first.: PersistenceIf p>=1 then it will compute the L^p norm on the given interval. Uses trapezoidal approximation. You should ensure that the stepsize partitions the interval evenly.; PersistenceGiven the same information as above, computes the L^p distance between the two landscapes. One way to compare the topologies of two filtrations.< PersistenceFArithmetic is defined in the canonical way based on the arithmetic of a.= PersistenceThe ordering is inherited from the type a, Infinity is greater than everything else and MinusInfty is less than everything else.' PersistenceScales in decreasing order PersistenceSimplicial complex and a graph encoding the distance between every data point as well as whether or not they are within the largest scale of each other.( PersistenceScales in decreasing order PersistenceMetric PersistenceData set) PersistenceScales in decreasing order PersistenceMetric PersistenceData set* PersistenceScales in decreasing order PersistenceMetric PersistenceData set Persistence7Vietoris-Rips complex of the data at the largest scale.+ Persistence"List of scales in decreasing order PersistenceMetric PersistenceData set, Persistence"List of scales in decreasing order PersistenceMetric PersistenceData set: Persistencep, the power of the norm Persistence%Interval to compute the integral over Persistence Step size Persistence2Persistence landscape whose norm is to be computed; Persistencep, power of the metric Persistence/Interval on which the integral will be computed Persistence Step size PersistenceFirst landscape PersistenceSecond landscape# !"#$%&'()*+,-./0123456789:;#! "#$%&'()*+,-./0123456789:;      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(Persistence-2.0.3-2qQUxobHZCxJAeWqrGMeagPersistence.SimplicialComplexPersistence.HasseDiagramPersistence.FiltrationPaths_PersistencePersistence.UtilPersistence.MatrixGraphSimplicialComplexSimplex sc2StringgetDim indexGraphencodeWeightedGraph wGraph2scmakeNbrhdGraphmakeNbrhdGraphParmakeCliqueComplexmakeCliqueComplexParmakeRipsComplexFastmakeRipsComplexFastParmakeRipsComplexLightmakeRipsComplexLightPar bettiNumbersbettiNumbersPar HasseDiagramNode hsd2String dGraph2scencodeDirectedGraphdirectedFlagComplex hDiagram2sc LandscapeBarCodeExtendedFiniteInfinity MinusInfty FiltrationSimpleFiltration FilterSimplex sim2String filtr2String getComplex getDimension simple2FiltrfilterByWeightsFastmakeRipsFiltrationFastmakeRipsFiltrationFastParfilterByWeightsLightmakeRipsFiltrationLightmakeRipsFiltrationLightPar indexBarCodesindexBarCodesSimple scaleBarCodesscaleBarCodesSimple indexMetricbottleNeckDistancebottleNeckDistances calcLandscape evalLandscapeevalLandscapeAlllinearComboLandscapes avgLandscapesdiffLandscapesnormLpmetricLp $fNumExtended $fOrdExtended $fEqExtended$fShowExtendedversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamexoronetwothrnot1not2not3flattenmuladdsubtr dotProduct extEucAlgdivides switchElemsrmIndexrange getCombosdropRightWhilefilterWithIndex mapWithIndex parMapVecparMapWithIndex elemAndIndexelemAndIndices findBothElemssortVecs replaceElemreplaceElemList quickSort orderedInsertbigU binarySearch|^| smartSnoc foldRelationelemIndexUnsafeevalParuin $fNumBoolBMatrixIMatrix transposeMat transposeParmultiply multiplyPar getDiagonalgetUnsignedDiagonalrankInt rankIntPar normalFormIntnormalFormIntPar kernelInt kernelIntPar imgInKerIntimgInKerIntParrankBool kernelBool imgInKerBoolsimplicialHomologysimplicialHomologyPar