A Python app for analyzing microscope images of nano-ice crystal growth using Python and machine learning.
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.
Version 1.0.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.
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 | 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 |
Unfortunately, CrystalEyes v1.2.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 1.2.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) 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.
- Install a working Python version on your machine
- Create a working repository and do
git clone https://github.com/i30101/CrystalEyes.git - Add pip requirements with
pip install -m requirements.txt - Run
app.py!
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.
- File name
- Date
- Frame number
- Ramp number
- Temperature
- Temperature limit
- Temperature rate
- Raw images
- Processed images
- Processed data
- Raw images
- Processed images
- Average areas (px^2)
- Average areas (um^2)
- Density (crystals per um^2)
- Coverage (ratio)
