DOI: 10.5281/zenodo.15453866
title: Dataset for "Pruning vineyards: updating barcodes and representative cycles by removing simplices"

description: This dataset contains experiments from the "Pruning vineyards" paper (link: arxiv.org/abs/2312.03925). It contains three folders (generate, test, software) and one file (README.txt).  Each folder is compressed separately, for ease of use. Each folder can be decompressed with a command like tar -xvzf folder.tar.gz .. The description and instructions in this file assume that you have downloaded all of the files and have extracted them into the same folder.

Folder 'generate'

This folder contains all code and data necessary to generate the test cases presented in the linked paper. To complie files and generate all the test cases, follow the steps in the file README.txt. Example inputs for the compiled C++ code from scripts are in the Jupyter notebook.



generate.ipynb : A Python Jupyter notebook with steps to  generate the datasets, complexes, and updates necessary for the tests

results.csv : Collected test results, as generated by the  last cell in generate.ipynb

imported_files/senate104_edge_list.txt_0.68902_distmat.txt : Distance matrix for dataset vr_senate. Source: github.com/n-otter/PH-roadmap

imported_files/tooth_103x94x161_uint8.raw : 3D image for dataset cc_tooth. Source: klacansky.com/open-scivis-datasets

imported_files/cubical_complex_3d_raw.py : Method to build cubical complex cc_tooth. Source: repository.tugraz.at/records/hht7z-8ek20

imported_files/connectivity.npz : Adjacency matrix for dataset bio_bbmcl6. Source: zenodo.org/records/10812497

imported_files/neuron_info.pickle : Morphological information for bio_bbmcl6. Source: zenodo.org/records/10812497

scripts/choose_simplices.cpp : Randomly selects simplices in a given dimension and constructs the uinon of their stars.

scripts/update_boundary_matrix.cpp : Updates a boundary matrix with removed simplices.


Folder 'test'

This folder contains the specific filtrations used to test the algorithm and implementation presented in the linked paper. There are 9 datasets, all of which are randomly constructed using the code in the Jupyter notebook generate/generate.ipynb, except for bio_bbmcl6 and cc_tooth. All 9 datasets have particular choices to consturct the filtrations (which define the boundary matrices), which are indicated in the Jupyter notebook.



boundary_matrix/ : (9 files) Boundary matrices (unreduced)

boundary_matrix_reduced/ : (9 files) Boundary matrices (reduced) 

boundary_matrix_updated/ : (9 files) Boundary matrices (unreduced) without the simplices to be removed 

boundary_matrix_updated_reduced/ : (9 files) Boundary matrices (reduced) without the simplices to be removed 

operations_matrix/ : (18 files) Operations matrices recording the first reduction

operations_matrix_updated/ : (18 files) Operations matrices recording the first reduction and the update 

persistence_pairs/ : (9 files) Persistence pairs 

persistence_pairs_control/ : (9 files) Persistence pairs for the updated boundary matrices, from PHAT 

persistence_pairs_modified/ : (9 files) Persistence pairs for the the updated boundary matrices, from SiRUP 

updates/ : (9 files) Files indicating which simplices should be removed 

timing.sh : Script for timing experiments (Section 5.2.2) 

timing/ : (36 files) Output files for timing exp. 

counting.sh : Script for counting experiments (Section 5.2.1) 

counting/ : (180 files) Output files for counting exp. 

temporary_files/ : (20 files) Intermediate files used to create boundary matrices


The state of this folder is as it is after executing bash timing.sh and bash counting.sh . To rerun, the output files in timing/ and counting/ should be deleted, as the output from the .sh files is appended to files in these folders. The naming of programs in these .sh files and in Section 5 of the "Pruning vineyards" paper is slightly different: 'PHAT' is phat, 'SiRUP' is phat_sirup --dont_reduce, and 'PHAT-op' is phat_sirup without the --update argument. The --dont_reduce flag skips the computation of persistence pairs, and simply records the persistence pairs as they are in the (reduced) boundary matrix at that stage of the program. Not including an argument for --update executes the same steps as PHAT, except for additionally creating an operations matrix (which is how PHAT-op is defined the paper).

Folder 'software'

This folder contains snapshots of uncompiled software used for the experiments, as well as custom files to count the number of operations. The program flagser-count is necessary for all the Vietoris-Rips, Erdos-Renyi, and biological filtrations. A  suggested compilation sequence is given in the file README.txt. 



flagser-count/ : Identifies cliques fom vertices and edges. Cloned on 2025-05-14 (commit c05d9ae) from github.com/JasonPSmith/flagser-count 

phat-sirup/ : Implementation presented in the linked paper. Cloned on 2025-05-16 (commit 8b4eac8) from bitbucket.org/jlazovskis/phat-sirup 

phat/ : Source software used for comparison. Cloned on 2025-05-14 (commit a74705e) from bitbucket.org/phat-code/phat 

counting_files/ : Modified files for counting column additions