Inspiration
I had recently been engrossed in the biological components of T-cells in immunology and became intrigued with pathogens, as a result. I explored pathological datasets to gain a better understanding of disease and realized that there were multiple repeats of files in sets used for training and testing AI models. This made me realize that the conventional programs to identify duplicate files may not be enough, inspiring me to develop a tool that goes beyond.
What it does
Slide-of-Life analyzes (audits) computational-pathology datasets for hidden relationships between the training and test sets. The tool reads the spreadsheets with the training and testing data (dataset manifests) and checks whether both sets contain records or images connected to the same patient, specimen, or microscope slide. It detects files with identical contents, the same image saved in different file formats, and images that look unusually similar and should be reviewed.
The tool first records what it found, then compares those findings with a set of user-defined rules (called a split policy) to decide whether each relationship is permitted or needs human review.
After completing the check, it creates structured files for other programs to read and a spreadsheet of the findings. It can also suggest how records could be reorganized between the training and testing sets (effectively a repair proposal), but it never changes the original data automatically.
How we built it
Slide-of-Life was built as a Python command-line tool so researchers can run it locally on their own datasets. The system begins by reading data manifests and matching their columns to a standard internal format (known as schema mapping). It then cleans and standardizes identifiers so that values referring to the same patient, specimen, etc. can be compared without external influence. Different parts of the tool then check for repeated identifiers, matching file contents, similar images, and missing files. Each finding is evaluated against the split policy to decide whether it is allowed, considered a violation, or needs human review. When requested, Slide-of-Life can map which records are connected and suggest a safer way to separate the training and testing data. It never changes the original files automatically. The results are saved in formats that can be viewed in a browser, read by other software, or opened in a spreadsheet. I used Codex through focused engineering tasks to help build and test the project, improve the command-line experience, and prepare it for release. GPT-5.6 is used only as an optional assistant for understanding unfamiliar spreadsheet columns, and its suggestions must be checked and approved before use.
Challenges we ran into
One of the biggest challenges was deciding how much confidence the tool should place based on the evaluation. Two files could be identical but two images may look similar but come from different sources. I had to make sure Slide-of-Life could flag suspicious cases without it being too deterministic.
We also ran into several packaging and release problems. The audit worked locally, but publishing to PyPI failed because the release folder included a checksum file alongside the actual Python packages. The publishing system tried to install the file, which Codex identified and fixed by separating the files meant for release from the files meant for PyPI.
Accomplishments that we're proud of
I'm proud I was able to discover this gap and implement Slide-of-Life using Codex. I'm especially proud that I was able to use it to guide me to publish my first package so others can install it all while being able to manually debug and use GPT-5.6 for additional help.
What we learned
I learned how to take a more structured approach to the process of software production using plan with Codex in addition to having it help with actual production.
What's next for Slide-of-Life
The next step for the tool is to be tested and used on larger public datasets by researchers. I would also like to make the reports easier to review and make better repair suggestions for more complicated cases. Effectively, I want to make sure it is used by the appropriate professionals in actual practice while enhancing current functionality.
Log in or sign up for Devpost to join the conversation.