https://github.com/i30101/crystaleyes
CrystalEyes: a machine learning powered ice crystal analysis app
https://github.com/i30101/crystaleyes
cellpose gui ice-crystals linkam machine-learning matplotlib microscope-images python pytorch tkinter ttk
Last synced: 29 days ago
JSON representation
CrystalEyes: a machine learning powered ice crystal analysis app
- Host: GitHub
- URL: https://github.com/i30101/crystaleyes
- Owner: i30101
- License: mit
- Created: 2025-07-21T13:08:14.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2025-09-13T02:16:04.000Z (9 months ago)
- Last Synced: 2025-09-13T04:17:16.107Z (9 months ago)
- Topics: cellpose, gui, ice-crystals, linkam, machine-learning, matplotlib, microscope-images, python, pytorch, tkinter, ttk
- Language: Python
- Homepage:
- Size: 3.5 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#
CrystalEyes





[](https://github.com/i30101/CrystalEyes/blob/master/LICENSE)

[](https://github.com/i30101/CrystalEyes/)
A Python app for analyzing microscope images of nano-ice crystal growth using Python and machine learning.
### How it works
CrystalEyes uses Python and the Cellpose machine learning library to extract data from images of ice crystal growth. It processes binary Linkam Data Files to extract temperature data and images. These images are analyzed to extract values such as average area, density, and coverage of ice crystals. The GUI, made using Tkinter and Ttk, provides a simple user experience.
## Changelog
### Version 2.0.0: what's new
This is the latest and fully functional version of CrystalEyes. Previous versions of CrystalEyes are in beta and not optimized for performance or user experience. The features newly added in this version are:
- Extraction of additional variables (see below for full list)
- Fixed debugging console
- Data boxes to quickly view temperature / rate / limit data along with interactive temperature graph
- Optimized data analysis and computer vision algorithms; average compute time on test machine (see below) ranges from 12-30 seconds, depending on the number of shapes present in a sample
### Version 1.2.0: app rehaul
Version `1.2.0` introduces a new GUI and support for LDF files only. In contrast to versions `0.8.0` and `0.9.0`, LDF support enables instant processing of images. You do not have to export images and video files from Linkam manually; the built-in binary parser does that instead.
> [!WARNING]
> Timestamp data is not available for this version. The app will not process timestamps from LDF files. The duration between each frame defaults to one minute.
### Full Release Schedule
| Version | Description |
|----------|----------------------------------------------------------------|
| `v2.0.0` | Final working version deployed |
| `v1.2.0` | Fully functioning user interface, parser, and analysis modules |
| `v1.0.0` | Non-functioning beta testing for new user interface |
| `v0.9.0` | Non-functioning beta testing for Linkam Data File parser |
| `v0.8.0` | Functioning and OCR-dependent, outdated |
## Dependencies
Unfortunately, CrystalEyes `v2.0.0` has highly specific dependencies. Most critical is Cellpose `3.0.10`, as the newer `4.0.6` is too-heavily GPU-reliant and requires Nvidia CUDA due to its larger neural network. The latest version of NumPy supported by Cellpose `3.0.10` is `1.26.4`, meaning Python versions `3.9`, `3.10`, `3.11`, or `3.12` are supported.
> [!CAUTION]
> Python `3.13` does not support NumPy `1.26`. Please be aware of which Python version your system is using, as it may not support this software.
CrystalEyes `2.0.0` was primarily tested on a system with 32 GB RAM with an integrated Intel processor/graphics chip (the graphics card was not used). Expect 1.8-2.5 GB of RAM use during operation; CPU usage will spike for each frame analysis as well.
Microsoft's Redistributable C++ Compiler (often installed through [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/?q=build+tools)) may be required to install NumPy `1.26`. If you are unable to download the C++ compiler, consider using an alternate Python interpreter and package manager (such as Miniconda).
> [!NOTE]
> Python version `3.10.13` along with NumPy version `1.26.3` were used during testing, along with Miniconda3 as the interpreter.
A full list of Python dependencies can be found in `requirements.txt`.
## Setup
1. Install a working Python version on your machine
2. Create a working repository and do `git clone https://github.com/i30101/CrystalEyes.git`
3. Add pip requirements with `pip install -m requirements.txt`
4. Run `app.py`!
## Usage
The following variables can be extracted by the CrystalEyes software, which is exported in the `.xlsx` format. The default data format, which is contains the name of the original same, has columns each containing a single variable and each row being a single frame. There will also be a spreadsheet of image areas, with each column being a single frame and the cells in each column consisting of raw individual contour areas.
### List of LDF variables
- File name
- Date
- Frame number
- Ramp number
- Temperature
- Temperature limit
- Temperature rate
- Raw images
- Processed images
- Processed data
### List of analysis variables
- Raw images
- Processed images
- Average areas (px^2)
- Average areas (um^2)
- Density (crystals per um^2)
- Coverage (ratio)