readme: ---
  name: "K-POP"
  license: "mit"
  metrics:
  - MAE
  - PLCC
  - SRCC
  - R2
  tags:
  - focus-prediction
  - microscopy
  - pytorch
  ---
  
  # K-POP: Predicting Distance to Focal Plane for Kato-Katz Prepared Microscopy Slides Using Deep Learning
  
  <a href="https://pytorch.org/get-started/locally/"><img alt="PyTorch" src="https://img.shields.io/badge/PyTorch-ee4c2c?logo=pytorch&logoColor=white"></a><a href="https://pytorchlightning.ai/">
  <img alt="Lightning" src="https://img.shields.io/badge/-Lightning-792ee5?logo=pytorchlightning&logoColor=white"></a>
  <a href="https://hydra.cc/"><img alt="Config: Hydra" src="https://img.shields.io/badge/Config-Hydra-89b8cd"></a>
  
  ## Description
  
  This repository contains the models and training pipeline for my master thesis. The main repository is hosted on [GitHub](https://github.com/13hannes11/master_thesis_code).
  
  The project structure is based on the template by [ashleve](https://github.com/ashleve/lightning-hydra-template).
  
  The metadata is stored in `data/focus150/`. The relevant files are `test_metadata.csv`, `train_metadata.csv` and `validation_metadata.csv`. Image data (of 150 x 150 px images) is not published together with this repository therefore training runs are not possible to do without it. The layout of the metadata files is as follows
  
  ```csv
  ,image_path,scan_uuid,study_id,focus_height,original_filename,stack_id,obj_name
  0,31/b0d4005e-57d0-4516-a239-abe02a8d0a67/I02413_X009_Y014_Z5107_750_300.jpg,b0d4005e-57d0-4516-a239-abe02a8d0a67,31,-0.013672000000000017,I02413_X009_Y014_Z5107.jpg,1811661,schistosoma
  1,31/274d8969-aa7c-4ac0-be60-e753579393ad/I01981_X019_Y014_Z4931_450_0.jpg,274d8969-aa7c-4ac0-be60-e753579393ad,31,-0.029296999999999962,I01981_X019_Y014_Z4931.jpg,1661371,schistosoma
  ...
  ```
  
  
  ## How to run
  
  Train model with chosen experiment configuration from `configs/experiment/`
  
  ```bash
  python train.py experiment=focusResNet_150
  ```
  
  Train with hyperparameter search from `configs/hparams_search/`
  
  ```bash
  python train.py -m hparams_search=focusResNetMSE_150
  ```
  
  You can override any parameter from command line like this
  
  ```bash
  python train.py trainer.max_epochs=20 datamodule.batch_size=64
  ```
  
  ## Jupyter notebooks
  
  Figures and other evaluation code was run in Jupyter notebooks. These are available at `notebooks/`