A modern, interactive Whole Slide Image (WSI) viewer application built with React and OpenSeadragon. This application allows medical professionals to view and analyze whole slide images with detection overlays, making it easier to identify and analyze various cell types in blood smears.
- 🔍 Interactive WSI viewing with zoom, pan, and navigation controls
- 📊 Detection results table with cell type statistics
- 🎯 Bounding box overlays for detected cells
- ⚡ Real-time date and time display
- 🎨 Modern, minimal UI design
- ⌨️ Keyboard shortcuts for quick actions
- 📱 Responsive layout
- 🖨️ Report generation capabilities
- 💾 Export and sharing functionality
- React
- OpenSeadragon
- TailwindCSS
- JavaScript (ES6+)
- Node.js (v14 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd wsi-viewer
- Install dependencies:
npm install
# or
yarn install
- Start the development server:
npm start
# or
yarn start
src/
├── components/
│ ├── WSIViewer.jsx # Main viewer component
│ └── DetectionTable.jsx # Detection results table
├── data/
│ └── output.json # Sample detection results
├── App.jsx # Root component
└── index.js # Entry point
Ctrl + T
: Toggle detection tableCtrl + R
: Generate reportCtrl + P
: Print view
- Zoom In/Out buttons
- Home button to reset view
- Navigation thumbnail
- Detection table toggle
- Report generation
The detection table shows statistics for:
- RBC (Red Blood Cells)
- WBC (White Blood Cells)
- Platelets
Each section displays:
- Cell type counts
- Percentage distribution
- Color-coded rows for easy identification
The viewer can be configured by modifying the options in WSIViewer.jsx
:
const viewer = OpenSeadragon({
// Viewer settings
defaultZoomLevel: 0,
minZoomLevel: 0,
maxZoomLevel: 10,
// Performance settings
imageLoaderLimit: 4,
maxImageCacheCount: 200,
// ... other settings
});
Modify the overlay appearance in the addDetectionOverlay
function:
Object.assign(overlayElement.style, {
border: "2px solid blue",
backgroundColor: "transparent",
// ... other styles
});
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenSeadragon for the powerful viewing capabilities
- TailwindCSS for the modern UI components
- React team for the excellent framework
For support, please open an issue in the repository or contact the development team.