PlateMaster is an interactive Streamlit application for analyzing multi-well plate and plate-reader data stored in Excel files. It helps you load one workbook, multiple workbooks, or a ZIP archive, select plate rows and columns, aggregate measurements, remove outliers, compare groups statistically, visualize time-course results, and export a complete Excel report.
The project is particularly useful for researchers who need a fast, intuitive, and reproducible workflow without manually transferring data between spreadsheets.
The current main application file is
PlateMaster1.2.py.
- ✨ Key features
- 🧭 Typical workflow
- 📥 Input data format
- ⚙️ Installation
- 🚀 Running the app
- 🧪 How to use PlateMaster
- 🧩 Analysis modes
- 📊 Statistics and outlier handling
- 🎨 Visualization options
- 📤 Exported report
- 🗂 Project structure
- 🛠 Troubleshooting
⚠️ Notes and limitations
PlateMaster supports several ways to bring experiment data into the app:
- load Excel files from a server or local folder path;
- upload one or many Excel files through the browser;
- upload a ZIP archive containing multiple Excel workbooks;
- read common Excel extensions:
.xlsx,.xls, and.xlsm; - try multiple Excel engines, including
openpyxl,xlrd, and optionalpython-calamine; - fall back to delimited text parsing for some instrument exports mislabeled as Excel files;
- optionally use LibreOffice conversion for old or problematic
.xlsfiles.
- select any subset of rows and columns from the loaded tables;
- aggregate values by original columns;
- aggregate values by original rows;
- aggregate values by custom plate-template groups;
- save and reapply analysis presets.
Available aggregation methods:
| Method | Purpose |
|---|---|
| None | keep values without aggregation |
| Mean | average value |
| Median | median value |
| Min | minimum value |
| Max | maximum value |
| Standard deviation | standard deviation |
| Sum | total sum |
PlateMaster can remove outliers before aggregation using:
- IQR filtering;
- Z-score filtering;
- MAD filtering;
- None to keep all values.
The app also keeps a detailed log of removed values so results remain transparent and auditable.
PlateMaster calculates:
n;- mean, median, mode;
- standard deviation;
- SEM;
- MAD;
- min/max;
- approximate 95% confidence interval;
- IQR/2;
- approximate p-value for mean different from zero;
- Welch two-sample t-test between selected groups;
- pairwise p-value matrix across time/metric combinations.
Charts are built with Altair and are designed for quick visual inspection:
- Line + points;
- Line + points by columns;
- Scatter plot;
- Bar plot by time;
- Bar plot by columns;
- Box plot by time;
- Box plot by columns;
- Violin plot by time;
- Violin plot by columns.
Optional error bars can display standard deviation, SEM, 95% CI, IQR/2, or MAD.
- Start the Streamlit app.
- Upload Excel files or a ZIP archive.
- Review the representative input table.
- Select rows and columns to analyze.
- Choose the aggregation layout and aggregation function.
- Optionally enable outlier filtering.
- Configure the color palette, charts, and error bars.
- Press Run.
- Inspect aggregated tables, statistics, t-tests, outlier logs, and charts.
- Export the final Excel report.
PlateMaster expects each spreadsheet to contain a table where:
- the first column contains row identifiers such as well labels, sample names, or group labels;
- the remaining columns contain numeric measurements;
- column names may represent time points, wavelengths, treatments, concentrations, or other measurement dimensions.
Example:
| Well | 0 | 10 | 20 | 30 |
|---|---|---|---|---|
| A1 | 0.10 | 0.15 | 0.22 | 0.31 |
| A2 | 0.11 | 0.16 | 0.24 | 0.33 |
| B1 | 0.08 | 0.12 | 0.19 | 0.27 |
During loading, the app renames the first column internally to row_id and converts numeric measurement columns automatically.
For cross-file time-course analysis, PlateMaster extracts the last number from each filename and uses it as Time.
| Filename | Extracted time |
|---|---|
plate_0.xlsx |
0 |
experiment_10min.xlsx |
10 |
sample_time_2.5.xls |
2.5 |
If a filename does not contain a number, the file can still be loaded, but time-based statistics and plotting may be limited.
git clone https://github.com/narek-abelyan/PlateMaster.git
cd PlateMasterpython -m venv .venv
source .venv/bin/activateOn Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1pip install -r requirements.txtIf there is no requirements.txt, install the main dependencies manually:
pip install streamlit pandas numpy altair matplotlib openpyxl xlrd python-calamineOptional, but useful for old or problematic .xls files: install LibreOffice so PlateMaster can attempt automatic conversion to .xlsx.
From the repository directory, run:
streamlit run PlateMaster1.2.pyYou can also run the script directly:
python PlateMaster1.2.pyWhen executed directly outside Streamlit, the script tries to restart itself through streamlit run.
In the sidebar, select one of the available source modes.
Use this mode when the Excel files are already available on the same machine or server where Streamlit is running.
- Enter the folder path.
- Click Load folder.
- PlateMaster scans the folder for
.xlsx,.xls, and.xlsmfiles.
Use this mode when you want to upload files through the browser.
- Upload one or many Excel files.
- Optionally upload a ZIP archive containing Excel files.
- Click Load uploaded files.
After loading, PlateMaster displays one representative table. Use it to confirm that rows, columns, and numeric values were recognized correctly.
Use the sidebar multiselect controls to choose the rows and columns included in the analysis.
Select:
- aggregation layout;
- aggregation function;
- outlier filtering method;
- color scale mode;
- color palette;
- plot columns;
- chart type;
- error bar metric.
Presets store frequently used analysis settings, including selected rows, columns, aggregation mode, filtering settings, chart options, and color options.
Click Run to calculate results for the current settings.
This mode aggregates selected rows within each selected column. It is useful when columns represent time points, wavelengths, or measurement channels.
0, 10, 20, 30
This mode aggregates selected columns within each selected row. It is useful when each row represents a sample, well, or condition and columns represent repeated measurements.
A1, A2, B1, B2
This mode allows custom grouping directly in the app.
- Select rows and columns.
- Enter group labels into the template grid.
- Cells with the same label are combined into one group.
This is useful for biological replicates, treatment groups, control wells, or custom plate layouts.
| Method | Parameter | Description |
|---|---|---|
| None | Not applicable | Keeps all numeric values. |
| IQR | IQR multiplier | Removes values outside the interquartile range bounds. |
| Z-score | Z-score threshold | Removes values with high absolute z-scores. |
| MAD | MAD threshold | Removes values using median absolute deviation. |
The app computes several metrics that can be used in tables or chart error bars:
- standard deviation;
- standard error of the mean;
- approximate 95% confidence interval;
- IQR/2;
- MAD.
PlateMaster uses Welch-style two-sample t-test calculations for comparing groups. The p-values are approximate and should be interpreted as quick exploratory analysis rather than a substitute for a full statistical workflow.
Recommended chart choices:
| Goal | Suggested chart |
|---|---|
| Follow values over time | Line + points |
| Compare columns within each time point | Bar plot by time |
| Compare time points within each column | Bar plot by columns |
| Show distribution shape | Violin plot |
| Show spread and min/max | Box plot |
| Inspect individual aggregated points | Scatter plot |
The export button creates plate_master_report.xlsx with multiple sheets:
| Sheet | Contents |
|---|---|
| Aggregated table | Final combined table across files. |
| Statistical analysis | Descriptive statistics for the selected row/column combination. |
| T-test analysis | Welch t-test comparison between selected groups. |
| Pairwise T-test p-values | Matrix of approximate pairwise p-values. |
| Outlier log | Removed values with file, time, row, column, and value. |
| Outlier statistics | Removal counts and percentages. |
| Plot data | Data used to generate the selected chart. |
PlateMaster1.2.py # Main Streamlit application and analysis logic
requirements.txt # Python dependencies
README.md # English and Russian documentation
LICENSE # Full MIT License text
The current implementation is contained in a single Python script. This makes the project easy to run, copy, and deploy, while still keeping data loading, cleaning, aggregation, statistics, plotting, and export logic together.
pip install streamlit
streamlit run PlateMaster1.2.pyTry the following:
-
Install optional Excel readers:
pip install openpyxl xlrd python-calamine
-
If the file is an old
.xls, install LibreOffice and try loading it again. -
Open the file manually and save it as
.xlsx. -
Check that the table has a first identifier column and at least one numeric measurement column.
PlateMaster only analyzes columns that can be converted to numbers. Check that numeric cells do not contain incompatible text, symbols, or formatting artifacts.
Make sure your filenames contain a number. PlateMaster uses the last number in each filename as the time value.
experiment_0.xlsx
experiment_10.xlsx
experiment_20.xlsx
Check that:
- you clicked Run;
- at least one plot column is selected;
- the selected columns exist in the aggregated result;
- filenames contain extractable time values if you are using time-based plots.
- The app is optimized for exploratory plate analysis and fast reporting.
- Approximate p-values are intended for quick comparison and should be validated for publication-grade statistical analysis.
- Very large Excel or ZIP uploads may be limited by Streamlit server settings.
- Presets are stored in Streamlit session state, so they may reset when the session restarts.
- The first column of every input table is treated as the row identifier.
This project is distributed under the MIT License. See the full license text in LICENSE.
Repository: https://github.com/narek-abelyan/PlateMaster
If you use PlateMaster in your work, consider citing or linking to the repository so others can find the tool.
PlateMaster — это интерактивное приложение на Streamlit для анализа данных многолуночных планшетов и Excel-файлов с результатами plate-reader экспериментов. Оно помогает быстро загружать один файл, набор файлов или ZIP-архив, выбирать строки и столбцы планшета, объединять измерения, удалять выбросы, сравнивать группы статистически, строить графики временных рядов и выгружать готовый Excel-отчёт.
Проект особенно полезен исследователям, которым нужен быстрый, наглядный и воспроизводимый workflow без ручного копирования данных между таблицами.
Текущая основная версия приложения находится в файле
PlateMaster1.2.py.
- ✨ Возможности
- 🧭 Типичный сценарий работы
- 📥 Формат входных данных
- ⚙️ Установка
- 🚀 Запуск приложения
- 🧪 Как пользоваться PlateMaster
- 🧩 Режимы анализа
- 📊 Статистика и выбросы
- 🎨 Визуализация
- 📤 Excel-отчёт
- 🗂 Структура проекта
- 🛠 Решение проблем
⚠️ Ограничения
PlateMaster умеет работать с разными источниками данных:
- загрузка Excel-файлов из папки на сервере или локальной машине;
- загрузка одного или нескольких Excel-файлов через браузер;
- загрузка ZIP-архива с несколькими Excel-книгами;
- поддержка расширений
.xlsx,.xls,.xlsm; - несколько стратегий чтения Excel-файлов:
openpyxl,xlrd, опциональноpython-calamine; - fallback для некоторых экспортов приборов, которые выглядят как
.xls, но фактически являются текстовыми таблицами; - опциональная конвертация через LibreOffice для старых или проблемных
.xlsфайлов.
- выбор любых строк и столбцов из загруженной таблицы;
- агрегация по исходным столбцам;
- агрегация по исходным строкам;
- агрегация по пользовательским группам в шаблоне планшета;
- сохранение и применение пресетов анализа.
Доступные функции агрегации:
| Метод | Назначение |
|---|---|
| None | оставить значения без агрегации |
| Mean | среднее значение |
| Median | медиана |
| Min | минимум |
| Max | максимум |
| Standard deviation | стандартное отклонение |
| Sum | сумма |
Перед агрегацией можно удалить выбросы одним из методов:
- IQR — фильтрация по межквартильному размаху;
- Z-score — фильтрация по z-оценке;
- MAD — фильтрация по median absolute deviation;
- None — без удаления выбросов.
Приложение сохраняет подробный журнал удалённых значений, чтобы результаты оставались прозрачными и проверяемыми.
PlateMaster рассчитывает:
- количество значений
n; - mean, median, mode;
- standard deviation;
- SEM;
- MAD;
- min/max;
- приблизительный 95% доверительный интервал;
- IQR/2;
- приблизительный p-value для отличия среднего от нуля;
- Welch two-sample t-test между выбранными группами;
- матрицу попарных p-value для комбинаций времени и метрик.
Графики строятся на Altair и помогают быстро увидеть динамику и различия между группами:
- Line + points;
- Line + points by columns;
- Scatter plot;
- Bar plot by time;
- Bar plot by columns;
- Box plot by time;
- Box plot by columns;
- Violin plot by time;
- Violin plot by columns.
Для error bars можно выбрать standard deviation, SEM, 95% CI, IQR/2 или MAD.
- Запустить Streamlit-приложение.
- Загрузить Excel-файлы или ZIP-архив.
- Проверить representative input table.
- Выбрать нужные строки и столбцы.
- Выбрать режим агрегации и функцию агрегации.
- При необходимости включить фильтрацию выбросов.
- Настроить цветовую палитру, графики и error bars.
- Нажать Run.
- Просмотреть агрегированную таблицу, статистику, t-test, журнал выбросов и графики.
- Скачать итоговый Excel-отчёт.
PlateMaster ожидает таблицу, где:
- первый столбец содержит идентификаторы строк: well labels, sample names, group names или другие названия;
- остальные столбцы содержат числовые измерения;
- названия столбцов могут обозначать время, длину волны, концентрацию, обработку, канал измерения и т.д.
Пример:
| Well | 0 | 10 | 20 | 30 |
|---|---|---|---|---|
| A1 | 0.10 | 0.15 | 0.22 | 0.31 |
| A2 | 0.11 | 0.16 | 0.24 | 0.33 |
| B1 | 0.08 | 0.12 | 0.19 | 0.27 |
При загрузке первый столбец внутренне переименовывается в row_id, а числовые столбцы автоматически конвертируются в числа.
Для анализа временных рядов PlateMaster берёт последнее число из имени файла и использует его как Time.
| Имя файла | Извлечённое время |
|---|---|
plate_0.xlsx |
0 |
experiment_10min.xlsx |
10 |
sample_time_2.5.xls |
2.5 |
Если в имени файла нет числа, файл всё равно может быть загружен, но time-based статистика и графики могут быть ограничены.
git clone https://github.com/narek-abelyan/PlateMaster.git
cd PlateMasterpython -m venv .venv
source .venv/bin/activateWindows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1pip install -r requirements.txtЕсли файла requirements.txt нет, установите основные зависимости вручную:
pip install streamlit pandas numpy altair matplotlib openpyxl xlrd python-calamineОпционально установите LibreOffice, если нужно открывать старые или повреждённые .xls файлы.
Из папки репозитория выполните:
streamlit run PlateMaster1.2.pyТакже можно запустить Python-файл напрямую:
python PlateMaster1.2.pyПри прямом запуске скрипт пытается перезапустить себя через streamlit run.
В sidebar доступны два режима:
Используйте этот режим, если Excel-файлы уже лежат на сервере или машине, где запущен Streamlit.
- Укажите путь к папке.
- Нажмите Load folder.
- PlateMaster найдёт файлы
.xlsx,.xls,.xlsm.
Используйте этот режим для загрузки через браузер.
- Загрузите один или несколько Excel-файлов.
- При необходимости загрузите ZIP-архив.
- Нажмите Load uploaded files.
После загрузки приложение показывает пример входной таблицы. Проверьте, что строки, столбцы и числовые значения распознаны корректно.
Через multiselect в sidebar выберите rows и columns, которые должны попасть в анализ.
Выберите:
- aggregation layout;
- aggregation function;
- outlier filtering method;
- color scale mode;
- color palette;
- plot columns;
- chart type;
- error bar metric.
Presets помогают сохранить часто используемые настройки: строки, столбцы, режим агрегации, фильтрацию, тип графика и цветовую палитру.
Нажмите Run, чтобы получить таблицы, статистику и графики.
Агрегирует выбранные строки внутри каждого выбранного столбца. Удобно, когда столбцы — это время, длины волн или каналы измерения.
0, 10, 20, 30
Агрегирует выбранные столбцы внутри каждой выбранной строки. Удобно, когда строки — это лунки, образцы или условия, а столбцы — повторы или измерения.
A1, A2, B1, B2
Позволяет создать группы прямо в интерфейсе:
- Выберите строки и столбцы.
- Введите названия групп в template grid.
- Ячейки с одинаковым названием объединяются в одну группу.
Это удобно для biological replicates, treatment groups, control wells и пользовательских plate layouts.
| Метод | Параметр | Описание |
|---|---|---|
| None | — | оставить все числовые значения |
| IQR | IQR multiplier | удалить значения вне границ межквартильного размаха |
| Z-score | threshold | удалить значения с высокой абсолютной z-оценкой |
| MAD | threshold | удалить значения по median absolute deviation |
- Standard deviation;
- Standard error of the mean;
- Approximate 95% CI;
- IQR/2;
- MAD.
PlateMaster использует Welch-style two-sample t-test для сравнения групп. P-values являются приблизительными и подходят для exploratory analysis; для публикационных выводов рекомендуется отдельная статистическая проверка.
| Цель | Рекомендуемый график |
|---|---|
| Проследить динамику во времени | Line + points |
| Сравнить столбцы внутри time point | Bar plot by time |
| Сравнить time points внутри столбца | Bar plot by columns |
| Показать форму распределения | Violin plot |
| Показать разброс и min/max | Box plot |
| Посмотреть отдельные агрегированные точки | Scatter plot |
Кнопка экспорта создаёт файл plate_master_report.xlsx с несколькими листами:
| Лист | Содержимое |
|---|---|
| Aggregated table | итоговая агрегированная таблица по всем файлам |
| Statistical analysis | descriptive statistics |
| T-test analysis | Welch t-test между выбранными группами |
| Pairwise T-test p-values | матрица попарных p-values |
| Outlier log | удалённые значения с файлом, временем, строкой, столбцом и значением |
| Outlier statistics | количество и процент удалённых значений |
| Plot data | данные, использованные для графика |
PlateMaster1.2.py # Main Streamlit application and analysis logic
requirements.txt # Python dependencies
README.md # English and Russian documentation
LICENSE # Full MIT License text
Приложение сейчас находится в одном Python-файле, что упрощает запуск, перенос и деплой.
pip install streamlit
streamlit run PlateMaster1.2.pyПопробуйте:
-
Установить дополнительные reader-пакеты:
pip install openpyxl xlrd python-calamine
-
Для старых
.xlsустановить LibreOffice. -
Открыть файл вручную и сохранить как
.xlsx. -
Проверить, что первый столбец содержит идентификаторы, а остальные — числовые значения.
Проверьте, что числовые ячейки не содержат лишний текст, символы или нестандартное форматирование.
Убедитесь, что имена файлов содержат число:
experiment_0.xlsx
experiment_10.xlsx
experiment_20.xlsx
Проверьте, что:
- нажата кнопка Run;
- выбран хотя бы один plot column;
- выбранные столбцы есть в aggregated result;
- для time-based plots имена файлов содержат извлекаемое время.
- Приложение оптимизировано для exploratory plate analysis и быстрого отчёта.
- Приблизительные p-values не заменяют полноценный статистический pipeline.
- Очень большие Excel/ZIP файлы могут быть ограничены настройками Streamlit-сервера.
- Presets хранятся в session state и могут сбрасываться после перезапуска сессии.
- Первый столбец каждого входного файла всегда считается идентификатором строки.
Этот проект распространяется под лицензией MIT License. Полный текст лицензии находится в файле LICENSE.
Repository: https://github.com/narek-abelyan/PlateMaster
Если PlateMaster помог в вашей работе, укажите ссылку на репозиторий, чтобы другие пользователи могли найти инструмент.