Full Code of appliedtopology/javaplex for AI

master 05a288a4a99f cached
591 files
5.9 MB
1.6M tokens
2711 symbols
1 requests
Download .txt
Showing preview only (6,318K chars total). Download the full file or copy to clipboard to get everything.
Repository: appliedtopology/javaplex
Branch: master
Commit: 05a288a4a99f
Files: 591
Total size: 5.9 MB

Directory structure:
gitextract_rvwgklfn/

├── .classpath
├── .gitignore
├── .project
├── .settings/
│   ├── org.eclipse.jdt.core.prefs
│   └── org.eclipse.jdt.ui.prefs
├── .travis.yml
├── LICENSE.md
├── README.md
├── build/
│   └── processing/
│       └── javaplex/
│           └── library.properties
├── build.number
├── build.xml
├── data/
│   ├── natural_images/
│   │   ├── n50000Dct.mat
│   │   ├── nk15c30Dct.mat
│   │   ├── nk300c30Dct.mat
│   │   └── readme_natural_images.txt
│   ├── point_clouds/
│   │   ├── circle.txt
│   │   ├── cube.txt
│   │   ├── cylinder.txt
│   │   ├── octahedron.txt
│   │   ├── sphere_rnd.txt
│   │   └── torus.txt
│   └── range_images/
│       ├── pointsRange.mat
│       └── r3_50000.mat
├── doc_includes/
│   ├── overview.htm
│   ├── overview_plex3.htm
│   └── update_mime_types.sh
├── reports/
│   └── javaplex_tutorial/
│       ├── cleanup.sh
│       ├── javaplex_tutorial.aux
│       ├── javaplex_tutorial.bbl
│       ├── javaplex_tutorial.bib
│       ├── javaplex_tutorial.blg
│       ├── javaplex_tutorial.log
│       ├── javaplex_tutorial.out
│       ├── javaplex_tutorial.tex
│       └── javaplex_tutorial.toc
├── src/
│   ├── bsh/
│   │   ├── desktop.bsh
│   │   ├── getBshPrompt.bsh
│   │   ├── makeListener.bsh
│   │   ├── makeWorkspace.bsh
│   │   └── printBanner.bsh
│   ├── cpp/
│   │   ├── Makefile
│   │   └── PLEX3/
│   │       ├── DESCRIPTION
│   │       ├── R/
│   │       │   ├── .plex.R.swp
│   │       │   ├── plex.R
│   │       │   └── zzz.R
│   │       ├── autom4te.cache/
│   │       │   ├── output.0
│   │       │   ├── requests
│   │       │   └── traces.0
│   │       ├── config.guess
│   │       ├── config.status
│   │       ├── config.sub
│   │       ├── configure
│   │       ├── configure.ac
│   │       ├── install-sh
│   │       ├── man/
│   │       │   └── rips.stream.Rd
│   │       └── src/
│   │           ├── Makevars.in
│   │           └── rbind_jni.cpp
│   ├── java/
│   │   ├── bsh/
│   │   │   ├── JPlex.java
│   │   │   ├── JTerm.java
│   │   │   ├── PlexInterpreter.java
│   │   │   ├── PlexReader.java
│   │   │   └── commands/
│   │   │       ├── log.java
│   │   │       └── setLogging.java
│   │   └── edu/
│   │       └── stanford/
│   │           └── math/
│   │               ├── clustering/
│   │               │   ├── DisjointSetSystem.java
│   │               │   ├── HierarchicalClustering.java
│   │               │   ├── LinkageTree.java
│   │               │   └── SingleLinkageClustering.java
│   │               ├── mapper/
│   │               │   ├── BoundedIntervalCover.java
│   │               │   ├── FilterFunctionUtility.java
│   │               │   ├── FiniteMetricSpaceCover.java
│   │               │   ├── HistogramCreator.java
│   │               │   ├── MapperPipeline.java
│   │               │   ├── MapperSpecifier.java
│   │               │   ├── MetricUtility.java
│   │               │   ├── RangeCoverUtility.java
│   │               │   └── SetCover1D.java
│   │               ├── plex/
│   │               │   ├── BCPlot.java
│   │               │   ├── CRC.java
│   │               │   ├── Chain.java
│   │               │   ├── Cone.java
│   │               │   ├── DiscreteSpace.java
│   │               │   ├── DistanceData.java
│   │               │   ├── EuclideanArrayData.java
│   │               │   ├── ExplicitStream.java
│   │               │   ├── LazyWitnessStream.java
│   │               │   ├── MappedBufferData.java
│   │               │   ├── Packed2Simplex.java
│   │               │   ├── Packed4Simplex.java
│   │               │   ├── Packed6Simplex.java
│   │               │   ├── Packed8Simplex.java
│   │               │   ├── Persistence.java
│   │               │   ├── PersistenceBasis.java
│   │               │   ├── PersistenceBasisInterval.java
│   │               │   ├── PersistenceInterval.java
│   │               │   ├── Plex.java
│   │               │   ├── PlexMessageWindow.java
│   │               │   ├── PlexSort.java
│   │               │   ├── PointData.java
│   │               │   ├── RDirectBufferData.java
│   │               │   ├── RipsStream.java
│   │               │   ├── Simplex.java
│   │               │   ├── SimplexFaceIterator.java
│   │               │   ├── SimplexStream.java
│   │               │   ├── SimplexTable.java
│   │               │   ├── TmpStream.java
│   │               │   ├── Torus.java
│   │               │   └── WitnessStream.java
│   │               └── plex4/
│   │                   ├── api/
│   │                   │   ├── FilteredStreamInterface.java
│   │                   │   ├── PersistenceAlgorithmInterface.java
│   │                   │   └── Plex4.java
│   │                   ├── autogen/
│   │                   │   └── homology/
│   │                   │       ├── BooleanAbsoluteHomology.java
│   │                   │       ├── BooleanClassicalHomology.java
│   │                   │       ├── BooleanPersistenceAlgorithm.java
│   │                   │       ├── BooleanPersistentHomology.java
│   │                   │       ├── BooleanRelativeHomology.java
│   │                   │       ├── IntAbsoluteHomology.java
│   │                   │       ├── IntClassicalHomology.java
│   │                   │       ├── IntPersistenceAlgorithm.java
│   │                   │       ├── IntPersistentHomology.java
│   │                   │       ├── IntRelativeHomology.java
│   │                   │       ├── ObjectAbsoluteHomology.java
│   │                   │       ├── ObjectClassicalHomology.java
│   │                   │       ├── ObjectPersistenceAlgorithm.java
│   │                   │       ├── ObjectPersistentHomology.java
│   │                   │       └── ObjectRelativeHomology.java
│   │                   ├── bottleneck/
│   │                   │   ├── BottleneckDistance.java
│   │                   │   ├── FlowEdge.java
│   │                   │   ├── FlowNetwork.java
│   │                   │   ├── FordFulkerson.java
│   │                   │   ├── FordFulkersonEdge.java
│   │                   │   ├── FordFulkersonNode.java
│   │                   │   └── WeightedBipartiteGraph.java
│   │                   ├── examples/
│   │                   │   ├── CellComplexOperations.java
│   │                   │   ├── CellStreamExamples.java
│   │                   │   ├── DeSilvaMorozovJohanssonExample.java
│   │                   │   ├── PointCloudExamples.java
│   │                   │   ├── SimplexStreamExamples.java
│   │                   │   └── SimplicialComplexOperations.java
│   │                   ├── generation/
│   │                   │   └── GeneratorDriver.java
│   │                   ├── graph/
│   │                   │   ├── AbstractUndirectedGraph.java
│   │                   │   ├── AbstractWeightedUndirectedGraph.java
│   │                   │   ├── UndirectedListEdgeIterator.java
│   │                   │   ├── UndirectedListGraph.java
│   │                   │   ├── UndirectedWeightedListGraph.java
│   │                   │   ├── io/
│   │                   │   │   └── GraphDotWriter.java
│   │                   │   ├── metric/
│   │                   │   │   ├── GraphMetricFactory.java
│   │                   │   │   └── ShortestPathMetric.java
│   │                   │   ├── random/
│   │                   │   │   ├── BAGraph.java
│   │                   │   │   ├── BinaryHierarchicalGraph.java
│   │                   │   │   ├── BinaryTree.java
│   │                   │   │   ├── BinaryTreeGraph.java
│   │                   │   │   ├── CircleGraph.java
│   │                   │   │   ├── ClusteredERGraph.java
│   │                   │   │   ├── ErdosRenyiGraph.java
│   │                   │   │   ├── ForestFireGraph.java
│   │                   │   │   ├── GraphInstanceGenerator.java
│   │                   │   │   ├── HierarchicalERGraph.java
│   │                   │   │   ├── KNearestNeighborsGraph.java
│   │                   │   │   ├── ManifoldGraph.java
│   │                   │   │   ├── PrescribedDegrees.java
│   │                   │   │   ├── RandomGeometricGraph.java
│   │                   │   │   ├── SphereGraph.java
│   │                   │   │   ├── StochasticBlockmodel.java
│   │                   │   │   └── TorusGraph.java
│   │                   │   └── utility/
│   │                   │       └── GraphUtility.java
│   │                   ├── homology/
│   │                   │   ├── barcodes/
│   │                   │   │   ├── AnnotatedBarcodeCollection.java
│   │                   │   │   ├── BarcodeCollection.java
│   │                   │   │   ├── BarcodeUtility.java
│   │                   │   │   ├── Interval.java
│   │                   │   │   ├── IntervalLengthComparator.java
│   │                   │   │   └── PersistenceInvariantDescriptor.java
│   │                   │   ├── chain_basis/
│   │                   │   │   ├── Cell.java
│   │                   │   │   ├── CellComparator.java
│   │                   │   │   ├── PrimitiveBasisElement.java
│   │                   │   │   ├── Simplex.java
│   │                   │   │   ├── SimplexComparator.java
│   │                   │   │   ├── SimplexPair.java
│   │                   │   │   └── SimplexPairComparator.java
│   │                   │   ├── filtration/
│   │                   │   │   ├── ExternalConverter.java
│   │                   │   │   ├── FiltrationConverter.java
│   │                   │   │   ├── FiltrationUtility.java
│   │                   │   │   ├── IdentityConverter.java
│   │                   │   │   ├── IncreasingLinearConverter.java
│   │                   │   │   └── StaticConverter.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractPersistenceAlgorithm.java
│   │                   │   │   └── AbstractPersistenceBasisAlgorithm.java
│   │                   │   ├── nonautogen/
│   │                   │   │   ├── DisjointSetSystem.java
│   │                   │   │   └── PersistentCohomologyPrototype.java
│   │                   │   ├── utility/
│   │                   │   │   └── HomologyUtility.java
│   │                   │   └── zigzag/
│   │                   │       ├── AbstractHomologyTracker.java
│   │                   │       ├── AbstractPersistenceTracker.java
│   │                   │       ├── BasisTrackingUtility.java
│   │                   │       ├── HomologyBasisTracker.java
│   │                   │       ├── IntervalDescriptor.java
│   │                   │       ├── IntervalTracker.java
│   │                   │       ├── SimpleHomologyBasisTracker.java
│   │                   │       ├── ZigZagHomology.java
│   │                   │       └── bootstrap/
│   │                   │           ├── InducedHomologyMappingUtility.java
│   │                   │           ├── SimplexStreamUtility.java
│   │                   │           ├── VietorisRipsBootstrapper.java
│   │                   │           └── WitnessBootstrapper.java
│   │                   ├── interop/
│   │                   │   ├── Plex3PersistenceAlgorithm.java
│   │                   │   ├── Plex3Stream.java
│   │                   │   ├── Plex3ToPlex4BarcodeAdapter.java
│   │                   │   └── Plex3ToPlex4SimplexAdapter.java
│   │                   ├── io/
│   │                   │   ├── BarcodeWriter.java
│   │                   │   ├── BufferedImageWriter.java
│   │                   │   ├── DoubleArrayReaderWriter.java
│   │                   │   ├── FileIOUtility.java
│   │                   │   ├── FileManager.java
│   │                   │   ├── MatlabInterface.java
│   │                   │   ├── MatlabWriter.java
│   │                   │   ├── ObjReader.java
│   │                   │   ├── ObjectReader.java
│   │                   │   ├── ObjectWriter.java
│   │                   │   ├── SimplexStreamReaderWriter.java
│   │                   │   └── Table.java
│   │                   ├── kd/
│   │                   │   ├── KDEuclideanMetricSpace.java
│   │                   │   ├── KDNode.java
│   │                   │   └── KDTree.java
│   │                   ├── metric/
│   │                   │   ├── impl/
│   │                   │   │   ├── EuclideanMetricSpace.java
│   │                   │   │   ├── ExplicitMetricSpace.java
│   │                   │   │   ├── ObjectSearchableFiniteMetricSpace.java
│   │                   │   │   └── TruncatedPriorityQueue.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractIntMetricSpace.java
│   │                   │   │   ├── AbstractObjectMetric.java
│   │                   │   │   ├── AbstractObjectMetricSpace.java
│   │                   │   │   └── AbstractSearchableMetricSpace.java
│   │                   │   ├── landmark/
│   │                   │   │   ├── ExplicitLandmarkSelector.java
│   │                   │   │   ├── LandmarkSelector.java
│   │                   │   │   ├── MaxMinLandmarkSelector.java
│   │                   │   │   └── RandomLandmarkSelector.java
│   │                   │   └── utility/
│   │                   │       ├── DensityEstimation.java
│   │                   │       └── MetricUtility.java
│   │                   ├── streams/
│   │                   │   ├── derived/
│   │                   │   │   ├── DualStream.java
│   │                   │   │   ├── HomStream.java
│   │                   │   │   ├── TensorStream.java
│   │                   │   │   └── TruncatedStream.java
│   │                   │   ├── filter/
│   │                   │   │   ├── EccentricityFilterFunction.java
│   │                   │   │   ├── ExplicitIntFilterFunction.java
│   │                   │   │   ├── FilterFunction.java
│   │                   │   │   ├── IntFilterFunction.java
│   │                   │   │   ├── KernelDensityFilterFunction.java
│   │                   │   │   ├── MaxSimplicialFilterFunction.java
│   │                   │   │   ├── MinSimplicialFilterFunction.java
│   │                   │   │   └── RandomProjectionFilterFunction.java
│   │                   │   ├── impl/
│   │                   │   │   ├── ExplicitCellStream.java
│   │                   │   │   ├── ExplicitSimplexStream.java
│   │                   │   │   ├── ExplicitStream.java
│   │                   │   │   ├── FlagComplexStream.java
│   │                   │   │   ├── FlexibleVietorisRipsStream.java
│   │                   │   │   ├── GeometricSimplexStream.java
│   │                   │   │   ├── LazyWitnessStream.java
│   │                   │   │   ├── VietorisRipsStream.java
│   │                   │   │   ├── WitnessBicomplex.java
│   │                   │   │   └── WitnessStream.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractFilteredStream.java
│   │                   │   │   └── PrimitiveStream.java
│   │                   │   ├── multi/
│   │                   │   │   ├── AbstractMultifilteredStream.java
│   │                   │   │   ├── AbstractStreamFlattener.java
│   │                   │   │   ├── BifilteredMetricStream.java
│   │                   │   │   ├── HalfplaneFlattener.java
│   │                   │   │   ├── IncreasingOrthantFlattener.java
│   │                   │   │   └── PrimitiveMultifilteredStream.java
│   │                   │   ├── storage_structures/
│   │                   │   │   ├── HashedStorageStructure.java
│   │                   │   │   ├── HashedStorageStructureIterator.java
│   │                   │   │   ├── IntOrderedIterator.java
│   │                   │   │   ├── SortedStorageStructure.java
│   │                   │   │   ├── StreamStorageStructure.java
│   │                   │   │   └── StreamStorageStructureFactory.java
│   │                   │   └── utility/
│   │                   │       ├── FilteredComparator.java
│   │                   │       ├── SkeletalMetric.java
│   │                   │       └── StreamUtility.java
│   │                   ├── utility/
│   │                   │   ├── ArrayUtility.java
│   │                   │   ├── CollectionUtility.java
│   │                   │   ├── ComparisonUtility.java
│   │                   │   ├── ExceptionUtility.java
│   │                   │   ├── FormalSumUtility.java
│   │                   │   ├── MathUtility.java
│   │                   │   ├── MemoryUtility.java
│   │                   │   ├── Quicksort.java
│   │                   │   └── RandomUtility.java
│   │                   └── visualization/
│   │                       ├── AbstractVisualizer.java
│   │                       ├── BarcodeVisualizer.java
│   │                       ├── HomologyGeneratorVisualizer.java
│   │                       ├── HomologyVisualizer.java
│   │                       ├── ImageRegion.java
│   │                       ├── PAppletSplitscreen.java
│   │                       ├── Point2D.java
│   │                       └── PointCloudScaling.java
│   ├── matlab/
│   │   ├── experimental/
│   │   │   ├── graph_classification/
│   │   │   │   ├── ad_health_example.m
│   │   │   │   ├── ad_health_plot.m
│   │   │   │   ├── average_block_matrix.m
│   │   │   │   ├── blockmodel_er_test.m
│   │   │   │   ├── blockmodel_test.m
│   │   │   │   ├── blockmodel_test2.m
│   │   │   │   ├── comparative_barcode_analysis.m
│   │   │   │   ├── comparative_graph_analysis.m
│   │   │   │   ├── comprehensive_test.m
│   │   │   │   ├── compute_adjacency_matrix.m
│   │   │   │   ├── compute_normalized_laplacian.m
│   │   │   │   ├── create_graph_from_edgelist.m
│   │   │   │   ├── er_test.m
│   │   │   │   ├── er_test_increasing_sizes.m
│   │   │   │   ├── filter_distance_matrix.m
│   │   │   │   ├── get_adhealth_edges16.m
│   │   │   │   ├── get_adhealth_edges44.m
│   │   │   │   ├── get_adhealth_edges47.m
│   │   │   │   ├── heatmap.m
│   │   │   │   ├── heatmap_examples.m
│   │   │   │   ├── hetergeneous_test.m
│   │   │   │   ├── pairwise_barcode_analysis.m
│   │   │   │   ├── pairwise_graph_analysis.m
│   │   │   │   ├── pairwise_row_distances.m
│   │   │   │   ├── plot_example.m
│   │   │   │   ├── plot_graph.m
│   │   │   │   ├── random_geometric_graph.m
│   │   │   │   ├── random_geometric_test.m
│   │   │   │   ├── rg_plot_example.m
│   │   │   │   ├── sandbox.m
│   │   │   │   ├── spectral_embedding.m
│   │   │   │   ├── torus_geometric.m
│   │   │   │   ├── visualize_comparison_distances.m
│   │   │   │   └── visualize_dissimilarity_matrix.m
│   │   │   ├── hom/
│   │   │   │   ├── combinatorial/
│   │   │   │   │   ├── brute_force_test.m
│   │   │   │   │   ├── flip_random_entry.m
│   │   │   │   │   ├── get_binary_subsets.m
│   │   │   │   │   ├── greedy_search.m
│   │   │   │   │   ├── greedy_search_test.m
│   │   │   │   │   ├── hom_parameterization_example.m
│   │   │   │   │   ├── simmulated_annealing_test.m
│   │   │   │   │   └── simulated_annealing.m
│   │   │   │   ├── continuous/
│   │   │   │   │   ├── circle_example.m
│   │   │   │   │   ├── create_max_lp.m
│   │   │   │   │   ├── create_positive_lp.m
│   │   │   │   │   ├── create_positive_lp2.m
│   │   │   │   │   └── tetra_octa_example.m
│   │   │   │   ├── hom_utility/
│   │   │   │   │   ├── compute_mapping.m
│   │   │   │   │   ├── default_objective.m
│   │   │   │   │   └── hom_parameterization.m
│   │   │   │   └── load_hom.m
│   │   │   ├── hom_messy/
│   │   │   │   ├── L2_distance.m
│   │   │   │   ├── alexander_whitney_difference.m
│   │   │   │   ├── alexander_whitney_loss_function.m
│   │   │   │   ├── circle_distance.m
│   │   │   │   ├── codomain_points.txt
│   │   │   │   ├── codomain_stream.txt
│   │   │   │   ├── colorGraph.m
│   │   │   │   ├── compute_interpolated_points.m
│   │   │   │   ├── compute_mapping.m
│   │   │   │   ├── convert_sparse_matrix.m
│   │   │   │   ├── create_max_lp.m
│   │   │   │   ├── create_positive_lp.m
│   │   │   │   ├── create_quotient_complex.m
│   │   │   │   ├── create_quotient_mapper_complex.m
│   │   │   │   ├── density_at_point.m
│   │   │   │   ├── density_function.m
│   │   │   │   ├── density_maximization_test.m
│   │   │   │   ├── density_objective.m
│   │   │   │   ├── domain_points.txt
│   │   │   │   ├── domain_stream.txt
│   │   │   │   ├── embedding_optimization_test.asv
│   │   │   │   ├── embedding_optimization_test.m
│   │   │   │   ├── embedding_optimization_test2.m
│   │   │   │   ├── fast_kron_mult.m
│   │   │   │   ├── flatten.m
│   │   │   │   ├── floyd_warshall.m
│   │   │   │   ├── gaussian_kernel_densities.m
│   │   │   │   ├── gaussian_kernel_density.m
│   │   │   │   ├── get_edges.m
│   │   │   │   ├── gradient.m
│   │   │   │   ├── graph_embedding.m
│   │   │   │   ├── hom_example_test.m
│   │   │   │   ├── hom_optimization_example.m
│   │   │   │   ├── hom_parameterization.m
│   │   │   │   ├── hom_visualization_example.m
│   │   │   │   ├── kron_test.m
│   │   │   │   ├── load_javaplex.m
│   │   │   │   ├── mapper.m
│   │   │   │   ├── mapperTutorial.m
│   │   │   │   ├── mapper_mapping_test.m
│   │   │   │   ├── mapping.txt
│   │   │   │   ├── matrix.txt
│   │   │   │   ├── normalize_rows.m
│   │   │   │   ├── objectivize.m
│   │   │   │   ├── pdist2.m
│   │   │   │   ├── returnBarCode_linkage_noplex.m
│   │   │   │   ├── show_graph.m
│   │   │   │   ├── smoothness_objective.m
│   │   │   │   ├── test_aw_optimization.m
│   │   │   │   ├── to_graph.m
│   │   │   │   ├── to_sparse_matlab_matrix.m
│   │   │   │   ├── unflatten.m
│   │   │   │   └── writeDotFile.m
│   │   │   ├── multifiltration_flattening/
│   │   │   │   ├── Syn2d_5g1k3c.mat
│   │   │   │   ├── Syn2d_5g1k3c_c1.txt
│   │   │   │   ├── clustering_example.m
│   │   │   │   └── flattened_clusters.eps
│   │   │   ├── vietoris_rips_bootstrap/
│   │   │   │   ├── basic_circle_example.m
│   │   │   │   ├── basic_sphere_example.m
│   │   │   │   ├── circle_incremental.m
│   │   │   │   ├── circle_long.m
│   │   │   │   ├── coreSubset.m
│   │   │   │   ├── core_subset_test.m
│   │   │   │   ├── core_verification_test.m
│   │   │   │   ├── ensure_density_indices.m
│   │   │   │   ├── figure_8_incremental.m
│   │   │   │   ├── filtered_barcodes.m
│   │   │   │   ├── filtered_bootstrap.m
│   │   │   │   ├── gaussian_kernel_densities.m
│   │   │   │   ├── gaussian_kernel_density.m
│   │   │   │   ├── get_cache_file_path.m
│   │   │   │   ├── get_core_subset_cached.m
│   │   │   │   ├── get_data_file_path.m
│   │   │   │   ├── kDensitySlow.m
│   │   │   │   ├── load_density_indices.m
│   │   │   │   ├── natural_samples_bootstrap_example.m
│   │   │   │   ├── natural_samples_example.m
│   │   │   │   ├── nk15c30Dct_LW0.m
│   │   │   │   ├── nk15c30Dct_LW1.m
│   │   │   │   ├── nk15c30Dct_VR.m
│   │   │   │   ├── nk300c30Dct_LW0.m
│   │   │   │   ├── nk300c30Dct_LW1.m
│   │   │   │   ├── nk300c30Dct_VR.m
│   │   │   │   ├── outputs/
│   │   │   │   │   ├── n50000Dct-15-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-300-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-10-20-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-13-17-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-15-45-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-15-450-15-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-2-400-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-25-350-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-300-350-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-400-800-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-100-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-25-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-400-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-50-5-15000-1.100.eps
│   │   │   │   │   └── nk300c30Dct_LW0.eps
│   │   │   │   └── parfor_test.m
│   │   │   └── witness_bootstrap/
│   │   │       ├── circle_example.m
│   │   │       ├── circle_incremental.m
│   │   │       ├── circle_pairwise.m
│   │   │       ├── figure8_example.m
│   │   │       ├── figure8_incremental.m
│   │   │       ├── figure8_pairwise.m
│   │   │       ├── figure8_samples.m
│   │   │       ├── image_patch_examples.m
│   │   │       └── torus_example.m
│   │   └── for_distribution/
│   │       ├── README
│   │       ├── basic_examples/
│   │       │   ├── barcode_plot_example.m
│   │       │   ├── boundary_extraction_example.m
│   │       │   ├── cellular_test.m
│   │       │   ├── dump_example.m
│   │       │   ├── endpoint_extraction_example.m
│   │       │   ├── ensure_faces_test.m
│   │       │   ├── explicit_metric_space_test.m
│   │       │   ├── explicit_simplex_test.m
│   │       │   ├── explicit_simplex_test2.m
│   │       │   ├── filter_long_intervals.m
│   │       │   ├── house_example_test.m
│   │       │   ├── landmark_test.m
│   │       │   ├── representatives_example.m
│   │       │   ├── simplicial_sphere_test.m
│   │       │   ├── sphere_test.m
│   │       │   └── vietoris_rips_example.m
│   │       ├── benchmarks/
│   │       │   └── rips_persistence.m
│   │       ├── jython/
│   │       │   ├── basic_vr_example.jy
│   │       │   ├── cellular_example.jy
│   │       │   ├── explicit_simplex_example.jy
│   │       │   ├── image_patch_example.jy
│   │       │   ├── pointsRange.csv
│   │       │   ├── quick_povray.sh
│   │       │   ├── representatives_example.jy
│   │       │   ├── sphere_witness_example.jy
│   │       │   ├── torus_witness_example.jy
│   │       │   └── visualization_example.jy
│   │       ├── load_javaplex.m
│   │       ├── tutorial_examples/
│   │       │   ├── bottleneck_distance_example.m
│   │       │   ├── coreSubset.m
│   │       │   ├── core_subsets_example.m
│   │       │   ├── cyclo_octane_example.m
│   │       │   ├── dct.m
│   │       │   ├── eulerCharacteristic.m
│   │       │   ├── euler_characteristic_example.m
│   │       │   ├── explicit_metric_space_example.m
│   │       │   ├── explicit_simplex_example.m
│   │       │   ├── house_example.m
│   │       │   ├── kDensitySlow.m
│   │       │   ├── landmark_example.m
│   │       │   ├── lazy_witness_example.m
│   │       │   ├── optical_image_example.m
│   │       │   ├── pointcloud_example.m
│   │       │   ├── pointsCycloOctane.mat
│   │       │   ├── pointsOpticalDct_k15.mat
│   │       │   ├── pointsOpticalDct_k300.mat
│   │       │   ├── pointsRange.mat
│   │       │   ├── pointsTorusGrid.mat
│   │       │   ├── range_image_example.m
│   │       │   ├── rips_example.m
│   │       │   ├── sublevelset_example.m
│   │       │   ├── sublevelset_persistence.m
│   │       │   └── witness_example.m
│   │       ├── tutorial_solutions/
│   │       │   ├── exercise_1.m
│   │       │   ├── exercise_11.m
│   │       │   ├── exercise_12.m
│   │       │   ├── exercise_13.m
│   │       │   ├── exercise_14.m
│   │       │   ├── exercise_2.m
│   │       │   ├── exercise_21.m
│   │       │   ├── exercise_22.m
│   │       │   ├── exercise_23.m
│   │       │   ├── exercise_24.m
│   │       │   ├── exercise_3.m
│   │       │   ├── exercise_4.m
│   │       │   ├── exercise_5.m
│   │       │   ├── exercise_6.m
│   │       │   ├── exercise_7.m
│   │       │   ├── exercise_8.m
│   │       │   ├── exercise_9.m
│   │       │   ├── flatKleinDistanceMatrix.m
│   │       │   ├── flatTorusDistanceMatrix.m
│   │       │   ├── getDoubleTorusPoints.m
│   │       │   └── projPlaneDistanceMatrix.m
│   │       ├── utility/
│   │       │   ├── convert_sparse_matrix.m
│   │       │   ├── create_landmark_pov_file.m
│   │       │   ├── create_pov_file.m
│   │       │   ├── flatten.m
│   │       │   ├── persistence_diagram.m
│   │       │   ├── plot_barcodes.m
│   │       │   ├── render_onscreen.m
│   │       │   ├── render_pov_file.m
│   │       │   └── to_sparse_matlab_matrix.m
│   │       └── visualization_examples/
│   │           ├── landmark_set_pov.m
│   │           ├── witness_sphere_opengl.m
│   │           └── witness_sphere_pov.m
│   └── processing/
│       ├── javaplex/
│       │   └── library.properties
│       ├── javaplexDemo/
│       │   ├── State.java
│       │   └── javaplexDemo.pde
│       └── readme.txt
├── src_test/
│   └── java/
│       └── edu/
│           └── stanford/
│               └── math/
│                   ├── mapper/
│                   │   ├── ClusteringTest.java
│                   │   ├── HistogramTest.java
│                   │   └── MapperTest.java
│                   ├── plex/
│                   │   ├── CRCTest.java
│                   │   ├── ChainTest.java
│                   │   ├── CubeHashTest.java
│                   │   ├── ExplicitStreamTest.java
│                   │   ├── LazyWitnessStreamTest.java
│                   │   ├── MappedBufferDataTest.java
│                   │   ├── Packed2SimplexTest.java
│                   │   ├── Packed4SimplexTest.java
│                   │   ├── Packed6SimplexTest.java
│                   │   ├── PersistenceBasisTest.java
│                   │   ├── PersistenceIntervalTest.java
│                   │   ├── PersistenceTest.java
│                   │   ├── PlexSortTest.java
│                   │   ├── PlexTest.java
│                   │   ├── RipsStreamTest.java
│                   │   ├── SimplexFaceIteratorTest.java
│                   │   ├── SimplexTableTest.java
│                   │   ├── SimplexTest.java
│                   │   ├── TorusTest.java
│                   │   └── WitnessStreamTest.java
│                   └── plex4/
│                       ├── bottleneck/
│                       │   ├── BottleneckDistanceTest.java
│                       │   └── FordFulkersonTest.java
│                       ├── example_tests/
│                       │   ├── CustomFiltrationTest.java
│                       │   ├── FiltrationTimeTest.java
│                       │   ├── FormalSumTest.java
│                       │   ├── GraphTest.java
│                       │   ├── HomVerificationTest.java
│                       │   ├── MultifilteredFlatteningTest.java
│                       │   ├── VdsWitnessExample.java
│                       │   ├── VietorisRipsBootstrapTest.java
│                       │   ├── WitnessBootstrapTest.java
│                       │   └── ZigZagTest.java
│                       ├── homology/
│                       │   ├── HomTester.java
│                       │   ├── PersistenceAlgorithmTester.java
│                       │   └── StreamTester.java
│                       ├── metric/
│                       │   └── SearchableMetricSpaceTester.java
│                       ├── test_utility/
│                       │   └── Timing.java
│                       └── unit_tests/
│                           ├── DeSilvaMorozovJohanssonTest.java
│                           ├── ExperimentalEqualityTest.java
│                           ├── PersistenceAlgorithmEqualityTest.java
│                           ├── SearchableMetricSpaceTest.java
│                           ├── SimplicialSphereTest.java
│                           └── StreamsTest.java
└── templates/
    └── homology/
        ├── AbsoluteHomology.vm
        ├── ClassicalHomology.vm
        ├── PersistenceAlgorithm.vm
        ├── PersistentHomology.vm
        └── RelativeHomology.vm

================================================
FILE CONTENTS
================================================

================================================
FILE: .classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src/bsh"/>
	<classpathentry kind="src" path="src/java"/>
	<classpathentry kind="src" path="src_test/java"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
	<classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
	<classpathentry kind="lib" path="lib/colt.jar"/>
	<classpathentry kind="lib" path="lib/jai_codec.jar"/>
	<classpathentry kind="lib" path="lib/trove-2.1.0.jar"/>
	<classpathentry kind="lib" path="lib/primitive-lib.jar" sourcepath="lib/primitive-lib.jar"/>
	<classpathentry kind="lib" path="lib/velocity-1.6.4-dep.jar"/>
	<classpathentry kind="lib" path="lib/commons-math-2.1.jar"/>
	<classpathentry kind="lib" path="lib/junit-4.9b1.jar"/>
	<classpathentry kind="lib" path="lib/core.jar"/>
	<classpathentry kind="lib" path="lib/gluegen-rt.jar"/>
	<classpathentry kind="lib" path="lib/jogl-all.jar"/>
	<classpathentry kind="output" path="bin"/>
</classpath>


================================================
FILE: .gitignore
================================================
*.class

# Package Files #
*.jar
*.war
*.ear
/bin/

# Mac system files
*.DS_Store


================================================
FILE: .project
================================================
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>javaplex</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>net.sourceforge.metrics.builder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>net.sourceforge.metrics.nature</nature>
	</natures>
</projectDescription>


================================================
FILE: .settings/org.eclipse.jdt.core.prefs
================================================
#Tue Jul 06 16:52:58 PDT 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=160
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true


================================================
FILE: .settings/org.eclipse.jdt.ui.prefs
================================================
#Tue Jul 06 16:52:58 PDT 2010
eclipse.preferences.version=1
formatter_profile=_Andrew
formatter_settings_version=11


================================================
FILE: .travis.yml
================================================
language: java


================================================
FILE: LICENSE.md
================================================
Copyright (c) 2014, Henry Adams, Mikael Vejdemo-Johansson, Andrew Tausz
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the {organization} nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: README.md
================================================
# JavaPlex

## Persistent Homology and Topological Data Analysis Library 


The `JavaPlex` library implements persistent homology and related techniques from computational and applied topology, in a library designed for ease of use, ease of access from Matlab and java-based systems, and ease of extensions for further research projects and approaches.

`JavaPlex` is mainly developed by the [Computational Topology workgroup](http://comptop.stanford.edu) at Stanford University, and is based on previous similar packages from the same group.

For persistent homology and its capabilities, we recommend the survey article [Topology and Data](http://www.ams.org/journals/bull/2009-46-02/S0273-0979-09-01249-X/S0273-0979-09-01249-X.pdf) by Gunnar Carlsson.

## How to get started?

* Take a look at the [documentation overview](https://github.com/appliedtopology/javaplex/wiki/Overview)  
* Take a look at the [latest release](https://github.com/appliedtopology/javaplex/releases/). The tutorial PDF is available for download there (and also [here](http://www.math.colostate.edu/~adams/research/javaplex_tutorial.pdf)). There is also a [tutorial wiki page](https://github.com/appliedtopology/javaplex/wiki/Tutorial).
* From the [latest release](https://github.com/appliedtopology/javaplex/releases/), you can download and start playing with the latest matlab examples.

## For more information

* Read the [wiki page documentation](https://github.com/appliedtopology/javaplex/wiki/Overview)
* Look at the [javadoc documentation](http://appliedtopology.github.io/javaplex/doc/)

## Wiki links

* [Architecture Notes](https://github.com/appliedtopology/javaplex/wiki/Architecture-Notes)
* [Citation Information](https://github.com/appliedtopology/javaplex/wiki/Citation-Information)
* [Cohomology](https://github.com/appliedtopology/javaplex/wiki/)
* [Home](https://github.com/appliedtopology/javaplex/wiki/Home)
* [Interoperability](https://github.com/appliedtopology/javaplex/wiki/Interoperability)
* [Overview](https://github.com/appliedtopology/javaplex/wiki/Overview)
* [Troubleshooting](https://github.com/appliedtopology/javaplex/wiki/Troubleshooting)
* [Tutorial](https://github.com/appliedtopology/javaplex/wiki/Tutorial)


## Citing JavaPlex

To cite `JavaPlex`, please consult the [Citation Information](https://github.com/appliedtopology/javaplex/wiki/Citation-Information) page.

## Old Site

`JavaPlex` was formerly hosted at [https://code.google.com/p/javaplex/](https://code.google.com/p/javaplex/). As of spring 2014, we have moved to this present page at GitHub.

## Updates

* July, 2018: [Version 4.3.4](https://github.com/appliedtopology/javaplex/releases/) is released.
* July, 2018: Version 4.3.3 is released.
* June, 2017: Version 4.3.1 is released.
* May, 2017: Version 4.3.0 is released. Installation in Matlab 2016 should now work again!
* March, 2016: Version 4.2.5 is released
* Jan, 2016: Version 4.2.4 released
* July, 2015: Version 4.2.3 released
* March, 2015: Version 4.2.2 released
* July, 2014: Version 4.2.1 released
* April, 2014: Google Code hosting abandoned
* May, 2012: Version 4.1.0 released
* For frequently asked questions regarding `JavaPlex` and troubleshooting information, consult the [troubleshooting](https://github.com/appliedtopology/javaplex/wiki/Troubleshooting) page.


================================================
FILE: build/processing/javaplex/library.properties
================================================
name=javaPlex
authorList=Andrew Tausz and Mikael Vejdemo-Johansson and Henry Adams
url=http://code.google.com/p/javaplex
category=Geometry, Math
sentence=Framework for computational topology
paragraph=
version=101
prettyVersion=4.3.4



================================================
FILE: build.number
================================================
#Build Number for ANT. Do not edit!
#Sun Jul 15 19:57:53 MDT 2018
build.number=102


================================================
FILE: build.xml
================================================
<?xml version="1.0" ?>

<project name="javaplex" default="default" basedir=".">
	<property name="version.num" value="4.3.4" />
	<property name="build.dir" value="build" />
	<property name="bin.dir" value="${build.dir}/bin" />
	<property name="temp.dir" value="temp" />
	<property name="src_test.dir" value="src_test" />
	<property name="src.dir" value="src" />
	<property name="lib.dir" value="lib" />
	<property name="doc.dir" value="doc" />
	<property name="dist.dir" value="dist" />
	<property name="matlab.lib.dir" value="src/matlab/for_distribution/lib" />
	<property name="test.dir" value="${build.dir}/test" />
	<property name="project.name" value="javaplex" />
	<property name="runnable.jar" value="${dist.dir}/${project.name}-${version.num}.jar" />
	<property name="basic.jar" value="${temp.dir}/${project.name}.jar" />
	<property name="tests.jar" value="${temp.dir}/tests.jar" />
	<property name="source.tarball" value="${dist.dir}/${project.name}-src-${version.num}.tar.gz" />
	<property name="source.zipball" value="${dist.dir}/${project.name}-src-${version.num}.zip" />
	<property name="doc.tarball" value="${dist.dir}/${project.name}-doc-${version.num}.tar.gz" />
	<property name="doc.zipball" value="${dist.dir}/${project.name}-doc-${version.num}.zip" />
	<property name="matlab.tarball" value="${dist.dir}/matlab-examples-${version.num}.tar.gz" />
	<property name="matlab.zipball" value="${dist.dir}/matlab-examples-${version.num}.zip" />
	<property name="processing.src.dir" value="src/processing/javaplex" />
	<property name="processing.demo.src.dir" value="src/processing/javaplexDemo" />
	<property name="processing.build.dir" value="build/processing/javaplex" />
	<property name="processing.dist.dir" value="dist/processing" />
	<property name="processing.jar" value="${processing.build.dir}/library/javaplex.jar" />
	<property name="processing.zipball" value="${dist.dir}/${project.name}-processing-lib-${version.num}.zip" />
	<property name="processing.demo.zipball" value="${dist.dir}/${project.name}-processing-demo-${version.num}.zip" />
	<property name="ant.build.javac.source" value="1.6" />
	<property name="ant.build.javac.target" value="1.6" />

	<buildnumber />

	<path id="classpath">
		<fileset dir="${lib.dir}">
			<include name="*.jar" />
		</fileset>
	</path>

	<property name="debug.flag" value="off" />

	<!--Default target-->
	<target name="default" depends="clean,dist" />

	<!--All targets-->
	<target name="all" depends="clean,dist,test" />

	<!--Clean targets-->
	<target name="clean">
		<delete dir="${build.dir}" />
		<delete dir="${temp.dir}" />
		<delete>
			<fileset dir="." includes="TEST*.txt" />
		</delete>
	</target>

	<target name="clean_dist" depends="clean">
		<delete dir="${dist.dir}" />
	</target>

	<target name="clean_all" depends="clean,clean_dist" />

	<!--Initialization targets-->
	<target name="init">
		<mkdir dir="${build.dir}" />
		<mkdir dir="${bin.dir}" />
		<mkdir dir="${dist.dir}" />
		<mkdir dir="${test.dir}" />
		<mkdir dir="${temp.dir}" />
	</target>

	<!--Documentation targets-->
	<target name="doc" depends="javadoc" />

	<target name="javadoc">
		<javadoc destdir="${doc.dir}" classpathref="classpath" Overview="doc_includes/overview.htm" sourcepath="${src.dir}">
			<package name="edu.stanford.math.plex4" />
			<fileset dir="${src.dir}" />
		</javadoc>
		<copy file="doc_includes/update_mime_types.sh" tofile="${doc.dir}/update_mime_types.sh" />
	</target>

	<!--Bin targets-->
	<target name="classes" depends="init">
		<javac destdir="${bin.dir}" classpathref="classpath" debug="${debug.flag}" includeAntRuntime="false" source="1.6" target="1.6">
			<compilerarg value="-Xlint" />
			<src>
				<pathelement path="${src.dir}" />
			</src>
		</javac>
	</target>

	<!--Distribution targets-->
	<target name="dist" depends="clean_dist,runnable_jar,doc_tar,source_dist,matlab_dist,processing_dist" />

	<target name="doc_tar">
		<tar destfile="${doc.tarball}" compression="gzip">
			<tarfileset dir="doc" prefix="javadoc">
				<include name="bshmanual.pdf" />
				<include name="stylesheet.css" />
				<include name="*.html" />
				<include name="**/*.html" />
			</tarfileset>
		</tar>
		<zip destfile="${doc.zipball}">
			<zipfileset dir="doc" prefix="javadoc">
				<include name="bshmanual.pdf" />
				<include name="stylesheet.css" />
				<include name="*.html" />
				<include name="**/*.html" />
			</zipfileset>
		</zip>
	</target>

	<target name="source_dist">
		<tar destfile="${source.tarball}" compression="gzip">
			<tarfileset dir="${src.dir}/java" prefix="src/java">
				<include name="**" />
				<exclude name="**.svn/**" />
			</tarfileset>
		</tar>
		<zip destfile="${source.zipball}">
			<zipfileset dir="${src.dir}/java" prefix="src/java">
				<include name="**" />
				<exclude name="**.svn/**" />
			</zipfileset>
		</zip>
	</target>

	<!--Runnable jar file-->
	<target name="runnable_jar" depends="classes">

		<jar destfile="${runnable.jar}" filesetmanifest="mergewithoutmain">
			<manifest>
				<attribute name="Main-Class" value="edu.stanford.math.plex4.api.Plex4" />
				<attribute name="Class-Path" value="." />
			</manifest>
			<fileset dir="${bin.dir}" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/bsh-2.0b4.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/colt.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jai_codec.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/trove-2.1.0.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/primitive-lib.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/velocity-1.6.4-dep.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/commons-math-2.1.jar" />
			<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/junit-4.9b1.jar" />
		</jar>

	</target>

	<target name="matlab_dist" depends="runnable_jar">
		<copy file="${runnable.jar}" tofile="${matlab.lib.dir}/javaplex.jar" />
		<tar destfile="${matlab.tarball}" compression="gzip">
			<tarfileset dir="src/matlab/for_distribution" prefix="matlab_examples" preserveLeadingSlashes="true">
				<include name="**" />
			</tarfileset>
		</tar>
		<zip destfile="${matlab.zipball}">
			<zipfileset dir="src/matlab/for_distribution" prefix="matlab_examples">
				<include name="**" />
			</zipfileset>
		</zip>
	</target>

	<target name="processing_dist" depends="runnable_jar">
		<mkdir dir="${processing.build.dir}" />
		<copy file="${runnable.jar}" tofile="${processing.jar}" />
		<copy todir="${processing.build.dir}">
			<fileset dir="${processing.src.dir}" />
			<filterset>
				<filter token="VERSION" value="${build.number}" />
				<filter token="PRETTYVERSION" value="${version.num}" />
			</filterset>
		</copy>
		<zip destfile="${processing.zipball}">
			<zipfileset dir="${processing.build.dir}" prefix="javaplex">
				<include name="**" />
			</zipfileset>
		</zip>
		<zip destfile="${processing.demo.zipball}">
			<zipfileset dir="${processing.demo.src.dir}" prefix="javaplexDemo">
				<include name="**" />
			</zipfileset>
		</zip>
	</target>

	<!--Basic Jar file-->
	<target name="basic_jar" depends="classes">
		<jar destfile="${basic.jar}" basedir="${bin.dir}">
		</jar>
	</target>

	<!--Test targets-->
	<target name="test.jar" depends="basic_jar">
		<javac destdir="${test.dir}" srcdir="${src_test.dir}" debug="${debug.flag}" includeantruntime="false">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="*.jar" />
				</fileset>
				<pathelement location="${basic.jar}" />
			</classpath>
			<compilerarg value="-Xlint" />
		</javac>
		<jar destfile="${tests.jar}" basedir="${test.dir}" />
	</target>

	<target name="test" depends="test.jar">
		<delete>
			<fileset dir="." includes="TEST*.txt" />
		</delete>
		<junit fork="yes" timeout="1200000" tempdir="${temp.dir}">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="*.jar" />
				</fileset>
				<pathelement location="${tests.jar}" />
				<pathelement location="${basic.jar}" />
			</classpath>

			<formatter type="brief" />

			<batchtest todir="${temp.dir}">
				<fileset dir="${test.dir}">
					<include name="**/*Test.class" />
				</fileset>
			</batchtest>
		</junit>
	</target>



	<!-- Build visualization apps (uses Processing) -->
	<target name="homviz_build" depends="runnable_jar" description="Builds a jar for the Homologty Visualizer applet">
		<property name="app.dir" value="${src.dir}/homviz" />
		<property name="app.lib.dir" value="${app.dir}/lib" />
		<delete dir="${app.dir}" />
		<mkdir dir="${app.dir}" />
		<mkdir dir="${app.lib.dir}" />
		<copy file="${lib.dir}/core.jar" todir="${app.lib.dir}" />
		<copy file="${runnable.jar}" tofile="${app.lib.dir}/javaplex.jar" />
		<jar destfile="${app.dir}/homviz.jar">
			<fileset dir="bin/edu/stanford/math/plex4/visualization">
				<include name="**/*.class" />
			</fileset>
			<manifest>
				<attribute name="Main-Class" value="edu.stanford.math.plex4.visualization.HomologyVisualizer" />
				<attribute name="Class-Path" value="lib/core.jar lib/javaplex.jar" />
			</manifest>
		</jar>
		<jar destfile="${app.dir}/homgenviz.jar">
			<fileset dir="bin/edu/stanford/math/plex4/visualization">
				<include name="**/*.class" />
			</fileset>
			<manifest>
				<attribute name="Main-Class" value="edu.stanford.math.plex4.visualization.HomologyGeneratorVisualizer" />
				<attribute name="Class-Path" value="lib/core.jar lib/javaplex.jar" />
			</manifest>
		</jar>
	</target>



</project>


================================================
FILE: data/natural_images/readme_natural_images.txt
================================================
A natural image is a photograph. Consider natural images which contain a greyscale value at each pixel. In the paper "On the local behavior of spaces of natural images", authors Gunnar Carlsson, Tigran Ishkhanov, Vin de Silva, and Afra Zomorodian study several dense core subsets of a space of high-contrast 3x3 natural image patches. In particular, the authors find that their dense core subset X(300,30) has the topology of a circle and that their dense core subset X(15,30) has the topology of an interesting space containing three circles. A more complicated subset has the topology of a Klein bottle.

The paper "On the local behavior of spaces of natural images" is available at the following website:
http://www.springerlink.com/content/pm1718435n685294/
These dense core subsets are also discussed in the paper "Topological estimation using witness complexes" by Vin de Silva and Gunnar Carlsson, which is available at
http://pages.pomona.edu/~vds04747/public/papers/witness.pdf
The dataset of natural image patches is from "The nonlinear statistics of high-contrast patches in natural images" by Ann Lee, Kim Pdersen, and David Mumford, which is available at
http://www.informatik.uni-trier.de/~ley/db/journals/ijcv/ijcv54.html
The patches are taken from van Hateren's natural image database, which is available at
http://www.kyb.mpg.de/bethge/vanhateren/index.php
See the paper "Independent component filters of natural images compared with simple cells in primary visual cortex" by J H van Hateren and A van der Schaaf at
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1688904/

The Matlab file n50000Dct.mat is a collection of 50000 random points from the space M of patches in "On the local behavior of spaces of natural images".
The Matlab file nk300c30Dct.mat contains a version of the core subset X(300,30).
The Matlab file nk15c30Dct.mat contains a version of the core subset X(15,30).

================================================
FILE: data/point_clouds/circle.txt
================================================
0,1,1
0.125333233564304,0.992114701314478,1
0.248689887164855,0.968583161128631,1
0.368124552684678,0.929776485888251,1
0.481753674101715,0.876306680043864,1
0.587785252292473,0.809016994374947,1
0.684547105928689,0.728968627421412,1
0.770513242775789,0.63742398974869,1
0.844327925502015,0.535826794978997,1
0.90482705246602,0.425779291565073,1
0.951056516295154,0.309016994374947,1
0.982287250728689,0.187381314585725,1
0.998026728428272,0.0627905195293133,1
0.998026728428272,-0.0627905195293134,1
0.982287250728689,-0.187381314585725,1
0.951056516295154,-0.309016994374948,1
0.904827052466019,-0.425779291565073,1
0.844327925502015,-0.535826794978997,1
0.770513242775789,-0.63742398974869,1
0.684547105928689,-0.728968627421412,1
0.587785252292473,-0.809016994374947,1
0.481753674101715,-0.876306680043864,1
0.368124552684678,-0.929776485888251,1
0.248689887164855,-0.968583161128631,1
0.125333233564304,-0.992114701314478,1
-3.21624529935327e-16,-1,1
-0.125333233564304,-0.992114701314478,1
-0.248689887164855,-0.968583161128631,1
-0.368124552684678,-0.929776485888251,1
-0.481753674101715,-0.876306680043863,1
-0.587785252292473,-0.809016994374947,1
-0.684547105928689,-0.728968627421412,1
-0.770513242775789,-0.63742398974869,1
-0.844327925502015,-0.535826794978996,1
-0.90482705246602,-0.425779291565072,1
-0.951056516295154,-0.309016994374948,1
-0.982287250728689,-0.187381314585725,1
-0.998026728428272,-0.0627905195293132,1
-0.998026728428272,0.0627905195293137,1
-0.982287250728689,0.187381314585725,1
-0.951056516295154,0.309016994374947,1
-0.90482705246602,0.425779291565073,1
-0.844327925502015,0.535826794978997,1
-0.770513242775789,0.63742398974869,1
-0.684547105928688,0.728968627421412,1
-0.587785252292473,0.809016994374948,1
-0.481753674101715,0.876306680043864,1
-0.368124552684678,0.929776485888251,1
-0.248689887164854,0.968583161128631,1
-0.125333233564304,0.992114701314478,1
-2.44929359829471e-16,1,1


================================================
FILE: data/point_clouds/cube.txt
================================================
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1


================================================
FILE: data/point_clouds/cylinder.txt
================================================
1.98155906437293,1.01389735228371,9.91560618858784
9.08504984057864,7.88311772218694,7.3735861806199
9.18819705140907,7.73111798693655,9.24848021706566
0.297367590525015,6.69860190196393,4.00469116866589
8.37947995174046,1.31501489069708,0.380953245330602
3.8633849243986,9.86909705899519,6.67675641831011
0.342358399089671,3.18165605083376,1.17942726472393
4.30273571776188,9.95114355686794,2.67158857081085
6.74175707022841,0.313179936427116,4.56938061863184
7.55717192220169,0.703388339597898,1.44128279294819
0.298787263452959,6.70252718208194,9.62811290519312
2.81609087584908,9.49783736227205,1.20725980959833
9.89843268972806,3.99732498574888,1.66349642444402
4.57169509699127,0.0183782851305656,3.90655303606763
8.32049682214699,8.73822161650587,7.36547205829993
2.11196347038048,9.08157383904582,2.40806992864236
0.723575182144563,7.59078960497183,8.76940758666024
3.64775712796965,0.186327886629262,4.48188315611333
0.295002987566648,6.69204110854117,1.70002741506323
3.72061581509227,0.166453051080605,0.779146109707654
2.94226994104994,0.443055079936409,5.65943384310231
2.9928126057908,9.57943214433053,0.416400467511266
8.00157963108108,8.99881478919432,1.78701147902757
0.0492417001941963,5.69999446919525,5.71796077070758
0.0381298317631824,4.38368479366356,4.94143709540367
0.0395865408689104,4.37206822466837,9.67417690902948
4.6533743259249,0.0120294064547668,1.32679875940084
1.20949259809144,8.26068300147015,4.1339967190288
9.90782881098922,5.95562354618549,8.07800238952041
2.36826753557501,9.25135087186315,8.4695887262933
9.54637444113232,7.08098040380461,1.49970934260637
9.67481897887884,3.22628426327268,2.78491820208728
2.96700892507886,0.431964613831131,5.33804455772042
4.34009512180831,0.0437387526746731,8.58999602030963
6.00137583948972,0.101301557751666,2.3132145148702
9.90972770278314,4.05418083941814,2.06402251496911
5.44400291400843,9.98024712362268,1.98890739586204
9.59057436323983,6.98157185475702,6.89322384539992
7.84754576701277,9.10992495123301,8.41165363555774
7.164404508691,0.492744391233387,7.64313261024654
3.88506360668586,0.125893226563081,8.46851739101112
0.128510562079963,3.87368270179601,6.30169098032638
7.36716245099221,0.595849465491384,7.36188026145101
9.82149805532027,3.67593183614177,3.59787971712649
9.54058412077095,2.90641555169067,3.14378441078588
8.51243925866423,8.55847867131367,3.29378595110029
0.504254282057865,2.81178830100811,4.53104746062309
4.31058221154647,0.0477577691550826,7.6893353369087
4.44022622877714,0.0314334738225615,6.42619221936911
5.51202487101679,0.026286042456781,1.98695020982996
6.91850634597638,9.61728636760255,9.52424436109141
8.57367153285729,1.50301962040886,1.11773680662736
7.06377463761604,9.55421060614601,5.61686536064371
1.45763662549831,8.52869121955846,4.57374772056937
5.34549062116696e-05,5.02312025529035,3.46125789452344
9.18165524978191,7.74112374255002,3.52681379998103
1.50237930022121,8.57304484165521,2.64214387862012
8.74651811324678,1.68886695720124,7.53608060535043
0.304140179967696,3.28276368818785,3.77550700912252
6.61454727189493,9.73214931155143,4.6098384144716
6.62134412142694,0.270175136443813,7.24471779307351
6.66905677488787,0.286800504731323,7.6736927847378
0.131508947982554,6.13920800402124,3.47244966076687
8.88076174473684,1.84727288199771,6.02516253245994
0.361630584248668,6.86695719367709,4.94784859241918
5.96265594037259,0.0935457262433017,5.71045571472496
9.9560162768063,4.33825785684225,5.45636160532013
9.9573609904291,5.65159190493117,2.77153667761013
2.96900480902746,0.431076873677297,8.53253790875897
4.896563871275,0.00107001776636384,6.02567227790132
1.04601851227502,1.93960290244417,3.44587875995785
7.64943704318637,9.24034000455056,4.57919821608812
9.82579430831009,3.69167691532942,6.64985702373087
4.65956717673615,0.0116029134756515,3.58294414822012
8.20532708024432,8.83743121223722,1.39708176488057
0.679309311050914,7.51627342918624,0.758123067207634
1.20983834758344,1.73891511172264,3.32052253186703
0.0174048897430064,5.41682846261153,2.3171843169257
9.35953292930975,7.44836121482595,0.220230356790125
0.678031617011214,2.4859217799668,3.94748639315367
0.40947673679646,6.98169023058275,4.95670055504888
9.90936123484882,5.94771950795773,2.017673375085
2.80443119025604,0.507842656175155,8.49194075679407
6.76944458349702,0.323562695177765,7.71667758235708
0.417938416671372,2.99882243501884,7.97898060409352
8.85557120973321,8.18348404215828,7.41256185341626
9.02507837855998,7.96626769635664,7.03079507453367
9.01146507363252,2.01534793266846,9.31785981170833
9.71203141911599,3.32764839065951,6.89677640330046
6.23440415042444,0.15477075945679,2.1531616942957
9.81450986991083,3.65074290347198,5.20865012425929
3.15839515312481,0.351506524908762,2.47535083908588
1.02210657444931,8.02925137533362,0.0028396095149219
2.8655124614774,9.5215000771748,1.97060911217704
9.73985120015462,6.59179477332752,5.76980191282928
8.60365380572443,8.46607548222594,9.40057422267273
4.72120415416559,0.00777876328127114,0.89916825061664
0.899924479196999,7.86170940588174,5.53220674628392
1.78718510583734,8.83116437337875,8.13203247031197
8.23375757596786,8.81350389273048,4.17472541332245
0.223151649264339,3.52293539949195,3.16485654795542
0.20603480730742,3.57947272773382,9.34758721385151
1.95315192042294,8.96443145734387,3.81980929058045
7.6799847349971,9.2210995984675,1.22901774710044
6.70593803006527,0.300023889680181,6.8852007901296
9.71234118671397,6.67147854906942,2.17834393959492
4.5033794367826,0.0247243276186557,2.84860792104155
4.29557929266267,9.95013044950074,0.973909748718143
9.08474926888194,7.88354355097482,4.5472671976313
0.0756294101361199,4.133643091051,2.16106416191906
0.66029823910638,2.51665777096736,5.86965558119118
2.56379732914619,0.633660967523851,6.13497688435018
1.29355873995238,1.64406597415614,2.76353855151683
0.100264969631659,4.00370856062026,1.6551045444794
0.0905365454550813,4.05281016238144,1.9357799529098
9.41458412196148,2.6523528735933,3.23120343266055
9.46029119992751,7.25960226850859,6.20557196438313
1.61506228912421,1.32002762327066,6.18751841131598
0.0615541899069596,5.78214639344211,5.3097306843847
4.36602958205772,0.0403546992578088,9.47704016463831
9.28853641872373,2.42930838386238,6.77681132918224
7.29096071266088,0.555734142398282,4.42116612801328
2.8995296617017,9.53740282076972,6.03302712086588
5.18252738328036,9.99666726472284,0.272806147113442
0.0812942143642257,4.10203931358152,4.87914178986102
9.59263037869132,6.97680201454815,3.04588038474321
9.53213977320231,2.88819767114493,9.17776150628924
1.11359480684662,8.14576774009628,2.92854892322794
0.57266752870386,7.32351612617748,3.42329949373379
0.123492621766849,3.89561067098706,2.08388806320727
7.5532231969333,0.701040671669285,7.07083959365264
1.8301583673687,8.86679505844793,9.08233890077099
2.65272526031104,0.585217865350758,7.49294742010534
0.480061584317667,2.8622075127742,9.37890768051147
9.98746371020676,4.64615576962362,2.79900332447141
5.39592662006372,9.9842995607733,2.07014475949109
6.8791634102023,9.63343769546509,2.42754332954064
6.70233834549015,0.298718881254401,1.0642899828963
1.38480943690339,1.54595929489862,4.33233608491719
8.93245725811804,8.08800581493539,1.35092819808051
5.11438308285688,0.00130852018689254,8.17405810346827
3.47924777426578,9.76312005600577,3.06138352956623
4.70833518708136,0.00851408527429243,2.78952522436157
4.08397549056137,0.0846262504151607,4.85826239455491
3.60879424338526,0.197443749130884,9.06072210287675
0.0322454008361284,4.43306592756635,2.71818210370839
1.09090611985281,8.11752867447852,6.32752685574815
5.09333742675109,0.000871263433248615,6.50233844295144
6.33350995633833,0.181104774292499,9.4024747540243
2.08190559071877,0.939861453284923,1.3198665715754
2.05594904172314,0.958643302668137,3.38051763828844
6.0414075995122,9.89034459027973,9.85981727950275
5.22285688177885,9.99503101194015,6.03791355388239
0.0176749515967556,4.57995582130732,3.37604096159339
9.1891974905524,2.27041681109561,4.76685512810946
7.33089157305953,9.42345390782362,3.62371941795573
0.401100363810035,3.03782719001312,3.62792111700401
9.90928481240586,4.05188469547149,2.63047105167061
7.63908110475117,0.7532069837882,4.10442095715553
0.00584500624436934,4.7583061888552,0.556122455745935
9.3893139232069,2.60543881190268,1.18974984623492
0.308771317844974,6.72984781172391,7.39169531268999
1.50041095538624,1.42888301524308,6.16055381018668
1.44985822326693,1.4791345715727,8.42528459150344
1.9663435101077,8.97453497925661,5.69394054589793
9.70801663358923,6.6836209127494,7.34111036639661
9.86819284805888,6.14048165005334,2.07985062152147
6.70213184423397,0.298644112083764,5.26059908326715
9.99899326361258,5.10033120330202,7.0604231627658
9.83218963145211,3.71549878719919,3.94992934772745
5.29275990707442,0.00857819486173117,3.65242982748896
7.8135694518341,0.866741365495507,3.01494718529284
7.28754939818023,0.553977311024462,3.82129128323868
9.11516695982113,7.83996494569854,3.63564348546788
9.95623323506021,4.33988476787413,9.04378048609942
6.79233689211751,0.332288733741714,9.17223730357364
3.02409338956007,9.59301568327605,7.14646412059665
0.00373529836814956,4.80676689924448,2.17261475976557
1.5237361105334,1.40617343618385,4.23061681212857
9.91172574526283,4.0646122711291,1.04487017029896
7.10552712589608,9.53505849158705,9.13629327202216
9.07447258569787,2.10195356345063,0.326851403806359
6.61734159922323,0.268804997527362,8.26476547168568
9.75448745899293,6.54752996813599,2.11933527840301
7.10915631422652,9.53337177409469,5.79990849364549
3.60294321736878,0.199142540534648,1.79527902510017
0.461883856380353,2.90107125727939,5.06749103777111
9.48133891958354,2.78243343102719,1.5495343809016
0.128599499224101,6.12670189537442,9.20397030189633
9.55952274803403,7.05201177144776,7.23849420901388
7.60100964154843,9.27021648685077,3.47964082611725
9.48121046769353,7.21782613029831,5.48018676694483
0.801384067738752,7.71507352632705,6.97265869006515
6.98594465253593,9.5886843252793,8.42755313031375
1.27182210138196,1.66823026662166,7.97182436101139
8.83270528300063,8.2109765202597,6.33284526178613
9.77700250818251,6.47656596087613,4.75078266346827
4.10015709451374,9.91836179489127,1.75769717432559
1.73909612204247,8.79031738759718,3.37743477663025
4.46582905896621,9.97138425448638,2.02819433761761
9.02185523813349,2.02936362987689,7.62582640862092
3.84255841252106,9.864188418593,2.29280170984566
9.23162335209545,2.33666303183385,5.36567959934473
7.59081743812425,9.27640795555233,5.30307809123769
1.70507399221928,8.76077952069119,3.94775351276621
0.301857866059078,6.71098231705913,9.08147040521726
2.31102089399296,9.21537559031904,3.97971724392846
0.0512976542006864,5.71438441519981,8.4747231239453
3.67911899677535,9.82237217304101,6.04592529824004
0.986884083053025,7.98243200042295,9.35327148996294
5.91524045728745,9.9155198001172,3.78175632795319
2.79461010012671,0.512656087445839,5.60211172094569
9.06185300867545,7.91570748462774,4.54928757390007
6.52946102764516,0.239669237866488,0.387833029963076
2.29406247021851,9.20450973181417,7.54382866900414
8.81527055549965,1.76832696760062,9.16855052346364
1.05230312243559,1.93150047044681,6.20655971812084
6.21751928698223,0.150500357168147,9.49014480458573
3.78610936012266,9.85040921102727,1.79473456460983
9.60649794414076,6.94426764891743,6.41646301373839
2.87827870141682,9.52750469145406,9.15629823459312
9.76028474404372,6.52960424804086,6.7956636310555
9.87534546053863,3.89049261363191,5.04896315280348
0.0694697057005307,5.83058474401785,6.69082100503147
8.82926641744952,1.78492321954929,3.08234069263563
0.845023136006945,7.78139663832443,8.43683670507744
0.016456919826922,5.4053373509301,8.67310285801068
4.86529529675359,0.00181486508119644,5.1640859246254
4.09412095513166,9.91725361925419,5.92254223302007
0.00838414782403252,5.28943252116096,5.42263799812645
0.0178606136099395,4.57775938781203,0.55065440479666
6.17884663172438,9.85904523737659,8.80351451458409
0.0150361264960361,5.38747281176923,1.02662118384615
6.82236424778894,0.343929924455535,0.623037782497704
1.71470574012454,1.23080358351686,2.38549605244771
9.58305239491907,6.99890738790635,5.27510567335412
9.71599232914936,6.66114910571097,7.29834318859503
6.54838749825494,0.245791742545577,9.16486918693408
5.11003450606912,9.99878909411811,0.18240817822516
6.7025172234739,0.29878365699102,2.72441705921665
8.38409744164324,8.68074510194114,1.83652173727751
8.44119969625645,8.6274156986048,2.89334535598755
5.41130006656171,0.0169454894365915,4.95241242926568
9.99839806690896,5.12655735743424,1.58623022958636
9.31303881281368,2.47063324146877,1.83140772860497
9.97362091466604,5.51292786743997,1.7711855773814
8.2988153185487,8.75736842671948,9.44953825557604
4.06546126785453,0.0881126480628724,3.17615486681461
9.96114535524651,5.62212278861649,7.87899327464402
0.0011078722302047,4.89475032104005,4.31469856528565
4.60345975649391,9.98425077973411,1.28046716097742
9.99961687967116,4.93810447102393,8.68892352329567
9.03554294886662,2.04798490724507,9.95024823583663
8.7429491272178,8.31516693864118,6.81781406514347
9.83169419770674,6.28636354886439,7.83420689869672
0.200214641514924,3.59926429599575,8.23520988924429
1.43669505035426,1.49245700869823,7.75759101845324
0.915350840145051,2.11631464252837,7.58571529295295
0.186175256047624,3.64830057538229,5.35677018808201
4.76929718950738,9.99467478553217,3.9169091056101
9.96643658926347,4.42163367592413,0.540897287428379
8.93635051970137,8.08304145058848,7.34755479265004
9.44053860769713,2.70182314136809,0.313386302441359
9.95779008930344,5.64831892645869,7.83697160426527
3.51569422375172,0.225396732439859,7.96462544705719
1.47869602251653,1.45029320955109,5.66345289582387
0.380551690833607,3.0867051144845,7.90581358363852
9.99819643827878,5.13428463939453,2.23552356939763
2.76449059214744,0.527584803777416,2.68832035595551
5.73145541633151,0.0537920611928069,0.257770600728691
9.50163487782857,2.82392936081631,8.87621809961274
6.59493400676524,0.261204212665017,8.63767869537696
9.12041618367591,2.16765636383901,6.41633699648082
6.78748092938431,9.66957299194342,2.52336235018447
9.98390097273247,5.40091282593151,4.60909839021042
7.10976163342921,0.466909900508252,7.93389781145379
8.59416406063008,8.47591494505764,7.51317153917626
3.48861600992168,0.233899032276495,4.83257923740894
3.43398434355497,0.25156921038444,5.60504770837724
3.95893266265484,0.109582962659211,6.8331754556857
0.0339784843754085,5.58191950160966,3.78945562290028
3.65964270106071,0.183004846257351,7.75675956625491
5.86253446261432,0.0749584467943194,9.36295783845708
0.153413258814298,6.22906344838782,5.56927622994408
8.51490261616401,1.44395449988567,9.91321716923267
8.22225126834924,1.17676880588922,5.80611820332706
0.00051130347827133,4.92849634029316,2.10909283952788
6.97201981746402,9.59468582598737,4.06207467662171
6.01042399850371e-07,4.99754838346427,2.39015682134777
8.47744759981314,8.59268119801268,0.857308986596763
4.00714277196487,9.90043207531115,4.51878539286554
6.79260203907294,9.66760944483486,2.86496453918517
4.81973277722636,0.00325068385520488,5.91482213931158
1.87876791099432,1.09386249005987,4.42236144095659
2.33936984805355,9.23332578412687,0.881540116388351
7.00149302532964,0.41807620430492,1.51210515294224
5.70519236019427,9.95002057926264,2.99622032558545
4.1361107617674,0.0751959039911148,8.80903256591409
8.67861417431949,8.38641370132117,3.63712762948126
2.90312859333565,0.460932881757151,5.92682712711394


================================================
FILE: data/point_clouds/octahedron.txt
================================================
0,0,1
0,0,-1
0,1,0
0,-1,0
1,0,0
-1,0,0


================================================
FILE: data/point_clouds/sphere_rnd.txt
================================================
0.0773054454995878,0.836334266051908,0.542741986143994
-0.374781006964731,-0.880579478663034,0.29003271983699
0.50978558146903,0.424200162233223,-0.748446980946273
-0.0528428774695098,-0.615719249834132,-0.786191729595546
-0.367308929628173,0.000389375987204433,0.930098918718728
0.652516428941516,-0.668637302231417,0.356576034004116
0.0149030302359853,0.0112939871690741,0.999825157486853
0.823022164605666,0.0710393566695145,-0.563549400116604
0.684126185054392,0.068103436067191,-0.72617717185186
-0.324481141146087,0.231780181172957,-0.917055034693101
-0.338509732916114,-0.214630629991015,-0.91615765749718
-0.00118381141382112,0.00937485776903048,-0.999955354319555
0.729104853184126,0.158523576536518,0.665790048547907
0.0211118341898496,0.718788101134769,0.694908595517579
-0.30806472626895,0.560002818706148,-0.769085799810402
-0.644943375782511,0.164810327877268,-0.74624767862905
-0.623589297300199,0.541391018195545,0.563943395838479
0.525375237353793,-0.100072884209631,0.84496525243433
0.60862244684568,-0.422637064685626,-0.671533043676554
-0.244930120010996,0.476438302197522,0.844402617541266
-0.72106356958232,-0.627730047134878,-0.293295612898058
-0.650652226042903,-0.294085077275247,0.700118310051542
-0.0248561877734911,0.26785334061156,-0.963139012735232
0.000718413489679035,-0.0289201833466252,-0.999581465853212
0.327261372609863,-0.930358921992411,-0.16532474184655
0.180570006689022,0.161564083033019,0.97020179331829
-0.762804638158049,0.188161799664615,-0.618647089342172
-0.0575350601444459,0.983868191621906,-0.169390372715851
0.599956158420826,-0.740027845873894,0.303992426392777
0.929425944398791,-0.368029182124441,-0.0268688478210385
-0.877107159051745,0.184651699664105,-0.443381079153513
0.854404307607442,-0.481021094629829,0.196499327385539
-0.56695042330303,-0.33707461551726,0.751630175744964
-0.126349401535378,0.0465854522909329,0.990891328232567
-0.183201230257471,0.548734530428078,0.815676237454559
-0.85144959293011,-0.110768878194278,-0.512604961274013
0.604081636514428,-0.403803804660679,-0.687042839834322
0.741799527896245,-0.649536789300367,-0.166839502990987
-0.839102405226826,0.369063236864269,-0.399624174366146
-0.329801539160309,-0.125969756216375,0.935608125919329
0.960358583097858,0.273000370356808,0.0564109001463399
0.24588518939368,0.385730790257908,0.889242504092019
0.0422772999912147,-0.382918179658079,0.922814335385399
-0.456825376110263,-0.0973021756562058,-0.884218786474414
-0.0917685997699636,-0.172338746935993,0.980753730760578
0.72403813246436,-0.0978825971963726,0.682779451875651
0.0269048253674394,0.92218857263681,-0.385803534029991
0.0787372103661066,0.111486104098655,-0.99064186278224
-0.845451465373086,0.520019711402262,0.121619568538988
0.728711360020418,-0.322857421891818,-0.60393943314422
-0.423290015741426,0.857785834188432,0.291597368368232
-0.261237798855839,0.0765516436102646,0.962234201382139
-0.907077266383511,0.409815115020244,-0.0962413856465126
0.374857363549564,-0.751777127553699,0.542506320221046
0.165385020869652,-0.838324906268616,0.519479688151193
0.758834971668538,-0.348479265852135,-0.550210584271119
-0.44497758480629,0.286706273607222,-0.848407014170806
0.913475119800637,0.0655559625862071,-0.401578910395712
0.259046495244195,0.424829785070677,0.867418334495243
0.997523240628835,0.0701016772023688,0.0057566708054242
-0.0093922330874305,0.742840239365826,-0.669402841894591
0.104895318893012,-0.413440110401736,0.904469041584804
0.637869559781783,0.359218103525119,0.681237681579352
-0.178064968133249,0.0405526164071191,-0.98318276654254
0.25249809948801,0.0611888988587843,0.965660721170429
0.0645721288707562,0.0178824894761964,-0.997752803425394
-0.875510432589323,0.237776222180498,-0.420647061790318
0.209535100840485,0.156719049083866,0.96516018420261
-0.0923660199487699,0.546070586682739,0.832631630866131
0.740281617880264,-0.637935872072206,-0.212181406706742
-0.51335002404794,-0.839944420803601,-0.175969096067698
-0.0167661356795372,-0.101565436372541,-0.994687568449928
-0.899709919293064,-0.382048812135736,0.211094211837612
0.00809383456803171,-0.296167923331757,-0.955101591994977
0.323823198840434,0.131913959808919,0.936876322200684
0.0859534183395871,-0.034309211997662,0.995708234297497
0.904457784893985,-0.0024685259488967,0.426556000689599
0.912338424948354,-0.296801985506795,0.282041095874307
0.556959569941936,0.0482825152569048,0.829134992730713
0.960806432034758,-0.27634353230344,0.0220284433107471
0.268776098747987,-0.665876601711771,0.695965343989624
-0.123750210078179,0.985388100135887,-0.117030669553731
-0.375935062819358,0.853344800562228,-0.361213897706631
0.76408305665407,0.461093653193351,0.451187018340491
-0.489899172384632,-0.712327795439265,-0.502581249890492
0.304130846139273,-0.927911729538335,-0.215602065416325
0.189324928446894,0.670239682863866,0.717589603452505
-0.429665430548303,0.808688284073863,0.401759725449693
-0.928046177378992,0.0755724835749542,0.364717825693446
0.0812822685108709,-0.333925075062947,-0.93908851396976
0.568557363276401,-0.464700859979105,-0.67881929509912
0.0258286084462135,0.0744231655904743,-0.996892208520673
-0.560530115801812,-0.768600450596889,-0.308316941833346
0.0268255219719648,0.0308043978051151,-0.999165391938089
0.456685496464383,-0.129315597500649,0.88017943259436
-0.299456560151077,0.872506442136801,0.386080661277234
-0.616090413457421,0.556277618127233,-0.557662813908688
-0.734542245897416,-0.27950972021229,-0.618321926910915
0.0261293431973975,0.0506935037862847,-0.998372388489356
0.360093378080232,0.213290900907335,0.908206887582837
-0.489724227916716,-0.43590880870435,-0.755085221074635
-0.0411238511746045,0.760872833793025,0.647596602570104
0.672180804506389,0.720489767871045,0.170491819294272
0.705145063448448,0.0649966525983608,-0.706077810616714
0.114842362167261,0.0272273430580039,-0.993010525443636
-0.794917418826794,0.606609639705738,0.0114473692096881
-0.729469920569626,-0.364092553151464,0.579059796328317
-0.133377571158276,0.053057692284941,-0.989644029336466
0.588039595939279,0.252658035466094,-0.768357566971253
0.410370449689182,0.831699934440869,-0.373993734002259
0.858227562854035,-0.326346690125003,-0.396160684826344
0.0637498626295064,-0.558954260472549,0.826744271050187
0.337428103793781,0.00545446142346483,0.941335500032116
0.121127049501086,-0.816445181320226,-0.564575507596764
0.276733401469516,0.309348999768436,0.909792185531059
0.211981526146488,0.0450425590189518,0.976235115353689
0.824176750775385,-0.505049071827148,-0.256238401743112
0.594505003726877,0.790985015573261,-0.144590821569954
-0.722340155372445,0.686039535464281,-0.0870313490442687
0.0947244160312465,0.387562881941893,-0.916963629348751
-0.0115357160144928,0.0242785918222118,0.999638673339104
0.984677062708126,-0.173208112180659,-0.0202492481664996
-0.833031477012519,0.547147640160647,-0.0817803043096287
-0.187527155304188,0.980938689082309,0.0509200774253142
0.455901909993559,-0.209976195940247,-0.864906610913969
-0.36157730019341,0.909067168606555,-0.207023522688865
0.719868757480189,0.671224838073219,-0.1767659151463
-0.347736389057685,0.129493849146236,0.928606884940239
-0.0187493710151655,-0.0350775051281273,0.999208701783827
0.493705931956134,0.0722788097753222,-0.866620001158979
0.66269554206557,0.399607400509584,-0.633362884912269
0.726722523527084,0.442345070489977,-0.525552292747014
-0.204758276914423,0.57927712222022,0.788994336929801
0.00689261327542409,0.126579963082989,0.991932459811728
-0.356726368706308,-0.827180438448998,0.434187540259892
-0.47359266295775,-0.28482709074729,0.833416773270746
-0.521214825022451,0.685391036010302,0.508501950766701
-0.275855843401269,-0.0631930114627542,0.959119490451342
0.09398986677579,0.119564015843863,0.988367518213118
0.466346836168125,0.370962215725855,0.803061431585246
0.0623189234324981,-0.641370973136701,0.764695773886515
0.0172692025366454,-0.0225997322201761,-0.999595431535841
-0.386933061653629,0.623545150392436,0.67931896132923
-0.163137075059956,0.566970664668863,0.807422169714103
0.0993292176042032,-0.644534864831166,-0.758095320225107
0.286665593978943,0.120044482544749,-0.950479962671104
0.0707596335626779,0.13411262820202,0.988436582292876
-0.463827375613848,0.885831714476767,-0.012897257783015
0.852829222228861,0.311921866898828,-0.41879239088463
-0.859500133373641,-0.251585593716346,0.444931691122454
-0.965394515080914,0.24812164325619,-0.0803061666345376
0.151857805775526,0.630726138963868,0.761001803186283
0.73582574350235,-0.258595602508218,0.62585045303381
-0.0198348660853234,0.0545180036677111,0.998315764356882
0.28461083581548,-0.153264079557224,0.946312207494911
-0.581675520525213,-0.73439685910559,-0.349735388769232
-0.991445037847008,0.0299177290721477,-0.127049857991695
-0.0492695614178428,-0.679885526000934,-0.731661248018594
0.444640211649834,-0.0784567456025451,-0.892266564011814
0.0127324000254656,-0.0173965272959882,-0.999767596408101
-0.0171984195057919,-0.384731945410837,0.922868107882646
-0.156676767551138,-0.814928782479156,-0.557981603636506
-0.399694839057765,0.888201338748911,-0.226588652573842
0.0406560169703534,0.247690687788596,0.967985749619755
-0.108993364569416,0.122635126853424,-0.986448717441248
0.565993057030192,0.101426480232535,-0.818147009101211
-0.489285054208162,-0.835365744407816,-0.250527860323942
0.133417312387217,0.000166388475130276,0.99105993414639
0.0137288164076101,0.2270000275996,0.973797980625256
0.0963708742778746,0.403648151820948,0.909824611737037
0.165049694853754,-0.0736080456290133,0.983534673434221
0.267448700115878,0.769884765003406,-0.579438211910448
0.284337195687501,-0.839133932395426,0.46368804454197
-0.428582501162862,0.168981757375846,-0.887559691159505
0.909817978299262,-0.256972045206276,0.325878220115963
-0.492082441172851,0.314163347681507,-0.811884389591841
0.422939528190122,-0.0717565420247207,-0.903312323712552
0.196288814413039,0.973547107241556,-0.116947557981867
0.705618932943305,-0.0345885370958603,-0.7077468153044
0.697653813407257,-0.102701598651704,-0.709035639635059
0.16149199568471,0.300177934157391,-0.940113579933175
0.000653363814039677,-0.00437947432374878,-0.999990196612134
-0.0553386082981052,0.349974439503299,-0.935123270016301
0.316035545319811,0.268485093417435,0.909965542593257
0.0357714998129129,0.0165234330034925,-0.999223386417128
0.0297740276570812,0.0455151261820939,-0.998519844853222
0.224210497763138,0.585639747188857,0.778945273562513
0.553555317897683,-0.554569900826654,-0.621312107659516
0.347883758003143,0.0137055723317884,0.937437490291843
0.0580957172665848,0.107042235956098,0.992555714988736
-0.215173190949024,-0.808064260224208,-0.548390963861658
0.154407026347864,0.68717174951883,0.709896793116887
-0.13255934473603,-0.989894844149766,0.0503608741868646
-0.480709384674798,-0.503120848312002,0.71818375049801
-0.322505544411402,0.42520902950717,-0.845687563494625
0.643078379214888,-0.157058729690832,0.749521683218208
-0.164434109235155,0.259522634237396,0.951635132831131
-0.142049555354451,0.826970572200564,-0.544005143852403
0.262737193627013,-0.171903692465716,-0.949430506989139
-0.454668385266488,-0.792797548798993,-0.40589248090778


================================================
FILE: data/point_clouds/torus.txt
================================================
-0.714320398612351,-1.90692591611384,-0.267078203651368
0.880281797557814,3.78434362937461,-0.464874124438126
1.04102781021494,1.86999004591599,0.510688226707155
-3.24849890512506,-1.29990313390197,0.866643756410793
1.20992268630091,-1.954033976581,-0.712467990069739
3.85471276354862,-0.858165157455817,0.31502559578928
-2.67730603769453,1.10180477038619,-0.994488919152426
2.67286217475414,2.93308084520864,0.249911934206736
-2.01475714569943,0.394298758383513,0.321168120775367
-1.08819618488046,-2.61058272892002,0.985150276181151
-3.33083144897963,0.00459587748771458,0.943688748702064
-3.15990590148776,0.754342600836267,-0.968581102947494
2.92673516232045,0.0152003315773583,0.997315419428396
1.27616426228537,1.65219842213103,-0.409449735620048
3.45502673855084,1.7700666717259,0.47114771228712
1.86236975240961,0.867113512748675,0.325152963864206
-1.97122483344051,1.32473119871762,-0.780627293773532
1.18824629054217,1.61374920710909,0.0896302160825027
-0.264002411550957,2.30415430226382,0.732496544879508
3.42808039501758,-0.187293979213987,-0.9013011804742
1.96153469538247,2.66867799232569,0.950076321565843
-0.680797403710056,-3.60113300125575,-0.746913927757322
-3.62703428193388,-1.1491813820858,0.59363650991433
-3.94012908379452,0.383180113413902,0.284360276666664
-2.46614583531858,1.61141049408438,0.998537289999598
-0.792090973889088,-2.99832297158664,-0.994867621545582
-3.26366255097835,-1.64421088315301,-0.756115007819308
-1.99935002274715,3.44366126967676,0.188959592802154
-2.3962546726188,0.363604578397617,0.817227027241778
-3.45305318598172,-1.21952747352425,0.749433935645939
-2.36494872141656,0.412230046099487,-0.800455217507419
1.87165737305526,-1.32032323914616,-0.704697638834131
3.25531101005859,0.18860434515836,0.965400940979923
-2.53991912233213,3.08465429722359,0.0917406231940381
-1.38625133386808,-1.45917902118853,0.158766398101815
2.86361966032945,-0.208849156649635,-0.991673894374812
0.358034695792271,3.04143737536772,-0.998048807314788
-1.50896152735125,-1.36567139912116,0.262970492698508
-1.87247964584181,1.26186486518363,-0.670380018907
3.39007730529755,-2.0715802862839,0.231154983343338
-1.91159762453643,1.45295955543435,0.800826270447936
3.49599228865333,-1.40833934677047,0.639245458740745
1.39565396553202,-3.1002518260968,-0.916552913467507
0.0407307687801072,-2.07693908085762,-0.385610713125368
2.06514644404813,2.39210100571433,-0.987081673688259
-2.42108335739267,-0.844729060326557,0.900052045343072
2.89533739724166,2.7483572966331,-0.125860854439473
1.34495023606444,-2.85844551970074,0.987270400928544
-1.54295806449251,-1.48501221868802,-0.512797391312907
3.51106593510202,-0.811834738080467,-0.797210958785934
1.74862922359101,1.54515559110973,-0.745502676291502
-3.80048462218566,-1.16476608090907,-0.222349203914141
-2.73035117221928,-0.376914406922954,-0.969836636477701
-1.60503665801494,-1.54737186357483,0.637394481994473
2.78859471401276,0.31843579386906,0.981143101841957
-1.24219387776124,-3.15464688253358,0.920643436280065
-1.58460888857816,1.50006761073291,-0.575239128363173
1.39404548258418,2.7093363442083,-0.998897534314805
-2.24467362137241,-1.98850123835174,0.999999258919497
0.881128171823169,-3.49560189594454,-0.796268205063082
1.22114919384482,-2.27973558030131,-0.910365111710077
-0.172734833492129,-2.84148637291075,0.988184633074685
-0.674693389446431,-2.79690278184223,-0.992422759399541
3.61306244787288,1.020354967382,-0.656441751536718
2.54267998344273,1.43675190698195,-0.99683701321487
-3.0732696571858,2.51846814911985,0.229240215837385
0.704956003592614,-2.59748523688157,-0.951207487687372
2.90257970882872,-0.825283090354516,-0.999844666149284
1.61457282423149,-2.72311540890554,0.986161701121139
-0.783180108092612,1.84288427675276,-0.0691964707506992
2.37235608137066,-1.10773579645894,-0.924259224397928
1.53495324755595,-2.47366866015383,0.996049976944091
3.07643280241098,2.0500786112494,-0.717143145962894
2.76076016588706,-1.60199953998713,0.981415292623509
0.344978867858927,3.42946941385406,0.894645414112342
-0.604362662079682,2.184188849032,0.679430541731333
2.09177633913309,-1.52508794465896,0.911504721915111
-2.02927909771946,1.33963193673831,-0.822739403632273
-1.98567527200199,1.27545021592236,0.768388944203625
1.87343061856586,1.77566488380986,-0.908090525043219
-1.92861390568702,0.722788606043347,0.340085655584743
0.845911258179781,-3.90650540470946,-0.0768495760629745
-1.85066140524136,2.11269687601331,0.98151912288529
1.91101044451922,1.91882647050695,0.956451679481434
-2.02431231266686,-0.989625614258562,-0.665120685211147
0.510012371186223,3.95242674540308,0.171429838134267
1.8114187550926,0.89339560989046,-0.197766693542283
-1.9903122826019,-0.329778818747259,-0.185988894025097
-0.976365214738251,-2.74562180892795,-0.996300054855345
-0.238561516135115,2.53182856194817,0.889488762034343
-1.60815952744041,1.24536032918154,0.258490088989698
1.72130442385166,-1.5109894843131,-0.704614849085318
-0.678960686465728,-3.43048125798604,0.867735776833309
1.77223868898645,2.73506955582841,0.965862738005154
-0.898693150047734,-3.62395764806304,0.679444238213082
-1.97562680300527,-0.375053417846205,0.147324688728172
-3.80272108859137,-0.932323709155714,0.402673777440839
1.49586134650516,1.33089960863945,-0.066633766729041
-2.20194852434455,0.5207535003085,0.675553469148375
2.12913285906629,-1.65777681886152,-0.953438544032544
-2.95372541937467,-1.78536538861461,0.892331865640778
-1.36993262703229,-3.04461525213824,-0.940922463630955
2.6119067431494,-3.02693591114326,-0.0624314398026808
1.27536768308289,1.5618365787268,-0.180400499284649
-3.21422483499413,1.40840843620268,0.860616946048814
-1.57586782065372,1.25869517837285,-0.182786005983407
3.92765587106748,-0.74716576131132,-0.0617490058091814
3.1386913387238,1.55735573782153,0.86380986050381
2.17317917185308,-2.85978694062725,-0.806078516287854
1.60868111568867,-3.62371726599287,0.263196188528958
-2.26173830408535,1.12557694011027,0.880706701256264
2.70974355237617,-1.88326253488702,-0.95396836325622
3.77159848686435,1.33181491950522,0.0181231422761683
2.15217194080115,2.94781944210051,0.760053287593567
0.907886028757331,1.80097339748782,-0.182905014451699
-2.98596497631699,2.48098938616024,-0.470918720977207
3.3653456048496,-1.21623621703938,0.815769640912101
2.92027296311028,-1.43882152392057,-0.966812249566666
-1.80455339673991,-1.81342659069716,-0.897165704829048
3.81184732768971,-0.234803000248755,-0.57369044336767
-0.574516005623622,-3.51114713033319,-0.829948763798555
0.882669297981541,3.67292748275419,0.628883734651986
1.97057037626744,0.492326008475811,0.247611872237042
1.94041241687864,0.490681673049848,-0.0545993439733837
3.62815895805101,0.521520124423926,0.746442796827643
1.19141490156013,-3.64642918107281,-0.548526989053247
-2.27486722684705,0.0582627299010015,-0.689393767739755
-0.870975864260891,2.45711565553284,0.919502998113626
3.22048509527688,2.30660440520993,0.275481522609446
3.2480483989014,0.290545234873657,0.96533407725901
3.2077919780123,1.75565041782766,-0.754058688522266
-0.880654639478437,-1.79676204768549,-0.0441791246983483
3.98343925985975,-0.347798067631448,-0.0530147017109721
2.28738776588423,-0.416904291575919,0.737882052400129
2.21307914464716,1.34559469817523,-0.912106728949382
-3.22018854221282,-0.663834917791889,0.957660265491301
1.61654960255117,2.69819258778267,0.989374478420674
1.11691159407222,3.42625601198929,0.797204431267907
0.138982236996826,-2.71750967153386,-0.960308924364697
-0.15281203903204,-2.05034787381869,0.330044180870546
-2.5880488784223,2.7396968831178,-0.639476126769505
-0.994773995117528,1.94499075218273,-0.578926052809871
1.00091490386897,2.11833450719408,-0.753801801091053
-1.979942235672,-0.416815669394681,0.214793190821556
-1.51995641074011,-1.93921204579373,-0.844155466799302
-1.56643929258676,1.90806727465411,0.847180334382917
3.94524842347091,-0.641029659771889,-0.0775703161356899
-2.05045765971493,0.296409467723431,-0.372009372222866
1.91973163138648,0.713565160509433,0.306280782318074
3.34342688871568,-2.14009448410198,0.244303976844247
-2.8116837003415,0.114480657247195,0.982552268625157
2.03498377192774,1.44809881445098,-0.864651998213382
3.65744234206195,1.57484953246211,-0.188415823174873
3.34794527696835,1.2036157129037,0.83002379671184
1.51877358954659,-2.33374517023824,0.976487965904838
0.888647841517423,1.81225076047209,0.190960561650766
0.294158363243207,2.14404466483541,0.548926748034314
0.158785440356444,-2.05854941606409,0.3537612995639
-0.340162712092064,-1.97121929907986,-0.0266065760418155
-2.06663926075979,0.044441462735491,-0.360179666649703
-1.23803617999514,1.79412301024198,0.572104151036735
-1.98916538940685,-0.351371167218055,-0.198803134160616
2.74028022503697,0.53527221297064,0.97814360104035
1.83806377891691,1.04049584603987,0.460102138018499
-2.54939351674912,-0.118947069004261,0.894117153111335
2.30262642501755,-2.77329013841926,-0.796520245484253
2.15079516941331,-0.706472676833139,-0.676820027868247
3.15683362475018,0.140123465520194,0.987126421997771
-1.65163153688707,-1.48529537758651,0.627344877253573
-0.810886446118408,3.70446650449979,-0.610290976414269
2.64964602622044,2.32993073202612,0.849031289392961
-3.90463091308345,-0.620109375899632,-0.301186502510516
1.78674991016748,3.20441160034856,-0.743364449639186
-0.763871453153186,1.87154022972919,0.205894667876839
-3.42954834972779,0.177619781136491,0.900843089612039
-1.22126745102243,-1.61994203696612,0.237940968474628
-3.05134414038971,-1.53419267434623,-0.909672872314237
-1.73371866866574,1.12323389147044,0.356689597781806
0.716890930507223,1.95500332206228,-0.397272604771448
-0.673141082397904,2.08221869339899,0.584105284316401
-0.882406559420473,2.3890642425343,0.89141675256761
-1.19628528904322,3.65345390075763,-0.535833619789951
-1.46040623423508,3.43135965826631,-0.684288800753094
1.47681757717276,2.12533843664316,-0.911210890653397
3.27441962472972,-0.100070543522959,-0.961172447787327
1.41615956414078,-2.05072858485597,-0.861467280220919
1.80662271957664,1.12433686966506,0.489353084570643
2.99219785952063,-2.30571642472757,0.628871481171234
1.60387273506073,3.04596997093306,-0.896801858433794
2.54587923032708,1.87946967738563,-0.986381112455289
-2.26646292474878,2.4552508306654,-0.939909576284463
1.48620551792787,-1.37221867327829,-0.212401746771662
-0.378971598963202,2.00451240918219,0.280075174684415
2.62244661666601,3.01665327927031,-0.0750879915907508
-1.19247944703426,-3.11404331001422,0.942375378869094
-2.0083818072434,-0.416082178074434,0.315364744352137
-1.9004205664066,-1.13710765120878,-0.619034102311288
0.121489655611034,2.21525186304812,-0.624006377259046
2.07074228968162,-0.781655519445505,-0.617410935722934
1.86326783912881,0.839296946552966,0.291968195688999
-0.125159400819068,2.73971558078145,0.966297733376121
1.28616058229845,2.55241279913221,0.989888132003229
2.85186878413326,-1.97875748876273,0.882071996614857
-2.1840717588845,1.67894402150144,-0.969477080806596
0.526790969659728,-3.96375675082422,-0.0527207084811376
-0.752122926842743,2.46384783522958,-0.905703897001504
3.22707705441682,1.58776409576928,-0.802591492525115
-0.886521436850406,2.19182304782198,-0.771952585794445
-0.850916062216981,2.24608164609563,-0.80139309506497
1.9599600981033,-0.436349089360323,0.125806862104109
0.143432952029717,-1.99799607142996,-0.0791573576947982
-1.95984073562466,-3.47602466214732,-0.137843626105098
2.03981168644652,0.503487665115967,0.438012394519451
-2.65426974933155,0.0722691824937081,-0.938695795881477
-2.2414793646226,0.437827786913691,-0.697935637659006
1.24117163497356,3.69451598478674,-0.441158243776929
-2.11395941897502,0.602255627196146,-0.597425500224166
-3.88773153456955,0.22981059148896,0.447032203564223
-1.73315822471499,-1.00352061714323,-0.0737185553420282
1.46838349116033,-2.28633053252358,-0.959194171787188
2.98263745691891,-2.01383053038907,-0.800869699321626
2.89557478511477,-0.58843816515525,-0.99897619421275
1.06657734872892,1.91739722028324,0.592028267612026
1.9915612675626,-1.8601574569007,0.961490239582856
-1.39240243888057,-3.50180422099219,0.639877656780817
3.59628122174913,0.324476332737725,0.791715812804296
-3.53879553792849,1.01226995756173,0.732535550555928
0.575886735738642,-2.2855391862704,-0.765845854898395
-0.24271459661309,3.48538868139012,0.869558748072862
0.402059796109522,-2.89240232300575,0.996811926014314
0.452665298920687,2.04923631056222,0.433063406427209
-2.93926411681073,2.16504944962124,-0.759440271012922
1.66928570082294,-2.42900826023443,-0.998610555912656
0.873862888983233,1.91642894819756,0.448587745813449
-3.10137749594587,0.713264912114097,0.98323549981779
1.39158354130691,3.12284361399327,-0.908047229780306
2.96702894505444,-2.39144744484205,-0.585307845932848
-0.849996861066033,2.39441267781502,-0.888337192657974
2.5656897206668,-2.40327610338469,-0.856910153887797
3.98387009727179,0.290859271736434,0.104986084594907
1.94022583659458,-0.529937890748119,-0.149879427053502
-0.652002424931243,-3.0431564731331,-0.993683473922688
3.97450106976585,-0.363876801944451,-0.132945977053829
-2.40016481561417,-1.06771410337883,0.927806514179979
2.12400024740336,-0.213700641983631,-0.501295141883824
1.61720893587035,-2.26873685106966,0.976862573653806
1.43855171506103,2.04110176117294,0.864346817991303
-0.347882668065436,-2.30474664523809,-0.743130787018475
3.03312786606892,-0.43888978623968,-0.997903672375956
1.55318425845068,-1.73091353393152,-0.738371624615
-1.64487091538682,-1.15506232605014,-0.14048882675474
-0.295197600637849,3.41168159143174,0.90546129499725
0.613151449298925,-3.6726329741562,0.690361615394036
1.24303628788496,1.70949098456505,0.463007842379536
-1.92734113686103,0.603416911106011,0.19698245000706
-2.3635972695005,0.532921490707156,-0.816695794701051
-2.60056039616045,-1.11213812823468,0.98516421338084
-1.15746403096981,1.98465662841937,0.711700641427774
-2.29131806227349,0.394871478957436,-0.737903682266451
1.5753101943983,1.25510954642691,0.167778669397398
1.32848419125813,-3.45968781883132,-0.708228771967407
2.23656011798061,0.823448791024589,0.787222948011727
3.25831086262739,-0.528608201886878,-0.953652089420914
-0.839375316949776,2.88600509376057,-0.999984371107339
-1.98320474944697,3.14373320810026,-0.697063403648011
-1.70681623926324,3.39898208154652,-0.595359999973826
-1.67023185260635,-1.49754426235285,0.653741213483541
-1.11285997746734,-1.81494807405188,0.491221735824854
0.342337763515438,-2.50466022184833,0.881570375402595
-0.18049662538014,3.99515277811023,-0.039285684170402
0.178352130393365,-3.62462167902644,-0.777399636777745
-3.86927750198048,1.01254321652087,0.0293568137386468
-1.43895986930885,-3.07199770207164,0.919832544383111
0.218640143910198,2.99563209972733,0.999993518642863
1.08747055715401,-1.68793475994643,-0.125554975674212
-3.92374615907164,-0.621540172932211,0.232197589649773
2.46018516051129,3.05631223033271,0.383689461927854
2.39784947233894,1.66830700343181,0.996883959911963
1.6882260110855,-1.51799968340075,-0.683806924183867
-1.7152258021874,-1.30521463210046,-0.535337677026695
-3.02629399990599,-2.52056759770178,-0.345301960621233
-0.703555435283641,-3.93746419107644,-0.0186105043511363
-2.64334795948186,-0.35521342215911,0.942964955427318
2.49784698105039,-0.158945543782804,0.867692664790819
0.204866910748694,2.02331394263177,0.257265364312437
-0.36958886111734,1.9664040790799,0.0408585151438834
0.115684088576823,2.11508260996212,0.471705623095396
-0.731627650689339,3.88111999341168,0.313835532658015
-2.39027247160738,-3.17175288177496,0.236726350208319
2.66644145182402,-1.30303365352127,-0.999481282045336
-1.88627201520659,2.68352394121846,0.959958958133407
-1.08341676445684,-2.93146757937041,-0.992123061604357
1.98536493005221,-0.259697195800157,-0.0674572952138999
-2.17606181909418,-0.0588929951722134,-0.567836471771887
-1.44266085758462,1.83389553675679,0.745355752020073
2.00703121845621,1.1535987213864,-0.72849012497236
-0.714372468650034,1.92393404704374,-0.319100980978719
1.07056505676095,2.08758911502946,-0.756572264156863
-2.45996592433974,0.721536339862404,0.899752962678021
1.92728187981412,-0.914473029807523,0.498710596731235


================================================
FILE: doc_includes/overview.htm
================================================
<html>
<head>
<title>Plex in Java</title>
</head>
<body>




</body></html>


================================================
FILE: doc_includes/overview_plex3.htm
================================================
<html>
<head>
<title>Plex in Java</title>
</head>
<body>

<!--  
$Id: overview.htm,v 1.5 2008/09/25 02:30:23 hsexton Exp $
-->

<!-- TOC BODY START -->
<a href="#_1._">1. Introduction</a><br>
<a href="#_2._">2. Installing Plex in Matlab</a><br>
<a href="#_3._">3. Installing Plex in R</a><br>
<a href="#_4._">4. Running Plex standalone</a><br>
<a href="#_5._">5. Using Plex</a><br>
<a href="#_6._">6. Extending Plex</a><br>
<a href="#_7._">7. Plex Design considerations</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#_7.1_">7.1 Basic Data Types</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#_7.2_">7.2 Design Considerations</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#_7.3_">7.3 Design Choices</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#_7.4_">7.4 Algorithms</a><br>
<!-- TOC BODY END -->

<a name="_1._"></a>
<h1>1. Introduction</h1>

Plex is a set of library routines for computing persistent homology on
finite simplicial complexes generated from metric space data. The original
version of Plex was a collection of matlab scripts. The current version,
version 3, is a rewrite in Java improve performance and portability. It is
less than .5 M, is as portable as Java itself, includes a simple
self-contained GUI (provided by
adapting <a href="http://www.beanshell.org">Beanshell</a>), and can easily
be "installed" to work with Matlab.

<p>

It is important to note that this Java code was written using features from
Java 5.0 (also known as 1.5, I guess to confuse people), so you should have a
Java runtime that is of sufficiently recent vintage.  You can find out if there
is a Java launcher (or Java interpreter, if you prefer) readily available on a
Linux box by invoking <pre>% which java</pre> at the command shell. And if you
know where your Java launcher is, you can check on the version of Java that is
available from the command line by invoking

<pre>
% java -version
Java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_08-b03, mixed mode)
</pre>
You can check the Java VM being used by matlab by executing, in the matlab
command window,
<pre>
>> version -java

ans =

Java 1.5.0_04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
</pre>
Anything with a version number greater than <code>1.5</code> should be fine.

<p>

At the moment most people use the library in matlab, but we are working on
a port to the <a href="http://www.r-project.org">R environment</a>, and
that will be documented here when done. It is also possible to execute Plex
directly with the Java launcher (formerly known as the Java interpreter),
and we will explain how to do that below, too. 

<a name="_2._"></a>
<h1>2. Installing Plex in Matlab</h1>

<p>

To install Plex in matlab, you make sure that the <code>plex.jar</code> you
downloaded is in a convenient place, and then add it to the Java class path
in matlab. You should also <code>import</code> the package to save yourself some
typing. Specifically, suppose that the path to your home directory name is
<code>/my/path/mydir</code> (if your login is <code>bob</code>, then your
home directory path might be something like <code>/home/bob</code>). The
precise installation steps are to download <code>plex.jar</code> to the 
director <code>/my/path/mydir</code>, and add the following lines to your
matlab <code>startup.m</code> file: 
<pre>
javaaddpath('/my/path/mydir/plex.jar');
import edu.stanford.math.plex.*;
</pre>

<p>

<b>NOTE:</b> 
You may need to increase the maximum Java heap size at some point, and if you
do, you should create a file named <code>java.opts</code> and in your MATLAB
startup directory -- that is, the same directory that contains the
<code>startup.m</code> file. In this file, include a line specifying a value
for the <code>-Xmx</code> which sets the maximum heap size allowed for the Java
VM. (It doesn't force the heap to grow this large, it simply sets the limit on
how large the heap is allowed to grow.) For example, to increase the JVM memory
allocation limit to 128 megabytes, put the line
<pre>
-Xmx128m
</pre> 
in your <code>java.opts</code> file.

<p>

The matlab documentation discourages you from setting the the <code>-Xmx</code>
option to more than <code>66%</code> of the physical RAM on your machine, but
if the reason that you are running matlab is to run plex, then you should set
the max memory size as large as you need it to be. Using a <code>64-bit</code>
Java 1.5 VM, I can grow the heap to at least 5 gigabytes, and what I have in my
<code>java.opt</code> file in that case is <code>-Xmx16000m</code>, and on
a version 1.6 Java VM with <code>-d64</code>, the heap size can be huge;
for this VM I use the settings <code> -d64 -Xmx200000M -Xms4000M</code>,
since I have 16G of memory on my machine. Setting the max heap size to be
either absurdly large, or larger than it will actually grow on in practice,
means that I know that it if I run out of memory, it's because I really
can't get any more.

<p>

The, after restarting matlab, you should be able to do execute the following in
the matlab command window:
<pre>
>> Simplex.makePoint(1, 2)
 
ans =
 
<(2) 1>

</pre>

At that point, you are ready to use the code. Until we get a more formal system
in place, I will keep the latest stable version of <code>plex.jar</code> on my
home directory.

<p>

NOTE: At the moment I'm not sure
whether or not there is anything special that you need to do to get the Java VM
in matlab to use the JIT (Just In Time compiler) on the Plex code. Having the
bytecodes processed by the JIT will make a significant difference in the
performance of the routines.

<a name="_3._"></a>
<h1>3. Installing Plex in R</h1>

Not yet supported.

<a name="_4._"></a>
<h1>4. Running Plex standalone</h1>

Naturally you must have a Java VM (aka JVM) installed in order to run
it. However, since JVM's exist for most hardware platforms, and are commonly
used by web browsers, it is very unlikely that you don't have one installed
already. If you don't, though you can get the latest Sun release
<a href="http://java.sun.com/javase/downloads/index.jsp">here</a>.

<p>

We provide a simple "top-level-loop" for standalone use. You can execute
this by running <code>java -cp plex.jar JPlex</code> in a command window,
shell, etc. (Your Java VM installation will have to include the Swing classes, but this
is standard, so there should be no problem.) 
There are a number keyword arguments to <code>Java</code> that you may want to
employ, and if you are planning run larger examples you should read the
<a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/index.html#basic">documentation</a>
for the Java interpreter on <code>-Xmx</code>, <code>-Xms</code>,
<code>-d64</code> and <code>-Xbatch</code>. Again, recall that Plex only
works in <code>Java 5.0</code> or later.

<p>

You can put the <code>plex.jar</code> file anywhere, but making a copy in
your home directory or in some subdirectory thereof, seems prudent, and the
file is small enough that this should be no problem. At the same time, you
should make a subdirectory of your home directory named <code>plex</code>,
and create an empty file in your home directory named <code>.bshrc</code>.

<p>

The GUI window that comes up is a slightly modified version
of <a href="http://www.beanshell.org">Beanshell</a>. The most visible difference
between the Matlab and standalone interpreters is that Beanshell wraps "<>"
around the results that it prints, so that the number <code>187</code>
would print as <code><187></code> in standalone Plex.

<p>

When starting up, Beanshell loads the file <code>.bshrc</code> from your
home directory, if there is such a file. You can put various
initializations in that file, such as commands to change the default
actions for input logging, which is the only non-trivial change we made to
Beanshell. (The trivial changes, which the author, Pat Niemeyer, kindly
allowed us to make, were to put the Beanshell jar contents in with the plex
library, and to change some banners and menu options.)

<p>

The initial window contains a single "workspace", with an interpreter that you
can type to; the prompt is <code>plex></code>. If you wish Plex to record the
input you type to a given workspace, you can enable input logging for that
workspace by left-clicking the <b>File</b> menu for the workspace and selecting
<b>Enable logging</b>. You can also arrange for input logging to be on by
default by adding the line <code>setLogging(true);</code> to your
<code>.bshrc</code> file.

<p>

You can also turn logging on or off within a workspace by
typing <code>log(true);</code> or <code>log(false);</code> to the
window. The log files are, by default, written to the
subdirectory <code>plex</code> of your home directory, but you can change
that. However, logging will fail if you don't have a <code>plex</code>
subdirectory in your home directory and you left the defaults as is.  You
can arrange for input logging to go to a different directory,
say <code>/Users/myhome/whereIwantlogfiles</code> by default by adding the
line <code>setLogging("/Users/myhome/whereIwantlogfiles");</code> to
your <code>.bshrc</code> file. Resetting the default log directory doesn't
affect the default flag setting, so if you also want logging on by default,
you have to set that, too. Finally, you can change the path of a logfile
for a specific workspace by invoking the
command <code>log("/my/current/log");</code> in the workspace window. 

<p>

The default name of a logfile is the first unused name of the
form <code>log_xy.txt</code>, where <code>x</code> and <code>y</code> are
decimal digits. In other words, the first logfile that gets created
is <code>log_00.txt</code>. If you leave more than 100 logfiles in your log
directory, the names get created using a Java library routine for making
temporary files, and the names become more complicated, but still begin
with <code>log</code> and end with <code>.txt</code>.

<p>

Finally, you can determine the current status of input logging by selecting the
<b>Logging status</b> item in the <b>File</b> menu, or by by invoking the
command <code>log();</code> in the workspace window. In either case a message
is printed describing the status for both input logging in the current
workspace and the default values for all workspaces. (Specifically,
<code>log();</code> returns a status string, and since return values are
printed by default, this String gets printed, unless you disable printing of
return values. The <b>Logging status</b> menu item actually inserts the string
in the Workspace window, so this works even when return value printing is
disabled.)

<p>

<a name="_5._"></a>
<h1>5. Using Plex</h1>

Currently Plex supports building simplicial streams, which is the name given
to simplicial complexes sorted by filtration index and dimension. All such
streams are subclasses of the abstract class <code>SimplexStream</code>.  Plex
also provides a class called <code>Persistence</code> which has methods for
computing the persistence intervals for a <code>SimplexStream</code>. Because
the matlab command window doesn't allow the use of the Java <code>new</code>
operator, there are static methods in the <code>Plex</code> class for the
creation of most of the higher level Plex classes.  Here is a the result of a
toy session in matlab using the Plex code:

<pre>
>> p = Plex.Persistence()
 
p = 

edu.stanford.math.plex.Persistence@11eea7f0
 
>> tor = Plex.Torus(20, 2)
 
tor =
 
edu.stanford.math.plex.Torus@1ae2b9e5
 
>> rc = Plex.RipsStream(0.053096, 0.530956, 3, tor)
 
rc =
 
edu.stanford.math.plex.RipsStream@675ee9e3
 
>> rc.size()

ans =

       4000

>> res = Plex.FilterInfinite(p.computeIntervals(rc))
 
res =
 
BN{1, 2, 1}
</pre>

At least the results are correct, but more exposition here wouldn't hurt.


<a name="_6._"></a>
<h1>6. Extending Plex</h1>

The obvious way to extend Plex is to write some more Java code and add that
code to the classpath. You should look at the Matlab or Beanshell
documentation to see how to do this.  It can be done either at startup or
dynamically, and is quite easy in either case.

<p>

<a name="_7._"></a>
<h1>7. Plex Design considerations</h1>

Plex is a library designed to compute persistent homology over finite fields
for finite metric spaces. The code centers around a clever, but fairly obscure,
algorithm for computing what are called "persistence intervals". The algorithm
(in this section an unspecified "algorithm" means this particular one) is
intimately connected with the structure of finitely generated modules over a
principal ideal domain (aka PID) and something called Smith normal form for
matrices over PID's. The persistence algorithm (as it is called) is complex and
subtle enough that it couldn't be readily replaced, and since it is
surprisingly efficient both in space and time, it seems very unlikely to be
supplanted. (The algorithm and the associated mathematics is described in some
detail in: A. Zomorodian and G. Carlsson, "Computing persistent homology,"
<i>Discrete and Computational Geometry</i>, 33 (2), pp. 247-274.

<p>

Rather than repeat the information in the paper above, the contents of the
paper will be assumed, and the persistent algorithm will be presented as
described. That is, no attempt will be made here to prove that the algorithm
works, although we will give a few alternative descriptions of elements of the
algorithm to provide some intuition. While it might not be obvious that this is
the case, the computation of the persistent homology over a finite field is
equivalent to reducing the various boundary matrices to Smith normal form, and
in turn, because of the specific structure of the boundary matrices, it is
enough to use column operations on these matrices to reduce them to column
echelon form, provided we have properly ordered the rows and columns of the
matrix before starting -- specifically, to have the rows and columns of the
matrix be in increasing persistence order (e.g., to have all simplices of a
given degree appear in an order so that the filtration indices are
non-decreasing.

<p>
Another critical point in the matrix reduction, and one which allows for a very
efficient representation of the columns of the matrix, is that the polynomials
in the boundary matrix are, in fact, monomials, and the degree of the ij-th
entry is the difference between filtration_index(simplex(j)) and
filtration_index(simplex(i)), and this property is preserved by the row and
column operations used in reducing to Smith normal form (and hence by the
subset of operations used to reduce to column echelon form). This means that
columns in the matrix may be stored as an array of field elements, and in fact,
by an array of type <code>char</code> if we desired (as long as the base field
is <code>Zp</code> for some <code>p</code> smaller than <code>256</code>. The
last important "theoretical optimization" used in the algorithm is that it is
possible to ignore all of the rows in the boundary matrix of dimension
<code>d</code> that correspond to pivot columns in dimension
<code>d-1</code>. (This last point is <code>Lemma 4.2</code> in the paper
referred to above.
<p> 
It is critical in making a scalable version of this algorithm is the
realization that the boundary matrix is quite sparse, which means that we
certainly want to represent the columns of the boundary matrix from dimension
<code>d</code> to <code>d-1</code> as something other than an array whose
length is equal to number of simplices of dimension <code>d-1</code>.
<a name="_7.1_"></a>
<h2>7.1 Basic Data Types</h2>
The most basic of the data types is the <code>Simplex</code>. In Plex these are
a (smallish) subset of some set of points (aka <b>vertices</b>), and for
convenience we always take these points to be integers in the range from
<code>1</code> to <code>N</code>, inclusive (for <code>N</code> the cardinality
of the finite set -- for small finite metric spaces, the indices can range over
all the points, for larger sets, they range over a particular subset known as
<b>landmarks</b>.). In addition to being able to get the vertices for a
simplex, we must also be able to compute its boundary. This immediately leads
us to a basic design question: Do we want to have simplices be unique, or will
we allow multiple instances of Simplex with the same vertex set to be
equivalent? There is an additional attribute for simplices, which is the <b>
filtration index</b> or <code>findex</code>. Intuitively this index corresponds
to an index into an array of increasing "times of creation", but the only
essential point is that the <code>findex</code> of a simplex is at least as
large as the <code>findex</code> of each of its faces. There is an obvious
ordering on simplices, given by ordering first on the dimension, next on the
<code>findex</code>, and finally lexicographically on the indices. This
ordering is something that will be used fairly often, so it should be fast.
<p>
Another type we require in the <code>Chain</code>. As we mentioned above, all
of the column operations on the boundary matrices can be computed in terms of
simplicial chains, and the sparsity of the boundary matrix suggests that these
chains should be implemented as an association between simplices and
coefficients, rather than as an array where the <code>i</code>-th entry is the
coefficient of the <code>i</code>-th simplex (for some enumeration of
simplices). Since we expect to have lots of simplices and for most chains to
have comparatively few non-zero entries, having a pair of arrays of equal
length , one for coefficients and and one for simplices, seems to be about as
simple as is possible. If we arrange the entries in the chain so that the
simplex vector is sorted, then chain operations become linear in the size of
the chains, which is as fast as they can be.
<p>
The final basic data structure we call a <code>SimplexStream</code>. There is
some flexibility in the order in which the persistence algorithm needs to
process the elements of a given simplicial complex. Any ordering must process
all of the faces of a simplex before the simplex itself, and within a given
dimension, the order must be non-decreasing for <code>findex</code> values. The
order that we choose in our implementation is to sort simplices first by
<code>findex</code>, and then by dimension. (It might seem odd that a matrix
column reduction can process all of the dimensions at once, but the reason this
is possible is that ONLY column operations are done, no simplex is ever
processed until all of its faces have been processed, and the algorithm only
does reductions using columns of a given dimension. In other words, we could
sort the simplices lexicographically first by dimension and then by
<code>findex</code> and the algorithm would do the same calculations in an
equivalent order.)
<p>
Any instance of <code>SimplexStream</code> must return the simplices in some
order compatible with this requirement. For each of the general mechanisms I
came up with, I was able to prove that it was not possible to make a mechanism
to generate the simplices in a suitable order without generating at least all
of the elements of a given dimension. (The proofs were pretty simple, but I
don't recall any details, since once I failed a few times I just expunged the
entire idea.)  So any Plex implementation of <code>SimplexStream</code>
generates all of the simplices of the complex and stores them. There also turn
out to be other reasons why having all of the simplices present during the
persistence calculation is necessary, so there is probably no real benefit to
being able to generate them one at a time, even if it were possible.
<a name="_3._"></a>
<a name="_7.2_"></a>
<h2>7.2 Design Considerations</h2>
For the types of simplicial complexes that we study with Plex, the number of
simplices grows geometrically with <code>N</code>. Therefore, even for large
metric spaces, we can't construct simplicial complexes where the index set is
large. This offers one opportunity for compression -- restrict <code>N</code>
to a size that limits the number of bits required to represent it, and for
large metric spaces, use a "landmark array" of size <code>N</code> of indices
to make the smaller, contiguous "vertex indices" into points in the metric
space. 
<p>
The <code>boundary</code> operation on simplices is the first set in the basic
algorithm, and deciding how to handle this is probably the key design decision
for the implementation. The options are whether the boundary value is
<b>built-in</b> (or at least cached), or not. By built-in we mean that there is
a slot in the simplex that points to a chain or array of faces (or something
analogous). The advantage of this is that the boundary operation is fast, and
the disadvantage is that construction of simplices is more complicated, and the
simplices themselves are larger and more intertwined (the latter makes it much
more difficult for the garbage collector to reclaim storage, and the former
means that it is even more critical that this happen). The key question here
seems to be whether or not it is better to have a unique simplex for a given
vertex set (aka "interned" simplices), or whether simplices should be given "by
value" (that is, two distinct instances of Simplex are interchangeable if they
were created using the same vertex set). The best answer is matter of code
simplicity and performance. Since it will surely be simpler to use by-value
simplices, if it is much faster to construct the simplicial complex this way,
and this doesn't hurt the performance of the persistence algorithm, then we
should use them.
<p>
Affiliated issue are the matters of the <code>findex</code>, and what is called
in the paper the "mark" and entries in <code>T[]</code>. If simplices are
by-value, then having a slot holding the filtration index seems less
problematic, at least if complex (i.e., SimplexStream) construction is very
fast. The reason is that we can simply dispose of the entire stream and start
over again (the GC will have little trouble reclaiming the space --
accidentally holding on to a Simplex instance prevents reclaiming only a few
bytes).
<p>
Since <code>T[]</code> is indexed by the simplices, what this really implies is
a mapping between simplices and the chains that are their reduced columns in
the boundary matrix. If the simplices in the chain returned by the "remove
pivot rows" subroutine are actually the same instances as will be found in the
non-empty boundary chains after the removal of unmarked terms in subsequent
calls to removePivotRows(), then we can simply store the <code>T[]</code> chain
for the simplex in the simplex itself. This means that having interned
simplices, at least for the duration of the algorithm, can speed up access to
the chains in <code>T[]</code>. However, since not all simplices have
<code>T[]</code> entries, this can consume more space. For data sets that I've
looked at, which may be far from representative, it appears that having
<code>T[]</code> be separate from the simplices doesn't save large percentage
of the space.
<p> 
Finally, if the simplices are by-value, it seems impossible to avoid having
(for instance) a separate hashtable in which to store the values of marked
simplices, since there are no "details" about the faces of a simplex stored
with the simplex. If the simplices are interned, however, it seems most
efficient to have a flag in the object to indicate whether or not it is marked.
(If we have a separate <code>T[]</code>, the flag can be in the entries for
that.)
<p>
<a name="_7.3_"></a>
<h2>7.3 Design Choices</h2>
In the end the choice was made to have simplices be by-value. Since we aren't
interested in very large dimensional cases, we have specific implementations
for Simplex for dimensions <code>0-7</code>. (If we need still higher
dimensions implementing them in the same manner is trivial.) All concrete
implementations of Simplex pack integer values in one or more long integer
slots. At one time we used <code>16</code>-bit values, but we discovered enough
cases where we needed on the order of a million points, and most of the large
calculations use very low dimensional homology, so it seemed best and simplest
to increase the size of spaces to the limit of positive <code>int</code> in
Java, which is <code>16</code> bits. Since the values are stored in
increasing order, the patterns are unique, so equality testing, comparison, and
computing the dimension and vertex set are all very fast. (We make the base
class, <code>Simplex</code>, be abstract, and the all of the implementation
classes are <code>final</code> subclasses of this base class, which speeds up
method invocations on code written against instances of the base class.) The
base class includes slots for <code>findex</code> and the <code>T[]</code>
chain values (we'll explain below why this works). Because the dimensions are
small and have fixed limits, we also have open-coded versions of the
<code>boundary()</code> method, where this method returns an array
<code>[face0,face1,...]</code>, rather than the usual chain.
<p>
Also, the implementations that we provide for <code>SimplexStream</code> all
store the simplices in an array of stacks indexed by dimension and filtration
index, which means that the construction methods that are implemented take a
the maximum dimension argument, and must somehow determine a bound on the
possible values of <code>findex</code>. These choices allow things to scale
enough that constructing Rips stream objects with tens of millions of simplices
is quite fast (e.g, 36M simplices, took 13.17 seconds on my machine).
<a name="_7.4_"></a>
<h2>7.4 Algorithms</h2>
The reason that we can have simplices by by-value when being constructed, but
be unique during critical parts of the algorithm is that we use a specially
designed hashtable, an instance of <code>SimplexTable</code>, to store
simplices that are "marked" by the algorithm. The average number of probes to
insert or find a simplex is less than <code>1.5</code> (reprobes just go to the
next index in the array), and the hashing algorithm only uses the values of the
<code>long</code> slots that encode the vertices, so this step is quite
fast. Since we store a simplex in the table to mark it, and we have check every
entry in the <code>boundary()</code> array and delete those that are unmarked,
what we actually do is this:

<code> 
    Simplex[] b = sigma.boundary();

    if (b == null)
      return null;

    for (int i = 0; i < b.length; i++)
      // If the entry isn't marked, we clear it, and if the entry is
      // marked, we replace it with the Simplex that came from the
      // stream, which has the findex properly set. This means that
      // we don't have to recompute or find the filtration indices
      // for the faces, and all of the simplices created by the
      // boundary() method die immediately.
      b[i] = marked.get(b[i]);

    Chain d = Chain.fromBoundaryChain.fromBoundary(b,p);
</code>

<p>
As the comment points out, we get to have our cake and eat it, too.  The step
of running the simplices through the <code>marked</code> table allows them to
be interned for purposes of the algorithm, so we automatically get to retain
any state that was stored in them earlier, and can use the simplices as
repositories for any per-simplex state needed by the algorithm. Notice also
that all of the new objects allocated during the <code>removePivotRows()</code>
call are dead almost immediately, which allows for very efficient reclamation
of that memory. In fact, the only objects that don't survive the call to
<code>removePivotRows()</code> are the chains that "get stored in
<code>T[]</code>", and which live for the duration of the algorithm.
<p>


<!--  
 LocalWords:  Plex Plex plex hsexton PID PID's Zomorodian Carlsson simplices xy
 LocalWords:  ij th Zp  vertices SimplexStream simplicial GC removePivotRows
 LocalWords:  hashtable SimplexTable nbsp runtime login startup Makefile findex
 LocalWords:  HotSpot VM plex matlab cp hsexton Javaaddpath makePoint JIT JVM
 LocalWords:  bytecodes JVM's args classpath Xmx Xbatch TmpStream SortedSet CVS
 LocalWords:  PersistenceInterval ComputeIntervals assertEquals javaaddpath src
 LocalWords:  Plex LocalWords java cdt PLEXHOME JUnit edu stanford javadoc rc
 LocalWords:  phom computeIntervals simplicial Microsystems mydir SimplexStream
 LocalWords:  BN Makefiles subdirectory rJava Beanshell Xms JPlex bshrc myhome
 LocalWords:   setLogging whereIwantlogfiles logfile txt logfiles Niemeyer
 LocalWords:   workspaces
 LocalWords:  
 LocalWords:  
 LocalWords:  
 LocalWords:  
-->

</body></html>


================================================
FILE: doc_includes/update_mime_types.sh
================================================
#!/bin/sh

svn propset svn:mime-type text/html -R *.html
svn propset svn:mime-type text/html -R */*.html
svn propset svn:mime-type text/html -R */*/*.html
svn propset svn:mime-type text/html -R */*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*/*/*/*/*.html
svn propset svn:mime-type text/html -R */*/*/*/*/*/*/*/*/*/*.html



================================================
FILE: reports/javaplex_tutorial/cleanup.sh
================================================
#!/bin/bash

rm javaplex_tutorial.aux
rm javaplex_tutorial.blg
rm javaplex_tutorial.log
rm javaplex_tutorial.out
rm javaplex_tutorial.bbl
rm javaplex_tutorial.toc
rm javaplex_tutorial.pdf


================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.aux
================================================
\relax 
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax 
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\citation{Javaplex}
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Introduction}}{2}{section.1}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.1}{Javaplex}}{2}{subsection.1.1}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.2}{License}}{2}{subsection.1.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.3}{Installation for Matlab}}{2}{subsection.1.3}}
\citation{Armstrong}
\citation{ComputationalTopology}
\citation{TopologicalPersistence}
\citation{Hatcher}
\citation{ComputingPersistent}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{1.4}{Accompanying files}}{3}{subsection.1.4}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{2}{Math review}}{3}{section.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{2.1}{Simplicial complexes}}{3}{subsection.2.1}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{2.2}{Homology}}{3}{subsection.2.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{2.3}{Filtered simplicial complexes}}{3}{subsection.2.3}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{2.4}{Persistent homology}}{3}{subsection.2.4}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{3}{Explicit simplex streams}}{4}{section.3}}
\newlabel{S:explicitStream}{{3}{4}{Explicit simplex streams}{section.3}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{3.1}{Computing homology}}{4}{subsection.3.1}}
\citation{Hatcher}
\newlabel{S:computingPersistentHomology}{{3.2}{6}{Computing persistent homology}{subsection.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{3.2}{Computing persistent homology}}{6}{subsection.3.2}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{4}{Point cloud data}}{10}{section.4}}
\newlabel{SS:euclidean-metric}{{4.1}{10}{Euclidean metric spaces}{subsection.4.1}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{4.1}{Euclidean metric spaces}}{10}{subsection.4.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The house point cloud}}{10}{figure.1}}
\newlabel{fig:housePointCloud}{{1}{10}{The house point cloud}{figure.1}{}}
\newlabel{SS:explicit-metric}{{4.2}{11}{Explicit metric spaces}{subsection.4.2}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{4.2}{Explicit metric spaces}}{11}{subsection.4.2}}
\newlabel{Ex:flatTorus}{{5}{12}{}{exercise.5}{}}
\newlabel{Ex:flatKlein}{{6}{12}{}{exercise.6}{}}
\newlabel{Ex:quotProjPlane}{{7}{12}{}{exercise.7}{}}
\citation{WitnessComplexes}
\@writefile{toc}{\contentsline {section}{\tocsection {}{5}{Streams from point cloud data}}{13}{section.5}}
\newlabel{S:sfpc}{{5}{13}{Streams from point cloud data}{section.5}{}}
\newlabel{SS:VietorisRips}{{5.1}{13}{Vietoris--Rips streams}{subsection.5.1}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.1}{Vietoris--Rips streams}}{13}{subsection.5.1}}
\citation{Range}
\citation{KleinBottle}
\newlabel{SS:landmarks}{{5.2}{17}{Landmark selection}{subsection.5.2}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.2}{Landmark selection}}{17}{subsection.5.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.3}{Witness streams}}{19}{subsection.5.3}}
\newlabel{Ex:witnessHouse}{{17}{20}{}{exercise.17}{}}
\citation{WitnessComplexes}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.4}{Lazy witness streams}}{21}{subsection.5.4}}
\citation{Range}
\citation{Mumford}
\citation{Range}
\citation{Range}
\newlabel{Ex:flatTorusLazy}{{21}{23}{}{exercise.21}{}}
\newlabel{Ex:flatKleinLazy}{{22}{23}{}{exercise.22}{}}
\newlabel{Ex:quotProjPlaneLazy}{{23}{23}{}{exercise.23}{}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{6}{Examples with real data}}{23}{section.6}}
\newlabel{S:real}{{6}{23}{Examples with real data}{section.6}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{6.1}{Range image patches}}{23}{subsection.6.1}}
\citation{Range,Mumford}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Betti intervals for the lazy witness complex built from $X^5(300,30)$}}{25}{figure.2}}
\newlabel{fig:rangeBetti}{{2}{25}{Betti intervals for the lazy witness complex built from $X^5(300,30)$}{figure.2}{}}
\citation{adams2015nudged}
\citation{VanHaterenVanDerSchaaf}
\citation{Mumford}
\citation{KleinBottle}
\citation{KleinBottle}
\citation{KleinBottle}
\citation{KleinBottle}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Projection of $X^5(300,30)$}}}{26}{subfigure.3.2}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Range primary circle}}}{26}{subfigure.3.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{6.2}{Optical image patches}}{26}{subsection.6.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Betti intervals for the lazy witness complex built from $X(300,30)$}}{28}{figure.3}}
\newlabel{fig:rangeBetti}{{3}{28}{Betti intervals for the lazy witness complex built from $X(300,30)$}{figure.3}{}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Projection of $X(300,30)$}}}{29}{subfigure.4.2}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Optical primary circle}}}{29}{subfigure.4.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Betti intervals for the lazy witness complex built from $X(15,30)$}}{30}{figure.4}}
\newlabel{fig:rangeBetti}{{4}{30}{Betti intervals for the lazy witness complex built from $X(15,30)$}{figure.4}{}}
\citation{brown2008algorithmic}
\citation{martin2010topology}
\citation{martin2011non}
\citation{martin2011non}
\citation{zomorodian2012advances}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Projection of $X(15,30)$}}}{31}{subfigure.5.2}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Three circle model}}}{31}{subfigure.5.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{6.3}{Cyclo-octane molecule conformations}}{31}{subsection.6.3}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces The cyclo-octane molecule consists of a ring of 8 carbon atoms (black), each bonded to a pair of hydrogen atoms (white).}}{32}{figure.5}}
\newlabel{fig:cyclo}{{5}{32}{The cyclo-octane molecule consists of a ring of 8 carbon atoms (black), each bonded to a pair of hydrogen atoms (white)}{figure.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Betti intervals for the lazy witness complex built from $X(300,30)$}}{33}{figure.6}}
\newlabel{fig:rangeBetti}{{6}{33}{Betti intervals for the lazy witness complex built from $X(300,30)$}{figure.6}{}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{7}{Remarks}}{33}{section.7}}
\newlabel{SS:java-heap-size}{{7.1}{33}{Java heap size}{subsection.7.1}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{7.1}{Java heap size}}{33}{subsection.7.1}}
\citation{brown2008algorithmic}
\citation{martin2010topology}
\citation{martin2011non}
\newlabel{SS:matlabFunctions}{{7.2}{34}{Matlab functions with Javaplex commands}{subsection.7.2}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{7.2}{Matlab functions with Javaplex commands}}{34}{subsection.7.2}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{7.3}{Displaying the simplices in a stream}}{34}{subsection.7.3}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{7.4}{Displaying the boundary matrix of a homology computation}}{34}{subsection.7.4}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{7.5}{Computing the bottleneck distance}}{34}{subsection.7.5}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{8}{Acknowledgements}}{34}{section.8}}
\@writefile{toc}{\contentsline {section}{Appendices}{34}{section*.2}}
\@writefile{toc}{\contentsline {section}{\tocsection {Appendix}{A}{Dense core subsets}}{34}{appendix.A}}
\newlabel{A:core}{{A}{34}{Dense core subsets}{appendix.A}{}}
\citation{KleinBottle}
\citation{WitnessComplexes}
\citation{Hatcher}
\@writefile{toc}{\contentsline {section}{\tocsection {Appendix}{B}{Exercise solutions}}{36}{appendix.B}}
\newlabel{A:solutions}{{B}{36}{Exercise solutions}{appendix.B}{}}
\citation{ChazalDeSilvaOudot2013}
\citation{Adamaszek2013,AAFPP-J,AA-VRS1,AAM}
\bibstyle{abbrvnat}
\bibdata{javaplex_tutorial}
\bibcite{Adamaszek2013}{{1}{2013}{{Adamaszek}}{{}}}
\bibcite{AA-VRS1}{{2}{2017}{{Adamaszek and Adams}}{{}}}
\bibcite{AAFPP-J}{{3}{2016}{{Adamaszek et~al.}}{{Adamaszek, Adams, Frick, Peterson, and Previte-Johnson}}}
\bibcite{AAM}{{4}{2017}{{Adamaszek et~al.}}{{Adamaszek, Adams, and Motta}}}
\bibcite{Range}{{5}{2009}{{Adams and Carlsson}}{{}}}
\bibcite{adams2015nudged}{{6}{2015}{{Adams et~al.}}{{Adams, Atanasov, and Carlsson}}}
\bibcite{Armstrong}{{7}{1983}{{Armstrong}}{{}}}
\bibcite{brown2008algorithmic}{{8}{2008}{{Brown et~al.}}{{Brown, Martin, Pollock, Coutsias, and Watson}}}
\bibcite{KleinBottle}{{9}{2008}{{Carlsson et~al.}}{{Carlsson, Ishkhanov, de~Silva, and Zomorodian}}}
\bibcite{ChazalDeSilvaOudot2013}{{10}{2013}{{Chazal et~al.}}{{Chazal, de~Silva, and Oudot}}}
\bibcite{WitnessComplexes}{{11}{2004}{{de~Silva and Carlsson}}{{}}}
\bibcite{ComputationalTopology}{{12}{2010}{{Edelsbrunner and Harer}}{{}}}
\bibcite{TopologicalPersistence}{{13}{2002}{{Edelsbrunner et~al.}}{{Edelsbrunner, Letscher, and Zomorodian}}}
\bibcite{Hatcher}{{14}{2002}{{Hatcher}}{{}}}
\bibcite{Mumford}{{15}{2003}{{Lee et~al.}}{{Lee, Pedersen, and Mumford}}}
\bibcite{martin2011non}{{16}{2011}{{Martin and Watson}}{{}}}
\bibcite{martin2010topology}{{17}{2010}{{Martin et~al.}}{{Martin, Thompson, Coutsias, and Watson}}}
\bibcite{Javaplex}{{18}{2014}{{Tausz et~al.}}{{Tausz, Vejdemo-Johansson, and Adams}}}
\bibcite{VanHaterenVanDerSchaaf}{{19}{1998}{{van Hateren and van~der Schaaf}}{{}}}
\bibcite{zomorodian2012advances}{{20}{2012}{{Zomorodian}}{{}}}
\bibcite{ComputingPersistent}{{21}{2005}{{Zomorodian and Carlsson}}{{}}}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{58.61125pt}
\newlabel{tocindent1}{66.11127pt}
\newlabel{tocindent2}{29.38873pt}
\newlabel{tocindent3}{0pt}
\@writefile{toc}{\contentsline {section}{\tocsection {Appendix}{}{References}}{41}{section*.3}}


================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.bbl
================================================
\begin{thebibliography}{21}
\providecommand{\natexlab}[1]{#1}
\providecommand{\url}[1]{\texttt{#1}}
\expandafter\ifx\csname urlstyle\endcsname\relax
  \providecommand{\doi}[1]{doi: #1}\else
  \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi

\bibitem[Adamaszek(2013)]{Adamaszek2013}
M.~Adamaszek.
\newblock Clique complexes and graph powers.
\newblock \emph{Israel Journal of Mathematics}, 196\penalty0 (1):\penalty0
  295--319, 2013.

\bibitem[Adamaszek and Adams(2017)]{AA-VRS1}
M.~Adamaszek and H.~Adams.
\newblock The {V}ietoris--{R}ips complexes of a circle.
\newblock \emph{Pacific Journal of Mathematics}, 290\penalty0 (1):\penalty0
  1--40, 2017.

\bibitem[Adamaszek et~al.(2016)Adamaszek, Adams, Frick, Peterson, and
  Previte-Johnson]{AAFPP-J}
M.~Adamaszek, H.~Adams, F.~Frick, C.~Peterson, and C.~Previte-Johnson.
\newblock Nerve complexes of circular arcs.
\newblock \emph{Discrete \& Computational Geometry}, 56:\penalty0 251--273,
  2016.

\bibitem[Adamaszek et~al.(2017)Adamaszek, Adams, and Motta]{AAM}
M.~Adamaszek, H.~Adams, and F.~Motta.
\newblock Random cyclic dynamical systems.
\newblock \emph{Advances in Applied Mathematics}, 83:\penalty0 1--23, 2017.

\bibitem[Adams and Carlsson(2009)]{Range}
H.~Adams and G.~Carlsson.
\newblock On the nonlinear statistics of range image patches.
\newblock \emph{SIAM J.\ Imag.\ Sci.}, 2:\penalty0 110--117, 2009.

\bibitem[Adams et~al.(2015)Adams, Atanasov, and Carlsson]{adams2015nudged}
H.~Adams, A.~Atanasov, and G.~Carlsson.
\newblock Nudged elastic band in topological data analysis.
\newblock \emph{Topological methods in nonlinear analysis}, 45\penalty0
  (1):\penalty0 247--272, 2015.

\bibitem[Armstrong(1983)]{Armstrong}
M.~A. Armstrong.
\newblock \emph{Basic Topology}.
\newblock Springer, New York, Berlin, 1983.

\bibitem[Brown et~al.(2008)Brown, Martin, Pollock, Coutsias, and
  Watson]{brown2008algorithmic}
M.~W. Brown, S.~Martin, S.~N. Pollock, E.~A. Coutsias, and J.~P. Watson.
\newblock Algorithmic dimensionality reduction for molecular structure
  analysis.
\newblock \emph{Journal of Chemical Physics}, 129:\penalty0 064118, 2008.

\bibitem[Carlsson et~al.(2008)Carlsson, Ishkhanov, de~Silva, and
  Zomorodian]{KleinBottle}
G.~Carlsson, T.~Ishkhanov, V.~de~Silva, and A.~Zomorodian.
\newblock On the local behavior of spaces of natural images.
\newblock \emph{Int.\ J.\ Comput.\ Vision}, 76:\penalty0 1--12, 2008.

\bibitem[Chazal et~al.(2013)Chazal, de~Silva, and
  Oudot]{ChazalDeSilvaOudot2013}
F.~Chazal, V.~de~Silva, and S.~Oudot.
\newblock Persistence stability for geometric complexes.
\newblock \emph{Geometriae Dedicata}, pages 1--22, 2013.

\bibitem[de~Silva and Carlsson(2004)]{WitnessComplexes}
V.~de~Silva and G.~Carlsson.
\newblock Topological estimation using witness complexes.
\newblock In \emph{Eurographics Symposium on Point-Based Graphics}, June 2004.

\bibitem[Edelsbrunner and Harer(2010)]{ComputationalTopology}
H.~Edelsbrunner and J.~Harer.
\newblock \emph{Computational Topology: An Introduction}.
\newblock American Mathematical Society, Providence, 2010.

\bibitem[Edelsbrunner et~al.(2002)Edelsbrunner, Letscher, and
  Zomorodian]{TopologicalPersistence}
H.~Edelsbrunner, D.~Letscher, and A.~Zomorodian.
\newblock Topological persistence and simplification.
\newblock \emph{Discrete Comput.\ Geom.}, 28:\penalty0 511--533, 2002.

\bibitem[Hatcher(2002)]{Hatcher}
A.~Hatcher.
\newblock \emph{Algebraic Topology}.
\newblock Cambridge University Press, Cambridge, 2002.

\bibitem[Lee et~al.(2003)Lee, Pedersen, and Mumford]{Mumford}
A.~B. Lee, K.~S. Pedersen, and D.~Mumford.
\newblock The nonlinear statistics of high-contrast patches in natural images.
\newblock \emph{Int.\ J.\ Comput.\ Vision}, 54:\penalty0 83--103, 2003.

\bibitem[Martin and Watson(2011)]{martin2011non}
S.~Martin and J.~P. Watson.
\newblock Non-manifold surface reconstruction from high-dimensional point cloud
  data.
\newblock \emph{Computational Geometry}, 44:\penalty0 427--441, 2011.

\bibitem[Martin et~al.(2010)Martin, Thompson, Coutsias, and
  Watson]{martin2010topology}
S.~Martin, A.~Thompson, E.~A. Coutsias, and J.~P. Watson.
\newblock Topology of cyclo-octane energy landscape.
\newblock \emph{Journal of Chemical Physics}, 132:\penalty0 234115, 2010.

\bibitem[Tausz et~al.(2014)Tausz, Vejdemo-Johansson, and Adams]{Javaplex}
A.~Tausz, M.~Vejdemo-Johansson, and H.~Adams.
\newblock Java{P}lex: {A} research software package for persistent
  (co)homology.
\newblock In H.~Hong and C.~Yap, editors, \emph{Proceedings of ICMS 2014},
  Lecture Notes in Computer Science 8592, pages 129--136, 2014.
\newblock Software available at
  \url{http://appliedtopology.github.io/javaplex/}.

\bibitem[van Hateren and van~der Schaaf(1998)]{VanHaterenVanDerSchaaf}
J.~H. van Hateren and A.~van~der Schaaf.
\newblock Independent component filters of natural images compared with simple
  cells in primary visual cortex.
\newblock \emph{Proc.\ R.\ Soc.\ Lond.\ B}, 265:\penalty0 359--366, 1998.

\bibitem[Zomorodian(2012)]{zomorodian2012advances}
A.~Zomorodian.
\newblock \emph{Advances in Applied and Computational Topology}.
\newblock American Mathematical Society, 2012.

\bibitem[Zomorodian and Carlsson(2005)]{ComputingPersistent}
A.~Zomorodian and G.~Carlsson.
\newblock Computing persistent homology.
\newblock \emph{Discrete Comput.\ Geom.}, 33:\penalty0 249--274, 2005.

\end{thebibliography}


================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.bib
================================================
@article{Adamaszek2013,
  title={Clique complexes and graph powers},
  author={Adamaszek, Micha{\l}},
  journal={Israel Journal of Mathematics},
  volume={196},
  number={1},
  pages={295--319},
  year={2013}
}

@article{AAFPP-J,
  title={Nerve complexes of circular arcs},
  author={Adamaszek, Micha{\l} and Adams, Henry and Frick, Florian and Peterson, Chris and Previte-Johnson, Corrine},
  journal={Discrete \& Computational Geometry},
  volume={56},
  pages={251--273},
  year={2016}
}

@article{AA-VRS1,
  title={The {V}ietoris--{R}ips complexes of a circle},
  author={Adamaszek, Micha{\l} and Adams, Henry},
  journal={Pacific Journal of Mathematics},
  volume={290},
  number={1},
  pages={1--40},
  year={2017}
}

@article{AAM,
  title={Random cyclic dynamical systems},
  author={Adamaszek, Micha{\l} and Adams, Henry and Motta, Francis},
  journal={Advances in Applied Mathematics},
  volume={83},
  pages={1--23},
  year={2017}
}

@article{adams2015nudged,
  title={Nudged elastic band in topological data analysis},
  author={Adams, Henry and Atanasov, Atanas and Carlsson, Gunnar},
  journal={Topological methods in nonlinear analysis},
  volume={45},
  number={1},
  pages={247--272},
  year={2015}
}

@article{Range,
	author	= "H.~Adams and G.~Carlsson",
	title		= "On the nonlinear statistics of range image patches",
	journal	= "SIAM J.\ Imag.\ Sci.",
	volume	= "2",
	year		= "2009",
	pages	= "110--117",
}

@book{Armstrong,
    	author	= "M.~A.~Armstrong",
    	title		= "Basic Topology",
    	publisher	= "Springer",
    	address  	= "New York, Berlin",
    	year		= "1983",
}

@article{KleinBottle,
	author	= "G.~Carlsson and T.~Ishkhanov and V.~de Silva and A.~Zomorodian",
	title		= "On the local behavior of spaces of natural images",
	journal	= "Int.\ J.\ Comput.\ Vision",
	volume	= "76",
	year		= "2008",
	pages	= "1--12",
}

@article{ChazalDeSilvaOudot2013,
  title={Persistence stability for geometric complexes},
  author={Chazal, Fr{\'e}d{\'e}ric and de~Silva, Vin and Oudot, Steve},
  journal={Geometriae Dedicata},
  pages={1--22},
  year={2013}
}

@inproceedings{WitnessComplexes,
	author	= "V.~de Silva and G.~Carlsson",
	title		= "Topological estimation using witness complexes",
	booktitle 	= "Eurographics Symposium on Point-Based Graphics",
	month 	= "June",
	year 		= "2004",
}

@book{ComputationalTopology,
    	author	= "H.~Edelsbrunner and J.~Harer",
    	title		= "Computational Topology: An Introduction",
    	publisher	= "American Mathematical Society",
    	address  	= "Providence",
    	year		= "2010",
}

@article{TopologicalPersistence,
	author	= "H.~Edelsbrunner and D.~Letscher and A.~Zomorodian",
	title		= "Topological persistence and simplification",
	journal	= "Discrete Comput.\ Geom.",
	volume	= "28",
	year		= "2002",
	pages	= "511--533",
}

@book{Hatcher,
    	author	= "A.~Hatcher",
    	title		= "Algebraic Topology",
    	publisher	= "Cambridge University Press",
    	address  	= "Cambridge",
    	year		= "2002",
}

@article{Mumford,
	author	= "A.~B.~Lee and K.~S.~Pedersen and D.~Mumford",
	title		= "The nonlinear statistics of high-contrast patches in natural images",
	journal	= "Int.\ J.\ Comput.\ Vision",
	volume	= "54",
	year		= "2003",
	pages	= "83--103",
}

@inproceedings{Javaplex,
	author	= "A.~Tausz and M.~Vejdemo-Johansson and H.~Adams",
	title 		= "Java{P}lex: {A} research software package for persistent (co)homology",
	booktitle 	= "Proceedings of ICMS 2014",
	editor	= "H.~Hong and C.~Yap",
	series	= "Lecture Notes in Computer Science 8592", 
	year 		= "2014",
	pages	= "129-136",
	note 		= "Software available at \url{http://appliedtopology.github.io/javaplex/}"
}

@article{VanHaterenVanDerSchaaf,
	author	="J.~H.~van Hateren and A.~van der Schaaf",
	title		="Independent component filters of natural images compared with simple cells in primary visual cortex",
	journal	="Proc.\ R.\ Soc.\ Lond.\ B",
	volume	="265",
	pages	="359--366",
	year		="1998",
}

@article{ComputingPersistent,
	author	= "A.~Zomorodian and G.~Carlsson",
	title		= "Computing persistent homology",
	journal	= "Discrete Comput.\ Geom.",
	volume	= "33",
	year		= "2005",
	pages	= "249--274",
}

@article{martin2010topology,
  title={Topology of cyclo-octane energy landscape},
  author={S.~Martin and A.~Thompson and E.~A.~Coutsias and J.~P.~Watson},
  journal={Journal of Chemical Physics},
  volume={132},
  pages={234115},
  year={2010}
}

@article{martin2011non,
  title={Non-manifold surface reconstruction from high-dimensional point cloud data},
  author={S.~Martin and J.~P.~Watson},
  journal={Computational Geometry},
  volume={44},
  pages={427--441},
  year={2011}
}

@article{brown2008algorithmic,
  title={Algorithmic dimensionality reduction for molecular structure analysis},
  author={M.~W.~Brown and S.~Martin and S.~N.~Pollock and E.~A.~Coutsias and J.~P.~Watson},
  journal={Journal of Chemical Physics},
  volume={129},
  pages={064118},
  year={2008}
}

@book{zomorodian2012advances,
  title={Advances in Applied and Computational Topology},
  author={A.~Zomorodian},
  year={2012},
  publisher={American Mathematical Society}
}

================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.blg
================================================
This is BibTeX, Version 0.99d (TeX Live 2017)
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
The top-level auxiliary file: javaplex_tutorial.aux
The style file: abbrvnat.bst
Database file #1: javaplex_tutorial.bib
You've used 21 entries,
            2773 wiz_defined-function locations,
            738 strings with 7740 characters,
and the built_in function-call counts, 9700 in all, are:
= -- 861
> -- 549
< -- 13
+ -- 185
- -- 164
* -- 779
:= -- 1500
add.period$ -- 64
call.type$ -- 21
change.case$ -- 113
chr.to.int$ -- 21
cite$ -- 42
duplicate$ -- 450
empty$ -- 810
format.name$ -- 199
if$ -- 2023
int.to.chr$ -- 1
int.to.str$ -- 1
missing$ -- 25
newline$ -- 114
num.names$ -- 86
pop$ -- 223
preamble$ -- 1
purify$ -- 96
quote$ -- 0
skip$ -- 337
stack$ -- 0
substring$ -- 395
swap$ -- 38
text.length$ -- 2
text.prefix$ -- 0
top$ -- 0
type$ -- 211
warning$ -- 0
while$ -- 95
width$ -- 0
write$ -- 281


================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.log
================================================
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2017.5.23)  15 JUL 2018 19:49
entering extended mode
 restricted \write18 enabled.
 file:line:error style messages enabled.
 %&-line parsing enabled.
**javaplex_tutorial.tex
(./javaplex_tutorial.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2017/texmf-dist/tex/latex/amscls/amsart.cls
Document Class: amsart 2015/03/04 v2.20.2
\linespacing=\dimen102
\normalparindent=\dimen103
\normaltopskip=\skip41
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2016/11/05 v2.16a AMS math features
\@mathmargin=\skip42

For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01 AMS text

(/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks14
\ex@=\dimen104
))
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen105
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2016/03/08 v2.02 operator names
)
\inf@bad=\count79
LaTeX Info: Redefining \frac on input line 213.
\uproot@=\count80
\leftroot@=\count81
LaTeX Info: Redefining \overline on input line 375.
\classnum@=\count82
\DOTSCASE@=\count83
LaTeX Info: Redefining \ldots on input line 472.
LaTeX Info: Redefining \dots on input line 475.
LaTeX Info: Redefining \cdots on input line 596.
\Mathstrutbox@=\box26
\strutbox@=\box27
\big@size=\dimen106
LaTeX Font Info:    Redeclaring font encoding OML on input line 712.
LaTeX Font Info:    Redeclaring font encoding OMS on input line 713.
\macc@depth=\count84
\c@MaxMatrixCols=\count85
\dotsspace@=\muskip10
\c@parentequation=\count86
\dspbrk@lvl=\count87
\tag@help=\toks15
\row@=\count88
\column@=\count89
\maxfields@=\count90
\andhelp@=\toks16
\eqnshift@=\dimen107
\alignsep@=\dimen108
\tagshift@=\dimen109
\tagwidth@=\dimen110
\totwidth@=\dimen111
\lineht@=\dimen112
\@envbody=\toks17
\multlinegap=\skip43
\multlinetaggap=\skip44
\mathdisplay@stack=\toks18
LaTeX Info: Redefining \[ on input line 2817.
LaTeX Info: Redefining \] on input line 2818.
)
LaTeX Font Info:    Try loading font information for U+msa on input line 388.

(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
(Font)                  U/euf/m/n --> U/euf/b/n on input line 106.
)
\copyins=\insert199
\abstractbox=\box28
\listisep=\skip45
\c@part=\count91
\c@section=\count92
\c@subsection=\count93
\c@subsubsection=\count94
\c@paragraph=\count95
\c@subparagraph=\count96
\c@figure=\count97
\c@table=\count98
\abovecaptionskip=\skip46
\belowcaptionskip=\skip47
\captionindent=\dimen113
\thm@style=\toks19
\thm@bodyfont=\toks20
\thm@headfont=\toks21
\thm@notefont=\toks22
\thm@headpunct=\toks23
\thm@preskip=\skip48
\thm@postskip=\skip49
\thm@headsep=\skip50
\dth@everypar=\toks24
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/preprint/fullpage.sty
Package: fullpage 1999/02/23 1.1 (PWD)
\FP@margin=\skip51
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/latexsym.sty
Package: latexsym 1998/08/17 v2.2e Standard LaTeX package (lasy symbols)
\symlasy=\mathgroup6
LaTeX Font Info:    Overwriting symbol font `lasy' in version `bold'
(Font)                  U/lasy/m/n --> U/lasy/b/n on input line 52.
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/pb-diagram/pb-diagram.sty
\dgARROWLENGTH=\skip52
\dgTEXTARROWLENGTH=\skip53
\dgHORIZPAD=\skip54
\dgVERTPAD=\skip55
\dgLABELOFFSET=\skip56
\dgARROWPARTS=\count99
\dgDOTSPACING=\skip57
\dgDOTSIZE=\skip58
\dgMAXSQUARE=\count100
\dgMINDBLSQ=\count101
\dgCOLUMNWIDTH=\skip59
\dg@HORIZ=\count102
\dg@VERT=\count103
\dg@XLPAD=\count104
\dg@YBPAD=\count105
\dg@XRPAD=\count106
\dg@YTPAD=\count107
\dg@X=\count108
\dg@Y=\count109
\dg@XGRID=\count110
\dg@YGRID=\count111
\dg@SIZE=\count112
\dg@USERSIZE=\count113
\dg@DX=\count114
\dg@DY=\count115
\dg@XLBL=\count116
\dg@YLBL=\count117
\dg@XOFFSET=\count118
\dg@YOFFSET=\count119
\dg@LBLOFF=\count120
\dg@XLBLOFF=\count121
\dg@YLBLOFF=\count122
\dg@LBLPOS=\count123
\dg@XTEMP=\count124
\dg@YTEMP=\count125
\dg@ZTEMP=\count126
\dg@XNODE=\count127
\dg@YNODE=\count128
\dg@XEND=\count129
\dg@YEND=\count130
\dg@WEND=\count131
\dg@HEND=\count132
\dg@COUNT=\count133
\dg@NODEBOX=\box29
\dg@LABONEBOX=\box30
\dg@LABTWOBOX=\box31
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/euscript.sty
Package: euscript 2009/06/22 v3.00 Euler Script fonts
LaTeX Font Info:    Overwriting math alphabet `\EuScript' in version `bold'
(Font)                  U/eus/m/n --> U/eus/b/n on input line 33.
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)

(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks25
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2017/04/14 v1.1b Standard LaTeX Graphics (DPC,SPQR)

(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 99.

(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2017/01/12 v0.06k Graphics/color for pdfTeX

(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/infwarerr.sty
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
)
(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
)
\Gread@gobject=\count134
))
\Gin@req@height=\dimen114
\Gin@req@width=\dimen115
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/subfigure/subfigure.sty
Package: subfigure 2002/03/15 v2.1.5 subfigure package
\subfigtopskip=\skip60
\subfigcapskip=\skip61
\subfigcaptopadj=\dimen116
\subfigbottomskip=\skip62
\subfigcapmargin=\dimen117
\subfiglabelskip=\skip63
\c@subfigure=\count135
\c@lofdepth=\count136
\c@subtable=\count137
\c@lotdepth=\count138

****************************************
* Local config file subfigure.cfg used *
****************************************
(/usr/local/texlive/2017/texmf-dist/tex/latex/subfigure/subfigure.cfg)
\subfig@top=\skip64
\subfig@bottom=\skip65
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/placeins/placeins.sty
Package: placeins 2005/04/18  v 2.2
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/wrapfig/wrapfig.sty
\wrapoverhang=\dimen118
\WF@size=\dimen119
\c@WF@wrappedlines=\count139
\WF@box=\box32
\WF@everypar=\toks26
Package: wrapfig 2003/01/31  v 3.6
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2017/03/14 v6.85a Hypertext links for LaTeX

(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)


(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
Package hobsub Info: Skipping package `infwarerr' (already loaded).
Package hobsub Info: Skipping package `ltxcmds' (already loaded).
Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
Package ifluatex Info: LuaTeX not detected.
Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
Package ifvtex Info: VTeX not detected.
Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
Package etexcmds Info: Could not find \expanded.
(etexcmds)             That can mean that you are not using pdfTeX 1.50 or
(etexcmds)             that some package has redefined \expanded.
(etexcmds)             In the latter case, load this package earlier.
Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO
)
Package pdftexcmds Info: LuaTeX not detected.
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode found.
Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
)
Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
)
Package hobsub Info: Skipping package `hobsub' (already loaded).
Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
Package: xcolor-patch 2016/05/16 xcolor patch
Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
Package atveryend Info: \enddocument detected (standard20110627).
Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
)
(/usr/local/texlive/2017/texmf-dist/tex/generic/ifxetex/ifxetex.sty
Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/auxhook.sty
Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/kvoptions.sty
Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
)
\@linkdim=\dimen120
\Hy@linkcounter=\count140
\Hy@pagecounter=\count141

(/usr/local/texlive/2017/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2017/03/14 v6.85a Hyperref: PDFDocEncoding definition (HO)
)
\Hy@SavedSpaceFactor=\count142

(/usr/local/texlive/2017/texmf-dist/tex/latex/latexconfig/hyperref.cfg
File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
)
Package hyperref Info: Hyper figures OFF on input line 4498.
Package hyperref Info: Link nesting OFF on input line 4503.
Package hyperref Info: Hyper index ON on input line 4506.
Package hyperref Info: Plain pages OFF on input line 4513.
Package hyperref Info: Backreferencing OFF on input line 4518.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4751.
\c@Hy@tempcnt=\count143

(/usr/local/texlive/2017/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip11
Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 5104.
\XeTeXLinkMargin=\dimen121
\Fld@menulength=\count144
\Field@Width=\dimen122
\Fld@charsize=\dimen123
Package hyperref Info: Hyper figures OFF on input line 6358.
Package hyperref Info: Link nesting OFF on input line 6363.
Package hyperref Info: Hyper index ON on input line 6366.
Package hyperref Info: backreferencing OFF on input line 6373.
Package hyperref Info: Link coloring OFF on input line 6378.
Package hyperref Info: Link coloring with OCG OFF on input line 6383.
Package hyperref Info: PDF/A mode OFF on input line 6388.
LaTeX Info: Redefining \ref on input line 6428.
LaTeX Info: Redefining \pageref on input line 6432.
\Hy@abspage=\count145
\c@Item=\count146
\c@Hfootnote=\count147
)

Package hyperref Message: Driver (autodetected): hpdftex.

(/usr/local/texlive/2017/texmf-dist/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2017/03/14 v6.85a Hyperref driver for pdfTeX
\Fld@listcount=\count148
\c@bookmark@seq@number=\count149

(/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
82.
)
\Hy@SectionHShift=\skip66
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/appendix/appendix.sty
Package: appendix 2009/09/02 v1.2b extra appendix facilities
\c@@pps=\count150
\c@@ppsavesec=\count151
\c@@ppsaveapp=\count152
)
(/usr/local/texlive/2017/texmf-dist/tex/latex/natbib/natbib.sty
Package: natbib 2010/09/13 8.31b (PWD, AO)
\bibhang=\skip67
\bibsep=\skip68
LaTeX Info: Redefining \cite on input line 694.
\c@NAT@ctr=\count153
)
\c@exercise=\count154
\c@exerciseSol=\count155


LaTeX Warning: Unused global option(s):
    [amscd,amssymb,verbatim].

(./javaplex_tutorial.aux

LaTeX Warning: Label `fig:rangeBetti' multiply defined.


LaTeX Warning: Label `fig:rangeBetti' multiply defined.


LaTeX Warning: Label `fig:rangeBetti' multiply defined.

)
\openout1 = `javaplex_tutorial.aux'.

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 33.
LaTeX Font Info:    ... okay on input line 33.
LaTeX Font Info:    Try loading font information for U+msa on input line 33.
 (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info:    Try loading font information for U+msb on input line 33.

(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
LaTeX Font Info:    Try loading font information for U+lasy on input line 33.

(/usr/local/texlive/2017/texmf-dist/tex/latex/base/ulasy.fd
File: ulasy.fd 1998/08/17 v2.2e LaTeX symbol font definitions
)
(/usr/local/texlive/2017/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count156
\scratchdimen=\dimen124
\scratchbox=\box33
\nofMPsegments=\count157
\nofMParguments=\count158
\everyMPshowfont=\toks27
\MPscratchCnt=\count159
\MPscratchDim=\dimen125
\MPnumerator=\count160
\makeMPintoPDFobject=\count161
\everyMPtoPDFconversion=\toks28
) (/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf

(/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/grfext.sty
Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
)
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
38.
Package grfext Info: Graphics extension search list:
(grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
G,.JBIG2,.JB2,.eps]
(grfext)             \AppendGraphicsExtensions on input line 456.

(/usr/local/texlive/2017/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
\AtBeginShipoutBox=\box34
Package hyperref Info: Link coloring OFF on input line 33.

(/usr/local/texlive/2017/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section

(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
)
\c@section@level=\count162
)
LaTeX Info: Redefining \ref on input line 33.
LaTeX Info: Redefining \pageref on input line 33.
LaTeX Info: Redefining \nameref on input line 33.

(./javaplex_tutorial.out) (./javaplex_tutorial.out)
\@outlinefile=\write3
\openout3 = `javaplex_tutorial.out'.

 (./javaplex_tutorial.toc)
\tf@toc=\write4
\openout4 = `javaplex_tutorial.toc'.


Underfull \vbox (badness 1502) has occurred while \output is active []

 [1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Overfull \hbox (6.01897pt too wide) in paragraph at lines 116--116
 []\OT1/cmtt/m/n/10 ans = Java 1.5.0_13 with Apple Inc.   Java Hotspot(TM) Clie
nt VM mixed mode, sharing[] 
 []


Overfull \hbox (2.38226pt too wide) in paragraph at lines 120--121
[]\OT1/cmr/m/n/10 To in-stall Javaplex for Mat-lab, go to the lat-est re-lease 
at []$\OT1/cmtt/m/n/10 https : / / github . com / appliedtopology / javaplex /
 []


Overfull \hbox (8.64397pt too wide) in paragraph at lines 120--121
\OT1/cmr/m/n/10 like \OT1/cmtt/m/n/10 matlab-examples-4.2.3.zip\OT1/cmr/m/n/10 
. Ex-tract the zip file. The re-sult-ing folder should be called \OT1/cmtt/m/n/
10 matlab[]examples\OT1/cmr/m/n/10 ;
 []

[2] [3] <s1.pdf, id=257, 371.85866pt x 410.0921pt>
File: s1.pdf Graphic file (type pdf)
 <use s1.pdf>
Package pdftex.def Info: s1.pdf used on input line 207.
(pdftex.def)             Requested size: 72.26999pt x 79.70169pt.
 [4 <./s1.pdf>]
[5] <smallSimplicialComplex.png, id=277, 527.9725pt x 296.10625pt>
File: smallSimplicialComplex.png Graphic file (type png)

<use smallSimplicialComplex.png>
Package pdftex.def Info: smallSimplicialComplex.png used on input line 326.
(pdftex.def)             Requested size: 144.54pt x 81.06123pt.

<houseFig.pdf, id=282, 52.43018pt x 76.4957pt>
File: houseFig.pdf Graphic file (type pdf)
 <use houseFig.pdf>
Package pdftex.def Info: houseFig.pdf used on input line 352.
(pdftex.def)             Requested size: 72.26999pt x 105.44159pt.
 [6 <./smallSimplicialComplex.png> <./houseFig.pdf>]
Overfull \hbox (47.59558pt too wide) in paragraph at lines 378--378
 []\OT1/cmtt/m/n/10 >> persistence = api.Plex4.getModularSimplicialAlgorithm(3,
 2);[] 
 []

[7] <house.png, id=366, 578.16pt x 433.62pt>
File: house.png Graphic file (type png)
 <use house.png>
Package pdftex.def Info: house.png used on input line 469.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [8] [9 <./house.png (PNG copy)>] <houseCoord.pdf, id=377, 602.25pt x 521.95pt>
File: houseCoord.pdf Graphic file (type pdf)

<use houseCoord.pdf>
Package pdftex.def Info: houseCoord.pdf used on input line 516.
(pdftex.def)             Requested size: 112.0187pt x 97.0769pt.
 [10 <./houseCoord.pdf>]
Overfull \hbox (16.51888pt too wide) in paragraph at lines 604--604
 []\OT1/cmtt/m/n/10 >> point_cloud = examples.PointCloudExamples.getRandomSpher
eProductPoints(1000, 1, 2);[] 
 []

[11] [12] [13] <ripsHouse.png, id=422, 578.16pt x 433.62pt>
File: ripsHouse.png Graphic file (type png)

<use ripsHouse.png>
Package pdftex.def Info: ripsHouse.png used on input line 748.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [14]
Overfull \hbox (38.27599pt too wide) in paragraph at lines 780--781
[]\OT1/cmr/m/n/10 Make sure you are in the di-rec-tory \OT1/cmtt/m/n/10 tutoria
l[]examples \OT1/cmr/m/n/10 (you may need to en-ter the com-mand \OT1/cmtt/m/n/
10 cd tutorial[]examples\OT1/cmr/m/n/10 ),
 []

[15 <./ripsHouse.png (PNG copy)>] <ripsTorus.png, id=432, 578.16pt x 433.62pt>
File: ripsTorus.png Graphic file (type png)

<use ripsTorus.png>
Package pdftex.def Info: ripsTorus.png used on input line 807.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [16 <./ripsTorus.png (PNG copy)>] [17]
Overfull \hbox (16.51888pt too wide) in paragraph at lines 895--895
 []\OT1/cmtt/m/n/10 >> random_selector = api.Plex4.createRandomSelector(point_c
loud, num_landmark_points);[] 
 []


Overfull \hbox (16.51888pt too wide) in paragraph at lines 895--895
 []\OT1/cmtt/m/n/10 >> maxmin_selector = api.Plex4.createMaxMinSelector(point_c
loud, num_landmark_points);[] 
 []

<fig8lands.png, id=456, 449.68pt x 337.26pt>
File: fig8lands.png Graphic file (type png)
 <use fig8lands.png>
Package pdftex.def Info: fig8lands.png used on input line 917.
(pdftex.def)             Requested size: 361.34999pt x 271.02286pt.
 [18] [19 <./fig8lands.png (PNG copy)>]
Overfull \hbox (32.26874pt too wide) in paragraph at lines 966--966
 []\OT1/cmtt/m/n/10 >> point_cloud = examples.PointCloudExamples.getRandomSpher
eProductPoints(num_points, ...[] 
 []


Overfull \hbox (27.01878pt too wide) in paragraph at lines 966--966
 []\OT1/cmtt/m/n/10 >> landmark_selector = api.Plex4.createMaxMinSelector(point
_cloud, num_landmark_points);[] 
 []

<witnessTorus.png, id=477, 578.16pt x 433.62pt>
File: witnessTorus.png Graphic file (type png)
 <use witnessTorus.png>
Package pdftex.def Info: witnessTorus.png used on input line 1001.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [20]
[21 <./witnessTorus.png (PNG copy)>]
Overfull \hbox (27.01878pt too wide) in paragraph at lines 1048--1048
 []\OT1/cmtt/m/n/10 >> landmark_selector = api.Plex4.createMaxMinSelector(point
_cloud, num_landmark_points);[] 
 []


Overfull \hbox (48.0186pt too wide) in paragraph at lines 1069--1069
 []\OT1/cmtt/m/n/10 >> stream = streams.impl.LazyWitnessStream(landmark_selecto
r.getUnderlyingMetricSpace(), ...[] 
 []

<lazySphere.png, id=493, 578.16pt x 433.62pt>
File: lazySphere.png Graphic file (type png)
 <use lazySphere.png>
Package pdftex.def Info: lazySphere.png used on input line 1075.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [22]
[23 <./lazySphere.png (PNG copy)>]
Overfull \hbox (38.27599pt too wide) in paragraph at lines 1110--1111
[]\OT1/cmr/m/n/10 Make sure you are in the di-rec-tory \OT1/cmtt/m/n/10 tutoria
l[]examples \OT1/cmr/m/n/10 (you may need to en-ter the com-mand \OT1/cmtt/m/n/
10 cd tutorial[]examples\OT1/cmr/m/n/10 ),
 []


Overfull \hbox (27.01878pt too wide) in paragraph at lines 1145--1145
 []\OT1/cmtt/m/n/10 >> landmark_selector = api.Plex4.createMaxMinSelector(point
sRange, num_landmark_points);[] 
 []


Overfull \hbox (48.0186pt too wide) in paragraph at lines 1145--1145
 []\OT1/cmtt/m/n/10 >> stream = streams.impl.LazyWitnessStream(landmark_selecto
r.getUnderlyingMetricSpace(), ...[] 
 []

<lazyRange.png, id=522, 578.16pt x 433.62pt>
File: lazyRange.png Graphic file (type png)
 <use lazyRange.png>
Package pdftex.def Info: lazyRange.png used on input line 1151.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [24]
<linearGrad.png, id=534, 867.24pt x 281.05pt>
File: linearGrad.png Graphic file (type png)
 <use linearGrad.png>
Package pdftex.def Info: linearGrad.png used on input line 1173.
(pdftex.def)             Requested size: 144.54pt x 46.83868pt.

<r5k300c30.png, id=535, 300.12125pt x 291.0875pt>
File: r5k300c30.png Graphic file (type png)
 <use r5k300c30.png>
Package pdftex.def Info: r5k300c30.png used on input line 1188.
(pdftex.def)             Requested size: 216.81pt x 210.28905pt.

<primaryCircle.png, id=536, 337.26pt x 329.23pt>
File: primaryCircle.png Graphic file (type png)
 <use primaryCircle.png>
Package pdftex.def Info: primaryCircle.png used on input line 1190.
(pdftex.def)             Requested size: 209.58255pt x 204.59773pt.

[25 <./lazyRange.png (PNG copy)> <./linearGrad.png (PNG copy)>]
Overfull \hbox (38.27599pt too wide) in paragraph at lines 1206--1207
[]\OT1/cmr/m/n/10 Make sure you are in the di-rec-tory \OT1/cmtt/m/n/10 tutoria
l[]examples \OT1/cmr/m/n/10 (you may need to en-ter the com-mand \OT1/cmtt/m/n/
10 cd tutorial[]examples\OT1/cmr/m/n/10 ),
 []

[26 <./r5k300c30.png (PNG copy)> <./primaryCircle.png (PNG copy)>]
Overfull \hbox (48.0186pt too wide) in paragraph at lines 1242--1242
 []\OT1/cmtt/m/n/10 >> stream = streams.impl.LazyWitnessStream(landmark_selecto
r.getUnderlyingMetricSpace(), ...[] 
 []

<lazyOpticalDct-k300.png, id=576, 578.16pt x 433.62pt>
File: lazyOpticalDct-k300.png Graphic file (type png)

<use lazyOpticalDct-k300.png>
Package pdftex.def Info: lazyOpticalDct-k300.png used on input line 1248.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 [27]
<nk300c30.png, id=581, 376.40625pt x 368.37625pt>
File: nk300c30.png Graphic file (type png)
 <use nk300c30.png>
Package pdftex.def Info: nk300c30.png used on input line 1267.
(pdftex.def)             Requested size: 216.81pt x 212.19128pt.
File: primaryCircle.png Graphic file (type png)

<use primaryCircle.png>
Package pdftex.def Info: primaryCircle.png used on input line 1269.
(pdftex.def)             Requested size: 209.58255pt x 204.59773pt.
 [28 <./lazyOpticalDct-k300.png (PNG copy)>]
Overfull \hbox (57.21542pt too wide) in paragraph at lines 1276--1277
[]\OT1/cmr/m/n/10 We next an-a-lyze the core sub-set $\OML/cmm/m/it/10 X\OT1/cm
r/m/n/10 (15\OML/cmm/m/it/10 ; \OT1/cmr/m/n/10 30)$. Load the file []\OT1/cmtt/
m/n/10 pointsOpticalDct[]k15.mat[]\OT1/cmr/m/n/10 . The ma-trix \OT1/cmtt/m/n/1
0 pointsOpticalDct[]k15
 []


Overfull \hbox (48.0186pt too wide) in paragraph at lines 1312--1312
 []\OT1/cmtt/m/n/10 >> stream = streams.impl.LazyWitnessStream(landmark_selecto
r.getUnderlyingMetricSpace(), ...[] 
 []

[29 <./nk300c30.png>] <lazyOpticalDct-k15.png, id=595, 578.16pt x 433.62pt>
File: lazyOpticalDct-k15.png Graphic file (type png)

<use lazyOpticalDct-k15.png>
Package pdftex.def Info: lazyOpticalDct-k15.png used on input line 1318.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.
 <nk15c30.png, id=596, 377.41pt x 372.39125pt>
File: nk15c30.png Graphic file (type png)

<use nk15c30.png>
Package pdftex.def Info: nk15c30.png used on input line 1337.
(pdftex.def)             Requested size: 216.81pt x 213.92442pt.
 <threeCircle.png, id=597, 804.606pt x 805.5696pt>
File: threeCircle.png Graphic file (type png)

<use threeCircle.png>
Package pdftex.def Info: threeCircle.png used on input line 1339.
(pdftex.def)             Requested size: 209.58255pt x 209.8242pt.
 [30 <./lazyOpticalDct-k15.png (PNG copy)>]
Overfull \hbox (11.05464pt too wide) in paragraph at lines 1349--1350
 \OT1/cmr/m/n/10 6.3.\OT1/cmr/bx/n/10 Cyclo-octane mol-e-cule con-for-ma-tions.
[][] \OT1/cmr/m/n/10 The cor-re-spond-ing Mat-lab script is []\OT1/cmtt/m/n/10 
cyclo[]octane[]example.m[]\OT1/cmr/m/n/10 ,
 []

<Cyclooctane-boat-chair-3D-balls.png, id=614, 1457.445pt x 1505.625pt>
File: Cyclooctane-boat-chair-3D-balls.png Graphic file (type png)

<use Cyclooctane-boat-chair-3D-balls.png>
Package pdftex.def Info: Cyclooctane-boat-chair-3D-balls.png used on input line
 1355.
(pdftex.def)             Requested size: 144.54pt x 149.30775pt.

Overfull \hbox (38.27599pt too wide) in paragraph at lines 1363--1364
[]\OT1/cmr/m/n/10 Make sure you are in the di-rec-tory \OT1/cmtt/m/n/10 tutoria
l[]examples \OT1/cmr/m/n/10 (you may need to en-ter the com-mand \OT1/cmtt/m/n/
10 cd tutorial[]examples\OT1/cmr/m/n/10 ),
 []

[31 <./nk15c30.png> <./threeCircle.png>]
Overfull \hbox (48.0186pt too wide) in paragraph at lines 1399--1399
 []\OT1/cmtt/m/n/10 >> stream = streams.impl.LazyWitnessStream(landmark_selecto
r.getUnderlyingMetricSpace(), ...[] 
 []

<lazyCycloOctane.png, id=633, 578.16pt x 433.62pt>
File: lazyCycloOctane.png Graphic file (type png)
 <use lazyCycloOctane.png>
Package pdftex.def Info: lazyCycloOctane.png used on input line 1405.
(pdftex.def)             Requested size: 433.62pt x 325.2142pt.

[32 <./Cyclooctane-boat-chair-3D-balls.png>]
Overfull \hbox (10.02187pt too wide) in paragraph at lines 1430--1431
\OT1/cmr/m/n/10 in-clude Javaplex com-mands in an m-file func-tion, in-clude th
e com-mand \OT1/cmtt/m/n/10 import edu.stanford.math.plex4.*;
 []

[33 <./lazyCycloOctane.png (PNG copy)>]
Overfull \hbox (11.26892pt too wide) in paragraph at lines 1454--1454
 []\OT1/cmtt/m/n/10 The Euler characteristic is 2 = 8 - 28 + 56 - 70 + 56 - 28 
+ 8, using the alternating[] 
 []


Overfull \hbox (6.01897pt too wide) in paragraph at lines 1454--1454
 []\OT1/cmtt/m/n/10 The Euler characteristic is 2 = 1 - 0 + 0 - 0 + 0 - 0 + 1, 
using the alternating sum[] 
 []

[34] [35]
Overfull \hbox (26.71925pt too wide) in paragraph at lines 1590--1591
[]\OT1/cmr/m/n/10 Several ex-er-cise so-lu-tions are ac-com-pa-nied by Mat-lab 
scripts, which are avail-able in the folder []\OT1/cmtt/m/n/10 tutorial[]soluti
ons[]\OT1/cmr/m/n/10 . 
 []

File: smallSimplicialComplex.png Graphic file (type png)
<use smallSimplicialComplex.png>
Package pdftex.def Info: smallSimplicialComplex.png used on input line 1595.
(pdftex.def)             Requested size: 144.54pt x 81.06123pt.
 <torus.png, id=689, 456.2646pt x 472.164pt>
File: torus.png Graphic file (type png)

<use torus.png>
Package pdftex.def Info: torus.png used on input line 1614.
(pdftex.def)             Requested size: 180.67499pt x 186.97464pt.
 [36] <klein.png, id=698, 456.2646pt x 472.164pt>
File: klein.png Graphic file (type png)

<use klein.png>
Package pdftex.def Info: klein.png used on input line 1629.
(pdftex.def)             Requested size: 180.67499pt x 186.97464pt.
 <projPlane.png, id=700, 521.7894pt x 439.4016pt>
File: projPlane.png Graphic file (type png)

<use projPlane.png>
Package pdftex.def Info: projPlane.png used on input line 1644.
(pdftex.def)             Requested size: 180.67499pt x 152.1435pt.
 [37 <./torus.png (PNG copy)> <./klein.png (PNG copy)>]
[38 <./projPlane.png (PNG copy)>] [39] (./javaplex_tutorial.bbl [40])
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1834.
 [41]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 1834.

(./javaplex_tutorial.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1834.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1834.

Package rerunfilecheck Info: File `javaplex_tutorial.out' has not changed.
(rerunfilecheck)             Checksum: 4E641A8A9A783CD703486AEBBEBCB5C9;2543.


LaTeX Warning: There were multiply-defined labels.

Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1834.
 ) 
Here is how much of TeX's memory you used:
 7696 strings out of 492995
 108553 string characters out of 6132704
 200021 words of memory out of 5000000
 10801 multiletter control sequences out of 15000+600000
 11554 words of font info for 49 fonts, out of 8000000 for 9000
 1302 hyphenation exceptions out of 8191
 33i,8n,32p,1460b,520s stack positions out of 5000i,500n,10000p,200000b,80000s
</usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
></usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb>
</usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb>
</usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb><
/usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></
usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></us
r/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/
local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/lo
cal/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/loca
l/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/local/t
exlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/local/texl
ive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive
/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/
2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/local/texlive/20
17/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texlive/201
7/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/local/texlive/2017/
texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texlive/2017/t
exmf-dist/fonts/type1/public/amsfonts/cm/cmtt8.pfb></usr/local/texlive/2017/tex
mf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb>
Output written on javaplex_tutorial.pdf (41 pages, 1529932 bytes).
PDF statistics:
 879 PDF objects out of 1000 (max. 8388607)
 771 compressed objects within 8 object streams
 160 named destinations out of 1000 (max. 500000)
 409 words of extra memory for PDF output out of 10000 (max. 10000000)



================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.out
================================================
\BOOKMARK [1][-]{section.1}{1. Introduction}{}% 1
\BOOKMARK [2][-]{subsection.1.1}{1.1. Javaplex}{section.1}% 2
\BOOKMARK [2][-]{subsection.1.2}{1.2. License}{section.1}% 3
\BOOKMARK [2][-]{subsection.1.3}{1.3. Installation for Matlab}{section.1}% 4
\BOOKMARK [2][-]{subsection.1.4}{1.4. Accompanying files}{section.1}% 5
\BOOKMARK [1][-]{section.2}{2. Math review}{}% 6
\BOOKMARK [2][-]{subsection.2.1}{2.1. Simplicial complexes}{section.2}% 7
\BOOKMARK [2][-]{subsection.2.2}{2.2. Homology}{section.2}% 8
\BOOKMARK [2][-]{subsection.2.3}{2.3. Filtered simplicial complexes}{section.2}% 9
\BOOKMARK [2][-]{subsection.2.4}{2.4. Persistent homology}{section.2}% 10
\BOOKMARK [1][-]{section.3}{3. Explicit simplex streams}{}% 11
\BOOKMARK [2][-]{subsection.3.1}{3.1. Computing homology}{section.3}% 12
\BOOKMARK [2][-]{subsection.3.2}{3.2. Computing persistent homology}{section.3}% 13
\BOOKMARK [1][-]{section.4}{4. Point cloud data}{}% 14
\BOOKMARK [2][-]{subsection.4.1}{4.1. Euclidean metric spaces}{section.4}% 15
\BOOKMARK [2][-]{subsection.4.2}{4.2. Explicit metric spaces}{section.4}% 16
\BOOKMARK [1][-]{section.5}{5. Streams from point cloud data}{}% 17
\BOOKMARK [2][-]{subsection.5.1}{5.1. Vietoris\205Rips streams}{section.5}% 18
\BOOKMARK [2][-]{subsection.5.2}{5.2. Landmark selection}{section.5}% 19
\BOOKMARK [2][-]{subsection.5.3}{5.3. Witness streams}{section.5}% 20
\BOOKMARK [2][-]{subsection.5.4}{5.4. Lazy witness streams}{section.5}% 21
\BOOKMARK [1][-]{section.6}{6. Examples with real data}{}% 22
\BOOKMARK [2][-]{subsection.6.1}{6.1. Range image patches}{section.6}% 23
\BOOKMARK [2][-]{subsection.6.2}{6.2. Optical image patches}{section.6}% 24
\BOOKMARK [2][-]{subsection.6.3}{6.3. Cyclo-octane molecule conformations}{section.6}% 25
\BOOKMARK [1][-]{section.7}{7. Remarks}{}% 26
\BOOKMARK [2][-]{subsection.7.1}{7.1. Java heap size}{section.7}% 27
\BOOKMARK [2][-]{subsection.7.2}{7.2. Matlab functions with Javaplex commands}{section.7}% 28
\BOOKMARK [2][-]{subsection.7.3}{7.3. Displaying the simplices in a stream}{section.7}% 29
\BOOKMARK [2][-]{subsection.7.4}{7.4. Displaying the boundary matrix of a homology computation}{section.7}% 30
\BOOKMARK [2][-]{subsection.7.5}{7.5. Computing the bottleneck distance}{section.7}% 31
\BOOKMARK [1][-]{section.8}{8. Acknowledgements}{}% 32
\BOOKMARK [1][-]{section*.2}{Appendices}{}% 33
\BOOKMARK [1][-]{appendix.A}{Appendix A. Dense core subsets}{}% 34
\BOOKMARK [1][-]{appendix.B}{Appendix B. Exercise solutions}{}% 35
\BOOKMARK [1][-]{section*.3}{References}{}% 36


================================================
FILE: reports/javaplex_tutorial/javaplex_tutorial.tex
================================================
\documentclass[amscd, amssymb, verbatim]{amsart}[12pt]

\usepackage{fullpage}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{pb-diagram}
\usepackage[mathscr]{euscript}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{placeins}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{appendix}
%\usepackage{multind}
\usepackage{natbib}
\bibpunct{[}{]}{;}{a}{}{,~}

\theoremstyle{remark}
\newtheorem{exercise}{Exercise}
\theoremstyle{remark}
\newtheorem{exerciseSol}{Exercise}
\theoremstyle{remark}
\newtheorem*{solution}{Solution}

\DeclareMathOperator{\VR}{VR}
\DeclareMathOperator{\W}{W}
\DeclareMathOperator{\LW}{LW}
\newcommand{\N}{\mathbb{N}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\cyclo}{\mathrm{C}_8\mathrm{H}_{16}}

\begin{document}

\title{Javaplex Tutorial}

\author{Henry Adams}
\email[Henry~Adams]{henry.adams@colostate.edu}

\author{Andrew Tausz}
\email[Andrew~Tausz]{andrew.tausz@gmail.com}

\date{\today}

\maketitle

\tableofcontents
\setlength{\parindent}{0pt}
\setlength{\parskip}{8pt}

% TODO: test tutorial after making changes to include examples finding representative cycles (For example, getDefaultSimplicialAlgorithm changed everywhere to getModularSimplicialAlgorithm).

% TODO: Add more figures with data points in blue and landmarks in red, such as the one in exercise_19, to this tutorial.

% TODO: the figures for the random trials in this tutorial don't currently match the numbers (number of simplices, etc).
%UPDATE: They do for witness_example.m and lazy_witness_example.m

% "Googlecode Issue": In the tutorial, explain the new feature that allows the user to specify the initial seed used for sequential maxmin landmark selection. This feature has been added as a result of  Issue 23  (fixed).

% TODO: explain API class and how most commands for users are in this class (API does not contain under-the-hood implementation, but instead shows what the user can do w/ the library.) Check if Lazy Witness is in API; if not, perhaps it should be added.

% TODO: add example which is FLAT double torus. That is, select points at random from an octagon. Then, create explicit metric by identifying sides.
% UPDATE: added example for double torus embedded in R^3.

% TODO: is "ensureAllFaces" working as I expect? See representatives_example_HA and try changing dimensions.
% UPDATE: See Javaplex Issue 20 created by Andrew.

% TODO: Add zigzag examples to tutorial. See:
% http://code.google.com/p/javaplex/source/browse/#svn%2Ftrunk%2Fsrc%2Fmatlab%2Fexperimental%2Fvietoris_rips_bootstrap
% http://code.google.com/p/javaplex/source/browse/#svn%2Ftrunk%2Fsrc%2Fmatlab%2Fexperimental%2Fwitness_bootstrap
% http://arxiv.org/abs/1108.3545
% Also, see email from Anthony Bak 10-21-11

% TODO: ask Andrew: Move lazy witness to API so that the syntax is more similar to Vietoris-Rips and witness filtrations?




\section{Introduction}


\subsection{Javaplex}

Javaplex is a Java software package for computing the persistent homology of filtered simplicial complexes (or more generally, filtered chain complexes), with special emphasis on applications arising in topological data analysis~\citep{Javaplex}. The main author is Andrew Tausz. Javaplex is a re-write of the JPlex package, which was written by Harlan Sexton and Mikael Vejdemo--Johansson. The main motivation for the development of Javaplex was the need for a flexible platform that supported new directions of research in topological data analysis and computational persistent homology. The website for Javaplex is \url{http://appliedtopology.github.io/javaplex/}, the documentation overview is at \url{https://github.com/appliedtopology/javaplex/wiki/Overview}, and the javadoc tree for the library is at \url{http://appliedtopology.github.io/javaplex/doc/}.

This tutorial is written for those using Javaplex with Matlab. However, one can run Javaplex without Matlab; see \url{https://github.com/appliedtopology/javaplex/wiki/Interoperability}.

If you are interested in Javaplex, then there are many other software packages that you may also be interested in.
See \url{https://www.math.colostate.edu/~adams/advising/#software} for one list of applied topology software packages.

% Below link currently broken:
%Some of the exercises in this tutorial are borrowed from Vin de Silva's {\em Plexercises}, available at \url{http://comptop.stanford.edu/u/programs/Plexercises2.pdf}.

Please email Henry at \texttt{henry.adams@colostate.edu} or Andrew at \texttt{andrew.tausz@gmail.com} if you have questions about this tutorial.


\subsection{License}

Javaplex is an open source software package under the Open BSD License. The source code can be found at \url{https://github.com/appliedtopology/javaplex}.


\subsection{Installation for Matlab}
Open Matlab and check which version of Java is being used. In this tutorial, the symbol \texttt{>>} precedes commands to enter into your Matlab window.

\begin{quote} \begin{verbatim} 
>> version -java
ans = Java 1.5.0_13 with Apple Inc.   Java Hotspot(TM) Client VM mixed mode, sharing
\end{verbatim} \end{quote}

Javaplex requires version number \texttt{1.5} or higher. 

To install Javaplex for Matlab, go to the latest release at \url{https://github.com/appliedtopology/javaplex/releases/latest/}. Download the zip file containing the Matlab examples, which should be called something like \texttt{matlab-examples-4.2.3.zip}. Extract the zip file. The resulting folder should be called \texttt{matlab\_examples}; make sure you know the location of this folder and that it is not inside the zip file.

In Matlab, change Matlab's ``Current Folder" to the directory \texttt{matlab\_examples} that you just extracted from the zip file. In the Matlab command window, run the \texttt{load\_javaplex.m} file. 

\begin{quote} \begin{verbatim} 
>> load_javaplex
\end{verbatim} \end{quote}

Also in the Matlab command window, type the following command.

\begin{quote} \begin{verbatim} 
>> import edu.stanford.math.plex4.*;
\end{verbatim} \end{quote}

Installation is complete. Confirm that Javaplex is working properly with the following command.

\begin{quote} \begin{verbatim}
>> api.Plex4.createExplicitSimplexStream()
ans = edu.stanford.math.plex4.streams.impl.ExplicitSimplexStream@513fd4
\end{verbatim} \end{quote}

Your output should be the same except for the last several characters. Each time upon starting a new Matlab session, you will need to run \texttt{load\_javaplex.m}.


\subsection{Accompanying files}

The folder \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples}{\texttt{tutorial\_examples}} contains Matlab scripts, such as \\ %Space
\href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/explicit_simplex_example.m}{\texttt{explicit\_simplex\_example.m}} or \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/house_example.m}{\texttt{house\_example.m}}, which list all of the commands in this tutorial. This means that you don't need to type in each command individually. The folder \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples}{\texttt{tutorial\_examples}} also contains the Matlab data files, such as \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/pointsRange.mat}{\texttt{pointsRange.mat}} or \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/pointsTorusGrid.mat}{\texttt{pointsTorusGrid.mat}}, which are used in this tutorial. The folder \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_solutions}{\texttt{tutorial\_solutions}} contains the solution scripts, such as \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_solutions/exercise_1.m}{\texttt{exercise\_1.m}}, for all of the tutorial exercises. See Appendix~\ref{A:solutions} for exercise solutions.




\section{Math review}

Below is a brief math review. For more details, see~\citet{Armstrong},~\citet{ComputationalTopology},~\citet{TopologicalPersistence},~\citet{Hatcher}, and~\citet{ComputingPersistent}. 


\subsection{Simplicial complexes}
An abstract simplicial complex is given by the following data.
\begin{itemize}
\item A set $Z$ of vertices or 0-simplices.
\item For each $k\geq 1$, a set of $k$-simplices $\sigma = [z_0,z_1,\ldots,z_k]$, where $z_i\in Z$.
\item Each $k$-simplex has $k+1$ faces obtained by deleting one of the vertices. The following membership property must be satisfied: if $\sigma$ is in the simplicial complex, then all faces of $\sigma$ must be in the simplicial complex.
\end{itemize}
We think of 0-simplices as vertices, 1-simplices as edges, 2-simplices as triangular faces, and 3-simplices as tetrahedrons. 


\subsection{Homology}
Betti numbers help describe the homology of a simplicial complex $X$. The value $Betti_k$, where $k\in \N$, is equal to the rank of the $k$-th homology group of $X$. Roughly speaking, $Betti_k$ gives the number of $k$-dimensional holes. In particular, $Betti_0$ is the number of connected components. For instance, a $k$-dimensional sphere has all Betti numbers equal to zero except for $Betti_0 = Betti_k = 1$. 


\subsection{Filtered simplicial complexes}
A filtration on a simplicial complex $X$ is a collection of subcomplexes $\{X(t) \ |\ t\in \R\}$ of $X$ such that $X(t) \subset X(t')$ whenever $t\leq t'$. The filtration value of a simplex $\sigma \in X$ is the smallest $t$ such that $\sigma \in X(t)$. In Javaplex, filtered simplicial complexes (or more generally filtered chain complexes) are called streams. 
% Introduce filtered chain complexes?


\subsection{Persistent homology}
Betti intervals help describe how the homology of $X(t)$ changes with $t$. A $k$-dimensional Betti interval, with endpoints [$t_{start}$, $t_{end}$), corresponds roughly to a $k$-dimensional hole that appears at filtration value $t_{start}$, remains open for $t_{start} \leq t < t_{end}$, and closes at value $t_{end}$. We are often interested in Betti intervals that persist for a long filtration range. 

Persistent homology depends heavily on functoriality: for $t\leq t'$, the inclusion $i:X(t)\to X(t')$ of simplicial complexes induces a map $i_*:H_k(X(t))\to H_k(X(t'))$ between homology groups. 




\section{Explicit simplex streams}\label{S:explicitStream}

In Javaplex, filtered simplicial complexes (or more generally filtered chain complexes) are called streams. The class ExplicitSimplexStream allows one to build a simplicial complex from scratch. In Section~\ref{S:sfpc} we will learn about other automated methods of generating simplicial complexes; namely the Vietoris--Rips, witness, and lazy witness constructions. 


\subsection{Computing homology}

You should change your current Matlab directory to \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples}{\texttt{tutorial\_examples}}, perhaps using the following command.

\begin{quote} \begin{verbatim} 
>> cd tutorial_examples
\end{verbatim} \end{quote}

The Matlab script corresponding to this section is \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/explicit_simplex_example.m}{\texttt{explicit\_simplex\_example.m}}, which is in the folder \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples}{\texttt{tutorial\_examples}}. You may copy and paste commands from this script into the Matlab window, or you may run the entire script at once with the following command.

\begin{quote} \begin{verbatim} 
>> explicit_simplex_example
\end{verbatim} \end{quote}

{\em Circle example.} Let's build a simplicial complex homeomorphic to a circle. We have three 0-simplices: [0], [1], [2], and three 1-simplices: [0,1], [0,2], [1,2].

\begin{figure}[htp]
  	\begin{center}
    	\includegraphics[width=1in]{s1.pdf}
   	\end{center}
\end{figure}
\FloatBarrier

To build a simplicial complex in Javaplex we simply build a stream in which all filtration values are zero. First we create an empty explicit simplex stream. Many command lines in this tutorial will end with a semicolon to supress unwanted output.

\begin{quote} \begin{verbatim} 
>> stream = api.Plex4.createExplicitSimplexStream();
\end{verbatim} \end{quote}

Next we add simplicies using the methods \texttt{addVertex} and \texttt{addElement}. The first creates a vertex with a specified index, and the second creates a $k$-simplex (for $k >0$) with the specified array of vertices. Since we don't specify any filtration values, by default all added simplices will have filtration value zero.

\begin{quote} \begin{verbatim}
>> stream.addVertex(0);
>> stream.addVertex(1);
>> stream.addVertex(2);
>> stream.addElement([0, 1]);
>> stream.addElement([0, 2]);
>> stream.addElement([1, 2]);
>> stream.finalizeStream();
\end{verbatim} \end{quote}

After we are done building the complex, calling the method \texttt{finalizeStream} is necessary before working with this complex!

We print the total number of simplices in the complex.

\begin{quote} \begin{verbatim}
>> num_simplices = stream.getSize()
num_simplices = 6
\end{verbatim} \end{quote}

We create an object that will compute the homology of our complex. The first input parameter 3 indicates that homology will be computed in dimensions 0, 1, and 2 --- that is, in all dimensions strictly less than 3. The second input 2 means that we will compute homology with $\Z/2\Z$ coefficients, and this input can be any prime number.

\begin{quote} \begin{verbatim}
>> persistence = api.Plex4.getModularSimplicialAlgorithm(3, 2);
\end{verbatim} \end{quote}

We compute and print the intervals.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeIntervals(stream)
intervals =

Dimension: 1
[0.0, infinity)
Dimension: 0
[0.0, infinity)
\end{verbatim} \end{quote}

This gives us the expected Betti numbers $Betti_0=1$ and $Betti_1=1$.

The persistence algorithm computing intervals can also find a representative cycle for each interval. However, there is no guarantee that the produced representative will be geometrically nice.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeAnnotatedIntervals(stream)
intervals =

Dimension: 1
[0.0, infinity): [1,2] + [0,2] + [0,1]
Dimension: 0
[0.0, infinity): [0]
\end{verbatim} \end{quote}

A representative cycle generating the single 0-dimensional homology class is [0], and a representative cycle generating the single 1-dimensional homology class is [1,2] + [0,2] + [0,1].

{\em 9-sphere example.} Let's build a 9-sphere, which is homeomorphic to the boundary of a 10-simplex. First we add a single 10-simplex to an empty explicit simplex stream. The result is not a simplicial complex because it does not contain the faces of the 10-simplex. We add all faces using the method \texttt{ensureAllFaces}. Then, we remove the 10-simplex using the method \texttt{removeElementIfPresent}. What remains is the boundary of a 10-simplex, that is, a 9-sphere.

\begin{quote} \begin{verbatim}
>> dimension = 9;
>> stream = api.Plex4.createExplicitSimplexStream();
>> stream.addElement(0:(dimension + 1));
>> stream.ensureAllFaces();
>> stream.removeElementIfPresent(0:(dimension + 1));
>> stream.finalizeStream();
\end{verbatim} \end{quote}

In the above, the \texttt{finalizeStream} method is used to ensure that the stream has been fully constructed and is ready for consumption by a persistence algorithm. It should be called every time after you build an explicit simplex stream. 

We print the total number of simplices in the complex.

\begin{quote} \begin{verbatim}
>> num_simplices = stream.getSize()
num_simplices = 2046
\end{verbatim} \end{quote}

We get the persistence algorithm

\begin{quote} \begin{verbatim}
persistence = api.Plex4.getModularSimplicialAlgorithm(dimension + 1, 2);
\end{verbatim} \end{quote}

and compute and print the intervals.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeIntervals(stream)
intervals =

Dimension: 9
[0.0, infinity)
Dimension: 0
[0.0, infinity)
\end{verbatim} \end{quote}

This gives us the expected Betti numbers $Betti_0=1$ and $Betti_9=1$.

Try computing a representative cycle for each barcode.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeAnnotatedIntervals(stream)
\end{verbatim} \end{quote}

We don't display the output from this command in the tutorial, because the representative 9-cycle is very long and contains all eleven 9-simplices.

See Appendix~\ref{A:solutions} for exercise solutions. 

\begin{exercise}
Build the following simplicial complex in Javaplex.
\begin{center}
\includegraphics[width=2in]{smallSimplicialComplex.png}
\end{center}
Compute its Betti numbers (i.e.\ the ranks of its homology groups, or the number of holes it has in each dimension).
\end{exercise}

\begin{exercise}
Build a simplicial complex homeomorphic to the torus. Compute its Betti numbers. {\em Hint: You will need at least 7 vertices}~\citep[page 107]{Hatcher}{\em . We recommend using a $3\times 3$ grid of 9 vertices.} 
\end{exercise}

\begin{exercise}
Build a simplicial complex homeomorphic to the Klein bottle. Check that it has the same Betti numbers as the torus over $\Z/2\Z$ coefficients but different Betti numbers over $\Z/3\Z$ coefficients. 
\end{exercise}

\begin{exercise}
Build a simplicial complex homeomorphic to the projective plane. Find its Betti numbers over $\Z/2\Z$ and $\Z/3\Z$ coefficients. 
\end{exercise}


\subsection{Computing persistent homology}\label{S:computingPersistentHomology}

Let's build a stream with nontrivial filtration values. If your filtration values are not all integers, then please see the remark at the end of this section.

{\em House example.} The Matlab script corresponding to this section is \href{https://github.com/appliedtopology/javaplex/tree/master/src/matlab/for_distribution/tutorial_examples/house_example.m}{\texttt{house\_example.m}}.

\begin{wrapfigure}{r}{1in}
	\begin{center}
   	\includegraphics[width=1in]{houseFig.pdf}
  	\end{center}
\end{wrapfigure}

We build a house, with the vertices and edges on the square appearing at value 0, with the top vertex appearing at value 1, with the roof edges appearing at values 2 and 3, and with the roof 2-simplex appearing at value 7.

\begin{quote} \begin{verbatim}
>> stream = api.Plex4.createExplicitSimplexStream();
>> stream.addVertex(1, 0);
>> stream.addVertex(2, 0);
>> stream.addVertex(3, 0);
>> stream.addVertex(4, 0);
>> stream.addVertex(5, 1);
>> stream.addElement([1, 2], 0);
>> stream.addElement([2, 3], 0);
>> stream.addElement([3, 4], 0);
>> stream.addElement([4, 1], 0);
>> stream.addElement([3, 5], 2);
>> stream.addElement([4, 5], 3);
>> stream.addElement([3, 4, 5], 7);
>> stream.finalizeStream();
\end{verbatim} \end{quote}

We get the persistence algorithm with $\Z/2\Z$ coefficients
\begin{quote} \begin{verbatim}
>> persistence = api.Plex4.getModularSimplicialAlgorithm(3, 2);
\end{verbatim} \end{quote}

and compute the intervals.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeIntervals(stream)
intervals =

Dimension: 1
[3.0, 7.0)
[0.0, infinity)
Dimension: 0
[1.0, 2.0)
[0.0, infinity)
\end{verbatim} \end{quote}

There are four intervals. The first is a $Betti_1$ interval, starting at filtration value 3 and ending at 7, with a representative cycle formed by the three edges of the roof. This 1-dimensional hole forms when edge $[4,5]$ appears at filtration value 3 and closes when 2-simplex $[3,4,5]$ appears at filtration value 7.

We can also store the intervals as Matlab matrices.

\begin{quote} \begin{verbatim}
>> intervals_dim0 = edu.stanford.math.plex4.homology.barcodes.BarcodeUtility...
.getEndpoints(intervals, 0, 0)
intervals_dim0 =

    0    Inf
    1    2
    
>> intervals_dim1 = edu.stanford.math.plex4.homology.barcodes.BarcodeUtility...
.getEndpoints(intervals, 1, 0)
intervals_dim1 =

    0    Inf
    3    7
\end{verbatim} \end{quote}

The second input of this command is the dimension of the intervals, and the third input is a Boolean flag: 0 to include infinite intervals, and 1 to exclude infinite intervals.

We compute a representative cycle for each barcode.

\begin{quote} \begin{verbatim}
>> intervals = persistence.computeAnnotatedIntervals(stream)
intervals =

Dimension: 1
[3.0, 7.0): [4,5] + [3,4] + -[3,5]
[0.0, infinity): [1,4] + [2,3] + [1,2] + [3,4]
Dimension: 0
[1.0, 2.0): -[3] + [5]
[0.0, infinity): [1]
\end{verbatim} \end{quote}

One $Betti_0$ interval and one $Betti_1$ interval are semi-infinite. 
\begin{quote} \begin{verbatim}
>> infinite_barcodes = intervals.getInfiniteIntervals()
infinite_barcodes = 

Dimension: 1
[0.0, infinity): [1,4] + [2,3] + [1,2] + [3,4]
Dimension: 0
[0.0, infinity): [1]
\end{verbatim} \end{quote}

We can print the Betti numbers at the largest filtration value (7 in this case) as an array

\begin{quote} \begin{verbatim}
>> betti_numbers_array = infinite_barcodes.getBettiSequence()
betti_numbers_array =

    1
    1
\end{verbatim} \end{quote}

or as a list with entries of the form $k: Betti_k$.

\begin{quote} \begin{verbatim}
>> betti_numbers_string = infinite_barcodes.getBettiNumbers()
betti_numbers_string = {0: 1, 1: 1} 
\end{verbatim} \end{quote}

The Matlab function \texttt{plot\_barcodes.m} lets us display the intervals as Betti barcodes. The Matlab structure array \texttt{options} contains different options for the plot. We choose the filename \texttt{house} and we choose the maximum filtration value for the plot to be eight.
\begin{quote} \begin{verbatim}
>> options.filename = 'house';
>> options.max_filtration_value = 8;
>> plot_barcodes(intervals, options);
\end{verbatim} \end{quote}

The file \texttt{house.png} is saved to your current directory.

\begin{figure}[htp]
	\begin{center}
    	\includegraphics[width=6in]{house.png}
   	\end{center}
\end{figure}
\FloatBarrier

The filtration values are on the horizontal axis. The $Betti_k$ number of the stream at filtration value $t$ is the number of intervals in the dimension $k$ plot that intersect a vertical line through $t$. Check that the displayed intervals agree with the filtration values we built into the house stream. At value 0, a connected component and a 1-dimensional hole form. At value 1, a second connected component appears, which joins to the first at value 2. A second 1-dimensional hole forms at value 3, and closes at value 7. 

{\em Remark.} The methods \texttt{addElement} and \texttt{removeElementIfPresent} do not necessarily enforce the definition of a stream. They allow us to build inconsistent complexes in which some simplex $\sigma \in X(t)$ contains a subsimplex $\sigma' \notin X(t)$, meaning that $X(t)$ is not a simplicial complex. The method \texttt{validateVerbose} returns \texttt{1} if our stream is consistent and returns \texttt{0} with explanation if not. 

\begin{quote} \begin{verbatim}
>> stream.validateVerbose()
ans = 1
>> stream.addElement([1, 4, 5], 0);
>> stream.validateVerbose()
Filtration index of face [4,5] exceeds that of element [1,4,5] (3 > 0)
Stream does not con
Download .txt
gitextract_rvwgklfn/

├── .classpath
├── .gitignore
├── .project
├── .settings/
│   ├── org.eclipse.jdt.core.prefs
│   └── org.eclipse.jdt.ui.prefs
├── .travis.yml
├── LICENSE.md
├── README.md
├── build/
│   └── processing/
│       └── javaplex/
│           └── library.properties
├── build.number
├── build.xml
├── data/
│   ├── natural_images/
│   │   ├── n50000Dct.mat
│   │   ├── nk15c30Dct.mat
│   │   ├── nk300c30Dct.mat
│   │   └── readme_natural_images.txt
│   ├── point_clouds/
│   │   ├── circle.txt
│   │   ├── cube.txt
│   │   ├── cylinder.txt
│   │   ├── octahedron.txt
│   │   ├── sphere_rnd.txt
│   │   └── torus.txt
│   └── range_images/
│       ├── pointsRange.mat
│       └── r3_50000.mat
├── doc_includes/
│   ├── overview.htm
│   ├── overview_plex3.htm
│   └── update_mime_types.sh
├── reports/
│   └── javaplex_tutorial/
│       ├── cleanup.sh
│       ├── javaplex_tutorial.aux
│       ├── javaplex_tutorial.bbl
│       ├── javaplex_tutorial.bib
│       ├── javaplex_tutorial.blg
│       ├── javaplex_tutorial.log
│       ├── javaplex_tutorial.out
│       ├── javaplex_tutorial.tex
│       └── javaplex_tutorial.toc
├── src/
│   ├── bsh/
│   │   ├── desktop.bsh
│   │   ├── getBshPrompt.bsh
│   │   ├── makeListener.bsh
│   │   ├── makeWorkspace.bsh
│   │   └── printBanner.bsh
│   ├── cpp/
│   │   ├── Makefile
│   │   └── PLEX3/
│   │       ├── DESCRIPTION
│   │       ├── R/
│   │       │   ├── .plex.R.swp
│   │       │   ├── plex.R
│   │       │   └── zzz.R
│   │       ├── autom4te.cache/
│   │       │   ├── output.0
│   │       │   ├── requests
│   │       │   └── traces.0
│   │       ├── config.guess
│   │       ├── config.status
│   │       ├── config.sub
│   │       ├── configure
│   │       ├── configure.ac
│   │       ├── install-sh
│   │       ├── man/
│   │       │   └── rips.stream.Rd
│   │       └── src/
│   │           ├── Makevars.in
│   │           └── rbind_jni.cpp
│   ├── java/
│   │   ├── bsh/
│   │   │   ├── JPlex.java
│   │   │   ├── JTerm.java
│   │   │   ├── PlexInterpreter.java
│   │   │   ├── PlexReader.java
│   │   │   └── commands/
│   │   │       ├── log.java
│   │   │       └── setLogging.java
│   │   └── edu/
│   │       └── stanford/
│   │           └── math/
│   │               ├── clustering/
│   │               │   ├── DisjointSetSystem.java
│   │               │   ├── HierarchicalClustering.java
│   │               │   ├── LinkageTree.java
│   │               │   └── SingleLinkageClustering.java
│   │               ├── mapper/
│   │               │   ├── BoundedIntervalCover.java
│   │               │   ├── FilterFunctionUtility.java
│   │               │   ├── FiniteMetricSpaceCover.java
│   │               │   ├── HistogramCreator.java
│   │               │   ├── MapperPipeline.java
│   │               │   ├── MapperSpecifier.java
│   │               │   ├── MetricUtility.java
│   │               │   ├── RangeCoverUtility.java
│   │               │   └── SetCover1D.java
│   │               ├── plex/
│   │               │   ├── BCPlot.java
│   │               │   ├── CRC.java
│   │               │   ├── Chain.java
│   │               │   ├── Cone.java
│   │               │   ├── DiscreteSpace.java
│   │               │   ├── DistanceData.java
│   │               │   ├── EuclideanArrayData.java
│   │               │   ├── ExplicitStream.java
│   │               │   ├── LazyWitnessStream.java
│   │               │   ├── MappedBufferData.java
│   │               │   ├── Packed2Simplex.java
│   │               │   ├── Packed4Simplex.java
│   │               │   ├── Packed6Simplex.java
│   │               │   ├── Packed8Simplex.java
│   │               │   ├── Persistence.java
│   │               │   ├── PersistenceBasis.java
│   │               │   ├── PersistenceBasisInterval.java
│   │               │   ├── PersistenceInterval.java
│   │               │   ├── Plex.java
│   │               │   ├── PlexMessageWindow.java
│   │               │   ├── PlexSort.java
│   │               │   ├── PointData.java
│   │               │   ├── RDirectBufferData.java
│   │               │   ├── RipsStream.java
│   │               │   ├── Simplex.java
│   │               │   ├── SimplexFaceIterator.java
│   │               │   ├── SimplexStream.java
│   │               │   ├── SimplexTable.java
│   │               │   ├── TmpStream.java
│   │               │   ├── Torus.java
│   │               │   └── WitnessStream.java
│   │               └── plex4/
│   │                   ├── api/
│   │                   │   ├── FilteredStreamInterface.java
│   │                   │   ├── PersistenceAlgorithmInterface.java
│   │                   │   └── Plex4.java
│   │                   ├── autogen/
│   │                   │   └── homology/
│   │                   │       ├── BooleanAbsoluteHomology.java
│   │                   │       ├── BooleanClassicalHomology.java
│   │                   │       ├── BooleanPersistenceAlgorithm.java
│   │                   │       ├── BooleanPersistentHomology.java
│   │                   │       ├── BooleanRelativeHomology.java
│   │                   │       ├── IntAbsoluteHomology.java
│   │                   │       ├── IntClassicalHomology.java
│   │                   │       ├── IntPersistenceAlgorithm.java
│   │                   │       ├── IntPersistentHomology.java
│   │                   │       ├── IntRelativeHomology.java
│   │                   │       ├── ObjectAbsoluteHomology.java
│   │                   │       ├── ObjectClassicalHomology.java
│   │                   │       ├── ObjectPersistenceAlgorithm.java
│   │                   │       ├── ObjectPersistentHomology.java
│   │                   │       └── ObjectRelativeHomology.java
│   │                   ├── bottleneck/
│   │                   │   ├── BottleneckDistance.java
│   │                   │   ├── FlowEdge.java
│   │                   │   ├── FlowNetwork.java
│   │                   │   ├── FordFulkerson.java
│   │                   │   ├── FordFulkersonEdge.java
│   │                   │   ├── FordFulkersonNode.java
│   │                   │   └── WeightedBipartiteGraph.java
│   │                   ├── examples/
│   │                   │   ├── CellComplexOperations.java
│   │                   │   ├── CellStreamExamples.java
│   │                   │   ├── DeSilvaMorozovJohanssonExample.java
│   │                   │   ├── PointCloudExamples.java
│   │                   │   ├── SimplexStreamExamples.java
│   │                   │   └── SimplicialComplexOperations.java
│   │                   ├── generation/
│   │                   │   └── GeneratorDriver.java
│   │                   ├── graph/
│   │                   │   ├── AbstractUndirectedGraph.java
│   │                   │   ├── AbstractWeightedUndirectedGraph.java
│   │                   │   ├── UndirectedListEdgeIterator.java
│   │                   │   ├── UndirectedListGraph.java
│   │                   │   ├── UndirectedWeightedListGraph.java
│   │                   │   ├── io/
│   │                   │   │   └── GraphDotWriter.java
│   │                   │   ├── metric/
│   │                   │   │   ├── GraphMetricFactory.java
│   │                   │   │   └── ShortestPathMetric.java
│   │                   │   ├── random/
│   │                   │   │   ├── BAGraph.java
│   │                   │   │   ├── BinaryHierarchicalGraph.java
│   │                   │   │   ├── BinaryTree.java
│   │                   │   │   ├── BinaryTreeGraph.java
│   │                   │   │   ├── CircleGraph.java
│   │                   │   │   ├── ClusteredERGraph.java
│   │                   │   │   ├── ErdosRenyiGraph.java
│   │                   │   │   ├── ForestFireGraph.java
│   │                   │   │   ├── GraphInstanceGenerator.java
│   │                   │   │   ├── HierarchicalERGraph.java
│   │                   │   │   ├── KNearestNeighborsGraph.java
│   │                   │   │   ├── ManifoldGraph.java
│   │                   │   │   ├── PrescribedDegrees.java
│   │                   │   │   ├── RandomGeometricGraph.java
│   │                   │   │   ├── SphereGraph.java
│   │                   │   │   ├── StochasticBlockmodel.java
│   │                   │   │   └── TorusGraph.java
│   │                   │   └── utility/
│   │                   │       └── GraphUtility.java
│   │                   ├── homology/
│   │                   │   ├── barcodes/
│   │                   │   │   ├── AnnotatedBarcodeCollection.java
│   │                   │   │   ├── BarcodeCollection.java
│   │                   │   │   ├── BarcodeUtility.java
│   │                   │   │   ├── Interval.java
│   │                   │   │   ├── IntervalLengthComparator.java
│   │                   │   │   └── PersistenceInvariantDescriptor.java
│   │                   │   ├── chain_basis/
│   │                   │   │   ├── Cell.java
│   │                   │   │   ├── CellComparator.java
│   │                   │   │   ├── PrimitiveBasisElement.java
│   │                   │   │   ├── Simplex.java
│   │                   │   │   ├── SimplexComparator.java
│   │                   │   │   ├── SimplexPair.java
│   │                   │   │   └── SimplexPairComparator.java
│   │                   │   ├── filtration/
│   │                   │   │   ├── ExternalConverter.java
│   │                   │   │   ├── FiltrationConverter.java
│   │                   │   │   ├── FiltrationUtility.java
│   │                   │   │   ├── IdentityConverter.java
│   │                   │   │   ├── IncreasingLinearConverter.java
│   │                   │   │   └── StaticConverter.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractPersistenceAlgorithm.java
│   │                   │   │   └── AbstractPersistenceBasisAlgorithm.java
│   │                   │   ├── nonautogen/
│   │                   │   │   ├── DisjointSetSystem.java
│   │                   │   │   └── PersistentCohomologyPrototype.java
│   │                   │   ├── utility/
│   │                   │   │   └── HomologyUtility.java
│   │                   │   └── zigzag/
│   │                   │       ├── AbstractHomologyTracker.java
│   │                   │       ├── AbstractPersistenceTracker.java
│   │                   │       ├── BasisTrackingUtility.java
│   │                   │       ├── HomologyBasisTracker.java
│   │                   │       ├── IntervalDescriptor.java
│   │                   │       ├── IntervalTracker.java
│   │                   │       ├── SimpleHomologyBasisTracker.java
│   │                   │       ├── ZigZagHomology.java
│   │                   │       └── bootstrap/
│   │                   │           ├── InducedHomologyMappingUtility.java
│   │                   │           ├── SimplexStreamUtility.java
│   │                   │           ├── VietorisRipsBootstrapper.java
│   │                   │           └── WitnessBootstrapper.java
│   │                   ├── interop/
│   │                   │   ├── Plex3PersistenceAlgorithm.java
│   │                   │   ├── Plex3Stream.java
│   │                   │   ├── Plex3ToPlex4BarcodeAdapter.java
│   │                   │   └── Plex3ToPlex4SimplexAdapter.java
│   │                   ├── io/
│   │                   │   ├── BarcodeWriter.java
│   │                   │   ├── BufferedImageWriter.java
│   │                   │   ├── DoubleArrayReaderWriter.java
│   │                   │   ├── FileIOUtility.java
│   │                   │   ├── FileManager.java
│   │                   │   ├── MatlabInterface.java
│   │                   │   ├── MatlabWriter.java
│   │                   │   ├── ObjReader.java
│   │                   │   ├── ObjectReader.java
│   │                   │   ├── ObjectWriter.java
│   │                   │   ├── SimplexStreamReaderWriter.java
│   │                   │   └── Table.java
│   │                   ├── kd/
│   │                   │   ├── KDEuclideanMetricSpace.java
│   │                   │   ├── KDNode.java
│   │                   │   └── KDTree.java
│   │                   ├── metric/
│   │                   │   ├── impl/
│   │                   │   │   ├── EuclideanMetricSpace.java
│   │                   │   │   ├── ExplicitMetricSpace.java
│   │                   │   │   ├── ObjectSearchableFiniteMetricSpace.java
│   │                   │   │   └── TruncatedPriorityQueue.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractIntMetricSpace.java
│   │                   │   │   ├── AbstractObjectMetric.java
│   │                   │   │   ├── AbstractObjectMetricSpace.java
│   │                   │   │   └── AbstractSearchableMetricSpace.java
│   │                   │   ├── landmark/
│   │                   │   │   ├── ExplicitLandmarkSelector.java
│   │                   │   │   ├── LandmarkSelector.java
│   │                   │   │   ├── MaxMinLandmarkSelector.java
│   │                   │   │   └── RandomLandmarkSelector.java
│   │                   │   └── utility/
│   │                   │       ├── DensityEstimation.java
│   │                   │       └── MetricUtility.java
│   │                   ├── streams/
│   │                   │   ├── derived/
│   │                   │   │   ├── DualStream.java
│   │                   │   │   ├── HomStream.java
│   │                   │   │   ├── TensorStream.java
│   │                   │   │   └── TruncatedStream.java
│   │                   │   ├── filter/
│   │                   │   │   ├── EccentricityFilterFunction.java
│   │                   │   │   ├── ExplicitIntFilterFunction.java
│   │                   │   │   ├── FilterFunction.java
│   │                   │   │   ├── IntFilterFunction.java
│   │                   │   │   ├── KernelDensityFilterFunction.java
│   │                   │   │   ├── MaxSimplicialFilterFunction.java
│   │                   │   │   ├── MinSimplicialFilterFunction.java
│   │                   │   │   └── RandomProjectionFilterFunction.java
│   │                   │   ├── impl/
│   │                   │   │   ├── ExplicitCellStream.java
│   │                   │   │   ├── ExplicitSimplexStream.java
│   │                   │   │   ├── ExplicitStream.java
│   │                   │   │   ├── FlagComplexStream.java
│   │                   │   │   ├── FlexibleVietorisRipsStream.java
│   │                   │   │   ├── GeometricSimplexStream.java
│   │                   │   │   ├── LazyWitnessStream.java
│   │                   │   │   ├── VietorisRipsStream.java
│   │                   │   │   ├── WitnessBicomplex.java
│   │                   │   │   └── WitnessStream.java
│   │                   │   ├── interfaces/
│   │                   │   │   ├── AbstractFilteredStream.java
│   │                   │   │   └── PrimitiveStream.java
│   │                   │   ├── multi/
│   │                   │   │   ├── AbstractMultifilteredStream.java
│   │                   │   │   ├── AbstractStreamFlattener.java
│   │                   │   │   ├── BifilteredMetricStream.java
│   │                   │   │   ├── HalfplaneFlattener.java
│   │                   │   │   ├── IncreasingOrthantFlattener.java
│   │                   │   │   └── PrimitiveMultifilteredStream.java
│   │                   │   ├── storage_structures/
│   │                   │   │   ├── HashedStorageStructure.java
│   │                   │   │   ├── HashedStorageStructureIterator.java
│   │                   │   │   ├── IntOrderedIterator.java
│   │                   │   │   ├── SortedStorageStructure.java
│   │                   │   │   ├── StreamStorageStructure.java
│   │                   │   │   └── StreamStorageStructureFactory.java
│   │                   │   └── utility/
│   │                   │       ├── FilteredComparator.java
│   │                   │       ├── SkeletalMetric.java
│   │                   │       └── StreamUtility.java
│   │                   ├── utility/
│   │                   │   ├── ArrayUtility.java
│   │                   │   ├── CollectionUtility.java
│   │                   │   ├── ComparisonUtility.java
│   │                   │   ├── ExceptionUtility.java
│   │                   │   ├── FormalSumUtility.java
│   │                   │   ├── MathUtility.java
│   │                   │   ├── MemoryUtility.java
│   │                   │   ├── Quicksort.java
│   │                   │   └── RandomUtility.java
│   │                   └── visualization/
│   │                       ├── AbstractVisualizer.java
│   │                       ├── BarcodeVisualizer.java
│   │                       ├── HomologyGeneratorVisualizer.java
│   │                       ├── HomologyVisualizer.java
│   │                       ├── ImageRegion.java
│   │                       ├── PAppletSplitscreen.java
│   │                       ├── Point2D.java
│   │                       └── PointCloudScaling.java
│   ├── matlab/
│   │   ├── experimental/
│   │   │   ├── graph_classification/
│   │   │   │   ├── ad_health_example.m
│   │   │   │   ├── ad_health_plot.m
│   │   │   │   ├── average_block_matrix.m
│   │   │   │   ├── blockmodel_er_test.m
│   │   │   │   ├── blockmodel_test.m
│   │   │   │   ├── blockmodel_test2.m
│   │   │   │   ├── comparative_barcode_analysis.m
│   │   │   │   ├── comparative_graph_analysis.m
│   │   │   │   ├── comprehensive_test.m
│   │   │   │   ├── compute_adjacency_matrix.m
│   │   │   │   ├── compute_normalized_laplacian.m
│   │   │   │   ├── create_graph_from_edgelist.m
│   │   │   │   ├── er_test.m
│   │   │   │   ├── er_test_increasing_sizes.m
│   │   │   │   ├── filter_distance_matrix.m
│   │   │   │   ├── get_adhealth_edges16.m
│   │   │   │   ├── get_adhealth_edges44.m
│   │   │   │   ├── get_adhealth_edges47.m
│   │   │   │   ├── heatmap.m
│   │   │   │   ├── heatmap_examples.m
│   │   │   │   ├── hetergeneous_test.m
│   │   │   │   ├── pairwise_barcode_analysis.m
│   │   │   │   ├── pairwise_graph_analysis.m
│   │   │   │   ├── pairwise_row_distances.m
│   │   │   │   ├── plot_example.m
│   │   │   │   ├── plot_graph.m
│   │   │   │   ├── random_geometric_graph.m
│   │   │   │   ├── random_geometric_test.m
│   │   │   │   ├── rg_plot_example.m
│   │   │   │   ├── sandbox.m
│   │   │   │   ├── spectral_embedding.m
│   │   │   │   ├── torus_geometric.m
│   │   │   │   ├── visualize_comparison_distances.m
│   │   │   │   └── visualize_dissimilarity_matrix.m
│   │   │   ├── hom/
│   │   │   │   ├── combinatorial/
│   │   │   │   │   ├── brute_force_test.m
│   │   │   │   │   ├── flip_random_entry.m
│   │   │   │   │   ├── get_binary_subsets.m
│   │   │   │   │   ├── greedy_search.m
│   │   │   │   │   ├── greedy_search_test.m
│   │   │   │   │   ├── hom_parameterization_example.m
│   │   │   │   │   ├── simmulated_annealing_test.m
│   │   │   │   │   └── simulated_annealing.m
│   │   │   │   ├── continuous/
│   │   │   │   │   ├── circle_example.m
│   │   │   │   │   ├── create_max_lp.m
│   │   │   │   │   ├── create_positive_lp.m
│   │   │   │   │   ├── create_positive_lp2.m
│   │   │   │   │   └── tetra_octa_example.m
│   │   │   │   ├── hom_utility/
│   │   │   │   │   ├── compute_mapping.m
│   │   │   │   │   ├── default_objective.m
│   │   │   │   │   └── hom_parameterization.m
│   │   │   │   └── load_hom.m
│   │   │   ├── hom_messy/
│   │   │   │   ├── L2_distance.m
│   │   │   │   ├── alexander_whitney_difference.m
│   │   │   │   ├── alexander_whitney_loss_function.m
│   │   │   │   ├── circle_distance.m
│   │   │   │   ├── codomain_points.txt
│   │   │   │   ├── codomain_stream.txt
│   │   │   │   ├── colorGraph.m
│   │   │   │   ├── compute_interpolated_points.m
│   │   │   │   ├── compute_mapping.m
│   │   │   │   ├── convert_sparse_matrix.m
│   │   │   │   ├── create_max_lp.m
│   │   │   │   ├── create_positive_lp.m
│   │   │   │   ├── create_quotient_complex.m
│   │   │   │   ├── create_quotient_mapper_complex.m
│   │   │   │   ├── density_at_point.m
│   │   │   │   ├── density_function.m
│   │   │   │   ├── density_maximization_test.m
│   │   │   │   ├── density_objective.m
│   │   │   │   ├── domain_points.txt
│   │   │   │   ├── domain_stream.txt
│   │   │   │   ├── embedding_optimization_test.asv
│   │   │   │   ├── embedding_optimization_test.m
│   │   │   │   ├── embedding_optimization_test2.m
│   │   │   │   ├── fast_kron_mult.m
│   │   │   │   ├── flatten.m
│   │   │   │   ├── floyd_warshall.m
│   │   │   │   ├── gaussian_kernel_densities.m
│   │   │   │   ├── gaussian_kernel_density.m
│   │   │   │   ├── get_edges.m
│   │   │   │   ├── gradient.m
│   │   │   │   ├── graph_embedding.m
│   │   │   │   ├── hom_example_test.m
│   │   │   │   ├── hom_optimization_example.m
│   │   │   │   ├── hom_parameterization.m
│   │   │   │   ├── hom_visualization_example.m
│   │   │   │   ├── kron_test.m
│   │   │   │   ├── load_javaplex.m
│   │   │   │   ├── mapper.m
│   │   │   │   ├── mapperTutorial.m
│   │   │   │   ├── mapper_mapping_test.m
│   │   │   │   ├── mapping.txt
│   │   │   │   ├── matrix.txt
│   │   │   │   ├── normalize_rows.m
│   │   │   │   ├── objectivize.m
│   │   │   │   ├── pdist2.m
│   │   │   │   ├── returnBarCode_linkage_noplex.m
│   │   │   │   ├── show_graph.m
│   │   │   │   ├── smoothness_objective.m
│   │   │   │   ├── test_aw_optimization.m
│   │   │   │   ├── to_graph.m
│   │   │   │   ├── to_sparse_matlab_matrix.m
│   │   │   │   ├── unflatten.m
│   │   │   │   └── writeDotFile.m
│   │   │   ├── multifiltration_flattening/
│   │   │   │   ├── Syn2d_5g1k3c.mat
│   │   │   │   ├── Syn2d_5g1k3c_c1.txt
│   │   │   │   ├── clustering_example.m
│   │   │   │   └── flattened_clusters.eps
│   │   │   ├── vietoris_rips_bootstrap/
│   │   │   │   ├── basic_circle_example.m
│   │   │   │   ├── basic_sphere_example.m
│   │   │   │   ├── circle_incremental.m
│   │   │   │   ├── circle_long.m
│   │   │   │   ├── coreSubset.m
│   │   │   │   ├── core_subset_test.m
│   │   │   │   ├── core_verification_test.m
│   │   │   │   ├── ensure_density_indices.m
│   │   │   │   ├── figure_8_incremental.m
│   │   │   │   ├── filtered_barcodes.m
│   │   │   │   ├── filtered_bootstrap.m
│   │   │   │   ├── gaussian_kernel_densities.m
│   │   │   │   ├── gaussian_kernel_density.m
│   │   │   │   ├── get_cache_file_path.m
│   │   │   │   ├── get_core_subset_cached.m
│   │   │   │   ├── get_data_file_path.m
│   │   │   │   ├── kDensitySlow.m
│   │   │   │   ├── load_density_indices.m
│   │   │   │   ├── natural_samples_bootstrap_example.m
│   │   │   │   ├── natural_samples_example.m
│   │   │   │   ├── nk15c30Dct_LW0.m
│   │   │   │   ├── nk15c30Dct_LW1.m
│   │   │   │   ├── nk15c30Dct_VR.m
│   │   │   │   ├── nk300c30Dct_LW0.m
│   │   │   │   ├── nk300c30Dct_LW1.m
│   │   │   │   ├── nk300c30Dct_VR.m
│   │   │   │   ├── outputs/
│   │   │   │   │   ├── n50000Dct-15-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-300-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-10-20-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-13-17-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-15-45-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-15-450-15-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-2-400-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-25-350-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-300-350-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-400-800-25-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-100-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-25-1-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-400-5-15000-1.100.eps
│   │   │   │   │   ├── n50000Dct-samples-5-50-5-15000-1.100.eps
│   │   │   │   │   └── nk300c30Dct_LW0.eps
│   │   │   │   └── parfor_test.m
│   │   │   └── witness_bootstrap/
│   │   │       ├── circle_example.m
│   │   │       ├── circle_incremental.m
│   │   │       ├── circle_pairwise.m
│   │   │       ├── figure8_example.m
│   │   │       ├── figure8_incremental.m
│   │   │       ├── figure8_pairwise.m
│   │   │       ├── figure8_samples.m
│   │   │       ├── image_patch_examples.m
│   │   │       └── torus_example.m
│   │   └── for_distribution/
│   │       ├── README
│   │       ├── basic_examples/
│   │       │   ├── barcode_plot_example.m
│   │       │   ├── boundary_extraction_example.m
│   │       │   ├── cellular_test.m
│   │       │   ├── dump_example.m
│   │       │   ├── endpoint_extraction_example.m
│   │       │   ├── ensure_faces_test.m
│   │       │   ├── explicit_metric_space_test.m
│   │       │   ├── explicit_simplex_test.m
│   │       │   ├── explicit_simplex_test2.m
│   │       │   ├── filter_long_intervals.m
│   │       │   ├── house_example_test.m
│   │       │   ├── landmark_test.m
│   │       │   ├── representatives_example.m
│   │       │   ├── simplicial_sphere_test.m
│   │       │   ├── sphere_test.m
│   │       │   └── vietoris_rips_example.m
│   │       ├── benchmarks/
│   │       │   └── rips_persistence.m
│   │       ├── jython/
│   │       │   ├── basic_vr_example.jy
│   │       │   ├── cellular_example.jy
│   │       │   ├── explicit_simplex_example.jy
│   │       │   ├── image_patch_example.jy
│   │       │   ├── pointsRange.csv
│   │       │   ├── quick_povray.sh
│   │       │   ├── representatives_example.jy
│   │       │   ├── sphere_witness_example.jy
│   │       │   ├── torus_witness_example.jy
│   │       │   └── visualization_example.jy
│   │       ├── load_javaplex.m
│   │       ├── tutorial_examples/
│   │       │   ├── bottleneck_distance_example.m
│   │       │   ├── coreSubset.m
│   │       │   ├── core_subsets_example.m
│   │       │   ├── cyclo_octane_example.m
│   │       │   ├── dct.m
│   │       │   ├── eulerCharacteristic.m
│   │       │   ├── euler_characteristic_example.m
│   │       │   ├── explicit_metric_space_example.m
│   │       │   ├── explicit_simplex_example.m
│   │       │   ├── house_example.m
│   │       │   ├── kDensitySlow.m
│   │       │   ├── landmark_example.m
│   │       │   ├── lazy_witness_example.m
│   │       │   ├── optical_image_example.m
│   │       │   ├── pointcloud_example.m
│   │       │   ├── pointsCycloOctane.mat
│   │       │   ├── pointsOpticalDct_k15.mat
│   │       │   ├── pointsOpticalDct_k300.mat
│   │       │   ├── pointsRange.mat
│   │       │   ├── pointsTorusGrid.mat
│   │       │   ├── range_image_example.m
│   │       │   ├── rips_example.m
│   │       │   ├── sublevelset_example.m
│   │       │   ├── sublevelset_persistence.m
│   │       │   └── witness_example.m
│   │       ├── tutorial_solutions/
│   │       │   ├── exercise_1.m
│   │       │   ├── exercise_11.m
│   │       │   ├── exercise_12.m
│   │       │   ├── exercise_13.m
│   │       │   ├── exercise_14.m
│   │       │   ├── exercise_2.m
│   │       │   ├── exercise_21.m
│   │       │   ├── exercise_22.m
│   │       │   ├── exercise_23.m
│   │       │   ├── exercise_24.m
│   │       │   ├── exercise_3.m
│   │       │   ├── exercise_4.m
│   │       │   ├── exercise_5.m
│   │       │   ├── exercise_6.m
│   │       │   ├── exercise_7.m
│   │       │   ├── exercise_8.m
│   │       │   ├── exercise_9.m
│   │       │   ├── flatKleinDistanceMatrix.m
│   │       │   ├── flatTorusDistanceMatrix.m
│   │       │   ├── getDoubleTorusPoints.m
│   │       │   └── projPlaneDistanceMatrix.m
│   │       ├── utility/
│   │       │   ├── convert_sparse_matrix.m
│   │       │   ├── create_landmark_pov_file.m
│   │       │   ├── create_pov_file.m
│   │       │   ├── flatten.m
│   │       │   ├── persistence_diagram.m
│   │       │   ├── plot_barcodes.m
│   │       │   ├── render_onscreen.m
│   │       │   ├── render_pov_file.m
│   │       │   └── to_sparse_matlab_matrix.m
│   │       └── visualization_examples/
│   │           ├── landmark_set_pov.m
│   │           ├── witness_sphere_opengl.m
│   │           └── witness_sphere_pov.m
│   └── processing/
│       ├── javaplex/
│       │   └── library.properties
│       ├── javaplexDemo/
│       │   ├── State.java
│       │   └── javaplexDemo.pde
│       └── readme.txt
├── src_test/
│   └── java/
│       └── edu/
│           └── stanford/
│               └── math/
│                   ├── mapper/
│                   │   ├── ClusteringTest.java
│                   │   ├── HistogramTest.java
│                   │   └── MapperTest.java
│                   ├── plex/
│                   │   ├── CRCTest.java
│                   │   ├── ChainTest.java
│                   │   ├── CubeHashTest.java
│                   │   ├── ExplicitStreamTest.java
│                   │   ├── LazyWitnessStreamTest.java
│                   │   ├── MappedBufferDataTest.java
│                   │   ├── Packed2SimplexTest.java
│                   │   ├── Packed4SimplexTest.java
│                   │   ├── Packed6SimplexTest.java
│                   │   ├── PersistenceBasisTest.java
│                   │   ├── PersistenceIntervalTest.java
│                   │   ├── PersistenceTest.java
│                   │   ├── PlexSortTest.java
│                   │   ├── PlexTest.java
│                   │   ├── RipsStreamTest.java
│                   │   ├── SimplexFaceIteratorTest.java
│                   │   ├── SimplexTableTest.java
│                   │   ├── SimplexTest.java
│                   │   ├── TorusTest.java
│                   │   └── WitnessStreamTest.java
│                   └── plex4/
│                       ├── bottleneck/
│                       │   ├── BottleneckDistanceTest.java
│                       │   └── FordFulkersonTest.java
│                       ├── example_tests/
│                       │   ├── CustomFiltrationTest.java
│                       │   ├── FiltrationTimeTest.java
│                       │   ├── FormalSumTest.java
│                       │   ├── GraphTest.java
│                       │   ├── HomVerificationTest.java
│                       │   ├── MultifilteredFlatteningTest.java
│                       │   ├── VdsWitnessExample.java
│                       │   ├── VietorisRipsBootstrapTest.java
│                       │   ├── WitnessBootstrapTest.java
│                       │   └── ZigZagTest.java
│                       ├── homology/
│                       │   ├── HomTester.java
│                       │   ├── PersistenceAlgorithmTester.java
│                       │   └── StreamTester.java
│                       ├── metric/
│                       │   └── SearchableMetricSpaceTester.java
│                       ├── test_utility/
│                       │   └── Timing.java
│                       └── unit_tests/
│                           ├── DeSilvaMorozovJohanssonTest.java
│                           ├── ExperimentalEqualityTest.java
│                           ├── PersistenceAlgorithmEqualityTest.java
│                           ├── SearchableMetricSpaceTest.java
│                           ├── SimplicialSphereTest.java
│                           └── StreamsTest.java
└── templates/
    └── homology/
        ├── AbsoluteHomology.vm
        ├── ClassicalHomology.vm
        ├── PersistenceAlgorithm.vm
        ├── PersistentHomology.vm
        └── RelativeHomology.vm
Download .txt
Showing preview only (254K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2711 symbols across 281 files)

FILE: src/cpp/PLEX3/src/rbind_jni.cpp
  function intmap_keycompare (line 16) | bool intmap_keycompare(std::pair<int, T> a, std::pair<int, T> b)
  function SEXP (line 43) | SEXP init_java(SEXP classpath) {
  function SEXP (line 117) | SEXP R_exception()
  function matrix_finalizer (line 132) | static void matrix_finalizer(SEXP handle)
  function java_data_ref_finalizer (line 138) | static void java_data_ref_finalizer(SEXP handle)
  function java_stream_ref_finalizer (line 145) | static void java_stream_ref_finalizer(SEXP handle)
  function jobject (line 153) | jobject create_direct_buffer(SEXP matrix, SEXP buflen)
  function SEXP (line 192) | SEXP register_stream(jobject stream)
  function SEXP (line 223) | SEXP register_pointdata(jobject pdata)
  function SEXP (line 254) | SEXP make_internal_distance_array(SEXP dmatrix, SEXP buflen)
  function SEXP (line 272) | SEXP random_euclidean_array_data(SEXP count, SEXP dim)
  function SEXP (line 287) | SEXP make_random_landmarks(SEXP pdata_handle, SEXP landmark_count)
  function SEXP (line 314) | SEXP estimate_r_max(SEXP pdata_handle, SEXP landmarks)
  function SEXP (line 347) | SEXP filter_infinite(SEXP intervals, SEXP intervalcount)
  function SEXP (line 377) | SEXP create_lw_stream_from_handle(SEXP pdata_handle, SEXP granularity, S...
  function SEXP (line 400) | SEXP create_rips_stream(SEXP pdata_handle, SEXP delta, SEXP max_len, SEX...
  function SEXP (line 415) | SEXP create_explicit_stream()
  function SEXP (line 425) | SEXP open_ex_stream(SEXP streamid)
  function SEXP (line 440) | SEXP close_ex_stream(SEXP streamid)
  function SEXP (line 454) | SEXP add_simplex(SEXP streamid, SEXP vertices, SEXP param)
  function SEXP (line 476) | SEXP remove_simplex(SEXP streamid, SEXP vertices)
  function SEXP (line 498) | SEXP get_intervals_from_stream(SEXP streamid)
  function add_class (line 533) | int add_class(std::string classname, std::string classpath) {
  function add_method (line 550) | int add_method(std::string classname, std::string methodname, std::strin...

FILE: src/java/bsh/JPlex.java
  class JPlex (line 37) | public class JPlex {
    method main (line 43) | public static void main( String args[] ) {

FILE: src/java/bsh/JTerm.java
  class JTerm (line 36) | public class JTerm {
    method main (line 42) | public static void main( String args[] ) {

FILE: src/java/bsh/PlexInterpreter.java
  class PlexInterpreter (line 37) | public class PlexInterpreter extends Interpreter {
    method PlexInterpreter (line 49) | public PlexInterpreter(ConsoleInterface console, String name) {
    method PlexInterpreter (line 60) | public PlexInterpreter(String name) {
    method setLogfile (line 69) | public void setLogfile(String logfile_name) {
    method enableLogging (line 78) | public void enableLogging() {
    method logStatus (line 87) | public String logStatus() {
    method disableLogging (line 98) | public void disableLogging() {

FILE: src/java/bsh/PlexReader.java
  class PlexReader (line 45) | public class PlexReader extends FilterReader {
    class Error (line 53) | private static final class Error extends IOException {
      method Error (line 55) | @SuppressWarnings("unused")
      method Error (line 59) | public Error(String message) {
    class ContinuableError (line 65) | private static final class ContinuableError extends IOException {
      method ContinuableError (line 67) | @SuppressWarnings("unused")
      method ContinuableError (line 71) | public ContinuableError(String message) {
    class FatalError (line 77) | private static final class FatalError extends IOException {
      method FatalError (line 79) | @SuppressWarnings("unused")
      method FatalError (line 83) | public FatalError(String message) {
    class CharQ (line 95) | private static final class CharQ {
      method CharQ (line 101) | public CharQ() {
      method reset (line 107) | private void reset() {
      method ensureSpace (line 112) | private final void ensureSpace(int need) {
      method add (line 135) | @SuppressWarnings("unused")
      method bulkAdd (line 141) | public final void bulkAdd(char[] b, int pos, int len) {
      method toString (line 148) | public final String toString() {
      method available (line 155) | public final int available() {
      method hasNext (line 159) | public final boolean hasNext() {
      method char_to_hex (line 163) | static final int char_to_hex(char c) throws FatalError {
      method next (line 175) | public final char next() throws Error {
      method peek (line 182) | public final char peek() throws Error {
      method current (line 189) | public final int current() {
      method rewind (line 193) | public final void rewind(int new_first) {
      method convertNext (line 200) | public final char convertNext() throws Error, ContinuableError, Fata...
    method PlexReader (line 258) | public PlexReader(Reader in, String ws_name) {
    method reset_log_data (line 270) | private void reset_log_data() {
    method log (line 282) | static Reader log(Reader in, String ws_name) {
    method log (line 305) | static Reader log(InputStream in, String ws_name) {
    method createNewFile (line 320) | private static File createNewFile(String prefix,
    method enable (line 341) | public void enable(String log_name) throws IOException {
    method enable (line 361) | final void enable() {
    method disable (line 380) | final void disable() {
    method setLogfile (line 393) | public void setLogfile (String new_log_name) {
    method flush (line 424) | private boolean flush() {
    method convertInput (line 446) | private void convertInput() {
    method log (line 474) | private void log(char[] buf, int off, int len) {
    method read (line 490) | public int read(char[] buf, int off, int len) throws IOException {
    method setDefaultFlag (line 504) | public static void setDefaultFlag(boolean flag) {
    method log_status (line 513) | public String log_status() {
    method setDefaultDir (line 543) | public static void setDefaultDir(String pathname) {

FILE: src/java/bsh/commands/log.java
  class log (line 39) | public class log
    method usage (line 41) | public static String usage() {
    method invoke (line 50) | public static String invoke(Interpreter env, CallStack callstack){
    method invoke (line 61) | public static void invoke(Interpreter env, CallStack callstack, String...
    method invoke (line 72) | public static void invoke(Interpreter env, CallStack callstack,

FILE: src/java/bsh/commands/setLogging.java
  class setLogging (line 38) | public class setLogging
    method usage (line 40) | public static String usage() {
    method invoke (line 48) | public static void invoke(Interpreter env, CallStack callstack, String...
    method invoke (line 55) | public static void invoke(Interpreter env, CallStack callstack,

FILE: src/java/edu/stanford/math/clustering/DisjointSetSystem.java
  class DisjointSetSystem (line 3) | public class DisjointSetSystem {
    method DisjointSetSystem (line 7) | public DisjointSetSystem(int n) {
    method union (line 16) | public void union(int x, int y) {
    method find (line 33) | public int find(int x) {
    method size (line 39) | public int size() {

FILE: src/java/edu/stanford/math/clustering/HierarchicalClustering.java
  class HierarchicalClustering (line 13) | public abstract class HierarchicalClustering {
    method HierarchicalClustering (line 21) | public HierarchicalClustering(AbstractIntMetricSpace metricSpace) {
    method getMergedDistances (line 26) | public double[] getMergedDistances() {
    method getImpliedClusters (line 30) | public static List<Set<Integer>> getImpliedClusters(DisjointSetSystem ...
    method getImpliedClustersTrove (line 48) | public static List<TIntHashSet> getImpliedClustersTrove(DisjointSetSys...
    method thresholdByDistance (line 66) | public DisjointSetSystem thresholdByDistance(double maxDistance) {
    method thresholdByNumClusters (line 81) | public DisjointSetSystem thresholdByNumClusters(int numClusters) {
    method performClustering (line 102) | public abstract void performClustering();

FILE: src/java/edu/stanford/math/clustering/LinkageTree.java
  class LinkageTree (line 3) | public class LinkageTree {

FILE: src/java/edu/stanford/math/clustering/SingleLinkageClustering.java
  class SingleLinkageClustering (line 5) | public class SingleLinkageClustering extends HierarchicalClustering {
    method SingleLinkageClustering (line 7) | public SingleLinkageClustering(AbstractIntMetricSpace metricSpace) {
    method performClustering (line 11) | public void performClustering() {

FILE: src/java/edu/stanford/math/mapper/BoundedIntervalCover.java
  class BoundedIntervalCover (line 9) | public class BoundedIntervalCover implements Iterable<Interval<Double>> {
    method BoundedIntervalCover (line 15) | public BoundedIntervalCover(double min, double max, int n, double over...
    method initialize (line 24) | void initialize() {
    method iterator (line 36) | public Iterator<Interval<Double>> iterator() {

FILE: src/java/edu/stanford/math/mapper/FilterFunctionUtility.java
  class FilterFunctionUtility (line 4) | public class FilterFunctionUtility {

FILE: src/java/edu/stanford/math/mapper/FiniteMetricSpaceCover.java
  class FiniteMetricSpaceCover (line 9) | public class FiniteMetricSpaceCover implements Iterable<TIntHashSet> {
    method FiniteMetricSpaceCover (line 13) | public FiniteMetricSpaceCover(IntFilterFunction filter, AbstractIntMet...
    method iterator (line 19) | public Iterator<TIntHashSet> iterator() {

FILE: src/java/edu/stanford/math/mapper/HistogramCreator.java
  class HistogramCreator (line 3) | public class HistogramCreator {
    method HistogramCreator (line 10) | HistogramCreator(double[] values, int numBins) {
    method performBinning (line 19) | protected int[] performBinning() {
    method getMin (line 36) | protected double getMin() {
    method getMax (line 46) | protected double getMax() {
    method getCounts (line 56) | public int[] getCounts() {
    method getBinLattice (line 60) | protected double[] getBinLattice(double offset) {
    method getBinStartingPoints (line 75) | public double[] getBinStartingPoints() {
    method getBinEndingPoints (line 79) | public double[] getBinEndingPoints() {
    method getBinMidPoints (line 83) | public double[] getBinMidPoints() {
    method getBinStartPoint (line 87) | public double getBinStartPoint(int binIndex) {
    method getBinLatticePoint (line 91) | public double getBinLatticePoint(int binIndex, double offset) {
    method getLastZeroBinIndex (line 100) | public int getLastZeroBinIndex() {
    method generateString (line 109) | protected String generateString(int maxHistogramStars) {
    method repeatString (line 154) | protected static String repeatString(String s, int n) {
    method toString (line 158) | @Override

FILE: src/java/edu/stanford/math/mapper/MapperPipeline.java
  class MapperPipeline (line 18) | public class MapperPipeline {
    method producePartialClustering (line 19) | public static List<TIntHashSet> producePartialClustering(IntFilterFunc...
    method intersectionGraph (line 60) | public static AbstractWeightedUndirectedGraph intersectionGraph(List<T...
    method pullUpIndices (line 80) | protected static TIntHashSet pullUpIndices(TIntHashSet subIndices, TIn...

FILE: src/java/edu/stanford/math/mapper/MapperSpecifier.java
  class MapperSpecifier (line 3) | public class MapperSpecifier {
    method create (line 8) | public static MapperSpecifier create() {
    method numIntervals (line 12) | MapperSpecifier numIntervals(int numIntervals) {
    method overlap (line 17) | MapperSpecifier overlap(double overlap) {
    method numHistogramBuckets (line 22) | MapperSpecifier numHistogramBuckets(int numHistogramBuckets) {

FILE: src/java/edu/stanford/math/mapper/MetricUtility.java
  class MetricUtility (line 6) | public class MetricUtility {
    method createSubMetricSpace (line 7) | public static AbstractIntMetricSpace createSubMetricSpace(final Abstra...
    method createSubMetricSpace (line 21) | public static AbstractIntMetricSpace createSubMetricSpace(final Abstra...

FILE: src/java/edu/stanford/math/mapper/RangeCoverUtility.java
  class RangeCoverUtility (line 6) | public class RangeCoverUtility {
    method createUniformIntervalCover (line 8) | public static Iterable<Interval<Double>> createUniformIntervalCover(In...

FILE: src/java/edu/stanford/math/mapper/SetCover1D.java
  class SetCover1D (line 20) | public class SetCover1D implements Iterable<TIntHashSet> {
    method SetCover1D (line 25) | public SetCover1D(IntFilterFunction filter, Iterable<Interval<Double>>...
    method initialize (line 33) | void initialize() {
    method iterator (line 50) | public Iterator<TIntHashSet> iterator() {

FILE: src/java/edu/stanford/math/plex/BCPlot.java
  class BCPlot (line 44) | public class BCPlot extends JPanel {
    method getMaxDisplayableBars (line 152) | public int getMaxDisplayableBars(){
    method setMajorLegend (line 159) | protected void setMajorLegend(String s){
    method BCPlot (line 163) | protected BCPlot() {
    method BCPlot (line 168) | protected BCPlot(double[][] values, double upperBound, boolean forceSc...
    method illegal_interval_string (line 240) | protected static String illegal_interval_string(int i, double a, doubl...
    method validate (line 249) | protected void validate(double[][] numbers, double upperBound) {
    method initJFrame (line 273) | protected void initJFrame(){
    method createMenuBar (line 310) | protected JMenuBar createMenuBar() {
    method getFormats (line 340) | protected String[] getFormats() {
    class fileSaveMenuHandler (line 352) | protected class fileSaveMenuHandler extends AbstractAction {
      method fileSaveMenuHandler (line 354) | protected fileSaveMenuHandler(String text, ImageIcon icon,
      method actionPerformed (line 364) | public void actionPerformed(ActionEvent e) {
    class DrawingPane (line 387) | protected class DrawingPane extends JPanel {
      method DrawingPane (line 397) | protected DrawingPane(){
      method paintComponent (line 457) | protected void paintComponent(Graphics g) {
      method drawGridLines (line 583) | protected void drawGridLines(Graphics g){
      method drawRuler (line 628) | protected void drawRuler(Graphics g, int position){
      method centerText (line 826) | protected void centerText(String s1, Font f1, FontMetrics m1, Color ...
      method saveImage (line 902) | protected void saveImage(File file, String format){
    class Ruler (line 940) | protected class Ruler extends JComponent {
      method Ruler (line 944) | protected Ruler(DrawingPane bc) {
      method paintComponent (line 949) | protected void paintComponent(Graphics g) {
    method plot (line 964) | protected static void plot(String legend, double[][] values,
    method doPlot (line 996) | public static void doPlot(String label, double[][] intervals, double u...
    method doScatter (line 1020) | public static void doScatter(String label, double[][] intervals, doubl...

FILE: src/java/edu/stanford/math/plex/CRC.java
  class CRC (line 8) | public class CRC {
    method CRC (line 10) | private CRC() {
    method update32l (line 368) | protected static int update32l(long b, int hcode, int[] tbl) {
    method update32 (line 381) | protected static int update32(byte b, int hcode, int[] tbl) {
    method update32 (line 395) | protected static int update32(short s, int hcode, int[] tbl) {
    method update32 (line 410) | protected static int update32(int i, int hcode, int[] tbl) {
    method update32 (line 427) | protected static int update32(long l, int hcode, int[] tbl) {
    method update64l (line 449) | protected static long update64l(long b, long hcode, long[] tbl) {
    method update64 (line 462) | protected static long update64(byte b, long hcode, long[] tbl) {
    method update64 (line 476) | protected static long update64(short s, long hcode, long[] tbl) {
    method update64 (line 491) | protected static long update64(int i, long hcode, long[] tbl) {
    method update64 (line 508) | protected static long update64(long l, long hcode, long[] tbl) {
    method hash64 (line 528) | protected static long hash64(byte[] v) {
    method hash64 (line 544) | public static long hash64(short[] v) {
    method update_hash (line 561) | public static long update_hash(int x, long hcode) {
    method update_hash (line 574) | public static long update_hash(long x, long hcode) {
    method hash64 (line 586) | public static long hash64(int[] v) {
    method hash64 (line 602) | public static long hash64(float[] v) {
    method hash64 (line 619) | public static long hash64(long[] v) {
    method hash64 (line 635) | public static long hash64(double[] v) {
    method hash32 (line 652) | public static int hash32(byte[] v) {
    method hash32 (line 668) | public static int hash32(short[] v) {
    method hash32 (line 684) | public static int hash32(int[] v) {
    method hash32 (line 700) | public static int hash32(float[] v) {
    method hash32 (line 717) | public static int hash32(long[] v) {
    method hash32 (line 733) | public static int hash32(double[] v) {
    method hash32 (line 753) | public static int hash32(double[][] A, int rows, int cols) {
    method hash64 (line 776) | public static long hash64(long x, long initial) {
    method hash32 (line 796) | public static int hash32(long x, int initial) {

FILE: src/java/edu/stanford/math/plex/Chain.java
  class Chain (line 27) | public class Chain {
    method maxS (line 56) | public Simplex maxS() {
    method maxC (line 66) | public int maxC() {
    method Chain (line 71) | public Chain (int modulus, int[] cvec, Simplex[] elts) {
    method Chain (line 79) | public Chain (int modulus) {
    method Chain (line 85) | public Chain (int modulus, int coeff, Simplex elt) {
    method zero (line 96) | public static Chain zero(int modulus) {
    method isZero (line 102) | public static boolean isZero(Chain c) {
    method isZero (line 119) | public boolean isZero() {
    method mergeBasisElts (line 125) | protected Chain mergeBasisElts(Simplex[] first, int[] fc,
    method add (line 217) | public Chain add(Chain x, int c) {
    method normalize (line 226) | protected static Chain normalize(Simplex[] s, int[] c, int p) {
    method chain_sort (line 260) | protected static void chain_sort (Simplex[] b, int[] c) {
    method alternatingCoefficients (line 276) | protected static int[] alternatingCoefficients(int mod, int len) {
    method fromBoundary (line 296) | static Chain fromBoundary(Simplex[] boundary, int p) {
    method rewriteModP (line 310) | public int rewriteModP(int elt) {
    method toString (line 320) | public String toString() {
    method filter (line 348) | public Chain filter(SimplexTable simplexList) {
    method filter (line 377) | public Chain filter(List<Simplex> simplexList) {
    method coefficientOf (line 407) | public int coefficientOf(Simplex s) {
    method boundary (line 426) | Chain boundary(int p) {
    method ceq (line 465) | boolean ceq(Chain c) {
    method equals (line 483) | public boolean equals(Chain c) {
    method HashCode (line 493) | public int HashCode() {
    method random (line 503) | static Chain random(int p) {
    method s_and_c_okay (line 532) | static protected boolean s_and_c_okay (Simplex[] s, int[] c, int p) {

FILE: src/java/edu/stanford/math/plex/Cone.java
  class Cone (line 14) | public class Cone extends SimplexStream {
    method Cone (line 27) | public Cone(SimplexStream sstr) {
    method hasNext (line 36) | public boolean hasNext() {
    method next (line 43) | public Simplex next() {
    method size (line 75) | public int size() {
    method maxDimension (line 78) | public int maxDimension() {
    method iterator (line 82) | public Iterator<Simplex> iterator() {

FILE: src/java/edu/stanford/math/plex/DiscreteSpace.java
  class DiscreteSpace (line 9) | public class DiscreteSpace extends PointData {
    method count (line 20) | public int count() {
    method distance (line 33) | public double distance (int p1, int p2) {
    method DiscreteSpace (line 41) | public DiscreteSpace(int N) {

FILE: src/java/edu/stanford/math/plex/DistanceData.java
  class DistanceData (line 10) | public class DistanceData extends PointData {
    method count (line 22) | public int count() {
    method distance (line 38) | public double distance (int p1, int p2) {
    method DistanceData (line 48) | public DistanceData(double[][] data) {

FILE: src/java/edu/stanford/math/plex/EuclideanArrayData.java
  class EuclideanArrayData (line 17) | public class EuclideanArrayData extends PointData.NSpace {
    method dimension (line 29) | public int dimension() {
    method count (line 40) | public int count() {
    method distance (line 56) | public double distance (int p1, int p2) {
    method coordinate (line 85) | public double coordinate (int p, int i) {
    method get_pt (line 102) | public double[] get_pt (int p, double[] vec) {
    method pointsAreConsistent (line 111) | protected boolean pointsAreConsistent(double[] data, int dimension) {
    method pointsAreConsistent (line 127) | protected boolean pointsAreConsistent(double[][] data) {
    method EuclideanArrayData (line 151) | protected EuclideanArrayData() {
    method EuclideanArrayData (line 165) | public EuclideanArrayData(double[] data, int dimension) {
    method EuclideanArrayData (line 182) | public EuclideanArrayData(double[][] data) {
    method EuclideanArrayData (line 195) | public EuclideanArrayData(int num_pts, int dimension) {
    method EuclideanArrayData (line 210) | public EuclideanArrayData(int num_pts, int dimension, double min, doub...

FILE: src/java/edu/stanford/math/plex/ExplicitStream.java
  class ExplicitStream (line 41) | public class ExplicitStream extends SimplexStream {
    class DComplex (line 98) | public static class DComplex {
      method DComplex (line 114) | public DComplex(ExplicitStream parent, int dimension, int[][] C, dou...
      method parent_is_consistent (line 123) | protected boolean parent_is_consistent() {
      method hasNext (line 135) | public boolean hasNext() {
      method next (line 149) | public DComplex next() {
      method parent (line 163) | public ExplicitStream parent() {
      method dimension (line 173) | public int dimension() {
      method C (line 184) | public int[][] C() {
      method F (line 195) | public double[] F() {
    method dump (line 209) | public DComplex dump(int dim) {
    method hasNext (line 233) | public boolean hasNext() {
    method skip_to_next_index_pair (line 251) | protected void skip_to_next_index_pair() {
    method next (line 267) | public Simplex next() {
    method toDouble (line 276) | public static double[] toDouble(int[] in) {
    method toDouble (line 287) | public static double[][] toDouble(int[][] in) {
    method toInt (line 298) | public static int[] toInt(double[] in) {
    method toInt (line 309) | protected static int[][] toInt(double[][] in) {
    method ExplicitStream (line 325) | public ExplicitStream() {
    method open (line 340) | protected void open() {
    method makeExplicit (line 371) | public static ExplicitStream makeExplicit(SimplexStream str) {
    method remove (line 400) | public void remove(int[] vertices) {
    method prune (line 414) | public void prune(int[] vertices) {
    method remove (line 447) | public void remove(double[] vertices) {
    method prune (line 458) | public void prune(double[] vertices) {
    method remove (line 468) | public void remove(int[][] simplex_array) {
    method prune (line 480) | public void prune(int[][] simplex_array) {
    method remove (line 492) | public void remove(double[][] simplex_array) {
    method prune (line 502) | public void prune(double[][] simplex_array) {
    method add (line 507) | protected void add(Simplex s, double p) {
    method add (line 529) | public void add(int[] vertices, double parameter) {
    method add (line 543) | public void add(double[] vertices, double parameter) {
    method add (line 555) | public void add(int[][] simplex_array, double[] parray) {
    method add (line 573) | public void add(double[][] simplex_array, double[] parray) {
    method ensure_faces (line 580) | protected void ensure_faces(Simplex s, Double P, HashMap<Simplex,Doubl...
    method ensure_all_faces (line 607) | public void ensure_all_faces() {
    method ensure_length (line 625) | protected int[] ensure_length(int[] v, int index) {
    method message (line 635) | protected void message(String msg) {
    method faces_are_consistent (line 647) | protected boolean faces_are_consistent(Simplex s, Double P,
    method verify (line 704) | public boolean verify() {
    method verify (line 717) | public boolean verify(boolean verbose) {
    method close (line 739) | public void close() {
    method size (line 801) | public int size() {
    method maxDimension (line 825) | public int maxDimension() {
    method convert_filtration_index (line 846) | public double convert_filtration_index(int fi) {
    method iterator (line 858) | public Iterator<Simplex> iterator() {
    method iterator (line 871) | public Iterator<Simplex> iterator(int d) {
    class ExplicitStreamIterator (line 880) | protected static class ExplicitStreamIterator implements Iterator<Simp...
      method ExplicitStreamIterator (line 887) | protected ExplicitStreamIterator(ExplicitStream str) {
      method ExplicitStreamIterator (line 895) | protected ExplicitStreamIterator(ExplicitStream str, int dimension) {
      method skip_to_next_index_pair (line 910) | protected void skip_to_next_index_pair() {
      method parent_is_consistent (line 920) | protected boolean parent_is_consistent() {
      method has_next_index (line 930) | protected boolean has_next_index() {
      method hasNext (line 945) | public boolean hasNext() {
      method next (line 961) | public Simplex next() {
      method remove (line 979) | public void remove() {
    method enclose (line 992) | public static ExplicitStream enclose (Simplex[][] complex) {

FILE: src/java/edu/stanford/math/plex/LazyWitnessStream.java
  class LazyWitnessStream (line 29) | public class LazyWitnessStream extends SimplexStream {
    method hasNext (line 51) | public boolean hasNext() {
    method next (line 63) | public Simplex next() {
    method LazyWitnessStream (line 91) | LazyWitnessStream(double delta, int max_d, double R, int nu, int[] lan...
    method size (line 111) | public int size() {
    method maxDimension (line 123) | public int maxDimension() {
    method convert_filtration_index (line 138) | public double convert_filtration_index(int fi) {
    method iterator (line 153) | public Iterator<Simplex> iterator() {
    method LazyWitnessStream (line 158) | protected LazyWitnessStream() {
    method find_simplices (line 173) | protected SimplexStream.Stack find_simplices(double delta, double R_ma...

FILE: src/java/edu/stanford/math/plex/MappedBufferData.java
  class MappedBufferData (line 19) | public class MappedBufferData extends PointData.NSpace {
    method dimension (line 34) | public int dimension() {
    method start (line 45) | public int start() {
    method stop (line 56) | public int stop() {
    method count (line 67) | public int count() {
    method distance (line 83) | public double distance (int p1, int p2) {
    method get_pt (line 111) | public double[] get_pt (int p, double[] vec) {
    method set_pt (line 129) | public double[] set_pt (int p, double[] vec) {
    method coordinate (line 147) | public double coordinate (int p, int i) {
    method set_coordinate (line 165) | public double set_coordinate (int p, int i, double v) {
    method force (line 182) | public void force () {
    method MappedBufferData (line 189) | protected MappedBufferData() {
    method file_exists (line 199) | protected static boolean file_exists(String filename, boolean andWrite...
    method delete (line 212) | public static void delete(String filename) {
    method make_empty_file (line 220) | protected static void make_empty_file(String filename, int bytes) {
    method empty_dbl_file (line 242) | protected static MappedByteBuffer empty_dbl_file(String filename, int ...
    method map_file (line 251) | protected static MappedByteBuffer map_file(String filename, boolean wr...
    method buf_is_consistent (line 269) | protected boolean buf_is_consistent(DoubleBuffer buf, int dimension,
    method MappedBufferData (line 287) | public MappedBufferData(String filename, int length, int dimension,
    method MappedBufferData (line 309) | public MappedBufferData(String filename, int start_dimension,
    method MappedBufferData (line 341) | public MappedBufferData(String filename) {
    method MappedBufferData (line 346) | public MappedBufferData(String filename, boolean writable) {
    method MappedBufferData (line 351) | public MappedBufferData(String filename, int start_dimension) {
    method MappedBufferData (line 356) | public MappedBufferData(String filename, int num_pts, int dimension,
    method MappedBufferData (line 377) | public MappedBufferData(String filename, int num_pts,

FILE: src/java/edu/stanford/math/plex/Packed2Simplex.java
  class Packed2Simplex (line 13) | public class Packed2Simplex extends Simplex {
    method checkConstants (line 23) | static boolean checkConstants() {
    method v1 (line 30) | protected int v1() {
    method v2 (line 35) | protected int v2() {
    method Packed2Simplex (line 41) | protected Packed2Simplex() {
    method Packed2Simplex (line 46) | protected Packed2Simplex(long bits) {
    method check_2_vertices (line 50) | protected static boolean check_2_vertices(int[] v) {
    method assert_2_vertices (line 61) | protected static void assert_2_vertices(int[] v) {
    method Packed2Simplex (line 72) | protected Packed2Simplex(int v1) {
    method Packed2Simplex (line 76) | Packed2Simplex(int v1, int v2) {
    method hashCode (line 88) | public int hashCode() {
    method equals (line 101) | public boolean equals(Object obj) {
    method compareTo (line 109) | protected int compareTo(Packed2Simplex s) {
    method compareTo (line 126) | public int compareTo(Simplex s) {
    method slt (line 142) | boolean slt(Simplex s) {
    method seq (line 160) | boolean seq(Simplex s) {
    method copy (line 175) | public Simplex copy() {
    method dimension (line 188) | public int dimension() {
    method vertices (line 206) | public int[] vertices() {
    method vertices (line 234) | public int[] vertices(int[] verts) {
    method makeSimplex (line 250) | public static Simplex makeSimplex(int[] vertices) {
    method makeSimplexPresorted (line 263) | public static Simplex makeSimplexPresorted(int[] vertices) {
    method makeEdge (line 275) | public static Simplex makeEdge(int v1, int v2) {
    method makePoint (line 287) | public static Simplex makePoint(int v) {
    method boundaryArray (line 305) | public Simplex[] boundaryArray() {

FILE: src/java/edu/stanford/math/plex/Packed4Simplex.java
  class Packed4Simplex (line 13) | public class Packed4Simplex extends Simplex {
    method checkConstants (line 24) | static boolean checkConstants() {
    method v1 (line 31) | protected int v1() {
    method v2 (line 36) | protected int v2() {
    method v3 (line 41) | protected int v3() {
    method v4 (line 46) | protected int v4() {
    method Packed4Simplex (line 52) | protected Packed4Simplex() {
    method Packed4Simplex (line 58) | protected Packed4Simplex(long bits_lo, long bits_hi) {
    method check_4_vertices (line 63) | protected static boolean check_4_vertices(int[] v) {
    method assert_4_vertices (line 75) | protected static void assert_4_vertices(int[] v) {
    method Packed4Simplex (line 86) | protected Packed4Simplex(int v1, int v2, int v3) {
    method Packed4Simplex (line 92) | Packed4Simplex(int v1, int v2, int v3, int v4) {
    method hashCode (line 106) | public int hashCode() {
    method equals (line 119) | public boolean equals(Object obj) {
    method compareTo (line 127) | protected int compareTo(Packed4Simplex s) {
    method compareTo (line 148) | public int compareTo(Simplex s) {
    method slt (line 164) | boolean slt(Simplex s) {
    method seq (line 187) | boolean seq(Simplex s) {
    method copy (line 202) | public Simplex copy() {
    method dimension (line 215) | public int dimension() {
    method vertices (line 231) | public int[] vertices() {
    method vertices (line 258) | public int[] vertices(int[] verts) {
    method makeSimplex (line 274) | public static Simplex makeSimplex(int[] vertices) {
    method makeSimplexPresorted (line 285) | public static Simplex makeSimplexPresorted(int[] vertices) {
    method boundaryArray (line 304) | public Simplex[] boundaryArray() {

FILE: src/java/edu/stanford/math/plex/Packed6Simplex.java
  class Packed6Simplex (line 13) | public class Packed6Simplex extends Simplex {
    method checkConstants (line 25) | static boolean checkConstants() {
    method check_6_vertices (line 31) | protected static boolean check_6_vertices(int[] v) {
    method assert_6_vertices (line 44) | protected static void assert_6_vertices(int[] v) {
    method p6_v_to_l_lo (line 54) | protected static long p6_v_to_l_lo(int[] vertices) {
    method p6_v_to_l_mid (line 60) | protected static long p6_v_to_l_mid(int[] vertices) {
    method p6_v_to_l_hi (line 66) | protected static long p6_v_to_l_hi(int[] vertices) {
    method v6 (line 74) | protected int v6() {
    method v5 (line 79) | protected int v5() {
    method v4 (line 84) | protected int v4() {
    method v3 (line 89) | protected int v3() {
    method v2 (line 94) | protected int v2() {
    method v1 (line 99) | protected int v1() {
    method Packed6Simplex (line 106) | protected Packed6Simplex() {
    method Packed6Simplex (line 113) | protected Packed6Simplex(long bits_lo_val, long bits_mid_val, long bit...
    method Packed6Simplex (line 121) | Packed6Simplex(int v1, int v2, int v3, int v4, int v5) {
    method Packed6Simplex (line 127) | Packed6Simplex(int v1, int v2, int v3, int v4, int v5, int v6) {
    method hashCode (line 143) | public int hashCode() {
    method equals (line 156) | public boolean equals(Object obj) {
    method compareTo (line 164) | protected int compareTo(Packed6Simplex s) {
    method compareTo (line 189) | public int compareTo(Simplex s) {
    method slt (line 205) | boolean slt(Simplex s) {
    method seq (line 231) | boolean seq(Simplex s) {
    method copy (line 246) | public Simplex copy() {
    method dimension (line 259) | public int dimension() {
    method vertices (line 275) | public int[] vertices() {
    method vertices (line 305) | public int[] vertices(int[] verts) {
    method makeSimplex (line 324) | public static Simplex makeSimplex(int[] vertices) {
    method makeSimplexPresorted (line 333) | public static Simplex makeSimplexPresorted(int[] vertices) {
    method boundaryArray (line 350) | public Simplex[] boundaryArray() {

FILE: src/java/edu/stanford/math/plex/Packed8Simplex.java
  class Packed8Simplex (line 13) | public class Packed8Simplex extends Simplex {
    method checkConstants (line 26) | static boolean checkConstants() {
    method check_8_vertices (line 32) | protected static boolean check_8_vertices(int[] v) {
    method assert_8_vertices (line 46) | protected static void assert_8_vertices(int[] v) {
    method p8_v_to_l_lo (line 56) | protected static long p8_v_to_l_lo(int[] vertices) {
    method p8_v_to_l_lo_mid (line 62) | protected static long p8_v_to_l_lo_mid(int[] vertices) {
    method p8_v_to_l_hi_mid (line 68) | protected static long p8_v_to_l_hi_mid(int[] vertices) {
    method p8_v_to_l_hi (line 74) | protected static long p8_v_to_l_hi(int[] vertices) {
    method v8 (line 82) | protected int v8() {
    method v7 (line 87) | protected int v7() {
    method v6 (line 92) | protected int v6() {
    method v5 (line 97) | protected int v5() {
    method v4 (line 102) | protected int v4() {
    method v3 (line 107) | protected int v3() {
    method v2 (line 112) | protected int v2() {
    method v1 (line 117) | protected int v1() {
    method Packed8Simplex (line 124) | protected Packed8Simplex() {
    method Packed8Simplex (line 132) | protected Packed8Simplex(long bits_lo_val, long bits_lo_mid_val,
    method Packed8Simplex (line 142) | protected Packed8Simplex(int v1, int v2, int v3, int v4, int v5, int v6,
    method Packed8Simplex (line 151) | protected Packed8Simplex(int v1, int v2, int v3, int v4, int v5, int v6,
    method hashCode (line 169) | public int hashCode() {
    method equals (line 185) | public boolean equals(Object obj) {
    method compareTo (line 194) | protected int compareTo(Packed8Simplex s) {
    method compareTo (line 223) | public int compareTo(Simplex s) {
    method slt (line 242) | boolean slt(Simplex s) {
    method seq (line 275) | boolean seq(Simplex s) {
    method copy (line 291) | public Simplex copy() {
    method dimension (line 304) | public int dimension() {
    method vertices (line 320) | public int[] vertices() {
    method vertices (line 353) | public int[] vertices(int[] verts) {
    method makeSimplex (line 374) | public static Simplex makeSimplex(int[] vertices) {
    method makeSimplexPresorted (line 384) | public static Simplex makeSimplexPresorted(int[] vertices) {
    method boundaryArray (line 402) | public Simplex[] boundaryArray() {

FILE: src/java/edu/stanford/math/plex/Persistence.java
  class Persistence (line 25) | public class Persistence {
    method baseModulus (line 38) | public static int baseModulus() {
    method setBaseModulus (line 47) | public static void setBaseModulus(int modulus) {
    method multiplicative_inverses (line 55) | private static int[] multiplicative_inverses(int p) {
    method removePivotRows (line 80) | private Chain removePivotRows(Simplex sigma) {
    method cycleSpaceDimension (line 128) | public int cycleSpaceDimension() {
    method computeIntervals (line 140) | public PersistenceInterval.Float[] computeIntervals(SimplexStream stre...
    method computeIntervals (line 154) | public PersistenceInterval.Float[] computeIntervals(SimplexStream stream,
    method computeRawIntervals (line 178) | public PersistenceInterval[] computeRawIntervals (SimplexStream stream,

FILE: src/java/edu/stanford/math/plex/PersistenceBasis.java
  class PersistenceBasis (line 17) | public class PersistenceBasis {
    method baseModulus (line 25) | public static int baseModulus() {
    method setBaseModulus (line 34) | public static void setBaseModulus(int modulus) {
    method multiplicative_inverses (line 42) | protected static int[] multiplicative_inverses(int p) {
    method boundaryMatrix (line 69) | public static double[][] boundaryMatrix(SimplexStream stream, double f...
    method boundaryMatrixSparse (line 115) | public static double[][] boundaryMatrixSparse(SimplexStream stream, do...
    method chainVector (line 170) | public static double[] chainVector(SimplexStream stream, Chain chain, ...
    method basis (line 193) | public static int[][] basis(SimplexStream stream, int degree, double f...
    method computeIntervals (line 226) | public static PersistenceBasisInterval.Float[]
    method computeIntervals (line 247) | public static PersistenceBasisInterval.Float[]
    method computeIntervals (line 271) | public PersistenceBasisInterval.Float[]
    type SimplexType (line 291) | protected enum SimplexType {
    method computeRawIntervals (line 294) | public PersistenceBasisInterval[]
    class ListItem (line 421) | protected static class ListItem {
    method computePersistentCohomologyZigZag (line 436) | public static PersistenceBasisInterval[] computePersistentCohomologyZi...
    method computePersistentCohomologyZigZag (line 562) | public static PersistenceBasisInterval[] computePersistentCohomologyZi...

FILE: src/java/edu/stanford/math/plex/PersistenceBasisInterval.java
  class PersistenceBasisInterval (line 11) | abstract public class PersistenceBasisInterval
    method infiniteExtent (line 26) | public abstract boolean infiniteExtent();
    method toDouble (line 34) | public abstract double[] toDouble();
    method basis (line 42) | public abstract Chain basis();
    method toPersistenceInterval (line 50) | public abstract PersistenceInterval toPersistenceInterval();
    method PersistenceBasisInterval (line 53) | protected PersistenceBasisInterval(int d) {
    method toString (line 64) | public String toString() {
    class Int (line 74) | public static class Int extends PersistenceBasisInterval {
      method Int (line 82) | protected Int() { super(0); start = 0; end = 0; basisElement = null; }
      method Int (line 84) | public Int(Chain basisElement, int start, int end) {
      method Int (line 92) | public Int(Chain basisElement, int start) {
      method infiniteExtent (line 106) | public boolean infiniteExtent() {
      method toString (line 116) | public String toString() {
      method toPersistenceInterval (line 125) | public PersistenceInterval toPersistenceInterval() {
      method toDouble (line 136) | public double[] toDouble() {
      method basis (line 149) | public Chain basis() {
      method hashCode (line 160) | public int hashCode() {
      method equals (line 175) | public boolean equals(Object obj) {
      method compareTo (line 193) | public int compareTo(PersistenceBasisInterval p) {
    class Float (line 206) | public static class Float extends PersistenceBasisInterval {
      method Float (line 214) | protected Float() { super(0); start = 0; end = 0; basisElement = nul...
      method Float (line 216) | public Float(Chain basisElement, double start, double end) {
      method Float (line 224) | public Float(Chain basisElement, double start) {
      method infiniteExtent (line 238) | public boolean infiniteExtent() {
      method toString (line 248) | public String toString() {
      method toPersistenceInterval (line 257) | public PersistenceInterval toPersistenceInterval() {
      method toDouble (line 268) | public double[] toDouble() {
      method basis (line 281) | public Chain basis() {
      method hashCode (line 292) | public int hashCode() {
      method equals (line 307) | public boolean equals(Object obj) {
      method compareTo (line 325) | public int compareTo(PersistenceBasisInterval p) {

FILE: src/java/edu/stanford/math/plex/PersistenceInterval.java
  class PersistenceInterval (line 11) | abstract public class PersistenceInterval implements Comparable<Persiste...
    method infiniteExtent (line 25) | public abstract boolean infiniteExtent();
    method toDouble (line 33) | public abstract double[] toDouble();
    method PersistenceInterval (line 36) | private PersistenceInterval(int d) {
    method toString (line 47) | public String toString() {
    class Int (line 57) | public static class Int extends PersistenceInterval {
      method Int (line 66) | public Int(int dimension, int start, int end) {
      method Int (line 73) | public Int(int dimension, int start) {
      method infiniteExtent (line 86) | public boolean infiniteExtent() {
      method toString (line 96) | public String toString() {
      method toDouble (line 109) | public double[] toDouble() {
      method hashCode (line 123) | public int hashCode() {
      method equals (line 138) | public boolean equals(Object obj) {
      method compareTo (line 155) | public int compareTo(PersistenceInterval p) {
    class Float (line 168) | public static class Float extends PersistenceInterval {
      method Float (line 177) | public Float(int dimension, double start, double end) {
      method Float (line 184) | public Float(int dimension, double start) {
      method infiniteExtent (line 197) | public boolean infiniteExtent() {
      method toString (line 207) | public String toString() {
      method toDouble (line 220) | public double[] toDouble() {
      method hashCode (line 234) | public int hashCode() {
      method equals (line 249) | public boolean equals(Object obj) {
      method compareTo (line 266) | public int compareTo(PersistenceInterval p) {

FILE: src/java/edu/stanford/math/plex/Plex.java
  class Plex (line 26) | public class Plex {
    method intersection_count (line 34) | public static int intersection_count(int[] v1, int[] v2) {
    method sorted_intersection_count (line 74) | public static int sorted_intersection_count(int[] v1, int[] v2) {
    method random_subset (line 131) | public static void random_subset(int[] set, int set_size,
    method random_subset (line 160) | public static void random_subset(int[] set, int[] subset) {
    method random_subset (line 172) | public static void random_subset(int N, int[] subset, int subset_size) {
    method random_subset (line 193) | public static void random_subset(int N, int[] subset) {
    method is_permutation (line 198) | protected static boolean is_permutation (int[] perm) {
    method random_permutation (line 215) | public static void random_permutation(int[] perm) {
    method toString (line 238) | public static String toString(int[] x, int max_entries) {
    method toString (line 259) | public static String toString(int[] x) {
    method toString (line 270) | public static String toString(byte[] x, int max_entries) {
    method toString (line 291) | public static String toString(byte[] x) {
    method toString (line 302) | public static String toString(int[][] x, int max_entries) {
    method toString (line 322) | public static String toString(int[][] x) {
    method toString (line 333) | public static String toString(double[] x, int max_entries) {
    method toString (line 354) | public static String toString(double[] x) {
    method toString (line 366) | public static String toString(double[][] x, int max_entries) {
    method toString (line 387) | public static String toString(double[][] x) {
    method toString (line 400) | public static String toString(long[] x, int max_entries) {
    method toString (line 417) | public static String toString(long[] x) {
    method random_index_subset (line 430) | public static void random_index_subset(int N, int[] subset, int subset...
    method comparePtArrays (line 458) | static int comparePtArrays (int[] pts1, int[] pts2) {
    method equalPtArrays (line 470) | static boolean equalPtArrays (int[] pts1, int[] pts2) {
    method firstSmallerPtIndex (line 488) | protected static int firstSmallerPtIndex (int arg, int lo, int[] pts) {
    method ptArrayIsSubset (line 520) | protected static boolean ptArrayIsSubset (int[] ipts, int[] jpts) {
    class BettiNumbers (line 546) | public static class BettiNumbers {
      method init_okay (line 550) | static protected boolean init_okay(int[] init) {
      method BettiNumbers (line 561) | protected BettiNumbers() { numbers = null; }
      method BettiNumbers (line 570) | public BettiNumbers(int[] init) {
      method toString (line 584) | public String toString() {
      method equals (line 600) | public boolean equals(Object obj) {
    method FilterInfinite (line 615) | public static BettiNumbers FilterInfinite(PersistenceInterval[] coll) {
    method FilterInfinite (line 636) | public static BettiNumbers FilterInfinite(PersistenceBasisInterval[] c...
    method SimplexStack (line 662) | public static SimplexStream.Stack SimplexStack(int max_findex, int max...
    method Persistence (line 675) | public static Persistence Persistence () {
    method PersistenceBasis (line 688) | public static PersistenceBasis PersistenceBasis () {
    method EuclideanArrayData (line 703) | public static EuclideanArrayData  EuclideanArrayData(int num_pts, int ...
    method EuclideanArrayData (line 717) | public static EuclideanArrayData EuclideanArrayData(double[] data, int...
    method EuclideanArrayData (line 730) | public static EuclideanArrayData EuclideanArrayData(double[][] data) {
    method EuclideanArrayData (line 744) | public static EuclideanArrayData EuclideanArrayData(String filename) {
    method readMatrix (line 756) | public static double[][] readMatrix(Reader input) {
    method readMatrix (line 816) | public static double[][] readMatrix(String inputFilename) {
    method d_okay (line 838) | protected static boolean d_okay(double[][] d) {
    method DistanceData (line 855) | public static DistanceData  DistanceData(double[][] d) {
    method Torus (line 868) | public static Torus Torus (int n, int d) {
    method RipsStream (line 882) | public static RipsStream RipsStream(double delta, int max_d,
    method ExplicitStream (line 893) | public static ExplicitStream ExplicitStream() {
    method makeExplicit (line 905) | public static ExplicitStream makeExplicit(SimplexStream str) {
    method SimplexTable (line 921) | public static SimplexTable SimplexTable (int limit) {
    method WitnessStream (line 938) | public static WitnessStream WitnessStream(double delta, int max_d, dou...
    method LazyWitnessStream (line 958) | public static LazyWitnessStream LazyWitnessStream(double delta, int ma...
    method filter_pintervals (line 965) | protected static PersistenceInterval.Float[] filter_pintervals
    method equalPersistenceIntervals (line 994) | public static boolean equalPersistenceIntervals(PersistenceInterval.Fl...
    method normalizeUpperBound (line 1017) | protected static double normalizeUpperBound(double arg) {
    method printable_intervals (line 1041) | protected static double[][][] printable_intervals(PersistenceInterval[...
    method plot (line 1093) | public static void plot(PersistenceInterval[] arg, String label, doubl...
    method plot (line 1113) | public static void plot(PersistenceBasisInterval[] arg,
    method scatter (line 1132) | public static void scatter(PersistenceInterval[] arg, String label, do...
    method scatter (line 1152) | public static void scatter(PersistenceBasisInterval[] arg,
    method useMessageWindow (line 1169) | public static void useMessageWindow(boolean flag) {
    method useMessageWindow (line 1179) | public static boolean useMessageWindow() {
    method messageWindow (line 1190) | public static PlexMessageWindow messageWindow(String title) {
    method main (line 1205) | public static void main(String[] args) {

FILE: src/java/edu/stanford/math/plex/PlexMessageWindow.java
  class PlexMessageWindow (line 20) | public class PlexMessageWindow {
    method PlexMessageWindow (line 34) | public PlexMessageWindow(String title) {
    method message (line 56) | public void message(String messageString) {

FILE: src/java/edu/stanford/math/plex/PlexSort.java
  class PlexSort (line 9) | public class PlexSort {
    class Comp (line 25) | public static abstract class Comp {
      method fn (line 36) | public abstract int fn(int i, int j);
    class CompL (line 39) | public static abstract class CompL {
      method fn (line 50) | public abstract int fn(long i, long j);
    class CompObj (line 53) | public static abstract class CompObj {
      method fn (line 64) | public abstract int fn(Object o1 , Object o2);
    method swap (line 68) | private static void swap(int[] x, int i, int j) {
    method med3 (line 75) | private static int med3(int[] x, int a, int b, int c, Comp comp) {
    method swapfunc (line 85) | private static void swapfunc(int[] x, int i, int j, int len) {
    method swap (line 97) | private static void swap(long[] x, int i, int j) {
    method med3 (line 104) | private static int med3(long[] x, int a, int b, int c, CompL comp) {
    method swapfunc (line 114) | private static void swapfunc(long[] x, int i, int j, int len) {
    method swap (line 126) | private static void swap(Object[] x, int i, int j) {
    method med3 (line 133) | private static int med3(Object[] x, int a, int b, int c, CompObj comp) {
    method swapfunc (line 143) | private static void swapfunc(Object[] x, int i, int j, int len) {
    method comp_sort (line 172) | public static void comp_sort(int[] x, int start, int len, Comp comp) {
    method comp_sort (line 245) | public static void comp_sort(long[] x, int start, int len, CompL comp) {
    method comp_sort (line 318) | public static void comp_sort(Object[] x, int start, int len, CompObj c...
    method sort (line 398) | public static void sort(int[] indices, int start, int end,
    method sort (line 417) | public static void sort(int[] indices, int start, int end,
    method sort (line 446) | public static void sort(int[] indices, final int[] vals, boolean rever...
    method sort (line 450) | public static void sort(int[] indices, final int[] vals) {
    method reverse_sort (line 454) | public static void reverse_sort(int[] indices, final int[] vals) {
    method sort (line 458) | public static void sort(int[] indices, final double[] vals, boolean re...
    method sort (line 462) | public static void sort(int[] indices, final double[] vals) {
    method reverse_sort (line 466) | public static void reverse_sort(int[] indices, final double[] vals) {

FILE: src/java/edu/stanford/math/plex/PointData.java
  class PointData (line 12) | public abstract class PointData {
    method distance (line 25) | abstract public double distance(int p1, int p2);
    method count (line 38) | abstract public int count();
    method good_enough_point (line 51) | boolean good_enough_point (int pt, int[] other_pts, int other_pts_coun...
    method random_points (line 66) | public int[] random_points(int number_of_points) {
    class NSpace (line 102) | public abstract static class NSpace extends PointData {
      method dimension (line 109) | abstract public int dimension();
      method coordinate (line 110) | abstract public double coordinate(int p, int i);
      method xi (line 111) | public double xi(int p, int i) {
    class Discrete (line 116) | public static class Discrete extends PointData {
      class DSS (line 119) | protected static class DSS extends SimplexStream {
        method hasNext (line 124) | public boolean hasNext() {
        method next (line 128) | public Simplex next() {
        method size (line 132) | public int size() {
        method maxDimension (line 136) | public int maxDimension() {
        method iterator (line 148) | public Iterator<Simplex> iterator() {
        method DSS (line 152) | protected DSS() {
        method DSS (line 157) | public DSS(SimplexStream s, int n, int max_d) {
      method distance (line 173) | public double distance(int p1, int p2) {
      method count (line 191) | public int count() {
      method Discrete (line 195) | protected Discrete() {
      method Discrete (line 205) | public Discrete(int n) {
      method DSphere (line 215) | public static SimplexStream DSphere(int d) {
      method DSphereKskeleton (line 223) | public static SimplexStream DSphereKskeleton(int d, int k) {
    class Predicate (line 235) | public static abstract class Predicate {
      method data (line 244) | abstract public PointData data();
      method use (line 255) | abstract public boolean use(int i);

FILE: src/java/edu/stanford/math/plex/RDirectBufferData.java
  class RDirectBufferData (line 13) | public class RDirectBufferData extends PointData {
    method RDirectBufferData (line 34) | public RDirectBufferData(int count, ByteBuffer buf) {
    method distance (line 54) | public double distance(int p1, int p2) {
    method count (line 60) | public int count() {

FILE: src/java/edu/stanford/math/plex/RipsStream.java
  class RipsStream (line 20) | public class RipsStream extends SimplexStream {
    method hasNext (line 74) | public boolean hasNext() {
    method next (line 85) | public Simplex next() {
    method RipsStream (line 101) | RipsStream(double delta, int max_d, double max_length, PointData data) {
    method size (line 117) | public int size() {
    method maxDimension (line 128) | public int maxDimension() {
    method convert_filtration_index (line 141) | public double convert_filtration_index(int fi) {
    method iterator (line 157) | public Iterator<Simplex> iterator() {
    method iterator (line 170) | public Iterator<Simplex> iterator(int d) {
    method matchingSimplices (line 183) | public Simplex[] matchingSimplices(int dimension, int test_index,
    method matchingSimplices (line 231) | public Simplex[] matchingSimplices(int dimension, double test_len,
    method RipsStream (line 264) | protected RipsStream() {
    method edge_index (line 277) | static int edge_index(int i, int j, int n) {
    method check_edge_index (line 283) | static boolean check_edge_index(int n) {
    method all_edges_present (line 304) | static int all_edges_present(int[] verts,
    method find_simplices (line 341) | protected SimplexStream.Stack find_simplices(double max_dist,

FILE: src/java/edu/stanford/math/plex/Simplex.java
  class Simplex (line 56) | abstract public class Simplex implements Comparable<Simplex> {
    method setfindex (line 81) | public int setfindex (int i) {
    method decrement_findex (line 97) | public int decrement_findex () {
    method setChain (line 114) | public Chain setChain (Chain c) {
    method clearChain (line 128) | public void clearChain () {
    method findex (line 140) | public int findex () {
    method chain (line 152) | public Chain chain () {
    method dimension (line 164) | abstract public int dimension();
    method copy (line 174) | abstract public Simplex copy();
    method vertices (line 184) | abstract public int[] vertices();
    method vertices (line 196) | abstract public int[] vertices(int verts[]);
    method subset (line 208) | public boolean subset(Simplex s) {
    method subset (line 229) | public boolean subset(Simplex s, int[] v, int[] sv) {
    method hashCode (line 258) | public int hashCode() {
    method equals (line 273) | public boolean equals(Object obj) {
    method compareTo (line 295) | public int compareTo(Simplex s) {
    method slt (line 334) | abstract boolean slt(Simplex s);
    method seq (line 344) | abstract boolean seq(Simplex s);
    method getSimplex (line 354) | public static Simplex getSimplex (int[] vertices) {
    method getSimplex (line 377) | public static Simplex getSimplex (int[] vertices, int findex) {
    method getSimplexPresorted (line 390) | public static Simplex getSimplexPresorted (int[] vertices) {
    method getSimplexPresorted (line 414) | public static Simplex getSimplexPresorted(int[] vertices, int findex) {
    method makeEdge (line 428) | public static Simplex makeEdge (int v1, int v2, int findex) {
    method makePoint (line 441) | public static Simplex makePoint (int v, int findex) {
    method addVertex (line 455) | public Simplex addVertex(int v) {
    method addVertex (line 472) | public Simplex addVertex (int v, int f) {
    method toString (line 485) | public String toString() {
    method vertex_sort (line 510) | public static int[] vertex_sort (int[] vertices) {
    method dist_sort (line 536) | public static double[] dist_sort (double[] distances) {
    method simplex_reverse_sort (line 562) | public static int[] simplex_reverse_sort (int[] vertices) {
    method persistence_sort (line 584) | public static void persistence_sort(Simplex[] sarray) {
    method boundaryArray (line 615) | abstract public Simplex[] boundaryArray();
    method boundary (line 624) | public Chain boundary(int p) {
    method random (line 650) | static Simplex random() {

FILE: src/java/edu/stanford/math/plex/SimplexFaceIterator.java
  class SimplexFaceIterator (line 14) | public class SimplexFaceIterator {
    method hasNext (line 32) | public boolean hasNext() {
    method next (line 77) | public int[] next () {
    method SimplexFaceIterator (line 98) | protected SimplexFaceIterator() {
    method SimplexFaceIterator (line 118) | public SimplexFaceIterator(int[] vertices, int dimension) {
    method SimplexFaceIterator (line 155) | public SimplexFaceIterator(Simplex s, int dimension) {
    method getDimension (line 162) | public int getDimension() {
    method getSignOfLast (line 169) | public int getSignOfLast() {

FILE: src/java/edu/stanford/math/plex/SimplexStream.java
  class SimplexStream (line 25) | public abstract class SimplexStream
    method hasNext (line 35) | public abstract boolean hasNext();
    method next (line 44) | public abstract Simplex next();
    method remove (line 51) | public void remove() {
    method size (line 62) | public abstract int size();
    method maxDimension (line 71) | public abstract int maxDimension();
    method convertInterval (line 81) | public PersistenceInterval.Float convertInterval(PersistenceInterval p) {
    method convertInterval (line 101) | public PersistenceBasisInterval.Float convertInterval(PersistenceBasis...
    method convert_filtration_index (line 124) | public double convert_filtration_index(int fi) {
    method verify (line 136) | public boolean verify() {
    type ComparisonType (line 152) | public enum ComparisonType { LT, LE, EQ, GE, GT }
    class Tail (line 167) | public static class Tail {
      method Tail (line 175) | public Tail() {
      method Tail (line 182) | public Tail(int len) {
      method toString (line 188) | public String toString() {
      method enqueue (line 195) | public Tail enqueue(Simplex s) {
    class Head (line 214) | public static class Head {
      method Head (line 221) | protected Head() {
      method Head (line 225) | public Head(Tail q) {
      method copy (line 233) | public Head copy() {
      method toString (line 241) | public String toString() {
      method nextEntry (line 257) | public Simplex nextEntry() {
      method lessThan (line 278) | public boolean lessThan (Head q) {
      method eql (line 292) | public boolean eql(Head q) {
    class Stack (line 311) | public static class Stack extends SimplexStream {
      class Segment (line 315) | protected static class Segment {
        method Segment (line 321) | protected Segment() {
        method Segment (line 328) | protected Segment(int len) {
        method toString (line 334) | public String toString() {
        method push (line 341) | protected Segment push(Simplex s) {
      method Stack (line 366) | protected Stack() {
      method Stack (line 386) | public Stack(int max_findex, int max_d) {
      method toString (line 396) | public String toString() {
      method simplexIndex (line 403) | protected int simplexIndex(Simplex s) {
      method push (line 418) | public Simplex push(Simplex s) {
      method size (line 434) | public int size() {
      method maxDimension (line 445) | public int maxDimension() {
      method hasNext (line 456) | public boolean hasNext() {
      method next (line 495) | public Simplex next() {
      class StackIterator (line 544) | protected static class StackIterator implements Iterator<Simplex> {
        method StackIterator (line 552) | protected StackIterator() {
        method StackIterator (line 561) | public StackIterator(Stack stack) {
        method StackIterator (line 570) | public StackIterator(Stack stack, int dimension) {
        method hasNext (line 589) | public boolean hasNext() {
        method next (line 631) | public Simplex next() {
        method remove (line 669) | public void remove() {
      method iterator (line 682) | public Iterator<Simplex> iterator() {
      method iterator (line 695) | public Iterator<Simplex> iterator(int d) {

FILE: src/java/edu/stanford/math/plex/SimplexTable.java
  class SimplexTable (line 16) | public class SimplexTable implements Iterable<Simplex> {
    method SimplexTable (line 31) | protected SimplexTable() {}
    method SimplexTable (line 55) | public SimplexTable(int limit) {
    method grow_table (line 74) | protected void grow_table(int newLimit) {
    method size (line 102) | public int size() {
    method limit (line 111) | public int limit() {
    method get (line 127) | public Simplex get(Simplex s) {
    method put (line 164) | public Simplex put(Simplex s) {
    method getInterned (line 202) | public Simplex getInterned(Simplex s) {
    method iterator (line 236) | public Iterator<Simplex> iterator() {
    class SimpleTableIterator (line 245) | protected static class SimpleTableIterator implements Iterator<Simplex> {
      method SimpleTableIterator (line 252) | protected SimpleTableIterator(SimplexTable tbl) {
      method parent_is_consistent (line 261) | protected boolean parent_is_consistent() {
      method hasNext (line 271) | public boolean hasNext() {
      method next (line 287) | public Simplex next() {
      method remove (line 306) | public void remove() {

FILE: src/java/edu/stanford/math/plex/TmpStream.java
  class TmpStream (line 14) | public class TmpStream extends SimplexStream implements Iterable<Simplex...
    method PaperComplex (line 24) | static Simplex[] PaperComplex() {
    method TorusComplex (line 49) | private static Simplex[] TorusComplex() {
    method TmpStream (line 126) | public TmpStream(Simplex[] entries) {
    method hasNext (line 148) | public boolean hasNext() {
    method next (line 161) | public Simplex next() {
    method remove (line 173) | public void remove() {
    method size (line 177) | public int size() {
    method maxDimension (line 181) | public int maxDimension() {
    method iterator (line 185) | public Iterator<Simplex> iterator() {
    method PaperTestCase (line 189) | public static TmpStream PaperTestCase() {
    method Torus (line 192) | public static TmpStream Torus() {

FILE: src/java/edu/stanford/math/plex/Torus.java
  class Torus (line 16) | public class Torus extends PointData.NSpace {
    method dimension (line 30) | public int dimension() {
    method coordinate (line 42) | public double coordinate(int p, int i) {
    method count (line 61) | public int count() {
    method distance (line 77) | public double distance (int p1, int p2) {
    method pointsAreConsistent (line 99) | private boolean pointsAreConsistent(double[] data, int dimension) {
    method Torus (line 120) | public Torus(double[] data, int d) {
    method expt (line 127) | private int expt(int n, int k) {
    method incr_pt (line 145) | private boolean incr_pt(double[] pt, double incr) {
    method Torus (line 164) | public Torus(int n, int d) {
    method Torus (line 183) | public Torus() {

FILE: src/java/edu/stanford/math/plex/WitnessStream.java
  class WitnessStream (line 23) | public class WitnessStream extends SimplexStream {
    method makeRandomLandmarks (line 34) | public static int[] makeRandomLandmarks(PointData data, int L) {
    method estimateRmax (line 61) | public static double estimateRmax(PointData data, int[] landmarks) {
    method hasNext (line 95) | public boolean hasNext() {
    method next (line 106) | public Simplex next() {
    method WitnessStream (line 125) | WitnessStream(double delta, int max_d, double R,
    method size (line 143) | public int size() {
    method maxDimension (line 154) | public int maxDimension() {
    method convert_filtration_index (line 167) | public double convert_filtration_index(int fi) {
    method iterator (line 179) | public Iterator<Simplex> iterator() {
    method WitnessStream (line 184) | protected WitnessStream() {
    method m_index (line 214) | protected static int m_index(int n, int k, int N) {
    method distance_ln (line 225) | static double distance_ln(int l, int n, int[] landmarks, PointData dat...
    method D_index (line 237) | static int D_index(int l, int n, int L, int N) {
    method min (line 243) | static double min(double x, double y) {
    method max (line 250) | static double max(double x, double y) {
    method max (line 257) | static int max(int x, int y) {
    method find_simplices (line 298) | protected SimplexStream.Stack

FILE: src/java/edu/stanford/math/plex4/api/FilteredStreamInterface.java
  class FilteredStreamInterface (line 18) | public class FilteredStreamInterface {
    method createExplicitSimplexStream (line 19) | public static ExplicitSimplexStream createExplicitSimplexStream() {
    method createExplicitSimplexStream (line 23) | public static ExplicitSimplexStream createExplicitSimplexStream(double...
    method createExplicitCellStream (line 27) | public static ExplicitCellStream createExplicitCellStream() {
    method createExplicitCellStream (line 31) | public static ExplicitCellStream createExplicitCellStream(double maxFi...
    method createPlex4VietorisRipsStream (line 35) | public static VietorisRipsStream<double[]> createPlex4VietorisRipsStre...
    method createPlex4VietorisRipsStream (line 44) | public static <T> VietorisRipsStream<T> createPlex4VietorisRipsStream(...
    method createPlex4VietorisRipsStream (line 50) | public static VietorisRipsStream<double[]> createPlex4VietorisRipsStre...
    method createPlex4VietorisRipsStream (line 59) | public static <T> VietorisRipsStream<T> createPlex4VietorisRipsStream(...
    method createPlex3VietorisRipsStream (line 65) | public static AbstractFilteredStream<Simplex> createPlex3VietorisRipsS...
    method createPlex4LazyWitnessStream (line 75) | public static LazyWitnessStream<double[]> createPlex4LazyWitnessStream...
    method createPlex3LazyWitnessStream (line 81) | public static AbstractFilteredStream<Simplex> createPlex3LazyWitnessSt...
    method createPlex4WitnessStream (line 91) | public static WitnessStream<double[]> createPlex4WitnessStream(Landmar...
    method createPlex3WitnessStream (line 98) | public static AbstractFilteredStream<Simplex> createPlex3WitnessStream...
    method convertTo1Based (line 108) | private static int[] convertTo1Based(int[] array) {

FILE: src/java/edu/stanford/math/plex4/api/PersistenceAlgorithmInterface.java
  class PersistenceAlgorithmInterface (line 34) | public class PersistenceAlgorithmInterface {
    method getPlex3SimplicialAbsoluteHomology (line 43) | public static AbstractPersistenceAlgorithm<Simplex> getPlex3Simplicial...
    method getBooleanSimplicialAbsoluteHomology (line 47) | public static AbstractPersistenceBasisAlgorithm<Simplex, BooleanSparse...
    method getIntSimplicialAbsoluteHomology (line 51) | public static AbstractPersistenceBasisAlgorithm<Simplex, IntSparseForm...
    method getRationalSimplicialAbsoluteHomology (line 55) | public static AbstractPersistenceBasisAlgorithm<Simplex, ObjectSparseF...
    method getBooleanSimplicialClassicalHomology (line 59) | public static AbstractPersistenceAlgorithm<Simplex> getBooleanSimplici...
    method getIntSimplicialClassicalHomology (line 63) | public static AbstractPersistenceAlgorithm<Simplex> getIntSimplicialCl...
    method getRationalSimplicialClassicalHomology (line 67) | public static AbstractPersistenceAlgorithm<Simplex> getRationalSimplic...
    method getBooleanSimplicialRelativeHomology (line 71) | public static AbstractPersistenceBasisAlgorithm<Simplex, BooleanSparse...
    method getIntSimplicialRelativeHomology (line 75) | public static AbstractPersistenceBasisAlgorithm<Simplex, IntSparseForm...
    method getRationalSimplicialRelativeHomology (line 79) | public static AbstractPersistenceBasisAlgorithm<Simplex, ObjectSparseF...
    method getAllPlex4SimplicialAbsoluteHomologyAlgorithms (line 83) | public static List<AbstractPersistenceAlgorithm<Simplex>> getAllPlex4S...
    method getAllSimplicialAbsoluteHomologyAlgorithms (line 95) | public static List<AbstractPersistenceAlgorithm<Simplex>> getAllSimpli...
    method getBooleanCellularAbsoluteHomology (line 105) | public static AbstractPersistenceBasisAlgorithm<Cell, BooleanSparseFor...
    method getIntCellularAbsoluteHomology (line 109) | public static AbstractPersistenceBasisAlgorithm<Cell, IntSparseFormalS...
    method getRationalCellularAbsoluteHomology (line 113) | public static AbstractPersistenceBasisAlgorithm<Cell, ObjectSparseForm...
    method getBooleanCellularClassicalHomology (line 117) | public static AbstractPersistenceAlgorithm<Cell> getBooleanCellularCla...
    method getIntCellularClassicalHomology (line 121) | public static AbstractPersistenceAlgorithm<Cell> getIntCellularClassic...
    method getRationalCellularClassicalHomology (line 125) | public static AbstractPersistenceAlgorithm<Cell> getRationalCellularCl...
    method getBooleanCellularRelativeHomology (line 129) | public static AbstractPersistenceBasisAlgorithm<Cell, BooleanSparseFor...
    method getIntCellularRelativeHomology (line 133) | public static AbstractPersistenceBasisAlgorithm<Cell, IntSparseFormalS...
    method getRationalCellularRelativeHomology (line 137) | public static AbstractPersistenceBasisAlgorithm<Cell, ObjectSparseForm...
    method getAllCellularAbsoluteHomologyAlgorithms (line 141) | public static List<AbstractPersistenceAlgorithm<Cell>> getAllCellularA...
    method getBooleanSimplexPairAbsoluteHomology (line 157) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, BooleanSp...
    method getIntSimplexPairAbsoluteHomology (line 161) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, IntSparse...
    method getRationalSimplexPairAbsoluteHomology (line 165) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, ObjectSpa...
    method getBooleanSimplexPairClassicalHomology (line 169) | public static AbstractPersistenceAlgorithm<SimplexPair> getBooleanSimp...
    method getIntSimplexPairClassicalHomology (line 173) | public static AbstractPersistenceAlgorithm<SimplexPair> getIntSimplexP...
    method getRationalSimplexPairClassicalHomology (line 177) | public static AbstractPersistenceAlgorithm<SimplexPair> getRationalSim...
    method getBooleanSimplexPairRelativeHomology (line 181) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, BooleanSp...
    method getIntSimplexPairRelativeHomology (line 185) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, IntSparse...
    method getRationalSimplexPairRelativeHomology (line 189) | public static AbstractPersistenceBasisAlgorithm<SimplexPair, ObjectSpa...
    method getAllSimplexPairAbsoluteHomologyAlgorithms (line 193) | public static List<AbstractPersistenceAlgorithm<SimplexPair>> getAllSi...

FILE: src/java/edu/stanford/math/plex4/api/Plex4.java
  class Plex4 (line 52) | public class Plex4 {
    method main (line 62) | public static void main(String[] args) {}
    method createEuclideanMetricSpace (line 70) | public static EuclideanMetricSpace createEuclideanMetricSpace(double[]...
    method estimateDiameter (line 81) | public static double estimateDiameter(AbstractIntMetricSpace metricSpa...
    method createExplicitSimplexStream (line 90) | public static ExplicitSimplexStream createExplicitSimplexStream() {
    method createExplicitSimplexStream (line 94) | public static ExplicitSimplexStream createExplicitSimplexStream(double...
    method createExplicitCellStream (line 103) | public static ExplicitCellStream createExplicitCellStream() {
    method createExplicitCellStream (line 107) | public static ExplicitCellStream createExplicitCellStream(double maxFi...
    method createVietorisRipsStream (line 120) | public static VietorisRipsStream<double[]> createVietorisRipsStream(do...
    method createVietorisRipsStream (line 133) | public static VietorisRipsStream<double[]> createVietorisRipsStream(do...
    method createVietorisRipsStream (line 147) | public static <T> VietorisRipsStream<T> createVietorisRipsStream(Abstr...
    method createVietorisRipsStream (line 160) | public static <T> VietorisRipsStream<T> createVietorisRipsStream(Abstr...
    method createVietorisRipsStream (line 172) | public static VietorisRipsStream<double[]> createVietorisRipsStream(do...
    method createVietorisRipsStream (line 185) | public static <T> VietorisRipsStream<T> createVietorisRipsStream(Abstr...
    method createLazyWitnessStream (line 198) | public static LazyWitnessStream<double[]> createLazyWitnessStream(Land...
    method createWitnessStream (line 211) | public static WitnessStream<double[]> createWitnessStream(LandmarkSele...
    method createWitnessStream (line 224) | public static WitnessStream<double[]> createWitnessStream(LandmarkSele...
    method createLazyWitnessStream (line 237) | public static LazyWitnessStream<double[]> createLazyWitnessStream(Land...
    method createMaxMinSelector (line 248) | public static MaxMinLandmarkSelector<double[]> createMaxMinSelector(do...
    method createMaxMinSelector (line 260) | public static MaxMinLandmarkSelector<double[]> createMaxMinSelector(do...
    method createRandomSelector (line 271) | public static RandomLandmarkSelector<double[]> createRandomSelector(do...
    method createMaxMinSelector (line 283) | public static <T> MaxMinLandmarkSelector<T> createMaxMinSelector(Abstr...
    method createMaxMinSelector (line 296) | public static <T> MaxMinLandmarkSelector<T> createMaxMinSelector(Abstr...
    method createRandomSelector (line 308) | public static <T> RandomLandmarkSelector<T> createRandomSelector(Abstr...
    method createExplicitSelector (line 319) | public static ExplicitLandmarkSelector<double[]> createExplicitSelecto...
    method createExplicitSelector (line 330) | public static <T> ExplicitLandmarkSelector<T> createExplicitSelector(A...
    method getDefaultSimplicialAlgorithm (line 340) | public static AbstractPersistenceAlgorithm<Simplex> getDefaultSimplici...
    method getDefaultSimplicialPairAlgorithm (line 344) | public static AbstractPersistenceAlgorithm<SimplexPair> getDefaultSimp...
    method getDefaultCellularAlgorithm (line 355) | public static AbstractPersistenceAlgorithm<Cell> getDefaultCellularAlg...
    method getModularCellularAlgorithm (line 366) | public static AbstractPersistenceAlgorithm<Cell> getModularCellularAlg...
    method getModularSimplicialAlgorithm (line 377) | public static AbstractPersistenceAlgorithm<Simplex> getModularSimplici...
    method getRationalSimplicialAlgorithm (line 387) | public static ObjectAbsoluteHomology<Fraction, Simplex> getRationalSim...
    method getRationalCellularAlgorithm (line 397) | public static AbstractPersistenceAlgorithm<Cell> getRationalCellularAl...
    method createBarcodePlot (line 409) | public static <G> void createBarcodePlot(PersistenceInvariantDescripto...
    method createHomStream (line 428) | public static <T, U> HomStream<T, U> createHomStream(AbstractFilteredS...
    method getRationalHomAlgorithm (line 436) | public static ObjectPersistenceAlgorithm<Fraction, ObjectObjectPair<Si...
    method createHomMatrixConverter (line 449) | public static DoubleMatrixConverter<Simplex, Simplex> createHomMatrixC...
    method createMatrixConverter (line 458) | public static DoubleVectorConverter<Simplex> createMatrixConverter(Abs...

FILE: src/java/edu/stanford/math/plex4/autogen/homology/BooleanAbsoluteHomology.java
  class BooleanAbsoluteHomology (line 16) | public class BooleanAbsoluteHomology<U> extends BooleanPersistentHomolog...
    method BooleanAbsoluteHomology (line 24) | public BooleanAbsoluteHomology(Comparator<U> basisComparator, int minD...
    method getAnnotatedIntervals (line 28) | @Override
    method getIntervals (line 37) | @Override

FILE: src/java/edu/stanford/math/plex4/autogen/homology/BooleanClassicalHomology.java
  class BooleanClassicalHomology (line 30) | public class BooleanClassicalHomology<U> extends AbstractPersistenceAlgo...
    method BooleanClassicalHomology (line 47) | public BooleanClassicalHomology(Comparator<U> basisComparator, int min...
    method computeIndexIntervals (line 54) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method removePivotRows (line 123) | private BooleanSparseFormalSum<U> removePivotRows(U simplex, AbstractF...
    method getMaximumObject (line 157) | private U getMaximumObject(BooleanSparseFormalSum<U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/BooleanPersistenceAlgorithm.java
  class BooleanPersistenceAlgorithm (line 30) | public abstract class BooleanPersistenceAlgorithm<U> extends AbstractPer...
    method BooleanPersistenceAlgorithm (line 65) | public BooleanPersistenceAlgorithm(Comparator<U> basisComparator, int ...
    method initializeFilteredComparator (line 77) | protected void initializeFilteredComparator(AbstractFilteredStream<U> ...
    method getChainModule (line 86) | public BooleanPrimitiveFreeModule<U> getChainModule() {
    method computeIndexIntervals (line 91) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method computeAnnotatedIndexIntervals (line 96) | public AnnotatedBarcodeCollection<Integer, BooleanSparseFormalSum<U>> ...
    method computeIntervalsImpl (line 107) | protected abstract BarcodeCollection<Integer> computeIntervalsImpl(Abs...
    method computeAnnotatedIntervalsImpl (line 115) | protected abstract AnnotatedBarcodeCollection<Integer, BooleanSparseFo...
    method low (line 125) | protected U low(BooleanSparseFormalSum<U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/BooleanPersistentHomology.java
  class BooleanPersistentHomology (line 31) | public abstract class BooleanPersistentHomology<U> extends BooleanPersis...
    method BooleanPersistentHomology (line 40) | public BooleanPersistentHomology(Comparator<U> basisComparator, int mi...
    method computeAnnotatedIntervalsImpl (line 44) | @Override
    method computeIntervalsImpl (line 49) | @Override
    method pHcol (line 65) | private ObjectObjectPair<THashMap<U, BooleanSparseFormalSum<U>>, THash...
    method getAnnotatedIntervals (line 143) | protected abstract AnnotatedBarcodeCollection<Integer, BooleanSparseFo...
    method getIntervals (line 147) | protected abstract BarcodeCollection<Integer> getIntervals(ObjectObjec...
    method getAnnotatedIntervals (line 151) | protected AnnotatedBarcodeCollection<Integer, BooleanSparseFormalSum<U...
    method getIntervals (line 210) | protected BarcodeCollection<Integer> getIntervals(

FILE: src/java/edu/stanford/math/plex4/autogen/homology/BooleanRelativeHomology.java
  class BooleanRelativeHomology (line 16) | public class BooleanRelativeHomology<U> extends BooleanPersistentHomolog...
    method BooleanRelativeHomology (line 24) | public BooleanRelativeHomology(Comparator<U> basisComparator, int minD...
    method getAnnotatedIntervals (line 28) | @Override
    method getIntervals (line 37) | @Override

FILE: src/java/edu/stanford/math/plex4/autogen/homology/IntAbsoluteHomology.java
  class IntAbsoluteHomology (line 17) | public class IntAbsoluteHomology<U> extends IntPersistentHomology<U> {
    method IntAbsoluteHomology (line 26) | public IntAbsoluteHomology(IntAbstractField field, Comparator<U> basis...
    method getAnnotatedIntervals (line 30) | @Override
    method getIntervals (line 39) | @Override

FILE: src/java/edu/stanford/math/plex4/autogen/homology/IntClassicalHomology.java
  class IntClassicalHomology (line 31) | public class IntClassicalHomology<U> extends AbstractPersistenceAlgorith...
    method IntClassicalHomology (line 50) | public IntClassicalHomology(IntAbstractField field, Comparator<U> basi...
    method computeIndexIntervals (line 58) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method removePivotRows (line 127) | private IntSparseFormalSum<U> removePivotRows(U simplex, AbstractFilte...
    method getMaximumObject (line 164) | private U getMaximumObject(IntSparseFormalSum<U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/IntPersistenceAlgorithm.java
  class IntPersistenceAlgorithm (line 31) | public abstract class IntPersistenceAlgorithm<U> extends AbstractPersist...
    method IntPersistenceAlgorithm (line 71) | public IntPersistenceAlgorithm(IntAbstractField field, Comparator<U> b...
    method initializeFilteredComparator (line 84) | protected void initializeFilteredComparator(AbstractFilteredStream<U> ...
    method getChainModule (line 93) | public IntAlgebraicFreeModule<U> getChainModule() {
    method getField (line 102) | public IntAbstractField getField() {
    method computeIndexIntervals (line 106) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method computeAnnotatedIndexIntervals (line 111) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> comp...
    method computeIntervalsImpl (line 122) | protected abstract BarcodeCollection<Integer> computeIntervalsImpl(Abs...
    method computeAnnotatedIntervalsImpl (line 130) | protected abstract AnnotatedBarcodeCollection<Integer, IntSparseFormal...
    method low (line 140) | protected U low(IntSparseFormalSum<U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/IntPersistentHomology.java
  class IntPersistentHomology (line 32) | public abstract class IntPersistentHomology<U> extends IntPersistenceAlg...
    method IntPersistentHomology (line 42) | public IntPersistentHomology(IntAbstractField field, Comparator<U> bas...
    method computeAnnotatedIntervalsImpl (line 46) | @Override
    method computeIntervalsImpl (line 51) | @Override
    method pHcol (line 67) | private ObjectObjectPair<THashMap<U, IntSparseFormalSum<U>>, THashMap<...
    method getAnnotatedIntervals (line 145) | protected abstract AnnotatedBarcodeCollection<Integer, IntSparseFormal...
    method getIntervals (line 149) | protected abstract BarcodeCollection<Integer> getIntervals(ObjectObjec...
    method getAnnotatedIntervals (line 153) | protected AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> g...
    method getIntervals (line 212) | protected BarcodeCollection<Integer> getIntervals(

FILE: src/java/edu/stanford/math/plex4/autogen/homology/IntRelativeHomology.java
  class IntRelativeHomology (line 17) | public class IntRelativeHomology<U> extends IntPersistentHomology<U> {
    method IntRelativeHomology (line 26) | public IntRelativeHomology(IntAbstractField field, Comparator<U> basis...
    method getAnnotatedIntervals (line 30) | @Override
    method getIntervals (line 39) | @Override

FILE: src/java/edu/stanford/math/plex4/autogen/homology/ObjectAbsoluteHomology.java
  class ObjectAbsoluteHomology (line 17) | public class ObjectAbsoluteHomology<F, U> extends ObjectPersistentHomolo...
    method ObjectAbsoluteHomology (line 26) | public ObjectAbsoluteHomology(ObjectAbstractField<F> field, Comparator...
    method getAnnotatedIntervals (line 30) | @Override
    method getIntervals (line 39) | @Override

FILE: src/java/edu/stanford/math/plex4/autogen/homology/ObjectClassicalHomology.java
  class ObjectClassicalHomology (line 32) | public class ObjectClassicalHomology<F, U> extends AbstractPersistenceAl...
    method ObjectClassicalHomology (line 51) | public ObjectClassicalHomology(ObjectAbstractField<F> field, Comparato...
    method computeIndexIntervals (line 59) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method removePivotRows (line 128) | private ObjectSparseFormalSum<F, U> removePivotRows(U simplex, Abstrac...
    method getMaximumObject (line 165) | private U getMaximumObject(ObjectSparseFormalSum<F, U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/ObjectPersistenceAlgorithm.java
  class ObjectPersistenceAlgorithm (line 32) | public abstract class ObjectPersistenceAlgorithm<F, U> extends AbstractP...
    method ObjectPersistenceAlgorithm (line 72) | public ObjectPersistenceAlgorithm(ObjectAbstractField<F> field, Compar...
    method initializeFilteredComparator (line 85) | protected void initializeFilteredComparator(AbstractFilteredStream<U> ...
    method getChainModule (line 94) | public ObjectAlgebraicFreeModule<F, U> getChainModule() {
    method getField (line 103) | public ObjectAbstractField<F> getField() {
    method computeIndexIntervals (line 107) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method computeAnnotatedIndexIntervals (line 112) | public AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<F, U>...
    method computeIntervalsImpl (line 123) | protected abstract BarcodeCollection<Integer> computeIntervalsImpl(Abs...
    method computeAnnotatedIntervalsImpl (line 131) | protected abstract AnnotatedBarcodeCollection<Integer, ObjectSparseFor...
    method low (line 141) | protected U low(ObjectSparseFormalSum<F, U> chain) {

FILE: src/java/edu/stanford/math/plex4/autogen/homology/ObjectPersistentHomology.java
  class ObjectPersistentHomology (line 32) | public abstract class ObjectPersistentHomology<F, U> extends ObjectPersi...
    method ObjectPersistentHomology (line 42) | public ObjectPersistentHomology(ObjectAbstractField<F> field, Comparat...
    method computeAnnotatedIntervalsImpl (line 46) | @Override
    method computeIntervalsImpl (line 51) | @Override
    method pHcol (line 67) | private ObjectObjectPair<THashMap<U, ObjectSparseFormalSum<F, U>>, THa...
    method getAnnotatedIntervals (line 145) | protected abstract AnnotatedBarcodeCollection<Integer, ObjectSparseFor...
    method getIntervals (line 149) | protected abstract BarcodeCollection<Integer> getIntervals(ObjectObjec...
    method getAnnotatedIntervals (line 153) | protected AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<F,...
    method getIntervals (line 212) | protected BarcodeCollection<Integer> getIntervals(

FILE: src/java/edu/stanford/math/plex4/autogen/homology/ObjectRelativeHomology.java
  class ObjectRelativeHomology (line 17) | public class ObjectRelativeHomology<F, U> extends ObjectPersistentHomolo...
    method ObjectRelativeHomology (line 26) | public ObjectRelativeHomology(ObjectAbstractField<F> field, Comparator...
    method getAnnotatedIntervals (line 30) | @Override
    method getIntervals (line 39) | @Override

FILE: src/java/edu/stanford/math/plex4/bottleneck/BottleneckDistance.java
  class BottleneckDistance (line 10) | public class BottleneckDistance {
    method truncate (line 12) | public static List<Interval<Double>> truncate(List<Interval<Double>> A...
    method filterLargest (line 36) | public static List<Interval<Double>> filterLargest(List<Interval<Doubl...
    method computeBottleneckDistance (line 66) | public static double computeBottleneckDistance(double[][] A, double[][...
    method computeBottleneckDistance (line 82) | public static double computeBottleneckDistance(List<Interval<Double>> ...
    method distanceToDiagonal (line 121) | static double distanceToDiagonal(Interval<Double> A) {
    method distance (line 129) | static double distance(Interval<Double> A, Interval<Double> B) {

FILE: src/java/edu/stanford/math/plex4/bottleneck/FlowEdge.java
  class FlowEdge (line 3) | public class FlowEdge {
    method FlowEdge (line 10) | public FlowEdge(int source, int dest, int capacity) {
    method getCapacity (line 16) | public int getCapacity() {
    method setCapacity (line 20) | public void setCapacity(int capacity) {
    method getSource (line 24) | public int getSource() {
    method getDest (line 28) | public int getDest() {
    method hashCode (line 32) | @Override
    method equals (line 41) | @Override
    method getReverseEdge (line 57) | public FlowEdge getReverseEdge() {
    method setReverseEdge (line 61) | public void setReverseEdge(FlowEdge reverseEdge) {
    method toString (line 65) | @Override

FILE: src/java/edu/stanford/math/plex4/bottleneck/FlowNetwork.java
  class FlowNetwork (line 12) | public class FlowNetwork {
    method addEdge (line 17) | public void addEdge(int source, int destination, int weight) {
    method getEdges (line 39) | protected Set<FlowEdge> getEdges(int source) {
    method getFlow (line 43) | protected int getFlow(FlowEdge edge) {
    method incrementFlow (line 47) | protected void incrementFlow(FlowEdge edge, int increment) {
    method maxFlow (line 56) | public int maxFlow(int source, int sink) {
    method findPath (line 76) | protected List<ObjectIntPair<FlowEdge>> findPath(int source, int sink,...
    method minValue (line 97) | protected <T> int minValue(List<ObjectIntPair<T>> list) {
    method contains (line 109) | protected <T> boolean contains(Iterable<T> collection, T edge) {

FILE: src/java/edu/stanford/math/plex4/bottleneck/FordFulkerson.java
  class FordFulkerson (line 18) | public class FordFulkerson {
    method maxFlow (line 33) | public int maxFlow(FordFulkersonNode[] v, FordFulkersonEdge[] e, int s...
    method solve (line 52) | protected void solve() {
    method rdb (line 95) | protected void rdb() {
    method stpath (line 123) | protected void stpath() {

FILE: src/java/edu/stanford/math/plex4/bottleneck/FordFulkersonEdge.java
  class FordFulkersonEdge (line 11) | public class FordFulkersonEdge {
    method FordFulkersonEdge (line 31) | public FordFulkersonEdge(int rndd_plus, int rndd_minus, int capacity) {
    method FordFulkersonEdge (line 37) | public FordFulkersonEdge(int rndd_plus, int rndd_minus, int capacity,
    method toString (line 50) | @Override

FILE: src/java/edu/stanford/math/plex4/bottleneck/FordFulkersonNode.java
  class FordFulkersonNode (line 12) | public class FordFulkersonNode {
    method FordFulkersonNode (line 21) | public FordFulkersonNode(String name) {
    method toString (line 28) | @Override

FILE: src/java/edu/stanford/math/plex4/bottleneck/WeightedBipartiteGraph.java
  class WeightedBipartiteGraph (line 10) | public class WeightedBipartiteGraph {
    class WeightedEdge (line 11) | class WeightedEdge {
    method WeightedBipartiteGraph (line 22) | public WeightedBipartiteGraph(int partitionSize) {
    method addEdge (line 26) | public void addEdge(int source, int destination, double weight) {
    method filterByMaximum (line 36) | public WeightedBipartiteGraph filterByMaximum(double maximumWeight) {
    method computeMaximumCardinalityMatching (line 67) | public int computeMaximumCardinalityMatching() {
    method hasPerfectMatching (line 135) | public boolean hasPerfectMatching() {
    method computePerfectMatchingThreshold (line 148) | public double computePerfectMatchingThreshold() {

FILE: src/java/edu/stanford/math/plex4/examples/CellComplexOperations.java
  class CellComplexOperations (line 17) | public class CellComplexOperations {
    method disjointUnion (line 26) | public static ExplicitCellStream disjointUnion(ExplicitCellStream stre...
    method identifyPoints (line 46) | public static void identifyPoints(ExplicitCellStream stream, int[] ver...

FILE: src/java/edu/stanford/math/plex4/examples/CellStreamExamples.java
  class CellStreamExamples (line 12) | public class CellStreamExamples {
    method getMorozovJohanssonExample (line 20) | public static ExplicitCellStream getMorozovJohanssonExample() {
    method getCellularSphere (line 49) | public static ExplicitCellStream getCellularSphere(int dimension) {
    method getCellularTorus (line 65) | public static ExplicitCellStream getCellularTorus() {
    method getCellularKleinBottle (line 83) | public static ExplicitCellStream getCellularKleinBottle() {
    method getCellularRP2 (line 101) | public static ExplicitCellStream getCellularRP2() {
    method getCellularMobiusBand (line 119) | public static ExplicitCellStream getCellularMobiusBand() {

FILE: src/java/edu/stanford/math/plex4/examples/DeSilvaMorozovJohanssonExample.java
  class DeSilvaMorozovJohanssonExample (line 20) | public class DeSilvaMorozovJohanssonExample<R> {
    method DeSilvaMorozovJohanssonExample (line 36) | public DeSilvaMorozovJohanssonExample(ObjectAbstractField<R> field) {
    method initialize (line 42) | private ExplicitCellStream initialize() {
    method getCellComplex (line 89) | public ExplicitCellStream getCellComplex() {
    method getAbsoluteHomologyBarcodes (line 98) | public AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<R, Ce...
    method getRelativeHomologyBarcodes (line 107) | public AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<R, Ce...
    method getAbsoluteCohomologyBarcodes (line 116) | public AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<R, Ce...
    method getRelativeCohomologyBarcodes (line 125) | public AnnotatedBarcodeCollection<Integer, ObjectSparseFormalSum<R, Ce...

FILE: src/java/edu/stanford/math/plex4/examples/PointCloudExamples.java
  class PointCloudExamples (line 15) | public class PointCloudExamples {
    method getHouseExample (line 21) | public static double[][] getHouseExample() {
    method getSquare (line 36) | public static double[][] getSquare() {
    method getEquispacedCirclePoints (line 52) | public static double[][] getEquispacedCirclePoints(int n) {
    method getRandomCirclePoints (line 70) | public static double[][] getRandomCirclePoints(int n) {
    method getOctahedronVertices (line 90) | public static double[][] getOctahedronVertices() {
    method getTetrahedronVertices (line 108) | public static double[][] getTetrahedronVertices() {
    method getAnnulusVertices (line 120) | public static double[][] getAnnulusVertices(int width, int length) {
    method getIcosahedronVertices (line 142) | public static double[][] getIcosahedronVertices() {
    method getRandomSpherePoints (line 170) | public static double[][] getRandomSpherePoints(int n, int d) {
    method getGaussianPoints (line 189) | public static double[][] getGaussianPoints(int n, int d) {
    method getRandomTorusPoints (line 207) | public static double[][] getRandomTorusPoints(int n, double r, double ...
    method getRandomTrefoilKnotPoints (line 221) | public static double[][] getRandomTrefoilKnotPoints(int n) {
    method getRandomSphereProductPoints (line 243) | public static double[][] getRandomSphereProductPoints(int numPoints, i...
    method getRandomFigure8Points (line 271) | public static double[][] getRandomFigure8Points(int n) {
    method getDisjointPatches (line 294) | public static double[][] getDisjointPatches(int n) {

FILE: src/java/edu/stanford/math/plex4/examples/SimplexStreamExamples.java
  class SimplexStreamExamples (line 20) | public class SimplexStreamExamples {
    method getZomorodianCarlssonExample (line 27) | public static ExplicitStream<Simplex> getZomorodianCarlssonExample() {
    method getFilteredTriangle (line 57) | public static ExplicitStream<Simplex> getFilteredTriangle() {
    method getTriangle (line 79) | public static ExplicitStream<Simplex> getTriangle() {
    method getTetrahedron (line 89) | public static ExplicitStream<Simplex> getTetrahedron() {
    method getSimplicialSphere (line 99) | public static ExplicitStream<Simplex> getSimplicialSphere(int dimensio...
    method getTorus (line 117) | public static ExplicitStream<Simplex> getTorus() {
    method getCircle (line 197) | public static ExplicitStream<Simplex> getCircle(int m) {
    method getOctahedron (line 217) | public static ExplicitStream<Simplex> getOctahedron() {
    method getIcosahedron (line 258) | public static ExplicitSimplexStream getIcosahedron() {
    method getAnnulus (line 296) | public static ExplicitSimplexStream getAnnulus(int width, int length) {
    method createGraphComplex (line 347) | public static ExplicitSimplexStream createGraphComplex(AbstractUndirec...
    method createGraphComplex (line 375) | public static ExplicitSimplexStream createGraphComplex(int[][] adjacen...

FILE: src/java/edu/stanford/math/plex4/examples/SimplicialComplexOperations.java
  class SimplicialComplexOperations (line 15) | public class SimplicialComplexOperations {
    method computeCone (line 23) | public static AbstractFilteredStream<Simplex> computeCone(AbstractFilt...
    method computeSuspension (line 62) | public static AbstractFilteredStream<Simplex> computeSuspension(Abstra...
    method computeDisjointUnion (line 107) | public static AbstractFilteredStream<Simplex> computeDisjointUnion(Abs...

FILE: src/java/edu/stanford/math/plex4/generation/GeneratorDriver.java
  class GeneratorDriver (line 16) | public class GeneratorDriver {
    method main (line 22) | public static void main(String[] args) {
    method addHomologyClasses (line 27) | private static void addHomologyClasses() {
    method generateClasses (line 46) | private static void generateClasses() {

FILE: src/java/edu/stanford/math/plex4/graph/AbstractUndirectedGraph.java
  type AbstractUndirectedGraph (line 17) | public interface AbstractUndirectedGraph extends Iterable<IntIntPair>, S...
    method getNumVertices (line 24) | public int getNumVertices();
    method getNumEdges (line 31) | public int getNumEdges();
    method containsEdge (line 41) | public boolean containsEdge(int i, int j);
    method addEdge (line 49) | public void addEdge(int i, int j);
    method removeEdge (line 57) | public void removeEdge(int i, int j);
    method getLowerNeighbors (line 66) | public TIntHashSet getLowerNeighbors(int i);
    method iterator (line 74) | public Iterator<IntIntPair> iterator();
    method getDegree (line 76) | public int getDegree(int v);
    method getNeighbors (line 77) | public int[] getNeighbors(int v);
    method getDegreeSequence (line 78) | public int[] getDegreeSequence();

FILE: src/java/edu/stanford/math/plex4/graph/AbstractWeightedUndirectedGraph.java
  type AbstractWeightedUndirectedGraph (line 10) | public interface AbstractWeightedUndirectedGraph extends AbstractUndirec...
    method getWeight (line 18) | public double getWeight(int i, int j);
    method addEdge (line 27) | public void addEdge(int i, int j, double weight);

FILE: src/java/edu/stanford/math/plex4/graph/UndirectedListEdgeIterator.java
  class UndirectedListEdgeIterator (line 19) | public class UndirectedListEdgeIterator implements Iterator<IntIntPair> {
    method UndirectedListEdgeIterator (line 33) | public UndirectedListEdgeIterator(TIntObjectHashMap<TIntHashSet> adjac...
    method hasNext (line 45) | public boolean hasNext() {
    method next (line 58) | public IntIntPair next() {
    method remove (line 74) | public void remove() {

FILE: src/java/edu/stanford/math/plex4/graph/UndirectedListGraph.java
  class UndirectedListGraph (line 31) | public class UndirectedListGraph implements AbstractUndirectedGraph {
    method UndirectedListGraph (line 53) | public UndirectedListGraph(int numVertices) {
    method UndirectedListGraph (line 58) | public UndirectedListGraph(final int numVertices, final TIntObjectHash...
    method UndirectedListGraph (line 70) | public UndirectedListGraph(AbstractUndirectedGraph graph) {
    method UndirectedListGraph (line 86) | public UndirectedListGraph(int[][] adjacencyMatrix) {
    method addEdge (line 104) | public void addEdge(int i, int j) {
    method containsEdge (line 133) | public boolean containsEdge(int i, int j) {
    method getNumEdges (line 147) | public int getNumEdges() {
    method getNumVertices (line 167) | public int getNumVertices() {
    method removeEdge (line 176) | public void removeEdge(int i, int j) {
    method getLowerNeighbors (line 198) | public TIntHashSet getLowerNeighbors(int i) {
    method iterator (line 206) | public Iterator<IntIntPair> iterator() {
    method getDegree (line 210) | public int getDegree(int v) {
    method getDegreeSequence (line 214) | public int[] getDegreeSequence() {
    method getNeighbors (line 224) | public int[] getNeighbors(int v) {

FILE: src/java/edu/stanford/math/plex4/graph/UndirectedWeightedListGraph.java
  class UndirectedWeightedListGraph (line 27) | public class UndirectedWeightedListGraph implements AbstractWeightedUndi...
    method UndirectedWeightedListGraph (line 39) | public UndirectedWeightedListGraph(int numVertices) {
    method addEdge (line 46) | public void addEdge(int i, int j, double weight) {
    method getWeight (line 69) | public double getWeight(int i, int j) {
    method addEdge (line 83) | public void addEdge(int i, int j) {
    method containsEdge (line 90) | public boolean containsEdge(int i, int j) {
    method getNumEdges (line 97) | public int getNumEdges() {
    method getNumVertices (line 107) | public int getNumVertices() {
    method removeEdge (line 114) | public void removeEdge(int i, int j) {
    method getLowerNeighbors (line 132) | public TIntHashSet getLowerNeighbors(int i) {
    method getUnweightedAdjacencySets (line 142) | public TIntObjectHashMap<TIntHashSet> getUnweightedAdjacencySets() {
    method toUnweightedGraph (line 170) | public UndirectedListGraph toUnweightedGraph() {
    method iterator (line 174) | public Iterator<IntIntPair> iterator() {
    method getDegree (line 178) | public int getDegree(int v) {
    method getDegreeSequence (line 182) | public int[] getDegreeSequence() {
    method getNeighbors (line 192) | public int[] getNeighbors(int v) {
    method getWeights (line 207) | public Set<Double> getWeights() {

FILE: src/java/edu/stanford/math/plex4/graph/io/GraphDotWriter.java
  class GraphDotWriter (line 11) | public class GraphDotWriter implements ObjectWriter<AbstractUndirectedGr...
    method writeToFile (line 13) | public void writeToFile(AbstractUndirectedGraph object, String path) t...
    method getExtension (line 39) | public String getExtension() {

FILE: src/java/edu/stanford/math/plex4/graph/metric/GraphMetricFactory.java
  type GraphMetricFactory (line 13) | public interface GraphMetricFactory {
    method createMetricSpace (line 21) | public AbstractIntMetricSpace createMetricSpace(AbstractUndirectedGrap...

FILE: src/java/edu/stanford/math/plex4/graph/metric/ShortestPathMetric.java
  class ShortestPathMetric (line 19) | public class ShortestPathMetric implements GraphMetricFactory {
    method ShortestPathMetric (line 21) | private ShortestPathMetric(){}
    method getInstance (line 23) | public static ShortestPathMetric getInstance() {
    method createMetricSpace (line 27) | public AbstractIntMetricSpace createMetricSpace(AbstractUndirectedGrap...

FILE: src/java/edu/stanford/math/plex4/graph/random/BAGraph.java
  class BAGraph (line 20) | public class BAGraph extends GraphInstanceGenerator {
    method BAGraph (line 25) | public BAGraph(int n, int m) {
    method generate (line 44) | @Override
    method whichSegmentHasX (line 82) | protected int whichSegmentHasX(double[] p, double x) {
    method getProbabilityPartition (line 102) | protected double[] getProbabilityPartition(int[] d) {
    method makeStarterGraph (line 136) | protected AbstractUndirectedGraph makeStarterGraph(int size, AbstractU...
    method toString (line 152) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/BinaryHierarchicalGraph.java
  class BinaryHierarchicalGraph (line 19) | public class BinaryHierarchicalGraph extends GraphInstanceGenerator {
    method BinaryHierarchicalGraph (line 40) | public BinaryHierarchicalGraph(int n) {
    method BinaryHierarchicalGraph (line 51) | public BinaryHierarchicalGraph(int n, double maxProbability) {
    method BinaryHierarchicalGraph (line 65) | protected BinaryHierarchicalGraph(int n, boolean dummy) {
    method getProbabilities (line 70) | public double[] getProbabilities() {
    method generate (line 74) | @Override
    method construct (line 97) | protected AbstractUndirectedGraph construct(double maxProbability) {
    method getProbabilities (line 136) | protected double[] getProbabilities(int k, double dampingFactor) {
    method constructEdges (line 159) | protected AbstractUndirectedGraph constructEdges(int n0, int n1, int k...
    method getTreeDepth (line 192) | protected int getTreeDepth(int n) {
    method toString (line 205) | @Override
    method debug (line 210) | protected void debug(String msg) {

FILE: src/java/edu/stanford/math/plex4/graph/random/BinaryTree.java
  class BinaryTree (line 10) | public class BinaryTree {
    method BinaryTree (line 29) | public BinaryTree(int n) {
    method getMaxDepth (line 36) | public int getMaxDepth() {
    method getDepth (line 52) | public int getDepth(int i) {
    method getCommonAncestor (line 67) | public int getCommonAncestor(int i, int j) {
    method commonAncestorDepth (line 110) | public int commonAncestorDepth(int i, int j) {

FILE: src/java/edu/stanford/math/plex4/graph/random/BinaryTreeGraph.java
  class BinaryTreeGraph (line 10) | public class BinaryTreeGraph extends GraphInstanceGenerator {
    method BinaryTreeGraph (line 14) | public BinaryTreeGraph(int n) {
    method generate (line 18) | @Override
    method toString (line 66) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/CircleGraph.java
  class CircleGraph (line 12) | public class CircleGraph extends GraphInstanceGenerator {
    method CircleGraph (line 20) | public CircleGraph(int numNodes, int numNeighbors,
    method generate (line 27) | @Override
    method generateWithRewiring (line 38) | protected AbstractUndirectedGraph generateWithRewiring(AbstractUndirec...
    method toString (line 67) | @Override
    method correctBettiSequence (line 94) | public String correctBettiSequence() {

FILE: src/java/edu/stanford/math/plex4/graph/random/ClusteredERGraph.java
  class ClusteredERGraph (line 21) | public class ClusteredERGraph extends GraphInstanceGenerator {
    method ClusteredERGraph (line 36) | public ClusteredERGraph(int clusterCount) {
    method defineCluster (line 48) | public void defineCluster(int index, int size, double param) {
    method linkClusters (line 61) | public void linkClusters(int srcIndex, int destIndex, int edgeCount) {
    method generate (line 67) | @Override
    method linkClustersInPlace (line 106) | protected void linkClustersInPlace(AbstractUndirectedGraph graph, int ...
    method getRandomIntInRange (line 122) | protected int getRandomIntInRange(int x0, int x1) {
    method makeClusterInPlace (line 132) | protected void makeClusterInPlace(AbstractUndirectedGraph graph, int s...
    method explain (line 147) | public String explain() {
    method toString (line 172) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/ErdosRenyiGraph.java
  class ErdosRenyiGraph (line 20) | public class ErdosRenyiGraph extends GraphInstanceGenerator {
    method ErdosRenyiGraph (line 30) | public ErdosRenyiGraph(int n, double p) {
    method generate (line 36) | @Override
    method toString (line 59) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/ForestFireGraph.java
  class ForestFireGraph (line 20) | public class ForestFireGraph extends GraphInstanceGenerator {
    method ForestFireGraph (line 30) | public ForestFireGraph(int n, double forwardBurningProbability,
    method generate (line 37) | @Override
    method burnNodes (line 66) | private AbstractUndirectedGraph burnNodes(int v, int w, int t, Abstrac...
    method toString (line 101) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/GraphInstanceGenerator.java
  class GraphInstanceGenerator (line 14) | public abstract class GraphInstanceGenerator implements Serializable {
    type ImplementationType (line 17) | public enum ImplementationType {
    method GraphInstanceGenerator (line 24) | public GraphInstanceGenerator() {
    method GraphInstanceGenerator (line 28) | public GraphInstanceGenerator(ImplementationType implementationType) {
    method setImplementationType (line 32) | public void setImplementationType(ImplementationType implementationTyp...
    method initializeGraph (line 36) | protected AbstractUndirectedGraph initializeGraph(int numNodes) {
    method generate (line 44) | public abstract AbstractUndirectedGraph generate();

FILE: src/java/edu/stanford/math/plex4/graph/random/HierarchicalERGraph.java
  class HierarchicalERGraph (line 11) | public class HierarchicalERGraph extends BinaryHierarchicalGraph {
    method HierarchicalERGraph (line 30) | public HierarchicalERGraph(int n, int m, double maxProbability,
    method roundUpToPowerOf2 (line 39) | protected static int roundUpToPowerOf2(int m) {
    method getProbabilities (line 59) | protected double[] getProbabilities(int k, double dampingFactor) {
    method getERHierarchyLevelCount (line 87) | protected int getERHierarchyLevelCount(int totalLevels) {
    method toString (line 96) | @Override
    method getErParameter (line 103) | public double getErParameter() {
    method getHgLeafCount (line 107) | public int getHgLeafCount() {
    method getRootedGraphSize (line 111) | public int getRootedGraphSize() {

FILE: src/java/edu/stanford/math/plex4/graph/random/KNearestNeighborsGraph.java
  class KNearestNeighborsGraph (line 16) | public class KNearestNeighborsGraph extends ManifoldGraph {
    method KNearestNeighborsGraph (line 20) | public KNearestNeighborsGraph(int size, int dimension, int k) {
    method distance (line 24) | @Override
    method generatePoints (line 29) | @Override
    method toString (line 34) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/ManifoldGraph.java
  class ManifoldGraph (line 16) | public abstract class ManifoldGraph extends GraphInstanceGenerator {
    method ManifoldGraph (line 31) | protected ManifoldGraph(int size, int dimension, int k) {
    method generate (line 37) | @Override
    method generateUniformPoints (line 63) | protected void generateUniformPoints() {
    method generatePoints (line 70) | protected abstract void generatePoints();
    method distance (line 79) | protected abstract double distance(double[] x, double[] y);
    method getNearestNeighbors (line 88) | protected int[] getNearestNeighbors(int index) {

FILE: src/java/edu/stanford/math/plex4/graph/random/PrescribedDegrees.java
  class PrescribedDegrees (line 16) | public class PrescribedDegrees extends GraphInstanceGenerator {
    method PrescribedDegrees (line 22) | public PrescribedDegrees(int[] degreeSequence) {
    method generate (line 42) | @Override
    method erdosGallaiCriteria (line 95) | protected static boolean erdosGallaiCriteria(int[] d, int k) {
    method isGraphical (line 119) | public static boolean isGraphical(int[] d) {
    method whichSegmentHasX (line 153) | protected int whichSegmentHasX(double[] p, double x) {
    method getCandidateList (line 173) | protected int[] getCandidateList(int[] d, int i, AbstractUndirectedGra...
    method getProbabilityPartition (line 199) | protected double[] getProbabilityPartition(int[] d) {
    method multiMinus (line 234) | protected int[] multiMinus(int[] ds, int i, int j) {
    method minPositivePosition (line 248) | public static int minPositivePosition(int[] arr) {
    method toString (line 259) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/RandomGeometricGraph.java
  class RandomGeometricGraph (line 17) | public class RandomGeometricGraph extends GraphInstanceGenerator {
    method RandomGeometricGraph (line 32) | public RandomGeometricGraph(int n, int d, double r) {
    method generate (line 39) | @Override
    method distance (line 65) | protected double distance(double[] x, double[] y) {
    method toString (line 79) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/SphereGraph.java
  class SphereGraph (line 10) | public class SphereGraph extends ManifoldGraph {
    method SphereGraph (line 15) | public SphereGraph(int size, int k) {
    method distance (line 19) | @Override
    method generatePoints (line 24) | @Override
    method toString (line 29) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/StochasticBlockmodel.java
  class StochasticBlockmodel (line 8) | public class StochasticBlockmodel extends GraphInstanceGenerator {
    method StochasticBlockmodel (line 14) | public StochasticBlockmodel(int n, double[][] probabilityMatrix) {
    method generate (line 19) | @Override
    method toString (line 50) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/random/TorusGraph.java
  class TorusGraph (line 5) | public class TorusGraph extends ManifoldGraph {
    method TorusGraph (line 9) | public TorusGraph(int size, int dimension, int k) {
    method TorusGraph (line 13) | public TorusGraph(int size, int k) {
    method distance (line 17) | @Override
    method generatePoints (line 36) | @Override
    method toString (line 41) | @Override

FILE: src/java/edu/stanford/math/plex4/graph/utility/GraphUtility.java
  class GraphUtility (line 19) | public class GraphUtility {
    method toGeometricSimplexStream (line 21) | public static GeometricSimplexStream toGeometricSimplexStream(Abstract...
    method toSimplexStream (line 38) | public static ExplicitSimplexStream toSimplexStream(AbstractUndirected...
    method computeShortestPaths (line 63) | public static double[][] computeShortestPaths(AbstractUndirectedGraph ...
    method getAdjacencyMatrix (line 97) | public static int[][] getAdjacencyMatrix(AbstractUndirectedGraph graph) {
    method getSparseAdjacencyMatrix (line 118) | public static IntSparseMatrix getSparseAdjacencyMatrix(AbstractUndirec...
    method getAdjacencyMatrix (line 138) | public static double[][] getAdjacencyMatrix(AbstractWeightedUndirected...
    method getSparseAdjacencyMatrix (line 159) | public static DoubleSparseMatrix getSparseAdjacencyMatrix(AbstractWeig...
    method getLaplacianMatrix (line 180) | public static int[][] getLaplacianMatrix(AbstractUndirectedGraph graph) {
    method getSparseLaplacianMatrix (line 207) | public static IntSparseMatrix getSparseLaplacianMatrix(AbstractUndirec...
    method getLaplacianMatrix (line 234) | public static double[][] getLaplacianMatrix(AbstractWeightedUndirected...
    method getSparseLaplacianMatrix (line 262) | public static DoubleSparseMatrix getSparseLaplacianMatrix(AbstractWeig...

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/AnnotatedBarcodeCollection.java
  class AnnotatedBarcodeCollection (line 7) | public class AnnotatedBarcodeCollection<T extends Comparable<T>, G> exte...
    method setLeftClosedDefault (line 17) | public void setLeftClosedDefault(boolean value) {
    method setRightClosedDefault (line 27) | public void setRightClosedDefault(boolean value) {
    method addInterval (line 41) | public void addInterval(int dimension, T start, T end, G generatingCyc...
    method addRightInfiniteInterval (line 54) | public void addRightInfiniteInterval(int dimension, T start, G generat...
    method addLeftInfiniteInterval (line 67) | public void addLeftInfiniteInterval(int dimension, T end, G generating...
    method getInfiniteIntervals (line 71) | public AnnotatedBarcodeCollection<T, G> getInfiniteIntervals() {
    method getBettiNumbersMap (line 91) | public Map<Integer, Integer> getBettiNumbersMap(T point) {
    method filterByMaxDimension (line 112) | public AnnotatedBarcodeCollection<T, G> filterByMaxDimension(int maxDi...
    method filterPositiveMeasureIntervals (line 136) | public AnnotatedBarcodeCollection<T, G> filterPositiveMeasureIntervals...
    method filterEvenIntervals (line 162) | public static <G> AnnotatedBarcodeCollection<Integer, G> filterEvenInt...

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/BarcodeCollection.java
  class BarcodeCollection (line 5) | public class BarcodeCollection<T extends Comparable<T>> extends Annotate...
    method addInterval (line 16) | public void addInterval(int dimension, T start, T end) {
    method addRightInfiniteInterval (line 28) | public void addRightInfiniteInterval(int dimension, T start) {
    method addLeftInfiniteInterval (line 40) | public void addLeftInfiniteInterval(int dimension, T end) {
    method addInterval (line 44) | public void addInterval(int dimension, Interval<T> interval) {
    method forgetGeneratorType (line 48) | public static <T extends Comparable<T>, G> BarcodeCollection<T> forget...

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/BarcodeUtility.java
  class BarcodeUtility (line 11) | public class BarcodeUtility {
    method getEndpoints (line 27) | public static <G> double[][] getEndpoints(AnnotatedBarcodeCollection<D...
    method getEndpoints (line 48) | public static double[][] getEndpoints(List<Interval<Double>> intervals...
    method getLongestBarcodes (line 84) | public static List<Interval<Double>> getLongestBarcodes(List<Interval<...
    method getLongestAnnotatedBarcodes (line 104) | public static <G> List<ObjectObjectPair<Interval<Double>, G>> getLonge...
    method getLength (line 134) | public static double getLength(Interval<Double> interval) {
    method filterIntervalsByMinimumLength (line 149) | public static List<Interval<Double>> filterIntervalsByMinimumLength(It...
    method filterIntervalPairsByMinimumLength (line 168) | public static <G> List<ObjectObjectPair<Interval<Double>, G>> filterIn...

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/Interval.java
  class Interval (line 15) | public class Interval<T extends Comparable<T>> implements Comparable<Int...
    method makeFiniteClosedInterval (line 32) | public static <T extends Comparable<T>> Interval<T> makeFiniteClosedIn...
    method makeFiniteRightOpenInterval (line 44) | public static <T extends Comparable<T>> Interval<T> makeFiniteRightOpe...
    method makeFiniteLeftOpenInterval (line 56) | public static <T extends Comparable<T>> Interval<T> makeFiniteLeftOpen...
    method makeFiniteOpenInterval (line 68) | public static <T extends Comparable<T>> Interval<T> makeFiniteOpenInte...
    method makeRightInfiniteClosedInterval (line 79) | public static <T extends Comparable<T>> Interval<T> makeRightInfiniteC...
    method makeRightInfiniteRightOpenInterval (line 90) | public static <T extends Comparable<T>> Interval<T> makeRightInfiniteR...
    method makeRightInfiniteLeftOpenInterval (line 101) | public static <T extends Comparable<T>> Interval<T> makeRightInfiniteL...
    method makeRightInfiniteOpenInterval (line 112) | public static <T extends Comparable<T>> Interval<T> makeRightInfiniteO...
    method makeLeftInfiniteClosedInterval (line 123) | public static <T extends Comparable<T>> Interval<T> makeLeftInfiniteCl...
    method makeLeftInfiniteRightOpenInterval (line 134) | public static <T extends Comparable<T>> Interval<T> makeLeftInfiniteRi...
    method makeLeftInfiniteLeftOpenInterval (line 145) | public static <T extends Comparable<T>> Interval<T> makeLeftInfiniteLe...
    method makeLeftInfiniteOpenInterval (line 156) | public static <T extends Comparable<T>> Interval<T> makeLeftInfiniteOp...
    method makeInterval (line 172) | public static <T extends Comparable<T>> Interval<T> makeInterval(T sta...
    method Interval (line 186) | private Interval(T start, T end, boolean isLeftClosed, boolean isRight...
    method getStart (line 200) | public T getStart() {
    method getEnd (line 209) | public T getEnd() {
    method isLeftClosed (line 218) | public boolean isLeftClosed() {
    method isRightClosed (line 227) | public boolean isRightClosed() {
    method isLeftInfinite (line 236) | public boolean isLeftInfinite() {
    method isRightInfinite (line 245) | public boolean isRightInfinite() {
    method isInfinite (line 255) | public boolean isInfinite() {
    method containsPoint (line 266) | public boolean containsPoint(T point) {
    method toString (line 290) | @Override
    method hashCode (line 323) | @Override
    method equals (line 336) | @Override
    method compareTo (line 366) | public int compareTo(Interval<T> arg0) {
    method compareTo2 (line 403) | public int compareTo2(Interval<T> arg0) {
    method getTypeCode (line 433) | private static <T extends Comparable<T>> int getTypeCode(Interval<T> i...

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/IntervalLengthComparator.java
  class IntervalLengthComparator (line 5) | public class IntervalLengthComparator implements Comparator<Interval<Dou...
    method IntervalLengthComparator (line 8) | private IntervalLengthComparator() {}
    method getInstance (line 10) | public static IntervalLengthComparator getInstance() {
    method compare (line 14) | public int compare(Interval<Double> arg0, Interval<Double> arg1) {

FILE: src/java/edu/stanford/math/plex4/homology/barcodes/PersistenceInvariantDescriptor.java
  class PersistenceInvariantDescriptor (line 25) | public class PersistenceInvariantDescriptor<I, G> implements Iterable<En...
    method PersistenceInvariantDescriptor (line 30) | public PersistenceInvariantDescriptor() {}
    method addInterval (line 40) | public void addInterval(int dimension, I interval, G generator) {
    method getBettiSequence (line 63) | public int[] getBettiSequence() {
    method getBettiNumbers (line 88) | public String getBettiNumbers() {
    method toString (line 112) | @Override
    method getIntervalIterator (line 150) | public Iterator<Entry<Integer, List<I>>> getIntervalIterator() {
    method getGeneratorIterator (line 161) | public Iterator<Entry<Integer, List<G>>> getGeneratorIterator() {
    method getIntervalGeneratorPairIterator (line 172) | public Iterator<Entry<Integer, List<ObjectObjectPair<I, G>>>> getInter...
    method getDimensions (line 181) | public Set<Integer> getDimensions() {
    method getIntervalsAtDimension (line 191) | public List<I> getIntervalsAtDimension(int dimension) {
    method getGeneratorsAtDimension (line 205) | public List<G> getGeneratorsAtDimension(int dimension) {
    method getIntervalGeneratorPairsAtDimension (line 219) | public List<ObjectObjectPair<I, G>> getIntervalGeneratorPairsAtDimensi...
    method hashCode (line 230) | @Override
    method equals (line 243) | @Override
    method iterator (line 270) | public Iterator<Entry<Integer, List<ObjectObjectPair<I, G>>>> iterator...
    method union (line 283) | @SuppressWarnings("unchecked")
    method mapSetEquals (line 329) | private static <X> boolean mapSetEquals(Map<Integer, List<X>> a, Map<?...

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/Cell.java
  class Cell (line 45) | public class Cell implements PrimitiveBasisElement {
    method Cell (line 87) | public Cell() {
    method Cell (line 106) | public Cell(int dimension, Collection<Cell> boundaryElements) {
    method Cell (line 118) | public Cell(int dimension, Collection<Cell> boundaryElements, int[] at...
    method Cell (line 130) | public Cell(int dimension, Cell[] boundaryElements) {
    method Cell (line 144) | private Cell(int dimension, PrimitiveBasisElement[] boundaryElements, ...
    method getCellIds (line 162) | private static int[] getCellIds(Collection<Cell> boundaryElements) {
    method getCellIds (line 181) | private static int[] getCellIds(Cell[] boundaryElements) {
    method getBoundaryIds (line 198) | public int[] getBoundaryIds() {
    method getCellId (line 207) | public int getCellId() {
    method getBoundaryArray (line 214) | public PrimitiveBasisElement[] getBoundaryArray() {
    method getDimension (line 221) | public int getDimension() {
    method getBoundaryCoefficients (line 228) | public int[] getBoundaryCoefficients() {
    method toString (line 235) | public String toString() {
    method hashCode (line 242) | public int hashCode() {
    method equals (line 249) | public boolean equals(Object obj) {
    method verifyDimension (line 272) | public void verifyDimension() {
    method precomputeHashCode (line 291) | private int precomputeHashCode() {

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/CellComparator.java
  class CellComparator (line 17) | public class CellComparator implements Comparator<Cell> {
    method CellComparator (line 26) | private CellComparator() {}
    method getInstance (line 33) | public static CellComparator getInstance() {
    method compare (line 40) | public int compare(Cell arg0, Cell arg1) {

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/PrimitiveBasisElement.java
  type PrimitiveBasisElement (line 18) | public interface PrimitiveBasisElement {
    method getDimension (line 27) | public int getDimension();
    method getBoundaryArray (line 37) | public PrimitiveBasisElement[] getBoundaryArray();
    method getBoundaryCoefficients (line 51) | public int[] getBoundaryCoefficients();

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/Simplex.java
  class Simplex (line 26) | public class Simplex implements PrimitiveBasisElement {
    method Simplex (line 43) | public Simplex(final int[] vertices) {
    method makeSimplex (line 55) | public static Simplex makeSimplex(int... args) {
    method getDimension (line 62) | public int getDimension() {
    method getVertices (line 71) | public int[] getVertices() {
    method getBoundaryArray (line 78) | public Simplex[] getBoundaryArray() {
    method getBoundaryCoefficients (line 94) | public int[] getBoundaryCoefficients() {
    method equals (line 104) | public boolean equals(Object obj) {
    method hashCode (line 121) | public int hashCode() {
    method toString (line 128) | public String toString() {

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexComparator.java
  class SimplexComparator (line 30) | public class SimplexComparator implements Comparator<Simplex> {
    method SimplexComparator (line 40) | private SimplexComparator() {}
    method getInstance (line 47) | public static SimplexComparator getInstance() {
    method compare (line 54) | public int compare(Simplex o1, Simplex o2) {

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexPair.java
  class SimplexPair (line 5) | public class SimplexPair extends ObjectObjectPair<Simplex, Simplex> impl...
    method SimplexPair (line 7) | public SimplexPair(Simplex first, Simplex second) {
    method SimplexPair (line 11) | public SimplexPair(int[] first, int[] second) {
    method SimplexPair (line 15) | public SimplexPair(ObjectObjectPair<Simplex, Simplex> pair) {
    method createPair (line 19) | public static SimplexPair createPair(Simplex first, Simplex second) {
    method createPair (line 23) | public static SimplexPair createPair(int first, int second) {
    method createPair (line 27) | public static SimplexPair createPair(int[] first, int[] second) {
    method getBoundaryArray (line 31) | public PrimitiveBasisElement[] getBoundaryArray() {
    method getBoundaryCoefficients (line 50) | public int[] getBoundaryCoefficients() {
    method getDimension (line 68) | public int getDimension() {

FILE: src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexPairComparator.java
  class SimplexPairComparator (line 5) | public class SimplexPairComparator implements Comparator<SimplexPair> {
    method SimplexPairComparator (line 17) | private SimplexPairComparator() {}
    method getInstance (line 24) | public static SimplexPairComparator getInstance() {
    method compare (line 28) | public int compare(SimplexPair arg0, SimplexPair arg1) {

FILE: src/java/edu/stanford/math/plex4/homology/filtration/ExternalConverter.java
  class ExternalConverter (line 15) | public class ExternalConverter extends FiltrationConverter {
    method ExternalConverter (line 21) | public ExternalConverter(double[] fvalues) {
    method getFiltrationIndex (line 36) | public int getFiltrationIndex(double filtrationValue) {
    method getFiltrationValue (line 60) | public double getFiltrationValue(int filtrationIndex) {
    method computeInducedFiltrationValue (line 78) | public double computeInducedFiltrationValue(double filtrationValue1, d...
    method getInitialFiltrationValue (line 87) | public double getInitialFiltrationValue() {

FILE: src/java/edu/stanford/math/plex4/homology/filtration/FiltrationConverter.java
  class FiltrationConverter (line 15) | public abstract class FiltrationConverter implements ObjectObjectFunctio...
    method getFiltrationIndex (line 23) | public abstract int getFiltrationIndex(double filtrationValue);
    method getFiltrationValue (line 31) | public abstract double getFiltrationValue(int filtrationIndex);
    method computeInducedFiltrationValue (line 42) | public abstract double computeInducedFiltrationValue(double filtration...
    method getInitialFiltrationValue (line 49) | public abstract double getInitialFiltrationValue();
    method transform (line 51) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...
    method evaluate (line 58) | public Interval<Double> evaluate(Interval<Integer> interval) {

FILE: src/java/edu/stanford/math/plex4/homology/filtration/FiltrationUtility.java
  class FiltrationUtility (line 19) | public class FiltrationUtility {
    method transform (line 21) | @SuppressWarnings("unchecked")
    method transformByIdentity (line 48) | public static <G> PersistenceInvariantDescriptor<Interval<Double>, G> ...

FILE: src/java/edu/stanford/math/plex4/homology/filtration/IdentityConverter.java
  class IdentityConverter (line 12) | public class IdentityConverter extends FiltrationConverter {
    method IdentityConverter (line 22) | private IdentityConverter(){}
    method getInstance (line 29) | public static IdentityConverter getInstance() {
    method getFiltrationIndex (line 33) | @Override
    method getFiltrationValue (line 38) | @Override
    method computeInducedFiltrationValue (line 43) | @Override
    method getInitialFiltrationValue (line 48) | @Override

FILE: src/java/edu/stanford/math/plex4/homology/filtration/IncreasingLinearConverter.java
  class IncreasingLinearConverter (line 19) | public class IncreasingLinearConverter extends FiltrationConverter {
    method IncreasingLinearConverter (line 58) | public IncreasingLinearConverter(int numDivisions, double minFiltratio...
    method IncreasingLinearConverter (line 71) | public IncreasingLinearConverter(int numDivisions, double maxFiltratio...
    method getFiltrationIndex (line 78) | public int getFiltrationIndex(double filtrationValue) {
    method getFiltrationValue (line 88) | public double getFiltrationValue(int filtrationIndex) {
    method computeInducedFiltrationValue (line 95) | public double computeInducedFiltrationValue(double filtrationValue1, d...
    method getInitialFiltrationValue (line 102) | public double getInitialFiltrationValue(){
    method getNumDivisions (line 109) | public int getNumDivisions() {
    method getMinFiltrationValue (line 116) | public double getMinFiltrationValue() {
    method getMaxFiltrationValue (line 123) | public double getMaxFiltrationValue() {
    method getDelta (line 130) | public double getDelta() {

FILE: src/java/edu/stanford/math/plex4/homology/filtration/StaticConverter.java
  class StaticConverter (line 14) | public class StaticConverter extends FiltrationConverter {
    method StaticConverter (line 23) | private StaticConverter(){}
    method getInstance (line 30) | public static StaticConverter getInstance() {
    method getFiltrationIndex (line 37) | public int getFiltrationIndex(double filtrationValue) {
    method getFiltrationValue (line 44) | public double getFiltrationValue(int filtrationIndex) {
    method computeInducedFiltrationValue (line 51) | public double computeInducedFiltrationValue(double filtrationValue1, d...
    method getInitialFiltrationValue (line 58) | public double getInitialFiltrationValue() {

FILE: src/java/edu/stanford/math/plex4/homology/interfaces/AbstractPersistenceAlgorithm.java
  class AbstractPersistenceAlgorithm (line 14) | public abstract class AbstractPersistenceAlgorithm<T> {
    method computeIndexIntervals (line 23) | public abstract BarcodeCollection<Integer> computeIndexIntervals(Abstr...
    method computeIntervals (line 31) | public BarcodeCollection<Double> computeIntervals(AbstractFilteredStre...

FILE: src/java/edu/stanford/math/plex4/homology/interfaces/AbstractPersistenceBasisAlgorithm.java
  class AbstractPersistenceBasisAlgorithm (line 15) | public abstract class AbstractPersistenceBasisAlgorithm<T, B> extends Ab...
    method computeAnnotatedIndexIntervals (line 26) | public abstract AnnotatedBarcodeCollection<Integer, B> computeAnnotate...
    method computeAnnotatedIntervals (line 36) | public AnnotatedBarcodeCollection<Double, B> computeAnnotatedIntervals...

FILE: src/java/edu/stanford/math/plex4/homology/nonautogen/DisjointSetSystem.java
  class DisjointSetSystem (line 3) | @Deprecated
    method DisjointSetSystem (line 10) | public DisjointSetSystem(int size) {
    method DisjointSetSystem (line 23) | public DisjointSetSystem(DisjointSetSystem set) {
    method grow (line 34) | public void grow(int newSize) {
    method find (line 62) | public int find(int index) {
    method union (line 71) | public void union(int x, int y) {

FILE: src/java/edu/stanford/math/plex4/homology/nonautogen/PersistentCohomologyPrototype.java
  class PersistentCohomologyPrototype (line 28) | public class PersistentCohomologyPrototype<U> extends AbstractPersistenc...
    method PersistentCohomologyPrototype (line 68) | public PersistentCohomologyPrototype(IntAbstractField field, Comparato...
    method initializeFilteredComparator (line 81) | protected void initializeFilteredComparator(AbstractFilteredStream<U> ...
    method getChainModule (line 90) | public IntAlgebraicFreeModule<U> getChainModule() {
    method getField (line 99) | public IntAbstractField getField() {
    method computeIndexIntervals (line 103) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...
    method pCohMatrix (line 108) | private BarcodeCollection<Integer> pCohMatrix(AbstractFilteredStream<U...
    method pCoh (line 218) | @SuppressWarnings("unused")
    method accumulate (line 314) | private void accumulate(IntSparseVector a, IntSparseVector b, int c, I...

FILE: src/java/edu/stanford/math/plex4/homology/utility/HomologyUtility.java
  class HomologyUtility (line 14) | public class HomologyUtility {
    method initializeDefaultBoundaryCoefficients (line 37) | private static void initializeDefaultBoundaryCoefficients() {
    method getDefaultBoundaryCoefficients (line 61) | public static int[] getDefaultBoundaryCoefficients(int length) {
    method compareIntArrays (line 99) | public static int compareIntArrays (int[] array1, int[] array2) {
    method removeIndex (line 123) | public static int[] removeIndex(final int[] array, int index) {
    method appendToArray (line 147) | public static int[] appendToArray(int[] array, int newValue) {
    method lowerEntries (line 163) | public static int[] lowerEntries(int[] array, int k) {
    method upperEntries (line 179) | public static int[] upperEntries(int[] array, int k) {
    method computeIntersection (line 196) | public static TIntHashSet computeIntersection(TIntHashSet set1, TIntHa...
    method convertIndices (line 225) | public static Simplex convertIndices(Simplex simplex, int[] conversion...
    method convertIndices (line 229) | public static int[] convertIndices(int[] vertices, int[] conversionArr...
    method deconvertIndices (line 239) | public static int[] deconvertIndices(int[] vertices, int[] conversionA...

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/AbstractHomologyTracker.java
  type AbstractHomologyTracker (line 5) | public interface AbstractHomologyTracker<K, I extends Comparable<I>, U, ...
    method add (line 6) | public void add(U sigma, K index);
    method remove (line 7) | public void remove(U sigma, K index);
    method getState (line 9) | public AbstractPersistenceTracker<K, I, G> getState();
    method isBoundary (line 11) | public boolean isBoundary(G generator);

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/AbstractPersistenceTracker.java
  type AbstractPersistenceTracker (line 7) | public interface AbstractPersistenceTracker<K, I extends Comparable<I>, ...
    method getInactiveGenerators (line 8) | public AnnotatedBarcodeCollection<I, G> getInactiveGenerators();
    method getActiveGenerators (line 9) | public Map<K, IntervalDescriptor<I, G>> getActiveGenerators();

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/BasisTrackingUtility.java
  class BasisTrackingUtility (line 25) | public class BasisTrackingUtility {
    method createNewSum (line 35) | @SuppressWarnings("unchecked")
    method low (line 56) | public static <X> X low(IntSparseFormalSum<X> chain, Comparator<X> com...
    method multiply (line 87) | public static <X, Y> IntSparseFormalSum<Y> multiply(Map<X, IntSparseFo...
    method multiply (line 116) | public static <X, Y, Z> Map<Z, IntSparseFormalSum<Y>> multiply(Map<X, ...
    method findColumnWithGivenLow (line 136) | public static <Y> int findColumnWithGivenLow(List<IntSparseFormalSum<Y...
    method findColumnWithGivenLow (line 160) | public static <X, Y> X findColumnWithGivenLow(Map<X, IntSparseFormalSu...
    method computeBoundary (line 181) | public static <X extends PrimitiveBasisElement> IntSparseFormalSum<X> ...
    method findFirstIndexContainingElement (line 209) | public static <X, Y> X findFirstIndexContainingElement(Map<X, IntSpars...
    method findLastIndexContainingElement (line 239) | public static <X, Y> X findLastIndexContainingElement(Map<X, IntSparse...
    method getAscendingIndicesContainingElement (line 269) | public static <X, Y> List<X> getAscendingIndicesContainingElement(Map<...
    method getAscendingIndicesWithGivenLow (line 284) | public static <X, Y> List<X> getAscendingIndicesWithGivenLow(Map<X, In...
    method getAscendingIndices (line 299) | public static <X, Y> List<X> getAscendingIndices(Map<X, Y> m, Comparat...
    method getPrependIndex (line 308) | public static <X> int getPrependIndex(Map<Integer, X> m) {
    method getAppendIndex (line 324) | public static <X> int getAppendIndex(Map<Integer, X> m) {
    method prependColumn (line 340) | public static <X> int prependColumn(Map<Integer, X> m, X col) {
    method appendColumn (line 346) | public static <X> int appendColumn(Map<Integer, X> m, X col) {
    method writeRow (line 352) | public static <X> void writeRow(Map<X, IntSparseFormalSum<Integer>> m,...
    method getRow (line 365) | public static <X, Y> IntSparseFormalSum<X> getRow(Map<X, IntSparseForm...
    method reduce (line 378) | public static <X, Y> ObjectObjectPair<IntSparseFormalSum<X>, IntSparse...

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/HomologyBasisTracker.java
  class HomologyBasisTracker (line 34) | public class HomologyBasisTracker<U extends PrimitiveBasisElement> imple...
    method compare (line 48) | public int compare(Integer o1, Integer o2) {
    method compare (line 54) | public int compare(U arg0, U arg1) {
    method HomologyBasisTracker (line 88) | public HomologyBasisTracker(IntAbstractField field, Comparator<U> basi...
    method log (line 95) | public static void log(String... args) {
    method getIntervalTracker (line 105) | public IntervalTracker<Integer, Integer, IntSparseFormalSum<U>> getInt...
    method getFiniteAnnotatedBarcodes (line 109) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getF...
    method getInfiniteAnnotatedBarcodes (line 113) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getI...
    method getAnnotatedBarcodes (line 117) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getA...
    method getFiniteBarcodes (line 121) | public BarcodeCollection<Integer> getFiniteBarcodes() {
    method getInfiniteBarcodes (line 125) | public BarcodeCollection<Integer> getInfiniteBarcodes() {
    method getBarcodes (line 129) | public BarcodeCollection<Integer> getBarcodes() {
    method add (line 133) | public void add(U sigma) {
    method add (line 137) | @SuppressWarnings("unchecked")
    method remove (line 209) | public void remove(U sigma) {
    method remove (line 213) | public void remove(U sigma, int externalIndex) {
    method checkInvariant (line 472) | public void checkInvariant() {
    method checkReduced (line 498) | protected <X, Y> void checkReduced(Map<X, IntSparseFormalSum<Y>> map, ...
    method isCycle (line 509) | protected boolean isCycle(IntSparseFormalSum<U> chain) {
    method isBoundary (line 516) | public boolean isBoundary(IntSparseFormalSum<U> cycle) {
    method add (line 533) | public void add(U sigma, Integer index) {
    method getStateWithoutFiniteBarcodes (line 537) | public AbstractPersistenceTracker<Integer, Integer, IntSparseFormalSum...
    method getState (line 557) | public AbstractPersistenceTracker<Integer, Integer, IntSparseFormalSum...
    method remove (line 561) | public void remove(U sigma, Integer index) {

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/IntervalDescriptor.java
  class IntervalDescriptor (line 7) | public class IntervalDescriptor<T, G> {
    method IntervalDescriptor (line 12) | public IntervalDescriptor(T start, int dimension, G generator) {
    method getStart (line 22) | public T getStart() {
    method getDimension (line 29) | public int getDimension() {
    method getGenerator (line 36) | public G getGenerator() {
    method toString (line 43) | @Override
    method hashCode (line 51) | @Override
    method equals (line 64) | @Override

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/IntervalTracker.java
  class IntervalTracker (line 13) | public class IntervalTracker<K, I extends Comparable<I>, G> implements A...
    method getActiveGenerators (line 23) | public Map<K, IntervalDescriptor<I, G>> getActiveGenerators() {
    method getInactiveGenerators (line 27) | public AnnotatedBarcodeCollection<I, G> getInactiveGenerators() {
    method setMaxDimension (line 31) | public void setMaxDimension(int maxDimension) {
    method setUseLeftClosedIntervals (line 35) | public void setUseLeftClosedIntervals(boolean value) {
    method setUseRightClosedIntervals (line 39) | public void setUseRightClosedIntervals(boolean value) {
    method containsActiveInterval (line 43) | public boolean containsActiveInterval(K key) {
    method startInterval (line 47) | public void startInterval(K key, I startIndex, int dimension, G genera...
    method endInterval (line 57) | public void endInterval(K key, I endIndex) {
    method endAllIntervals (line 78) | public void endAllIntervals(I endIndex) {
    method getAnnotatedBarcodes (line 100) | public AnnotatedBarcodeCollection<I, G> getAnnotatedBarcodes() {
    method getInfiniteAnnotatedBarcodes (line 104) | public AnnotatedBarcodeCollection<I, G> getInfiniteAnnotatedBarcodes() {
    method getFiniteAnnotatedBarcodes (line 114) | public AnnotatedBarcodeCollection<I, G> getFiniteAnnotatedBarcodes() {
    method getBarcodes (line 118) | public BarcodeCollection<I> getBarcodes() {
    method getInfiniteBarcodes (line 122) | public BarcodeCollection<I> getInfiniteBarcodes() {
    method getFiniteBarcodes (line 126) | public BarcodeCollection<I> getFiniteBarcodes() {
    method toString (line 130) | @Override

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/SimpleHomologyBasisTracker.java
  class SimpleHomologyBasisTracker (line 21) | public class SimpleHomologyBasisTracker<U extends PrimitiveBasisElement>...
    method compare (line 42) | public int compare(U arg0, U arg1) {
    method SimpleHomologyBasisTracker (line 72) | public SimpleHomologyBasisTracker(IntAbstractField field, Comparator<U...
    method add (line 80) | public void add(U sigma, Integer index) {
    method low (line 135) | private U low(IntSparseFormalSum<U> intSparseFormalSum) {
    method getState (line 139) | public IntervalTracker<Integer, Integer, IntSparseFormalSum<U>> getSta...
    method getStateWithoutFiniteBarcodes (line 199) | public IntervalTracker<Integer, Integer, IntSparseFormalSum<U>> getSta...
    method isBoundary (line 241) | public boolean isBoundary(IntSparseFormalSum<U> generator) {
    method remove (line 249) | public void remove(U sigma, Integer index) {
    method getIntervalTracker (line 253) | public IntervalTracker<Integer, Integer, IntSparseFormalSum<U>> getInt...
    method getFiniteAnnotatedBarcodes (line 257) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getF...
    method getInfiniteAnnotatedBarcodes (line 262) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getI...
    method getAnnotatedBarcodes (line 267) | public AnnotatedBarcodeCollection<Integer, IntSparseFormalSum<U>> getA...
    method getFiniteBarcodes (line 272) | public BarcodeCollection<Integer> getFiniteBarcodes() {
    method getInfiniteBarcodes (line 277) | public BarcodeCollection<Integer> getInfiniteBarcodes() {
    method getBarcodes (line 282) | public BarcodeCollection<Integer> getBarcodes() {

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/ZigZagHomology.java
  class ZigZagHomology (line 13) | public class ZigZagHomology<U extends PrimitiveBasisElement> extends Abs...
    method ZigZagHomology (line 53) | public ZigZagHomology(IntAbstractField field, Comparator<U> basisCompa...
    method initializeFilteredComparator (line 66) | protected void initializeFilteredComparator(AbstractFilteredStream<U> ...
    method computeIndexIntervals (line 70) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/InducedHomologyMappingUtility.java
  class InducedHomologyMappingUtility (line 26) | public class InducedHomologyMappingUtility {
    method include (line 28) | public static <I extends Comparable<I>, U extends PrimitiveBasisElemen...
    method project (line 126) | public static <I extends Comparable<I>, U extends PrimitiveBasisElemen...
    method computeInducedMap (line 198) | public static <K1, K2, I1 extends Comparable<I1>, I2 extends Comparabl...
    method join (line 235) | public static <K, I extends Comparable<I>, G1, G2> IntervalTracker<K, ...
    method reverse (line 300) | public static <X extends Comparable<X>, Y> Map<Y, List<X>> reverse(Map...
    method getInclusionMap (line 320) | public static <U extends PrimitiveBasisElement> ObjectObjectFunction<I...
    method getFirstGradedProjectionMap (line 330) | public static <U extends PrimitiveBasisElement, V extends ObjectObject...
    method getSecondGradedProjectionMap (line 356) | public static <U extends PrimitiveBasisElement, V extends ObjectObject...

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/SimplexStreamUtility.java
  class SimplexStreamUtility (line 9) | public class SimplexStreamUtility {
    method projectFirst (line 12) | public static <U> IntSparseFormalSum<U> projectFirst(IntSparseFormalSu...
    method projectSecond (line 23) | public static <U> IntSparseFormalSum<U> projectSecond(IntSparseFormalS...
    method filterByDimension (line 34) | public static <U extends PrimitiveBasisElement> IntSparseFormalSum<U> ...

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/VietorisRipsBootstrapper.java
  class VietorisRipsBootstrapper (line 21) | public class VietorisRipsBootstrapper {
    method VietorisRipsBootstrapper (line 30) | public VietorisRipsBootstrapper(double[][] points, double maxDistance,...
    method VietorisRipsBootstrapper (line 42) | public VietorisRipsBootstrapper(double[][] points, double maxDistance,...
    method getSubset (line 57) | public int[] getSubset(int index) {
    method performBootstrap (line 61) | public BarcodeCollection<Integer> performBootstrap() {

FILE: src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/WitnessBootstrapper.java
  class WitnessBootstrapper (line 25) | public class WitnessBootstrapper<T> {
    method WitnessBootstrapper (line 35) | public WitnessBootstrapper(AbstractSearchableMetricSpace<T> metricSpac...
    method getLandmarkSelector (line 42) | public LandmarkSelector<T> getLandmarkSelector(int index) {
    method WitnessBootstrapper (line 46) | public WitnessBootstrapper(AbstractSearchableMetricSpace<T> metricSpac...
    method performProjectionBootstrap (line 60) | public BarcodeCollection<Integer> performProjectionBootstrap() {
    method performProjectionBootstrap (line 64) | public BarcodeCollection<Integer> performProjectionBootstrap(int[] exp...

FILE: src/java/edu/stanford/math/plex4/interop/Plex3PersistenceAlgorithm.java
  class Plex3PersistenceAlgorithm (line 19) | public class Plex3PersistenceAlgorithm extends AbstractPersistenceAlgori...
    method Plex3PersistenceAlgorithm (line 27) | public Plex3PersistenceAlgorithm(int maxDimension) {
    method computeIndexIntervals (line 34) | public BarcodeCollection<Integer> computeIndexIntervals(AbstractFilter...

FILE: src/java/edu/stanford/math/plex4/interop/Plex3Stream.java
  class Plex3Stream (line 23) | public class Plex3Stream implements AbstractFilteredStream<edu.stanford....
    method Plex3Stream (line 29) | public Plex3Stream(SimplexStream plex3Stream) {
    method Plex3Stream (line 46) | public Plex3Stream(SimplexStream plex3Stream, int[] vertexMapping) {
    method finalizeStream (line 63) | public void finalizeStream() { }
    method getBoundary (line 65) | public Simplex[] getBoundary(Simplex basisElement) {
    method getBoundaryCoefficients (line 69) | public int[] getBoundaryCoefficients(Simplex basisElement) {
    method getDimension (line 73) | public int getDimension(Simplex basisElement) {
    method getFiltrationIndex (line 77) | public int getFiltrationIndex(Simplex basisElement) {
    method getFiltrationValue (line 81) | public double getFiltrationValue(Simplex basisElement) {
    method containsElement (line 88) | public boolean containsElement(Simplex basisElement) {
    method getMaximumFiltrationIndex (line 93) | public int getMaximumFiltrationIndex() {
    method getMinimumFiltrationIndex (line 97) | public int getMinimumFiltrationIndex() {
    method getSize (line 101) | public int getSize() {
    method isFinalized (line 105) | public boolean isFinalized() {
    method iterator (line 109) | public Iterator<edu.stanford.math.plex4.homology.chain_basis.Simplex> ...
    method getBasisComparator (line 113) | public Comparator<Simplex> getBasisComparator() {
    method transform (line 117) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...

FILE: src/java/edu/stanford/math/plex4/interop/Plex3ToPlex4BarcodeAdapter.java
  class Plex3ToPlex4BarcodeAdapter (line 19) | public class Plex3ToPlex4BarcodeAdapter implements ObjectObjectFunction<...
    method getInstance (line 22) | public static Plex3ToPlex4BarcodeAdapter getInstance() {
    method Plex3ToPlex4BarcodeAdapter (line 26) | private Plex3ToPlex4BarcodeAdapter(){}
    method evaluate (line 28) | public BarcodeCollection<Integer> evaluate(PersistenceInterval[] argum...

FILE: src/java/edu/stanford/math/plex4/interop/Plex3ToPlex4SimplexAdapter.java
  class Plex3ToPlex4SimplexAdapter (line 15) | public class Plex3ToPlex4SimplexAdapter implements ObjectObjectFunction<...
    method getInstance (line 19) | public static Plex3ToPlex4SimplexAdapter getInstance() {
    method getInstance (line 23) | public static Plex3ToPlex4SimplexAdapter getInstance(int[] vertexMappi...
    method Plex3ToPlex4SimplexAdapter (line 27) | private Plex3ToPlex4SimplexAdapter() {
    method Plex3ToPlex4SimplexAdapter (line 31) | private Plex3ToPlex4SimplexAdapter(int[] vertexMapping) {
    method evaluate (line 35) | public edu.stanford.math.plex4.homology.chain_basis.Simplex evaluate(S...

FILE: src/java/edu/stanford/math/plex4/io/BarcodeWriter.java
  class BarcodeWriter (line 11) | public class BarcodeWriter {
    method BarcodeWriter (line 14) | private BarcodeWriter() {}
    method getInstance (line 16) | public static BarcodeWriter getInstance() {
    method writeToFile (line 20) | public <G> void writeToFile(PersistenceInvariantDescriptor<Interval<Do...
    method getExtension (line 26) | public String getExtension() {

FILE: src/java/edu/stanford/math/plex4/io/BufferedImageWriter.java
  class BufferedImageWriter (line 13) | public class BufferedImageWriter implements ObjectWriter<BufferedImage> {
    method getInstance (line 18) | public static BufferedImageWriter getInstance(String parameter) {
    method initializeInstance (line 26) | private static void initializeInstance(String parameter) {
    method BufferedImageWriter (line 30) | private BufferedImageWriter(String encoderFormat) {
    method getDefaultEncoderFormat (line 34) | public static String getDefaultEncoderFormat() {
    method writeToFile (line 38) | public void writeToFile(BufferedImage object, String path) throws IOEx...
    method getExtension (line 54) | public String getExtension() {

FILE: src/java/edu/stanford/math/plex4/io/DoubleArrayReaderWriter.java
  class DoubleArrayReaderWriter (line 8) | public class DoubleArrayReaderWriter implements ObjectReader<double[][]>...
    method DoubleArrayReaderWriter (line 11) | private DoubleArrayReaderWriter() {}
    method getInstance (line 13) | public static DoubleArrayReaderWriter getInstance() {
    method importFromFile (line 17) | public double[][] importFromFile(String path) throws IOException {
    method getExtension (line 36) | public String getExtension() {
    method writeToFile (line 40) | public void writeToFile(double[][] object, String path) throws IOExcep...

FILE: src/java/edu/stanford/math/plex4/io/FileIOUtility.java
  class FileIOUtility (line 30) | public class FileIOUtility {
    method saveImage (line 39) | public static void saveImage(BufferedImage image, String filePath) thr...
    method writeTextFile (line 63) | public static void writeTextFile(String filePath, String contents, boo...
    method readCSVFile (line 101) | public static Table readCSVFile(String filename, String separator, boo...
    method readNumericCSVFile (line 159) | public static List<double[]> readNumericCSVFile(String filename, Strin...
    method serializeObject (line 198) | public static void serializeObject(Object obj, String destPath) throws...
    method loadObject (line 223) | public static Object loadObject(String inputPath) throws IOException {

FILE: src/java/edu/stanford/math/plex4/io/FileManager.java
  class FileManager (line 32) | public class FileManager {
    method FileManager (line 47) | private FileManager() {
    method getUniqueFilePath (line 51) | public static String getUniqueFilePath(String basename, String extenti...
    method getBaseOutputPath (line 60) | public static String getBaseOutputPath() {
    method getDailyOutputPath (line 71) | public static String getDailyOutputPath() throws IOException {
    method getUniqueOutputPath (line 85) | public static String getUniqueOutputPath() throws IOException {
    method getCategoryOutputPath (line 101) | public static String getCategoryOutputPath(String category) throws IOE...
    method getUniqueCategoryOutputPath (line 118) | public static String getUniqueCategoryOutputPath(String category) thro...
    method createDirectory (line 137) | private static String createDirectory(String directoryPath) throws IOE...
    method initializeDailyOutputPath (line 152) | private static void initializeDailyOutputPath() throws IOException {
    method initializeCategoryOutputPath (line 165) | private static void initializeCategoryOutputPath(String category) thro...
    method getTimeStamp (line 176) | private static String getTimeStamp() {
    method pause (line 185) | private static void pause() {
    method generateUniqueFileName (line 199) | public static String generateUniqueFileName() {

FILE: src/java/edu/stanford/math/plex4/io/MatlabInterface.java
  class MatlabInterface (line 15) | public class MatlabInterface{
    method getDefaultExtension (line 17) | protected static String getDefaultExtension() {
    method makeNewMatlabWriter (line 29) | public static MatlabWriter makeNewMatlabWriter(String label) throws IO...
    method finalizeMatlabWriter (line 42) | public static void finalizeMatlabWriter(MatlabWriter writer) throws IO...
    method exportScatterPlot2D (line 59) | public static void exportScatterPlot2D(MatlabWriter writer, DoubleMatr...
    method exportScatterPlot3D (line 80) | public static void exportScatterPlot3D(MatlabWriter writer, DoubleMatr...
    method exportScatterPlot2D (line 104) | public static void exportScatterPlot2D(MatlabWriter writer, DoubleMatr...
    method exportScatterPlot3D (line 139) | public static void exportScatterPlot3D(MatlabWriter writer, DoubleMatr...

FILE: src/java/edu/stanford/math/plex4/io/MatlabWriter.java
  class MatlabWriter (line 23) | public class MatlabWriter {
    method MatlabWriter (line 46) | public MatlabWriter(String filename) throws IOException {
    method close (line 55) | public void close() throws IOException {
    method turnOnCommentMode (line 63) | public void turnOnCommentMode() {
    method turnOffCommentMode (line 71) | public void turnOffCommentMode() {
    method insertComments (line 82) | protected String insertComments(String input) throws IOException {
    method writeClearAll (line 92) | public void writeClearAll() throws IOException {
    method assignValue (line 96) | public void assignValue(String varName, double value) throws IOExcepti...
    method assignValue (line 100) | public void assignValue(String varName, int value) throws IOException {
    method write (line 112) | public void write(String string) throws IOException {
    method writeLine (line 116) | public void writeLine(String string) throws IOException {
    method newLine (line 126) | public void newLine() throws IOException {
    method startNewCell (line 137) | public void startNewCell(String label) throws IOException {
    method newPlotWindow (line 141) | public void newPlotWindow() throws IOException {
    method holdOn (line 146) | public void holdOn() throws IOException {
    method holdOff (line 151) | public void holdOff() throws IOException {
    method gridOn (line 156) | public void gridOn() throws IOException {
    method gridOff (line 161) | public void gridOff() throws IOException {
    method getMarkerStyle (line 166) | public String getMarkerStyle(int index) {
    method getColorCode (line 170) | public String getColorCode(int index) {
    method getLineStyle (line 174) | public String getLineStyle(int index) {
    method getNextMarker (line 178) | public String getNextMarker() {
    method getNextColor (line 182) | public String getNextColor() {
    method getNextLineStyle (line 186) | public String getNextLineStyle() {
    method writeRowVector (line 194) | public void writeRowVector(DoubleMatrix1D array, String name) throws I...
    method writeColumnVector (line 198) | public void writeColumnVector(DoubleMatrix1D array, String name) throw...
    method writeRowVector (line 202) | public void writeRowVector(DoubleMatrix1D array) throws IOException {
    method writeColumnVector (line 206) | public void writeColumnVector(DoubleMatrix1D array) throws IOException {
    method writeRowVector (line 210) | public void writeRowVector(double[] array, String name) throws IOExcep...
    method writeColumnVector (line 214) | public void writeColumnVector(double[] array, String name) throws IOEx...
    method writeRowVector (line 218) | public void writeRowVector(double[] array) throws IOException {
    method writeColumnVector (line 222) | public void writeColumnVector(double[] array) throws IOException {
    method writeRowVector (line 226) | public void writeRowVector(int[] array, String name) throws IOException {
    method writeColumnVector (line 230) | public void writeColumnVector(int[] array, String name) throws IOExcep...
    method writeRowVector (line 234) | public void writeRowVector(int[] array) throws IOException {
    method writeColumnVector (line 238) | public void writeColumnVector(int[] array) throws IOException {
    method writeRowVector (line 242) | public <T> void writeRowVector(Iterable<T> collection) throws IOExcept...
    method writeColumnVector (line 246) | public <T> void writeColumnVector(Iterable<T> collection) throws IOExc...
    method writeRowVector (line 250) | public <T> void writeRowVector(Iterable<T> collection, String name) th...
    method writeColumnVector (line 254) | public <T> void writeColumnVector(Iterable<T> collection, String name)...
    method writeMatrix (line 262) | public void writeMatrix(DoubleMatrix2D matrix, String name) throws IOE...
    method writeMatrix (line 279) | public void writeMatrix(DoubleMatrix2D matrix) throws IOException {
    method writeSparseMatrix (line 295) | public void writeSparseMatrix(double[][] matrix, String name) throws I...
    method writeSparseVector (line 321) | public void writeSparseVector(double[] matrix, String name) throws IOE...
    method writeMatrix (line 345) | public void writeMatrix(double[][] matrix, String name) throws IOExcep...
    method writeMatrix (line 349) | public void writeMatrix(double[][] matrix) throws IOException {
    method writeMatrix (line 353) | public void writeMatrix(int[][] matrix, String name) throws IOException {
    method writeMatrix (line 357) | public void writeMatrix(int[][] matrix) throws IOException {
    method toRowVector (line 365) | public static String toRowVector(DoubleMatrix1D array, String name) {
    method toColumnVector (line 369) | public static String toColumnVector(DoubleMatrix1D array, String name) {
    method toRowVector (line 373) | public static String toRowVector(DoubleMatrix1D array) {
    method toColumnVector (line 377) | public static String toColumnVector(DoubleMatrix1D array) {
    method toRowVector (line 381) | public static String toRowVector(int[] array, String name) {
    method toColumnVector (line 385) | public static String toColumnVector(int[] array, String name) {
    method toRowVector (line 389) | public static String toRowVector(int[] array) {
    method toColumnVector (line 393) | public static String toColumnVector(int[] array) {
    method toRowVector (line 397) | public static String toRowVector(double[] array, String name) {
    method toColumnVector (line 401) | public static String toColumnVector(double[] array, String name) {
    method toRowVector (line 405) | public static String toRowVector(double[] array) {
    method toColumnVector (line 409) | public static String toColumnVector(double[] array) {
    method toRowVector (line 413) | public static <T> String toRowVector(Iterable<T> collection, String na...
    method toColumnVector (line 417) | public static <T> String toColumnVector(Iterable<T> collection, String...
    method toRowVector (line 421) | public static <T> String toRowVector(Iterable<T> collection) {
    method toColumnVector (line 425) | public static <T> String toColumnVector(Iterable<T> collection) {
    method toMatrix (line 433) | public static String toMatrix(DoubleMatrix2D matrix, String name) {
    method toMatrix (line 437) | public static String toMatrix(double[][] matrix, String name) {
    method toMatrix (line 441) | public static String toMatrix(int[][] matrix, String name) {
    method toVector (line 449) | private static <T> String toVector(Iterable<T> collection, String sepa...
    method toVector (line 466) | private static String toVector(int[] array, String separator) {
    method toVector (line 480) | private static String toVector(double[] array, String separator) {
    method toVector (line 494) | private static String toVector(DoubleMatrix1D array, String separator) {
    method toMatrix (line 508) | public static String toMatrix(DoubleMatrix2D matrix) {
    method toMatrix (line 526) | public static String toMatrix(double[][] matrix) {
    method toMatrix (line 549) | public static String toMatrix(int[][] matrix) {
    method toStringList (line 576) | public static String toStringList(List<String> array) {

FILE: src/java/edu/stanford/math/plex4/io/ObjReader.java
  class ObjReader (line 15) | public class ObjReader implements ObjectReader<GeometricSimplexStream> {
    method importFromFile (line 17) | public GeometricSimplexStream importFromFile(String path) {

FILE: src/java/edu/stanford/math/plex4/io/ObjectReader.java
  type ObjectReader (line 5) | public interface ObjectReader<T> {
    method importFromFile (line 6) | T importFromFile(String path) throws IOException;

FILE: src/java/edu/stanford/math/plex4/io/ObjectWriter.java
  type ObjectWriter (line 5) | public interface ObjectWriter<T> {
    method writeToFile (line 6) | void writeToFile(T object, String path) throws IOException;
    method getExtension (line 7) | String getExtension();

FILE: src/java/edu/stanford/math/plex4/io/SimplexStreamReaderWriter.java
  class SimplexStreamReaderWriter (line 13) | public class SimplexStreamReaderWriter implements ObjectReader<AbstractF...
    method SimplexStreamReaderWriter (line 16) | private SimplexStreamReaderWriter() {}
    method getInstance (line 18) | public static SimplexStreamReaderWriter getInstance() {
    method getExtension (line 22) | public String getExtension() {
    method importFromFile (line 26) | public AbstractFilteredStream<Simplex> importFromFile(String path) thr...
    method writeToFile (line 62) | public void writeToFile(AbstractFilteredStream<Simplex> object, String...

FILE: src/java/edu/stanford/math/plex4/io/Table.java
  class Table (line 18) | public class Table {
    method Table (line 30) | public Table() {
    method setTitle (line 39) | public void setTitle(String title) {
    method getTitle (line 49) | public String getTitle() {
    method addColumn (line 59) | public void addColumn(String columnHeading) {
    method setColumnHeading (line 72) | public void setColumnHeading(int column, String columnHeading) {
    method getColumnHeading (line 84) | public String getColumnHeading(int column) {
    method addRow (line 96) | public void addRow(Collection<Object> row) {
    method addRow (line 115) | public void addRow(List<String> row) {
    method addRow (line 132) | public void addRow(String[] row, boolean trimElements) {
    method getEntry (line 158) | public String getEntry(int row, int column) {
    method toString (line 170) | @Override
    method toCSVString (line 187) | public String toCSVString(String separator, boolean includeTitle, bool...
    method toPrettyString (line 226) | public String toPrettyString(String separator) {
    method padString (line 284) | private String padString(String input, int length, char padCharacter) {
    method repeatCharacter (line 304) | private String repeatCharacter(char character, int length) {

FILE: src/java/edu/stanford/math/plex4/kd/KDEuclideanMetricSpace.java
  class KDEuclideanMetricSpace (line 15) | public class KDEuclideanMetricSpace extends ObjectSearchableFiniteMetric...
    method KDEuclideanMetricSpace (line 19) | public KDEuclideanMetricSpace(double[][] dataPoints) {
    method getPoints (line 25) | public double[][] getPoints() {
    method getNearestPointIndex (line 29) | public int getNearestPointIndex(double[] queryPoint) {
    method getOpenNeighborhood (line 33) | public TIntHashSet getOpenNeighborhood(double[] queryPoint, double eps...
    method getClosedNeighborhood (line 37) | public TIntHashSet getClosedNeighborhood(double[] queryPoint, double e...
    method size (line 41) | public int size() {
    method distance (line 45) | public double distance(double[] a, double[] b) {
    method getPoint (line 49) | public double[] getPoint(int index) {
    method distance (line 53) | public double distance(int i, int j) {
    method getMaximumCoordinates (line 57) | public double[] getMaximumCoordinates() {
    method getMinimumCoordinates (line 71) | public double[] getMinimumCoordinates() {

FILE: src/java/edu/stanford/math/plex4/kd/KDNode.java
  class KDNode (line 10) | public class KDNode {
    method KDNode (line 16) | public KDNode(int index, int splitAxis) {
    method getIndex (line 23) | public int getIndex() {
    method getLeft (line 27) | public KDNode getLeft() {
    method getRight (line 31) | public KDNode getRight() {
    method getSplitAxis (line 35) | public int getSplitAxis() {
    method setLeft (line 39) | public void setLeft(KDNode node) {
    method setRight (line 43) | public void setRight(KDNode node) {

FILE: src/java/edu/stanford/math/plex4/kd/KDTree.java
  class KDTree (line 22) | public class KDTree {
    method KDTree (line 45) | public KDTree(double[][] dataPoints) {
    method construct (line 64) | private KDNode construct(List<Integer> points, int depth) {
    method getRandomSplitIndex (line 100) | private int getRandomSplitIndex(List<Integer> pointIndices) {
    method getMedianSplitIndex (line 112) | private int getMedianSplitIndex(List<Integer> pointIndices, final int ...
    method splitPoints (line 127) | private ObjectObjectPair<List<Integer>, List<Integer>> splitPoints(Lis...
    method getAxisComparator (line 150) | private Comparator<Integer> getAxisComparator(final int axis) {
    method nearestNeighborSearch (line 171) | public int nearestNeighborSearch(double[] queryPoint) {
    method nearestNeighborSearch (line 185) | private int nearestNeighborSearch(KDNode node, double[] queryPoint, in...
    method epsilonNeighborhoodSearch (line 240) | public TIntHashSet epsilonNeighborhoodSearch(double[] queryPoint, doub...
    method epsilonNeighborhoodSearch (line 256) | private void epsilonNeighborhoodSearch(KDNode node, double[] queryPoin...

FILE: src/java/edu/stanford/math/plex4/metric/impl/EuclideanMetricSpace.java
  class EuclideanMetricSpace (line 12) | public class EuclideanMetricSpace extends ObjectSearchableFiniteMetricSp...
    method EuclideanMetricSpace (line 19) | public EuclideanMetricSpace(double[][] array) {
    method distance (line 23) | @Override

FILE: src/java/edu/stanford/math/plex4/metric/impl/ExplicitMetricSpace.java
  class ExplicitMetricSpace (line 16) | public class ExplicitMetricSpace implements AbstractSearchableMetricSpac...
    method ExplicitMetricSpace (line 32) | public ExplicitMetricSpace(double[][] distanceMatrix) {
    method distance (line 36) | public double distance(int i, int j) {
    method size (line 40) | public int size() {
    method getClosedNeighborhood (line 44) | public TIntHashSet getClosedNeighborhood(Integer queryPoint, double ep...
    method getKNearestNeighbors (line 57) | public TIntHashSet getKNearestNeighbors(Integer queryPoint, int k) {
    method getNearestPointIndex (line 78) | public int getNearestPointIndex(Integer queryPoint) {
    method getOpenNeighborhood (line 96) | public TIntHashSet getOpenNeighborhood(Integer queryPoint, double epsi...
    method getPoint (line 109) | public Integer getPoint(int index) {
    method getPoints (line 113) | public Integer[] getPoints() {
    method distance (line 122) | public double distance(Integer a, Integer b) {

FILE: src/java/edu/stanford/math/plex4/metric/impl/ObjectSearchableFiniteMetricSpace.java
  class ObjectSearchableFiniteMetricSpace (line 16) | public abstract class ObjectSearchableFiniteMetricSpace<T> implements Ab...
    method ObjectSearchableFiniteMetricSpace (line 28) | public ObjectSearchableFiniteMetricSpace(T[] array) {
    method getKNearestNeighbors (line 32) | public TIntHashSet getKNearestNeighbors(T queryPoint, int k) {
    method getNearestPointIndex (line 55) | public int getNearestPointIndex(T queryPoint) {
    method getOpenNeighborhood (line 72) | public TIntHashSet getOpenNeighborhood(T queryPoint, double epsilon) {
    method getClosedNeighborhood (line 89) | public TIntHashSet getClosedNeighborhood(T queryPoint, double epsilon) {
    method distance (line 103) | public abstract double distance(T a, T b);
    method getPoint (line 105) | public T getPoint(int index) {
    method getPoints (line 109) | public T[] getPoints() {
    method distance (line 113) | public double distance(int i, int j) {
    method size (line 117) | public int size() {

FILE: src/java/edu/stanford/math/plex4/metric/impl/TruncatedPriorityQueue.java
  class TruncatedPriorityQueue (line 20) | public class TruncatedPriorityQueue<T> {
    method TruncatedPriorityQueue (line 24) | public TruncatedPriorityQueue(int k) {
    method getListOfPairs (line 33) | public List<ObjectDoublePair<T>> getListOfPairs() {
    method getIndices (line 42) | public List<T> getIndices() {
    method insert (line 66) | public void insert(T index, double value) {
    method truncate (line 103) | private void truncate() {

FILE: src/java/edu/stanford/math/plex4/metric/interfaces/AbstractIntMetricSpace.java
  type AbstractIntMetricSpace (line 11) | public interface AbstractIntMetricSpace {
    method distance (line 21) | public double distance(int i, int j);
    method size (line 28) | public int size();

FILE: src/java/edu/stanford/math/plex4/metric/interfaces/AbstractObjectMetric.java
  type AbstractObjectMetric (line 12) | public interface AbstractObjectMetric<T> {
    method distance (line 21) | public double distance(T a, T b);

FILE: src/java/edu/stanford/math/plex4/metric/interfaces/AbstractObjectMetricSpace.java
  type AbstractObjectMetricSpace (line 11) | public interface AbstractObjectMetricSpace<T> extends AbstractIntMetricS...
    method getPoint (line 19) | public T getPoint(int index);
    method getPoints (line 28) | public T[] getPoints();

FILE: src/java/edu/stanford/math/plex4/metric/interfaces/AbstractSearchableMetricSpace.java
  type AbstractSearchableMetricSpace (line 13) | public interface AbstractSearchableMetricSpace<T> extends AbstractObject...
    method getNearestPointIndex (line 22) | public int getNearestPointIndex(T queryPoint);
    method getOpenNeighborhood (line 33) | public TIntHashSet getOpenNeighborhood(T queryPoint, double epsilon);
    method getClosedNeighborhood (line 44) | public TIntHashSet getClosedNeighborhood(T queryPoint, double epsilon);
    method getKNearestNeighbors (line 53) | public TIntHashSet getKNearestNeighbors(T queryPoint, int k);

FILE: src/java/edu/stanford/math/plex4/metric/landmark/ExplicitLandmarkSelector.java
  class ExplicitLandmarkSelector (line 5) | public class ExplicitLandmarkSelector<T> extends LandmarkSelector<T> {
    method ExplicitLandmarkSelector (line 6) | public ExplicitLandmarkSelector(AbstractSearchableMetricSpace<T> metri...
    method computeLandmarkSet (line 10) | @Override

FILE: src/java/edu/stanford/math/plex4/metric/landmark/LandmarkSelector.java
  class LandmarkSelector (line 32) | public abstract class LandmarkSelector<T> implements AbstractSearchableM...
    method LandmarkSelector (line 61) | public LandmarkSelector(AbstractSearchableMetricSpace<T> metricSpace, ...
    method LandmarkSelector (line 82) | public LandmarkSelector(AbstractSearchableMetricSpace<T> metricSpace, ...
    method LandmarkSelector (line 86) | public LandmarkSelector(AbstractSearchableMetricSpace<T> metricSpace, ...
    method getLandmarkIndex (line 103) | public int getLandmarkIndex(int i) {
    method getLandmarkPoints (line 107) | public int[] getLandmarkPoints() {
    method size (line 111) | public int size() {
    method distance (line 115) | public double distance(int i, int j) {
    method distance (line 119) | public double distance(T a, T b) {
    method getPoint (line 123) | public T getPoint(int index) {
    method getUnderlyingMetricSpace (line 127) | public AbstractSearchableMetricSpace<T> getUnderlyingMetricSpace() {
    method getPoints (line 131) | public T[] getPoints() {
    method computeLandmarkSet (line 143) | protected abstract int[] computeLandmarkSet();
    method getMaxDistanceFromPointsToLandmarks (line 153) | public double getMaxDistanceFromPointsToLandmarks() {
    method toSet (line 180) | private static TIntHashSet toSet(int[] values) {
    method getClosedNeighborhood (line 190) | public TIntHashSet getClosedNeighborhood(T queryPoint, double epsilon) {
    method getOpenNeighborhood (line 201) | public TIntHashSet getOpenNeighborhood(T queryPoint, double epsilon) {
    method getKNearestNeighbors (line 212) | public TIntHashSet getKNearestNeighbors(T queryPoint, int k) {
    method getNearestPointIndex (line 236) | public int getNearestPointIndex(T queryPoint) {

FILE: src/java/edu/stanford/math/plex4/metric/landmark/MaxMinLandmarkSelector.java
  class MaxMinLandmarkSelector (line 21) | public class MaxMinLandmarkSelector<T> extends LandmarkSelector<T> {
    method MaxMinLandmarkSelector (line 32) | public MaxMinLandmarkSelector(AbstractSearchableMetricSpace<T> metricS...
    method MaxMinLandmarkSelector (line 46) | public MaxMinLandmarkSelector(AbstractSearchableMetricSpace<T> metricS...
    method computeLandmarkSet (line 52) | @Override
    method computeMinDistance (line 98) | private double computeMinDistance(int queryPointIndex, TIntHashSet exi...

FILE: src/java/edu/stanford/math/plex4/metric/landmark/RandomLandmarkSelector.java
  class RandomLandmarkSelector (line 18) | public class RandomLandmarkSelector<T> extends LandmarkSelector<T> {
    method RandomLandmarkSelector (line 27) | public RandomLandmarkSelector(AbstractSearchableMetricSpace<T> metricS...
    method computeLandmarkSet (line 31) | @Override

FILE: src/java/edu/stanford/math/plex4/metric/utility/DensityEstimation.java
  class DensityEstimation (line 5) | public class DensityEstimation {
    method performGaussianKernelDensityEstimation (line 6) | public static double[] performGaussianKernelDensityEstimation(Abstract...

FILE: src/java/edu/stanford/math/plex4/metric/utility/MetricUtility.java
  class MetricUtility (line 20) | public class MetricUtility {
    method estimateDiameter (line 32) | public static double estimateDiameter(AbstractIntMetricSpace metricSpa...
    method estimateDiameter (line 53) | public static double estimateDiameter(AbstractIntMetricSpace metricSpa...
    method computeMaxima (line 63) | public static double[] computeMaxima(AbstractObjectMetricSpace<double[...
    method computeMinima (line 84) | public static double[] computeMinima(AbstractObjectMetricSpace<double[...
    method computeCentroid (line 105) | public static double[] computeCentroid(AbstractObjectMetricSpace<doubl...
    method getAllDistances (line 121) | public static double[] getAllDistances(AbstractIntMetricSpace metricSp...
    method getKthNearestNeighborDistances (line 132) | public static <T> double[] getKthNearestNeighborDistances(AbstractSear...
    method filterByNeighborDistance (line 146) | public static <T> int[] filterByNeighborDistance(AbstractSearchableMet...

FILE: src/java/edu/stanford/math/plex4/streams/derived/DualStream.java
  class DualStream (line 29) | public class DualStream<T> implements AbstractFilteredStream<T> {
    method DualStream (line 57) | public DualStream(AbstractFilteredStream<T> forwardStream) {
    method iterator (line 65) | public Iterator<T> iterator() {
    method getFiltrationIndex (line 72) | public int getFiltrationIndex(T basisElement) {
    method getFiltrationValue (line 76) | public double getFiltrationValue(T basisElement) {
    method containsElement (line 83) | public boolean containsElement(T basisElement) {
    method getBoundary (line 92) | public T[] getBoundary(T basisElement) {
    method getBoundaryCoefficients (line 103) | public int[] getBoundaryCoefficients(T basisElement) {
    method getDimension (line 114) | public int getDimension(T basisElement) {
    method finalizeStream (line 121) | public void finalizeStream() {
    method isFinalized (line 130) | public boolean isFinalized() {
    method getSize (line 137) | public int getSize() {
    method constructCoboundaries (line 144) | private void constructCoboundaries() {
    method getMaximumFiltrationIndex (line 180) | public int getMaximumFiltrationIndex() {
    method getMinimumFiltrationIndex (line 184) | public int getMinimumFiltrationIndex() {
    method getBasisComparator (line 191) | public Comparator<T> getBasisComparator() {
    method transform (line 195) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...

FILE: src/java/edu/stanford/math/plex4/streams/derived/HomStream.java
  class HomStream (line 31) | public class HomStream<T, U> extends TensorStream<T, U> {
    method HomStream (line 39) | public HomStream(AbstractFilteredStream<T> domainStream, AbstractFilte...
    method getDimension (line 43) | @Override
    method getHomotopies (line 48) | public <R> List<IntSparseFormalSum<ObjectObjectPair<T, U>>> getHomotop...
    method getHomotopies (line 59) | public <R> List<ObjectSparseFormalSum<R, ObjectObjectPair<T, U>>> getH...
    method getHomotopiesAsDouble (line 71) | public <R extends Number> List<DoubleSparseFormalSum<ObjectObjectPair<...
    method toDoubleFormalSum (line 83) | public static <R extends Number, M> DoubleSparseFormalSum<M> toDoubleF...
    method toDoubleFormalSum (line 102) | public static <R extends Number, M> List<DoubleSparseFormalSum<M>> toD...

FILE: src/java/edu/stanford/math/plex4/streams/derived/TensorStream.java
  class TensorStream (line 30) | public class TensorStream<T, U> implements AbstractFilteredStream<Object...
    method TensorStream (line 48) | public TensorStream(AbstractFilteredStream<T> stream1, AbstractFiltere...
    method getBoundary (line 56) | public ObjectObjectPair<T, U>[] getBoundary(ObjectObjectPair<T, U> bas...
    method getBoundaryCoefficients (line 85) | public int[] getBoundaryCoefficients(ObjectObjectPair<T, U> basisEleme...
    method getDimension (line 114) | public int getDimension(ObjectObjectPair<T, U> basisElement) {
    method iterator (line 121) | public Iterator<ObjectObjectPair<T, U>> iterator() {
    method getFiltrationIndex (line 128) | public int getFiltrationIndex(ObjectObjectPair<T, U> basisElement) {
    method getFiltrationValue (line 132) | public double getFiltrationValue(ObjectObjectPair<T, U> basisElement) {
    method containsElement (line 139) | public boolean containsElement(ObjectObjectPair<T, U> basisElement) {
    method finalizeStream (line 147) | public void finalizeStream() {
    method isFinalized (line 160) | public boolean isFinalized() {
    method getSize (line 167) | public int getSize() {
    method getMaximumFiltrationIndex (line 174) | public int getMaximumFiltrationIndex() {
    method getMinimumFiltrationIndex (line 178) | public int getMinimumFiltrationIndex() {
    method getBasisComparator (line 182) | public Comparator<ObjectObjectPair<T, U>> getBasisComparator() {
    method transform (line 186) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...

FILE: src/java/edu/stanford/math/plex4/streams/derived/TruncatedStream.java
  class TruncatedStream (line 12) | public class TruncatedStream<T> implements AbstractFilteredStream<T> {
    method TruncatedStream (line 18) | public TruncatedStream(AbstractFilteredStream<T> stream, double maxFil...
    method finalizeStream (line 37) | public void finalizeStream() {
    method getBasisComparator (line 43) | public Comparator<T> getBasisComparator() {
    method getBoundary (line 47) | public T[] getBoundary(T basisElement) {
    method getBoundaryCoefficients (line 51) | public int[] getBoundaryCoefficients(T basisElement) {
    method getDimension (line 55) | public int getDimension(T basisElement) {
    method getFiltrationIndex (line 59) | public int getFiltrationIndex(T basisElement) {
    method getFiltrationValue (line 63) | public double getFiltrationValue(T basisElement) {
    method containsElement (line 70) | public boolean containsElement(T basisElement) {
    method getMaximumFiltrationIndex (line 75) | public int getMaximumFiltrationIndex() {
    method getMinimumFiltrationIndex (line 79) | public int getMinimumFiltrationIndex() {
    method getSize (line 83) | public int getSize() {
    method isFinalized (line 87) | public boolean isFinalized() {
    method transform (line 91) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...
    method iterator (line 95) | public Iterator<T> iterator() {

FILE: src/java/edu/stanford/math/plex4/streams/filter/EccentricityFilterFunction.java
  class EccentricityFilterFunction (line 5) | public class EccentricityFilterFunction implements IntFilterFunction {
    method EccentricityFilterFunction (line 10) | public EccentricityFilterFunction(AbstractIntMetricSpace metricSpace) {
    method evaluate (line 40) | public double evaluate(int point) {
    method getMaxValue (line 44) | public double getMaxValue() {
    method getMinValue (line 48) | public double getMinValue() {
    method getValues (line 52) | public double[] getValues() {

FILE: src/java/edu/stanford/math/plex4/streams/filter/ExplicitIntFilterFunction.java
  class ExplicitIntFilterFunction (line 4) | public class ExplicitIntFilterFunction implements IntFilterFunction {
    method ExplicitIntFilterFunction (line 9) | public ExplicitIntFilterFunction(double[] values) {
    method evaluate (line 23) | public double evaluate(int point) {
    method getMaxValue (line 27) | public double getMaxValue() {
    method getMinValue (line 31) | public double getMinValue() {
    method getValues (line 35) | public double[] getValues() {

FILE: src/java/edu/stanford/math/plex4/streams/filter/FilterFunction.java
  type FilterFunction (line 3) | public interface FilterFunction<T> {
    method evaluate (line 4) | double evaluate(T point);

FILE: src/java/edu/stanford/math/plex4/streams/filter/IntFilterFunction.java
  type IntFilterFunction (line 3) | public interface IntFilterFunction {
    method evaluate (line 4) | double evaluate(int point);
    method getMaxValue (line 6) | double getMaxValue();
    method getMinValue (line 7) | double getMinValue();
    method getValues (line 9) | double[] getValues();

FILE: src/java/edu/stanford/math/plex4/streams/filter/KernelDensityFilterFunction.java
  class KernelDensityFilterFunction (line 6) | public class KernelDensityFilterFunction implements IntFilterFunction {
    method KernelDensityFilterFunction (line 12) | public KernelDensityFilterFunction(AbstractIntMetricSpace metricSpace,...
    method evaluate (line 16) | public double evaluate(int point) {
    method getMaxValue (line 20) | public double getMaxValue() {
    method getMinValue (line 27) | public double getMinValue() {
    method computeMaxMinValues (line 34) | private void computeMaxMinValues() {
    method getValues (line 48) | public double[] getValues() {

FILE: src/java/edu/stanford/math/plex4/streams/filter/MaxSimplicialFilterFunction.java
  class MaxSimplicialFilterFunction (line 5) | public class MaxSimplicialFilterFunction implements FilterFunction<Simpl...
    method MaxSimplicialFilterFunction (line 7) | public MaxSimplicialFilterFunction(IntFilterFunction intFilterFunction) {
    method evaluate (line 11) | public double evaluate(Simplex simplex) {

FILE: src/java/edu/stanford/math/plex4/streams/filter/MinSimplicialFilterFunction.java
  class MinSimplicialFilterFunction (line 5) | public class MinSimplicialFilterFunction implements FilterFunction<Simpl...
    method MinSimplicialFilterFunction (line 7) | public MinSimplicialFilterFunction(IntFilterFunction intFilterFunction) {
    method evaluate (line 11) | public double evaluate(Simplex simplex) {

FILE: src/java/edu/stanford/math/plex4/streams/filter/RandomProjectionFilterFunction.java
  class RandomProjectionFilterFunction (line 7) | public class RandomProjectionFilterFunction implements IntFilterFunction {
    method RandomProjectionFilterFunction (line 14) | public RandomProjectionFilterFunction(EuclideanMetricSpace metricSpace) {
    method RandomProjectionFilterFunction (line 18) | public RandomProjectionFilterFunction(double[][] points) {
    method evaluate (line 37) | public double evaluate(int point) {
    method getMaxValue (line 41) | public double getMaxValue() {
    method getMinValue (line 45) | public double getMinValue() {
    method getRangeMax (line 49) | public int getRangeMax() {
    method getValues (line 53) | public double[] getValues() {

FILE: src/java/edu/stanford/math/plex4/streams/impl/ExplicitCellStream.java
  class ExplicitCellStream (line 18) | public class ExplicitCellStream extends ExplicitStream<Cell> {
    method ExplicitCellStream (line 28) | public ExplicitCellStream() {
    method ExplicitCellStream (line 32) | public ExplicitCellStream(double maxFiltrationValue) {
    method addNewVertex (line 41) | public int addNewVertex() {
    method attachNewCellToPoint (line 55) | public int attachNewCellToPoint(int dimension, int pointIndex) {
    method attachNewCell (line 70) | public int attachNewCell(int dimension, int[] boundaryIndices) {
    method attachNewCell (line 85) | public int attachNewCell(int dimension, int[] boundaryIndices, int[] b...
    method addElement (line 92) | @Override
    method getCellsByIds (line 103) | private Collection<Cell> getCellsByIds(int[] cellIds) {

FILE: src/java/edu/stanford/math/plex4/streams/impl/ExplicitSimplexStream.java
  class ExplicitSimplexStream (line 15) | public class ExplicitSimplexStream extends ExplicitStream<Simplex> {
    method ExplicitSimplexStream (line 23) | public ExplicitSimplexStream(Comparator<Simplex> comparator) {
    method ExplicitSimplexStream (line 27) | public ExplicitSimplexStream(Comparator<Simplex> comparator, double ma...
    method ExplicitSimplexStream (line 34) | public ExplicitSimplexStream() {
    method ExplicitSimplexStream (line 38) | public ExplicitSimplexStream(double maxFiltrationValue) {
    method addVertex (line 48) | public void addVertex(int index) {
    method addVertex (line 59) | public void addVertex(int index, double filtrationValue) {
    method addElement (line 68) | public void addElement(int[] vertices) {
    method addElement (line 79) | public void addElement(int[] vertices, double filtrationValue) {
    method removeElementIfPresent (line 83) | public boolean removeElementIfPresent(int[] vertices) {

FILE: src/java/edu/stanford/math/plex4/streams/impl/ExplicitStream.java
  class ExplicitStream (line 29) | public class ExplicitStream<T extends PrimitiveBasisElement> extends Pri...
    method ExplicitStream (line 41) | public ExplicitStream(Comparator<T> comparator) {
    method ExplicitStream (line 45) | public ExplicitStream(Comparator<T> comparator, double maxFiltrationVa...
    method ExplicitStream (line 57) | public ExplicitStream(AbstractFilteredStream<T> stream, Comparator<T> ...
    method addAllElements (line 67) | public void addAllElements(AbstractFilteredStream<T> stream) {
    method addElement (line 79) | public void addElement(T basisElement, double filtrationValue) {
    method removeElementIfPresent (line 100) | public boolean removeElementIfPresent(T basisElement) {
    method containsElement (line 115) | public boolean containsElement(T basisElement) {
    method constructComplex (line 119) | @Override
    method ensureAllFaces (line 128) | public void ensureAllFaces() {
    method transform (line 171) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...
    method getFiltrationValue (line 180) | public double getFiltrationValue(T basisElement) {

FILE: src/java/edu/stanford/math/plex4/streams/impl/FlagComplexStream.java
  class FlagComplexStream (line 46) | public abstract class FlagComplexStream extends PrimitiveStream<Simplex> {
    method FlagComplexStream (line 73) | public FlagComplexStream(int maxAllowableDimension, FiltrationConverte...
    method FlagComplexStream (line 79) | public FlagComplexStream(int maxAllowableDimension, FiltrationConverte...
    method FlagComplexStream (line 97) | public FlagComplexStream(int maxAllowableDimension, FiltrationConverte...
    method constructEdges (line 111) | protected abstract UndirectedWeightedListGraph constructEdges();
    method getNeighborhoodGraph (line 119) | public UndirectedWeightedListGraph getNeighborhoodGraph() {
    method getFiltrationValue (line 123) | public double getFiltrationValue(Simplex simplex) {
    method getConverter (line 132) | public FiltrationConverter getConverter() {
    method transform (line 145) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...
    method constructComplex (line 149) | @Override
    method incrementalExpansion (line 166) | protected void incrementalExpansion(UndirectedWeightedListGraph G, int...
    method addCofaces (line 191) | protected void addCofaces(UndirectedWeightedListGraph G, int k, Simple...

FILE: src/java/edu/stanford/math/plex4/streams/impl/FlexibleVietorisRipsStream.java
  class FlexibleVietorisRipsStream (line 32) | public class FlexibleVietorisRipsStream<T> extends FlagComplexStream {
    method FlexibleVietorisRipsStream (line 56) | public FlexibleVietorisRipsStream(AbstractSearchableMetricSpace<T> met...
    method FlexibleVietorisRipsStream (line 63) | public FlexibleVietorisRipsStream(AbstractSearchableMetricSpace<T> met...
    method FlexibleVietorisRipsStream (line 71) | public FlexibleVietorisRipsStream(AbstractSearchableMetricSpace<T> met...
    method constructEdges (line 79) | @Override

FILE: src/java/edu/stanford/math/plex4/streams/impl/GeometricSimplexStream.java
  class GeometricSimplexStream (line 27) | public class GeometricSimplexStream implements AbstractFilteredStream<Si...
    method GeometricSimplexStream (line 45) | public GeometricSimplexStream(AbstractFilteredStream<Simplex> stream, ...
    method GeometricSimplexStream (line 59) | public GeometricSimplexStream(AbstractFilteredStream<Simplex> stream, ...
    method finalizeStream (line 69) | public void finalizeStream() {
    method getFiltrationIndex (line 76) | public int getFiltrationIndex(Simplex basisElement) {
    method containsElement (line 83) | public boolean containsElement(Simplex basisElement) {
    method isFinalized (line 91) | public boolean isFinalized() {
    method iterator (line 98) | public Iterator<Simplex> iterator() {
    method getPoint (line 105) | public double[] getPoint(int index) {
    method size (line 112) | public int size() {
    method distance (line 119) | public double distance(int i, int j) {
    method distance (line 126) | public double distance(double[] a, double[] b) {
    method getBoundary (line 133) | public Simplex[] getBoundary(Simplex simplex) {
    method getBoundaryCoefficients (line 140) | public int[] getBoundaryCoefficients(Simplex simplex) {
    method getDimension (line 147) | public int getDimension(Simplex element) {
    method getPoints (line 154) | public double[][] getPoints() {
    method getSize (line 161) | public int getSize() {
    method getMaximumFiltrationIndex (line 168) | public int getMaximumFiltrationIndex() {
    method getMinimumFiltrationIndex (line 172) | public int getMinimumFiltrationIndex() {
    method getBasisComparator (line 179) | public Comparator<Simplex> getBasisComparator() {
    method transform (line 183) | public <G> PersistenceInvariantDescriptor<Interval<Double>, G> transfo...
    method getFiltrationValue (line 187) | public double getFiltrationValue(Simplex basisElement) {

FILE: src/java/edu/stanford/math/plex4/streams/impl/LazyWitnessStream.java
  class LazyWitnessStream (line 36) | public class LazyWitnessStream<T> extends FlagComplexStream {
    method LazyWitnessStream (line 86) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 100) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 105) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 119) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 126) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 139) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 143) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method LazyWitnessStream (line 157) | public LazyWitnessStream(AbstractSearchableMetricSpace<T> metricSpace,...
    method setPlex3Compatbility (line 162) | public void setPlex3Compatbility(boolean value) {
    method getDefaultNuValue (line 166) | public static int getDefaultNuValue() {
    method getAssociatedSimplices (line 179) | public List<Simplex> getAssociatedSimplices(int witness) {
    method constructEdges (line 191) | @Override
    method getWitnessAndDistance (line 280) | protected IntDoublePair getWitnessAndDistance(int... landmarkIndices) {
    method contains (line 332) | protected static boolean contains(int[] array, int value) {
    method updateWitnessInformationInternalIndices (line 342) | protected void updateWitnessInformationInternalIndices(int n_star, dou...
    method updateWitnessInformation (line 346) | protected void updateWitnessInformation(int n_star, double e_ij, int.....
    method isWitness (line 359) | protected boolean isWitness(int x, Simplex simplex) {
    method isWitness (line 363) | protected boolean isWitness(int x, int[] externalIndices) {
    method getAllWitnesses (line 371) | protected TIntHashSet getAllWitnesses(fi
Condensed preview — 591 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,458K chars).
[
  {
    "path": ".classpath",
    "chars": 981,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src/bsh\"/>\n\t<classpathentry kind=\"s"
  },
  {
    "path": ".gitignore",
    "chars": 82,
    "preview": "*.class\n\n# Package Files #\n*.jar\n*.war\n*.ear\n/bin/\n\n# Mac system files\n*.DS_Store\n"
  },
  {
    "path": ".project",
    "chars": 554,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<projectDescription>\r\n\t<name>javaplex</name>\r\n\t<comment></comment>\r\n\t<projects>\r"
  },
  {
    "path": ".settings/org.eclipse.jdt.core.prefs",
    "chars": 22622,
    "preview": "#Tue Jul 06 16:52:58 PDT 2010\r\neclipse.preferences.version=1\r\norg.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=en"
  },
  {
    "path": ".settings/org.eclipse.jdt.ui.prefs",
    "chars": 120,
    "preview": "#Tue Jul 06 16:52:58 PDT 2010\r\neclipse.preferences.version=1\r\nformatter_profile=_Andrew\r\nformatter_settings_version=11\r\n"
  },
  {
    "path": ".travis.yml",
    "chars": 15,
    "preview": "language: java\n"
  },
  {
    "path": "LICENSE.md",
    "chars": 1527,
    "preview": "Copyright (c) 2014, Henry Adams, Mikael Vejdemo-Johansson, Andrew Tausz\nAll rights reserved.\n\nRedistribution and use in "
  },
  {
    "path": "README.md",
    "chars": 3320,
    "preview": "# JavaPlex\n\n## Persistent Homology and Topological Data Analysis Library \n\n\nThe `JavaPlex` library implements persistent"
  },
  {
    "path": "build/processing/javaplex/library.properties",
    "chars": 235,
    "preview": "name=javaPlex\nauthorList=Andrew Tausz and Mikael Vejdemo-Johansson and Henry Adams\nurl=http://code.google.com/p/javaplex"
  },
  {
    "path": "build.number",
    "chars": 83,
    "preview": "#Build Number for ANT. Do not edit!\n#Sun Jul 15 19:57:53 MDT 2018\nbuild.number=102\n"
  },
  {
    "path": "build.xml",
    "chars": 9457,
    "preview": "<?xml version=\"1.0\" ?>\n\n<project name=\"javaplex\" default=\"default\" basedir=\".\">\n\t<property name=\"version.num\" value=\"4.3"
  },
  {
    "path": "data/natural_images/readme_natural_images.txt",
    "chars": 1899,
    "preview": "A natural image is a photograph. Consider natural images which contain a greyscale value at each pixel. In the paper \"On"
  },
  {
    "path": "data/point_clouds/circle.txt",
    "chars": 1928,
    "preview": "0,1,1\n0.125333233564304,0.992114701314478,1\n0.248689887164855,0.968583161128631,1\n0.368124552684678,0.929776485888251,1\n"
  },
  {
    "path": "data/point_clouds/cube.txt",
    "chars": 48,
    "preview": "0,0,0\n0,0,1\n0,1,0\n0,1,1\n1,0,0\n1,0,1\n1,1,0\n1,1,1\n"
  },
  {
    "path": "data/point_clouds/cylinder.txt",
    "chars": 15429,
    "preview": "1.98155906437293,1.01389735228371,9.91560618858784\n9.08504984057864,7.88311772218694,7.3735861806199\n9.18819705140907,7."
  },
  {
    "path": "data/point_clouds/octahedron.txt",
    "chars": 39,
    "preview": "0,0,1\n0,0,-1\n0,1,0\n0,-1,0\n1,0,0\n-1,0,0\n"
  },
  {
    "path": "data/point_clouds/sphere_rnd.txt",
    "chars": 11124,
    "preview": "0.0773054454995878,0.836334266051908,0.542741986143994\n-0.374781006964731,-0.880579478663034,0.29003271983699\n0.50978558"
  },
  {
    "path": "data/point_clouds/torus.txt",
    "chars": 16109,
    "preview": "-0.714320398612351,-1.90692591611384,-0.267078203651368\n0.880281797557814,3.78434362937461,-0.464874124438126\n1.04102781"
  },
  {
    "path": "doc_includes/overview.htm",
    "chars": 76,
    "preview": "<html>\n<head>\n<title>Plex in Java</title>\n</head>\n<body>\n\n\n\n\n</body></html>\n"
  },
  {
    "path": "doc_includes/overview_plex3.htm",
    "chars": 28718,
    "preview": "<html>\n<head>\n<title>Plex in Java</title>\n</head>\n<body>\n\n<!--  \n$Id: overview.htm,v 1.5 2008/09/25 02:30:23 hsexton Exp"
  },
  {
    "path": "doc_includes/update_mime_types.sh",
    "chars": 628,
    "preview": "#!/bin/sh\n\nsvn propset svn:mime-type text/html -R *.html\nsvn propset svn:mime-type text/html -R */*.html\nsvn propset svn"
  },
  {
    "path": "reports/javaplex_tutorial/cleanup.sh",
    "chars": 188,
    "preview": "#!/bin/bash\n\nrm javaplex_tutorial.aux\nrm javaplex_tutorial.blg\nrm javaplex_tutorial.log\nrm javaplex_tutorial.out\nrm java"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.aux",
    "chars": 10943,
    "preview": "\\relax \n\\providecommand\\hyper@newdestlabel[2]{}\n\\providecommand\\HyperFirstAtBeginDocument{\\AtBeginDocument}\n\\HyperFirstA"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.bbl",
    "chars": 5394,
    "preview": "\\begin{thebibliography}{21}\n\\providecommand{\\natexlab}[1]{#1}\n\\providecommand{\\url}[1]{\\texttt{#1}}\n\\expandafter\\ifx\\csn"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.bib",
    "chars": 5113,
    "preview": "@article{Adamaszek2013,\n  title={Clique complexes and graph powers},\n  author={Adamaszek, Micha{\\l}},\n  journal={Israel "
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.blg",
    "chars": 923,
    "preview": "This is BibTeX, Version 0.99d (TeX Live 2017)\nCapacity: max_strings=100000, hash_size=100000, hash_prime=85009\nThe top-l"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.log",
    "chars": 32626,
    "preview": "This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2017.5.23)  15 JUL 2018 19:49\n"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.out",
    "chars": 2543,
    "preview": "\\BOOKMARK [1][-]{section.1}{1. Introduction}{}% 1\n\\BOOKMARK [2][-]{subsection.1.1}{1.1. Javaplex}{section.1}% 2\n\\BOOKMAR"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.tex",
    "chars": 108347,
    "preview": "\\documentclass[amscd, amssymb, verbatim]{amsart}[12pt]\n\n\\usepackage{fullpage}\n\\usepackage{amssymb}\n\\usepackage{latexsym}"
  },
  {
    "path": "reports/javaplex_tutorial/javaplex_tutorial.toc",
    "chars": 3213,
    "preview": "\\contentsline {section}{\\tocsection {}{1}{Introduction}}{2}{section.1}\n\\contentsline {subsection}{\\tocsubsection {}{1.1}"
  },
  {
    "path": "src/bsh/desktop.bsh",
    "chars": 5637,
    "preview": "/**\n * Start the BeanShell GUI desktop in a JFrame.  A starter workspace is created\n * and added to the desktop. \n *\n * "
  },
  {
    "path": "src/bsh/getBshPrompt.bsh",
    "chars": 572,
    "preview": "/**\n\tGet the value to display for the bsh interactive prompt.\n\tThis command checks for the variable bsh.prompt and uses "
  },
  {
    "path": "src/bsh/makeListener.bsh",
    "chars": 1598,
    "preview": "/**\n * Creates an interpreter loop and returns it.\n *\n * @return this (the workspace scripted object for allowing access"
  },
  {
    "path": "src/bsh/makeWorkspace.bsh",
    "chars": 4055,
    "preview": "/**\n * Creates a JConsole in a JInternalFrame and adds it to the desktop \n *\n * @return this (the workspace scripted obj"
  },
  {
    "path": "src/bsh/printBanner.bsh",
    "chars": 921,
    "preview": "/**\n\tPrint the BeanShell banner (version and author line) - GUI or non GUI.\n\n\t@author Daniel Leuck\n\t@author Harlan Sexto"
  },
  {
    "path": "src/cpp/Makefile",
    "chars": 263,
    "preview": "build:\n\tR CMD build --configure-args='--with-jplex=/afs/ir.stanford.edu/users/c/h/chakj/plex3/jplex.jar' PLEX3\ncheck:\n\tR"
  },
  {
    "path": "src/cpp/PLEX3/DESCRIPTION",
    "chars": 282,
    "preview": "Package: PLEX3\nType: Package\nTitle: R Interface for the PLEX3 Library\nVersion: 2.4.0 \nDate: 2008-02-05\nAuthor: John Chak"
  },
  {
    "path": "src/cpp/PLEX3/R/plex.R",
    "chars": 5302,
    "preview": "\n`as.internal.distance.matrix` <- function(dmatrix)\n{\n\tpdata.handle = .Call(\"make_internal_distance_array\", as.matrix(dm"
  },
  {
    "path": "src/cpp/PLEX3/R/zzz.R",
    "chars": 121,
    "preview": "`.First.lib` <-\nfunction(libname,pkgname)\n{\n\tlibrary.dynam(\"PLEX3\", pkgname, libname)\n\t.Call(\"init_java\", jplex.path)\n}\n"
  },
  {
    "path": "src/cpp/PLEX3/autom4te.cache/output.0",
    "chars": 164339,
    "preview": "@%:@! /bin/sh\n@%:@ Guess values for system-dependent variables and create Makefiles.\n@%:@ Generated by GNU Autoconf 2.61"
  },
  {
    "path": "src/cpp/PLEX3/autom4te.cache/requests",
    "chars": 2661,
    "preview": "# This file was generated by Autom4te Wed Mar 19 22:03:23 PDT 2008.\n# It contains the lists of macros which have been tr"
  },
  {
    "path": "src/cpp/PLEX3/autom4te.cache/traces.0",
    "chars": 21395,
    "preview": "m4trace:configure.ac:1: -1- AC_INIT([src/rbind_jni.cpp])\nm4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])\nm4"
  },
  {
    "path": "src/cpp/PLEX3/config.guess",
    "chars": 44892,
    "preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,"
  },
  {
    "path": "src/cpp/PLEX3/config.status",
    "chars": 22390,
    "preview": "#! /bin/bash\n# Generated by configure.\n# Run this file to recreate the current configuration.\n# Compiler output produced"
  },
  {
    "path": "src/cpp/PLEX3/config.sub",
    "chars": 33387,
    "preview": "#! /bin/sh\n# Configuration validation subroutine script.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 199"
  },
  {
    "path": "src/cpp/PLEX3/configure",
    "chars": 163863,
    "preview": "#! /bin/sh\n# Guess values for system-dependent variables and create Makefiles.\n# Generated by GNU Autoconf 2.61.\n#\n# Cop"
  },
  {
    "path": "src/cpp/PLEX3/configure.ac",
    "chars": 1731,
    "preview": "AC_INIT([src/rbind_jni.cpp])\n\nAC_PROG_CC\nAC_PROG_CXX\n\nAC_PROG_INSTALL\n\nAC_PROG_GCC_TRADITIONAL\nAC_FUNC_MEMCMP\nAC_FUNC_MA"
  },
  {
    "path": "src/cpp/PLEX3/install-sh",
    "chars": 13620,
    "preview": "#!/bin/sh\n# install - install a program, script, or datafile\n\nscriptversion=2006-12-25.00\n\n# This originates from X11R5 "
  },
  {
    "path": "src/cpp/PLEX3/man/rips.stream.Rd",
    "chars": 797,
    "preview": "\\name{rips.stream}\n\\alias{rips.stream}\n\\title{Rips Stream}\n\\description{\n\tConstruct a Rips Stream from either a distance"
  },
  {
    "path": "src/cpp/PLEX3/src/Makevars.in",
    "chars": 40,
    "preview": "PKG_CPPFLAGS=@CPPFLAGS@\nPKG_LIBS=@LIBS@\n"
  },
  {
    "path": "src/cpp/PLEX3/src/rbind_jni.cpp",
    "chars": 16124,
    "preview": "#include <cstdio>\n#include <cstdlib>\n#include <cmath>\n\n#include <iostream>\n#include <string>\n\n#include <map>\n\n#include <"
  },
  {
    "path": "src/java/bsh/JPlex.java",
    "chars": 1957,
    "preview": "package bsh;\r\n\r\n// \r\n//  JPlex.java\r\n// \r\n//  **************************************************************************"
  },
  {
    "path": "src/java/bsh/JTerm.java",
    "chars": 1787,
    "preview": "package bsh;\r\n\r\n// \r\n//  JTerm.java\r\n// \r\n//  **************************************************************************"
  },
  {
    "path": "src/java/bsh/PlexInterpreter.java",
    "chars": 3248,
    "preview": "// \r\n//  PlexInterpreter.java\r\n// \r\n//  ***************************************************************************\r\n// "
  },
  {
    "path": "src/java/bsh/PlexReader.java",
    "chars": 16288,
    "preview": "// \r\n//  PlexReader.java\r\n// \r\n//  ***************************************************************************\r\n// \r\n// "
  },
  {
    "path": "src/java/bsh/commands/log.java",
    "chars": 2676,
    "preview": "// \n//  log.java\n// \n//  ***************************************************************************\n// \n//  Copyright 2"
  },
  {
    "path": "src/java/bsh/commands/setLogging.java",
    "chars": 1874,
    "preview": "// \n//  setLogging.java\n// \n//  ***************************************************************************\n// \n//  Copy"
  },
  {
    "path": "src/java/edu/stanford/math/clustering/DisjointSetSystem.java",
    "chars": 835,
    "preview": "package edu.stanford.math.clustering;\n\npublic class DisjointSetSystem {\n\tprotected int[] parents;\n\tprotected int[] ranks"
  },
  {
    "path": "src/java/edu/stanford/math/clustering/HierarchicalClustering.java",
    "chars": 2552,
    "preview": "package edu.stanford.math.clustering;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.HashSet;\ni"
  },
  {
    "path": "src/java/edu/stanford/math/clustering/LinkageTree.java",
    "chars": 135,
    "preview": "package edu.stanford.math.clustering;\n\npublic class LinkageTree {\n\tprotected double[] mergeDistances;\n\tprotected int[][]"
  },
  {
    "path": "src/java/edu/stanford/math/clustering/SingleLinkageClustering.java",
    "chars": 1722,
    "preview": "package edu.stanford.math.clustering;\n\nimport edu.stanford.math.plex4.metric.interfaces.AbstractIntMetricSpace;\n\npublic "
  },
  {
    "path": "src/java/edu/stanford/math/mapper/BoundedIntervalCover.java",
    "chars": 1038,
    "preview": "package edu.stanford.math.mapper;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\n\nimport"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/FilterFunctionUtility.java",
    "chars": 77,
    "preview": "package edu.stanford.math.mapper;\n\n\npublic class FilterFunctionUtility {\n\t\n}\n"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/FiniteMetricSpaceCover.java",
    "chars": 653,
    "preview": "package edu.stanford.math.mapper;\n\nimport edu.stanford.math.plex4.metric.interfaces.AbstractIntMetricSpace;\nimport edu.s"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/HistogramCreator.java",
    "chars": 3524,
    "preview": "package edu.stanford.math.mapper;\n\npublic class HistogramCreator {\n\tprotected final double[] values;\n\tprotected final in"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/MapperPipeline.java",
    "chars": 3214,
    "preview": "package edu.stanford.math.mapper;\n\nimport edu.stanford.math.clustering.DisjointSetSystem;\nimport edu.stanford.math.clust"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/MapperSpecifier.java",
    "chars": 554,
    "preview": "package edu.stanford.math.mapper;\n\npublic class MapperSpecifier {\n\tdouble overlap = 0.2;\n\tint numIntervals = 40;\n\tint nu"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/MetricUtility.java",
    "chars": 753,
    "preview": "package edu.stanford.math.mapper;\n\nimport edu.stanford.math.plex4.metric.interfaces.AbstractIntMetricSpace;\nimport gnu.t"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/RangeCoverUtility.java",
    "chars": 415,
    "preview": "package edu.stanford.math.mapper;\n\nimport edu.stanford.math.plex4.homology.barcodes.Interval;\nimport edu.stanford.math.p"
  },
  {
    "path": "src/java/edu/stanford/math/mapper/SetCover1D.java",
    "chars": 1504,
    "preview": "package edu.stanford.math.mapper;\n\nimport edu.stanford.math.plex4.homology.barcodes.Interval;\nimport edu.stanford.math.p"
  },
  {
    "path": "src/java/edu/stanford/math/plex/BCPlot.java",
    "chars": 29175,
    "preview": "package edu.stanford.math.plex;\n\nimport java.awt.BorderLayout;\nimport java.awt.Color;\nimport java.awt.Dimension;\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex/CRC.java",
    "chars": 30325,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * The <code>CRC</code> class provides good hash methods for int/long and string"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Chain.java",
    "chars": 14326,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\nimport"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Cone.java",
    "chars": 2110,
    "preview": "package edu.stanford.math.plex;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimpor"
  },
  {
    "path": "src/java/edu/stanford/math/plex/DiscreteSpace.java",
    "chars": 768,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * The <code>DiscreteSpace</code> class implements a finite discrete metric\r\n * "
  },
  {
    "path": "src/java/edu/stanford/math/plex/DistanceData.java",
    "chars": 865,
    "preview": "package edu.stanford.math.plex;\n\n/**\n * The <code>DistanceData</code> class is the simplest implementation\n * of NSpace."
  },
  {
    "path": "src/java/edu/stanford/math/plex/EuclideanArrayData.java",
    "chars": 6150,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.Random;\r\n\r\n/**\r\n * The <code>EuclideanArrayData</code> class is the "
  },
  {
    "path": "src/java/edu/stanford/math/plex/ExplicitStream.java",
    "chars": 32731,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.Arrays;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimpor"
  },
  {
    "path": "src/java/edu/stanford/math/plex/LazyWitnessStream.java",
    "chars": 14020,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport static edu.stanford.math.plex.RipsStream.all_edges_present;\r\nimport static edu"
  },
  {
    "path": "src/java/edu/stanford/math/plex/MappedBufferData.java",
    "chars": 11158,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.io.File;\r\nimport java.io.FileOutputStream;\r\nimport java.io.RandomAccessFi"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Packed2Simplex.java",
    "chars": 7679,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * <p>The <code>Packed2Simplex</code> class implements the abstract class\r\n * <c"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Packed4Simplex.java",
    "chars": 8577,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * <p>The <code>Packed4Simplex</code> class implements the abstract class\r\n * <c"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Packed6Simplex.java",
    "chars": 10614,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * <p>The <code>Packed6Simplex</code> class implements the abstract class\r\n * <c"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Packed8Simplex.java",
    "chars": 13127,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * <p>The <code>Packed8Simplex</code> class implements the abstract class\r\n * <c"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Persistence.java",
    "chars": 7291,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Iterator;\r\n\r\n"
  },
  {
    "path": "src/java/edu/stanford/math/plex/PersistenceBasis.java",
    "chars": 19498,
    "preview": "package edu.stanford.math.plex;\n\nimport java.util.Arrays;\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimp"
  },
  {
    "path": "src/java/edu/stanford/math/plex/PersistenceBasisInterval.java",
    "chars": 8771,
    "preview": "package edu.stanford.math.plex;\n\n/**\n * <code>PersistenceBasisInterval</code> instances encode a dimension and a\n * dura"
  },
  {
    "path": "src/java/edu/stanford/math/plex/PersistenceInterval.java",
    "chars": 7237,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * <code>PersistenceInterval</code> instances encode a dimension and a\r\n * durat"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Plex.java",
    "chars": 37221,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.IOException;\r\ni"
  },
  {
    "path": "src/java/edu/stanford/math/plex/PlexMessageWindow.java",
    "chars": 2186,
    "preview": "package edu.stanford.math.plex;\r\nimport java.awt.BorderLayout;\r\n\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JScroll"
  },
  {
    "path": "src/java/edu/stanford/math/plex/PlexSort.java",
    "chars": 13394,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * The <code>PlexSort</code> class provides a sorting routine that I'd prefer\r\n "
  },
  {
    "path": "src/java/edu/stanford/math/plex/PointData.java",
    "chars": 6151,
    "preview": "package edu.stanford.math.plex;\r\nimport java.util.Arrays;\r\nimport java.util.Iterator;\r\nimport java.util.Random;\r\n\r\n/**\r\n"
  },
  {
    "path": "src/java/edu/stanford/math/plex/RDirectBufferData.java",
    "chars": 1642,
    "preview": "package edu.stanford.math.plex;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\nimport java.nio.DoubleBuffer;\n\n\n/"
  },
  {
    "path": "src/java/edu/stanford/math/plex/RipsStream.java",
    "chars": 17441,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport static edu.stanford.math.plex.WitnessStream.HUGE;\r\n\r\nimport java.util.ArrayLis"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Simplex.java",
    "chars": 20186,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * A <code>Simplex</code> is the basic unit for simplicial homology\r\n * calculat"
  },
  {
    "path": "src/java/edu/stanford/math/plex/SimplexFaceIterator.java",
    "chars": 5483,
    "preview": "package edu.stanford.math.plex;\r\n\r\n/**\r\n * The <code>SimplexFaceIterator</code> class.\r\n *\r\n * <p>A <code>SimplexFaceIte"
  },
  {
    "path": "src/java/edu/stanford/math/plex/SimplexStream.java",
    "chars": 19021,
    "preview": "\r\npackage edu.stanford.math.plex;\r\n\r\nimport java.util.Iterator;\r\nimport java.util.NoSuchElementException;\r\n\r\n/**\r\n * An "
  },
  {
    "path": "src/java/edu/stanford/math/plex/SimplexTable.java",
    "chars": 9264,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.Iterator;\r\nimport java.util.NoSuchElementException;\r\n\r\n/**\r\n * A <co"
  },
  {
    "path": "src/java/edu/stanford/math/plex/TmpStream.java",
    "chars": 7391,
    "preview": "\r\npackage edu.stanford.math.plex;\r\n\r\nimport java.util.Iterator;\r\nimport java.util.NoSuchElementException;\r\n\r\n/**\r\n * The"
  },
  {
    "path": "src/java/edu/stanford/math/plex/Torus.java",
    "chars": 4532,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport static java.lang.Math.PI;\r\nimport static java.lang.Math.cos;\r\nimport static ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex/WitnessStream.java",
    "chars": 20255,
    "preview": "package edu.stanford.math.plex;\r\n\r\nimport java.util.Arrays;\r\nimport java.util.HashSet;\r\nimport java.util.Iterator;\r\nimpo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/api/FilteredStreamInterface.java",
    "chars": 5801,
    "preview": "package edu.stanford.math.plex4.api;\r\n\r\nimport edu.stanford.math.plex.EuclideanArrayData;\r\nimport edu.stanford.math.plex"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/api/PersistenceAlgorithmInterface.java",
    "chars": 11401,
    "preview": "package edu.stanford.math.plex4.api;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.apache.commons"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/api/Plex4.java",
    "chars": 21310,
    "preview": "package edu.stanford.math.plex4.api;\n\nimport java.io.IOException;\nimport java.util.Comparator;\n\nimport org.apache.common"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/BooleanAbsoluteHomology.java",
    "chars": 1638,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/BooleanClassicalHomology.java",
    "chars": 5049,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\n\r\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/BooleanPersistenceAlgorithm.java",
    "chars": 4906,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\n\r\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/BooleanPersistentHomology.java",
    "chars": 10055,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/BooleanRelativeHomology.java",
    "chars": 1639,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/IntAbsoluteHomology.java",
    "chars": 1772,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/IntClassicalHomology.java",
    "chars": 5326,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/IntPersistenceAlgorithm.java",
    "chars": 5394,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/IntPersistentHomology.java",
    "chars": 10146,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/IntRelativeHomology.java",
    "chars": 1773,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/ObjectAbsoluteHomology.java",
    "chars": 1827,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/ObjectClassicalHomology.java",
    "chars": 5431,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/ObjectPersistenceAlgorithm.java",
    "chars": 5502,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/ObjectPersistentHomology.java",
    "chars": 10307,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport ja"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/autogen/homology/ObjectRelativeHomology.java",
    "chars": 1828,
    "preview": "package edu.stanford.math.plex4.autogen.homology;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/BottleneckDistance.java",
    "chars": 4085,
    "preview": "package edu.stanford.math.plex4.bottleneck;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/FlowEdge.java",
    "chars": 1482,
    "preview": "package edu.stanford.math.plex4.bottleneck;\n\npublic class FlowEdge {\n\tprivate final int source;\n\tprivate final int dest;"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/FlowNetwork.java",
    "chars": 3319,
    "preview": "package edu.stanford.math.plex4.bottleneck;\n\nimport edu.stanford.math.primitivelib.autogen.pair.ObjectIntPair;\nimport gn"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/FordFulkerson.java",
    "chars": 3812,
    "preview": "package edu.stanford.math.plex4.bottleneck;\r\n\r\n/**\r\n * \r\n * The Ford-Fulkerson Algorithm\r\n * \r\n * \r\n * @author Tim Harri"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/FordFulkersonEdge.java",
    "chars": 1569,
    "preview": "package edu.stanford.math.plex4.bottleneck;\r\n\r\n/**\r\n * @author Tim Harrington\r\n * @date Mar 12, 2009\r\n *\r\n * This is fro"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/FordFulkersonNode.java",
    "chars": 1023,
    "preview": "package edu.stanford.math.plex4.bottleneck;\r\n\r\n/**\r\n * @author Tim Harrington\r\n * @date Mar 12, 2009\r\n *\r\n * This is fro"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/bottleneck/WeightedBipartiteGraph.java",
    "chars": 5116,
    "preview": "package edu.stanford.math.plex4.bottleneck;\n\nimport gnu.trove.THashSet;\n\nimport java.util.ArrayList;\nimport java.util.Co"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/CellComplexOperations.java",
    "chars": 2238,
    "preview": "package edu.stanford.math.plex4.examples;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport edu.stanford.math."
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/CellStreamExamples.java",
    "chars": 3810,
    "preview": "package edu.stanford.math.plex4.examples;\n\nimport edu.stanford.math.plex4.homology.chain_basis.Cell;\nimport edu.stanford"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/DeSilvaMorozovJohanssonExample.java",
    "chars": 5924,
    "preview": "package edu.stanford.math.plex4.examples;\r\n\r\n\r\nimport edu.stanford.math.plex4.homology.barcodes.AnnotatedBarcodeCollecti"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/PointCloudExamples.java",
    "chars": 9064,
    "preview": "package edu.stanford.math.plex4.examples;\r\n\r\nimport java.util.Arrays;\r\n\r\nimport edu.stanford.math.plex4.utility.RandomUt"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/SimplexStreamExamples.java",
    "chars": 14058,
    "preview": "package edu.stanford.math.plex4.examples;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport edu.s"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/examples/SimplicialComplexOperations.java",
    "chars": 5418,
    "preview": "package edu.stanford.math.plex4.examples;\n\nimport edu.stanford.math.plex4.homology.chain_basis.Simplex;\nimport edu.stanf"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/generation/GeneratorDriver.java",
    "chars": 1788,
    "preview": "package edu.stanford.math.plex4.generation;\r\n\r\nimport java.util.List;\r\nimport java.util.Vector;\r\n\r\nimport edu.stanford.m"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/AbstractUndirectedGraph.java",
    "chars": 2081,
    "preview": "package edu.stanford.math.plex4.graph;\n\nimport java.io.Serializable;\nimport java.util.Iterator;\n\nimport edu.stanford.mat"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/AbstractWeightedUndirectedGraph.java",
    "chars": 809,
    "preview": "package edu.stanford.math.plex4.graph;\n\n/**\n * This interface defines functionality for a weighted graph.\n * The graph m"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/UndirectedListEdgeIterator.java",
    "chars": 1835,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph;\r\n\r\nimport java.util.Iterator;\r\n\r\nimport edu.stanford.math.primitiv"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/UndirectedListGraph.java",
    "chars": 5761,
    "preview": "/**\n * \n */\npackage edu.stanford.math.plex4.graph;\n\nimport edu.stanford.math.primitivelib.autogen.pair.IntIntPair;\nimpor"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/UndirectedWeightedListGraph.java",
    "chars": 5893,
    "preview": "/**\n * \n */\npackage edu.stanford.math.plex4.graph;\n\nimport edu.stanford.math.plex4.utility.ExceptionUtility;\nimport edu."
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/io/GraphDotWriter.java",
    "chars": 1041,
    "preview": "package edu.stanford.math.plex4.graph.io;\r\n\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\nimport java.io."
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/metric/GraphMetricFactory.java",
    "chars": 709,
    "preview": "package edu.stanford.math.plex4.graph.metric;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/metric/ShortestPathMetric.java",
    "chars": 1037,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph.metric;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedG"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/BAGraph.java",
    "chars": 4389,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/BinaryHierarchicalGraph.java",
    "chars": 6520,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/BinaryTree.java",
    "chars": 2266,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\n\r\n/**\r\n * Implements a binary tree of nodes labeled 1,2,...,n.\r\n * \r\n *"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/BinaryTreeGraph.java",
    "chars": 1813,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\n\r\n/**\r\n "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/CircleGraph.java",
    "chars": 3018,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/ClusteredERGraph.java",
    "chars": 5064,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph.random;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Formatter;"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/ErdosRenyiGraph.java",
    "chars": 1514,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport java.text.DecimalFormat;\r\n\r\nimport edu.stanford.math.plex4.graph"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/ForestFireGraph.java",
    "chars": 3409,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport java.util.Random;\r\n\r\nimport cern.jet.random.AbstractDistribution"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/GraphInstanceGenerator.java",
    "chars": 1276,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport edu.stanford.math.plex4.graph.Ab"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/HierarchicalERGraph.java",
    "chars": 3255,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph.random;\r\n\r\n/**\r\n * @author Tim Harrington\r\n * @date May 6, 2009\r\n *"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/KNearestNeighborsGraph.java",
    "chars": 841,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.primitivelib.autogen.array.Doub"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/ManifoldGraph.java",
    "chars": 3007,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/PrescribedDegrees.java",
    "chars": 6732,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/RandomGeometricGraph.java",
    "chars": 1993,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedG"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/SphereGraph.java",
    "chars": 773,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.plex4.examples.PointCloudExamples;\r\nimport edu"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/StochasticBlockmodel.java",
    "chars": 1735,
    "preview": "package edu.stanford.math.plex4.graph.random;\n\nimport java.text.DecimalFormat;\n\nimport edu.stanford.math.plex4.graph.Abs"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/random/TorusGraph.java",
    "chars": 1093,
    "preview": "package edu.stanford.math.plex4.graph.random;\r\n\r\nimport edu.stanford.math.primitivelib.autogen.array.DoubleArrayMath;\r\n\r"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/graph/utility/GraphUtility.java",
    "chars": 7694,
    "preview": "package edu.stanford.math.plex4.graph.utility;\r\n\r\nimport edu.stanford.math.plex4.graph.AbstractUndirectedGraph;\r\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/AnnotatedBarcodeCollection.java",
    "chars": 8099,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Ma"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/BarcodeCollection.java",
    "chars": 2669,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.util.List;\n\npublic class BarcodeCollection<T extends Com"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/BarcodeUtility.java",
    "chars": 5936,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport jav"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/Interval.java",
    "chars": 11356,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.io.Serializable;\n\n//import edu.stanford.math.primitiveli"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/IntervalLengthComparator.java",
    "chars": 837,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.util.Comparator;\n\npublic class IntervalLengthComparator "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/barcodes/PersistenceInvariantDescriptor.java",
    "chars": 10938,
    "preview": "package edu.stanford.math.plex4.homology.barcodes;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/Cell.java",
    "chars": 9634,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.homology.chain_basis;\r\n\r\nimport java.util.Arrays;\r\nimport java.util.Colle"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/CellComparator.java",
    "chars": 1477,
    "preview": "/**\r\n * \r\n */\r\npackage edu.stanford.math.plex4.homology.chain_basis;\r\n\r\nimport java.util.Comparator;\r\n\r\n/**\r\n * This cla"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/PrimitiveBasisElement.java",
    "chars": 2057,
    "preview": "package edu.stanford.math.plex4.homology.chain_basis;\n\n\n/**\n * This interface defines the functionality of a primitive b"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/Simplex.java",
    "chars": 3915,
    "preview": "package edu.stanford.math.plex4.homology.chain_basis;\r\n\r\nimport java.util.Arrays;\r\n\r\nimport edu.stanford.math.plex4.homo"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexComparator.java",
    "chars": 1590,
    "preview": "/**\n * \n */\npackage edu.stanford.math.plex4.homology.chain_basis;\n\nimport java.util.Comparator;\n\nimport edu.stanford.mat"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexPair.java",
    "chars": 2166,
    "preview": "package edu.stanford.math.plex4.homology.chain_basis;\r\n\r\nimport edu.stanford.math.primitivelib.autogen.pair.ObjectObject"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/chain_basis/SimplexPairComparator.java",
    "chars": 1164,
    "preview": "package edu.stanford.math.plex4.homology.chain_basis;\r\n\r\nimport java.util.Comparator;\r\n\r\npublic class SimplexPairCompara"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/ExternalConverter.java",
    "chars": 2201,
    "preview": "package edu.stanford.math.plex4.homology.filtration;\n\nimport java.util.Arrays;\n\n/**\n * <p>\n * This class implements a co"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/FiltrationConverter.java",
    "chars": 3049,
    "preview": "package edu.stanford.math.plex4.homology.filtration;\n\nimport edu.stanford.math.plex4.homology.barcodes.Interval;\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/FiltrationUtility.java",
    "chars": 1982,
    "preview": "package edu.stanford.math.plex4.homology.filtration;\n\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/IdentityConverter.java",
    "chars": 1152,
    "preview": "package edu.stanford.math.plex4.homology.filtration;\n\n\n\n/**\n * This class defines a filtration value conversion which si"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/IncreasingLinearConverter.java",
    "chars": 3589,
    "preview": "package edu.stanford.math.plex4.homology.filtration;\n\n\n\n/**\n * <p>This class implements a conversion between filtration "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/filtration/StaticConverter.java",
    "chars": 1538,
    "preview": "/**\n * \n */\npackage edu.stanford.math.plex4.homology.filtration;\n\n\n/**\n * This class implements the FiltrationConverter "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/interfaces/AbstractPersistenceAlgorithm.java",
    "chars": 1402,
    "preview": "package edu.stanford.math.plex4.homology.interfaces;\n\nimport edu.stanford.math.plex4.homology.barcodes.BarcodeCollection"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/interfaces/AbstractPersistenceBasisAlgorithm.java",
    "chars": 1911,
    "preview": "package edu.stanford.math.plex4.homology.interfaces;\n\nimport edu.stanford.math.plex4.homology.barcodes.AnnotatedBarcodeC"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/nonautogen/DisjointSetSystem.java",
    "chars": 1821,
    "preview": "package edu.stanford.math.plex4.homology.nonautogen;\n\n@Deprecated\npublic class DisjointSetSystem {\n\tint capacity = 16;\n\t"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/nonautogen/PersistentCohomologyPrototype.java",
    "chars": 10824,
    "preview": "package edu.stanford.math.plex4.homology.nonautogen;\n\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/utility/HomologyUtility.java",
    "chars": 7648,
    "preview": "package edu.stanford.math.plex4.homology.utility;\r\n\r\nimport edu.stanford.math.plex4.homology.chain_basis.Simplex;\r\nimpor"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/AbstractHomologyTracker.java",
    "chars": 307,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\n\n\npublic interface AbstractHomologyTracker<K, I extends Comparable<I>,"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/AbstractPersistenceTracker.java",
    "chars": 360,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\nimport java.util.Map;\n\nimport edu.stanford.math.plex4.homology.barcode"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/BasisTrackingUtility.java",
    "chars": 13367,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java."
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/HomologyBasisTracker.java",
    "chars": 19101,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\nimport java.util.Comparator;\nimport java.util.List;\nimport java.util.M"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/IntervalDescriptor.java",
    "chars": 1849,
    "preview": "/**\n * \n */\npackage edu.stanford.math.plex4.homology.zigzag;\n\n\npublic class IntervalDescriptor<T, G> {\n\tprotected final "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/IntervalTracker.java",
    "chars": 6723,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport edu.stanford.m"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/SimpleHomologyBasisTracker.java",
    "chars": 9497,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java."
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/ZigZagHomology.java",
    "chars": 3349,
    "preview": "package edu.stanford.math.plex4.homology.zigzag;\r\n\r\nimport java.util.Comparator;\r\n\r\nimport edu.stanford.math.plex4.homol"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/InducedHomologyMappingUtility.java",
    "chars": 13794,
    "preview": "package edu.stanford.math.plex4.homology.zigzag.bootstrap;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nim"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/SimplexStreamUtility.java",
    "chars": 1807,
    "preview": "package edu.stanford.math.plex4.homology.zigzag.bootstrap;\n\nimport edu.stanford.math.plex4.homology.chain_basis.Primitiv"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/VietorisRipsBootstrapper.java",
    "chars": 5597,
    "preview": "package edu.stanford.math.plex4.homology.zigzag.bootstrap;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport e"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/homology/zigzag/bootstrap/WitnessBootstrapper.java",
    "chars": 8076,
    "preview": "package edu.stanford.math.plex4.homology.zigzag.bootstrap;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport "
  },
  {
    "path": "src/java/edu/stanford/math/plex4/interop/Plex3PersistenceAlgorithm.java",
    "chars": 2264,
    "preview": "package edu.stanford.math.plex4.interop;\r\n\r\nimport edu.stanford.math.plex.Persistence;\r\nimport edu.stanford.math.plex.Pe"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/interop/Plex3Stream.java",
    "chars": 5265,
    "preview": "package edu.stanford.math.plex4.interop;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\n\r\nimport edu.stanf"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/interop/Plex3ToPlex4BarcodeAdapter.java",
    "chars": 2094,
    "preview": "package edu.stanford.math.plex4.interop;\r\n\r\nimport edu.stanford.math.plex.PersistenceInterval;\r\nimport edu.stanford.math"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/interop/Plex3ToPlex4SimplexAdapter.java",
    "chars": 1664,
    "preview": "package edu.stanford.math.plex4.interop;\r\n\r\nimport edu.stanford.math.plex.Simplex;\r\nimport edu.stanford.math.plex4.homol"
  },
  {
    "path": "src/java/edu/stanford/math/plex4/io/BarcodeWriter.java",
    "chars": 1102,
    "preview": "package edu.stanford.math.plex4.io;\r\n\r\nimport java.awt.image.BufferedImage;\r\nimport java.io.IOException;\r\n\r\nimport edu.s"
  }
]

// ... and 391 more files (download for full content)

About this extraction

This page contains the full source code of the appliedtopology/javaplex GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 591 files (5.9 MB), approximately 1.6M tokens, and a symbol index with 2711 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!