File size: 2,468 Bytes
a98fbc5
 
d3970a7
a98fbc5
d3970a7
a98fbc5
 
 
 
 
 
 
 
 
 
 
 
faad21c
a98fbc5
faad21c
a98fbc5
faad21c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a98fbc5
0544b07
 
 
faad21c
 
0544b07
 
a98fbc5
 
 
 
 
 
0544b07
 
 
 
 
 
 
 
 
 
 
 
a98fbc5
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
title: RTSS Diff Viewer
emoji: "πŸ”"
colorFrom: blue
colorTo: indigo
sdk: streamlit
sdk_version: 1.55.0
app_file: app.py
pinned: false
---

# RTSS Diff Viewer

A standalone Streamlit app for:

- converting RTSS `.dcm` files to JSON
- downloading normalized JSON outputs
- visualizing intelligent diffs between two RTSS versions (slice-by-slice for contours)
- batch-uploading multiple variants and switching any two versions for comparison
- efficiently handling large RTSS files with many contour points

## Component Comparison Modes

The app supports comparing four different components:

- **metadata**: DICOM package-level tags using standard unified text diff (fast)
- **structures**: ROI structure definitions using text diff
- **references**: Reference frame sequences using text diff  
- **contours**: Point-cloud comparison grouped by slice plane (z-coordinate)
  - Optimized for large files with many contour points (>50)
  - Two-panel left-right layout for easy visual comparison
  - Shows points organized by slice rather than full text diff
  - Clearly marks which ROIs/slices are identical, different, or missing
  - Much faster and more actionable for clinical workflows

## Contour Comparison Features

When comparing contour data:
- **Slice-by-slice organization**: Each z-coordinate (slice plane) shown in a collapsible expander
- **Two-panel layout**: Left file contents on the left, right file contents on the right
- **Visual indicators**:
  - βœ“ Identical ROI and points
  - ⚠️ Different points in ROI  
  - ⊘ ROI only exists in one file
  - βœ… Entire slice is identical
  - ❌ No contour data on this slice
- **Component equality**: When metadata, structures, or references are identical, a clear message indicates no differences

## User Workflows

- `Instructions` mode: in-app overview of Pair Mode and Batch Compare usage.
- `Pair Mode`: upload two RTSS files, inspect structured diff by component, and view contour points in 3D.
- `Batch Compare`: upload multiple RTSS files and compare any two using your choice of comparison component.

## Developer Setup

```bash
make install
make run
```

## Developer Testing

```bash
make test
```

To install dependencies and run tests in one step:

```bash
make test-all
```

## Hugging Face Spaces Deployment

Use the deploy workflow in this repository:

```bash
make deploy-init SPACE=amithjkamath/rtssdiffviewer
make deploy
```

This pushes local `deploy` branch to Space `main`.