1 Changelog

  • 20230508: Trying this out with a larger dataset, explicitly set wanted_z and wanted_channel for it.
  • 20230328: Reimplemented steps as functions, connected them in one set of calls.
  • 20230317: Initial cellpose implementation.
  • 20230315: Separation of input image into timepoints.
  • 20230310: Used geopandas to trace cells over time by position.
  • 20230307: Setting up my environment to handle ipynb and python markdown.

2 Introduction

Jacques is seeking to segment and follow cells over time.

Steps performed so far:

  1. Python/venv installation of fiji
  2. Figured out some easy interactions between python and actual image data.
  3. Implemented a simple function to find minimum distances between putative cells using the extant methods.

3 Next steps

  1. Note that the czi images are immediately openable via fiji’s bioformat interface.
  2. Load dataset via fiji
  3. Invoke cellpose via the python interface (same as pyimagej)
  4. Save ROIs produced by cellpose, save them to zip output file
  1. The roi interface in fiji can address these
  1. Currently a macro is invoked which performs a set of measurements on every ROI and saves them to a csv. This creates the primary data structure used for all following processes.
  2. Need to create a datastructure which identifies each individual cell over time given these ROIs which x/y/time(frame) along with the measurements of interest (area/mean/stdev/intensities by color).
    1. Small postprocessing details: the intensity values produced must be normalized by cell area.

4 Demonstrate the first couple of steps using an actual dataset

Jacques sent me an image acquired from the microscope and I saved it as ‘test_data/raw.tif’, he also sent me a cellpose model which I saved to the ‘models/’ directory.

Given these as a starting point, let us try to open the image with a fiji instance and split it into a series of smaller files by timepoint.

5 Implementation notes

I have been primarily using this as a way to refresh my brain on python and get current on best practices. Thus, there are decisions I made in this workbook which do not make sense in any other context: e.g. why would anyone have the primary data structure be a dictionary keyed by filename, that is dumb? I chose to do that to refresh myself on playing with dictionaries. By the same token, why would anyone make a dictionary of dataframes only to turn around and concatenate them for usage in geopandas, that is crazy? I did this to get more comfortable with pandas and get out some of my Rish muscle memory.

With that in mind, if we choose to make this a package, the first thing that will need to happen is to rework the base datastructure. I just want anyone who actually reads this code to know that yes, I am a nutter, but a nutter for a reason.

6 Load necessary python modules

I am hoping to figure out how to load my package and have it handle all the initialization. It is not clear yet to me if I can import fiji_tracker and get access to the various imports it performs. I am reasonably certain this is possible, but that I have not figured out the correct syntax.

from fiji_tracker.fiji_tracker.tracker import *

from cellpose import models, io
from cellpose.io import *
from collections import defaultdict
import geopandas
import glob
import imagej
from jpype import JArray, JInt
import matplotlib.pyplot as plt
import multiprocessing as mp
import numpy as np
import os
import pandas
from pandas import DataFrame
from pathlib import Path
import scyjava
import seaborn
import shutil

start_dir = os.getcwd()
mem = '-Xmx64g'
location = 'venv/bin/Fiji.app'
mode = 'interactive'

scyjava.config.add_option(mem)
print(f"Where am I: {start_dir}")
## Where am I: /z1/scratch/atb/imaging/mtb_2023
ij = imagej.init(Path(location), mode=mode)
ij.getApp().getInfo(True)
## 'ImageJ2 2.9.0/1.53t; Java 1.8.0_322 [amd64]; 58MB of 58254MB'
ij.ui().showUI()
## Something about this init() function changes the current working directory.
os.chdir(start_dir)
ij.getVersion()
## '2.9.0/1.53t'
showPolygonRoi = scyjava.jimport('ij.gui.PolygonRoi')
Overlay = scyjava.jimport('ij.gui.Overlay')
Regions = scyjava.jimport('net.imglib2.roi.Regions')
LabelRegions = scyjava.jimport('net.imglib2.roi.labeling.LabelRegions')
ZProjector = scyjava.jimport('ij.plugin.ZProjector')()
ov = Overlay()

7 Set up some initial variables

base_dir = Path('/lab/scratch/atb/imaging/mtb_2023').as_posix()
os.chdir(base_dir)
input_file = Path(f"{base_dir}/test_data/Experiment-1568.czi").as_posix()
pandas.set_option('display.max_columns', None)
verbose = True

8 Separate slices

Note to self, Jacques’ new dataset uses wanted_z == 2, wanted_channel == 3.

raw_dataset, saved_slices, output_directory = separate_slices(input_file, ij, wanted_z = 2,
                                                              wanted_channel = 3)
## Starting to open the input file, this takes a moment.
## Opened input file, writing images to /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2
## This dataset has dimensions: X:2048 Y:2048 Z:11 Time:121
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_0.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_1.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_2.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_3.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_4.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_5.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_6.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_7.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_8.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_9.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_10.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_11.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_12.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_13.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_14.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_15.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_16.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_17.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_18.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_19.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_20.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_21.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_22.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_23.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_24.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_25.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_26.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_27.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_28.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_29.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_30.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_31.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_32.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_33.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_34.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_35.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_36.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_37.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_38.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_39.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_40.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_41.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_42.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_43.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_44.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_45.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_46.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_47.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_48.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_49.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_50.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_51.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_52.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_53.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_54.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_55.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_56.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_57.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_58.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_59.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_60.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_61.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_62.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_63.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_64.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_65.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_66.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_67.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_68.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_69.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_70.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_71.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_72.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_73.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_74.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_75.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_76.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_77.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_78.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_79.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_80.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_81.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_82.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_83.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_84.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_85.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_86.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_87.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_88.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_89.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_90.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_91.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_92.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_93.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_94.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_95.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_96.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_97.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_98.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_99.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_100.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_101.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_102.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_103.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_104.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_105.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_106.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_107.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_108.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_109.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_110.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_111.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_112.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_113.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_114.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_115.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_116.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_117.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_118.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_119.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_120.tif, it already exists.
## Returning the output directory: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2
## 
## [java.lang.Enum.toString] ZeissCZIReader initializing /lab/scratch/atb/imaging/mtb_2023/test_data/Experiment-1568.czi
## [java.lang.Enum.toString] [WARN] Unknown DetectorType value 'GaAsP-PMT' will be stored as "Other"
## [java.lang.Enum.toString] [WARN] Unknown DetectorType value 'GaAsP-PMT' will be stored as "Other"
## [java.lang.Enum.toString] [WARN] Unknown DetectorType value 'GaAsP-PMT' will be stored as "Other"
## [java.lang.Enum.toString] [WARN] Unknown DetectorType value 'Multialkali-PMT' will be stored as "Other"

9 Invoke cellpose

output_files = invoke_cellpose(output_directory, 'models/CP_20220523_104016')
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_0.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_0_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_0_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_1.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_1_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_1_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_2.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_2_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_2_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_3.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_3_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_3_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_4.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_4_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_4_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_5.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_5_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_5_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_6.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_6_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_6_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_7.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_7_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_7_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_8.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_8_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_8_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_9.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_9_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_9_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_10.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_10_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_10_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_11.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_11_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_11_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_12.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_12_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_12_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_13.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_13_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_13_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_14.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_14_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_14_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_15.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_15_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_15_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_16.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_16_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_16_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_17.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_17_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_17_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_18.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_18_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_18_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_19.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_19_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_19_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_20.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_20_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_20_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_21.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_21_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_21_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_22.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_22_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_22_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_23.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_23_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_23_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_24.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_24_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_24_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_25.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_25_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_25_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_26.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_26_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_26_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_27.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_27_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_27_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_28.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_28_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_28_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_29.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_29_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_29_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_30.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_30_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_30_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_31.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_31_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_31_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_32.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_32_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_32_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_33.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_33_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_33_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_34.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_34_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_34_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_35.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_35_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_35_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_36.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_36_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_36_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_37.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_37_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_37_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_38.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_38_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_38_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_39.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_39_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_39_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_40.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_40_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_40_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_41.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_41_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_41_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_42.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_42_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_42_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_43.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_43_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_43_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_44.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_44_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_44_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_45.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_45_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_45_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_46.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_46_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_46_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_47.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_47_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_47_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_48.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_48_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_48_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_49.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_49_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_49_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_50.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_50_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_50_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_51.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_51_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_51_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_52.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_52_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_52_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_53.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_53_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_53_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_54.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_54_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_54_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_55.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_55_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_55_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_56.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_56_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_56_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_57.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_57_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_57_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_58.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_58_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_58_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_59.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_59_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_59_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_60.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_60_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_60_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_61.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_61_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_61_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_62.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_62_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_62_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_63.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_63_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_63_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_64.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_64_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_64_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_65.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_65_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_65_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_66.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_66_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_66_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_67.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_67_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_67_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_68.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_68_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_68_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_69.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_69_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_69_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_70.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_70_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_70_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_71.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_71_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_71_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_72.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_72_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_72_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_73.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_73_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_73_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_74.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_74_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_74_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_75.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_75_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_75_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_76.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_76_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_76_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_77.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_77_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_77_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_78.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_78_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_78_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_79.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_79_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_79_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_80.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_80_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_80_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_81.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_81_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_81_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_82.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_82_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_82_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_83.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_83_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_83_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_84.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_84_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_84_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_85.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_85_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_85_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_86.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_86_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_86_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_87.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_87_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_87_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_88.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_88_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_88_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_89.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_89_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_89_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_90.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_90_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_90_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_91.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_91_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_91_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_92.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_92_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_92_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_93.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_93_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_93_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_94.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_94_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_94_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_95.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_95_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_95_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_96.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_96_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_96_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_97.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_97_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_97_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_98.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_98_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_98_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_99.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_99_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_99_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_100.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_100_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_100_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_101.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_101_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_101_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_102.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_102_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_102_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_103.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_103_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_103_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_104.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_104_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_104_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_105.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_105_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_105_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_106.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_106_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_106_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_107.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_107_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_107_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_108.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_108_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_108_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_109.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_109_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_109_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_110.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_110_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_110_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_111.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_111_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_111_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_112.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_112_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_112_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_113.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_113_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_113_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_114.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_114_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_114_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_115.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_115_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_115_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_116.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_116_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_116_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_117.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_117_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_117_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_118.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_118_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_118_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_119.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_119_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_119_cp_outlines.txt
## Reading /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_120.tif
## Adding new txt file: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_120_cp_outlines.txt
## This file already exists: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/slices/frame_120_cp_outlines.txt
## Returning the output files.
move_cellpose_output(output_files)
## Moving cellpose outputs to the cellpose output directory.

10 Collapse Z

One possible change is to perform measurements on the sum of Z-stacks instead of a single slice. Thus we would sum the cells, create the ROIs using the single slice grayscale image, then measure the set of all combined.

output_files = collapse_z(raw_dataset, output_files)
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame0.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame1.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame2.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame3.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame4.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame5.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame6.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame7.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame8.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame9.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame10.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame11.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame12.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame13.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame14.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame15.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame16.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame17.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame18.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame19.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame20.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame21.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame22.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame23.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame24.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame25.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame26.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame27.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame28.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame29.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame30.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame31.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame32.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame33.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame34.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame35.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame36.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame37.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame38.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame39.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame40.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame41.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame42.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame43.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame44.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame45.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame46.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame47.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame48.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame49.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame50.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame51.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame52.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame53.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame54.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame55.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame56.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame57.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame58.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame59.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame60.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame61.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame62.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame63.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame64.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame65.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame66.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame67.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame68.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame69.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame70.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame71.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame72.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame73.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame74.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame75.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame76.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame77.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame78.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame79.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame80.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame81.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame82.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame83.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame84.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame85.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame86.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame87.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame88.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame89.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame90.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame91.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame92.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame93.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame94.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame95.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame96.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame97.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame98.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame99.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame100.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame101.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame102.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame103.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame104.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame105.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame106.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame107.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame108.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame109.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame110.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame111.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame112.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame113.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame114.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame115.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame116.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame117.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame118.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame119.tif, it already exists.
## Skipping /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame120.tif, it already exists.

11 Create Regions of interest from cellpose outputs

In Jacques notebook, it looks like he only extracts ROIs from one of the cellpose slices. I am assuming the goal is to extend this across all images?

There is an important caveat that I missed: imagej comes with a python2-based scripting language from which it appears some of his code is coming. As a result I should look carefully before using it, and pay close attention to the examples provided here for the most appropriate ways of interacting with the ROI manager etc:

https://github.com/imagej/pyimagej/blob/main/doc/examples/blob_detection_interactive.py

slice_measurements = slices_to_roi_measurements(output_files, ij, collapsed = True)
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_0_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame0.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_1_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame1.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_2_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame2.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_3_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame3.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_4_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame4.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_5_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame5.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_6_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame6.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_7_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame7.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_8_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame8.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_9_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame9.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_10_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame10.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_11_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame11.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_12_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame12.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_13_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame13.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_14_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame14.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_15_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame15.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_16_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame16.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_17_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame17.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_18_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame18.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_19_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame19.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_20_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame20.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_21_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame21.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_22_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame22.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_23_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame23.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_24_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame24.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_25_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame25.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_26_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame26.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_27_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame27.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_28_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame28.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_29_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame29.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_30_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame30.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_31_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame31.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_32_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame32.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_33_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame33.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_34_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame34.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_35_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame35.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_36_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame36.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_37_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame37.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_38_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame38.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_39_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame39.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_40_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame40.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_41_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame41.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_42_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame42.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_43_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame43.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_44_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame44.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_45_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame45.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_46_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame46.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_47_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame47.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_48_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame48.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_49_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame49.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_50_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame50.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_51_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame51.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_52_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame52.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_53_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame53.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_54_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame54.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_55_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame55.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_56_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame56.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_57_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame57.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_58_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame58.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_59_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame59.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_60_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame60.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_61_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame61.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_62_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame62.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_63_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame63.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_64_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame64.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_65_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame65.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_66_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame66.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_67_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame67.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_68_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame68.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_69_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame69.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_70_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame70.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_71_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame71.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_72_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame72.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_73_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame73.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_74_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame74.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_75_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame75.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_76_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame76.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_77_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame77.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_78_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame78.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_79_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame79.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_80_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame80.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_81_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame81.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_82_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame82.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_83_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame83.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_84_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame84.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_85_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame85.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_86_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame86.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_87_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame87.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_88_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame88.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_89_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame89.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_90_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame90.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_91_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame91.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_92_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame92.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_93_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame93.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_94_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame94.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_95_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame95.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_96_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame96.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_97_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame97.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_98_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame98.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_99_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame99.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_100_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame100.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_101_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame101.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_102_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame102.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_103_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame103.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_104_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame104.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_105_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame105.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_106_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame106.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_107_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame107.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_108_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame108.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_109_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame109.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_110_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame110.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_111_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame111.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_112_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame112.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_113_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame113.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_114_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame114.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_115_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame115.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_116_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame116.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_117_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame117.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_118_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame118.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_119_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame119.tif
## Processing cellpose outline: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/cellpose/frame_120_cp_outlines.txt
## Measuring: /lab/scratch/atb/imaging/mtb_2023/test_data/outputs/Experiment-1568_z2/collapsed/frame120.tif

11.1 Separate the logic of the above function

slices_to_roi_measurements() does a few things in one for loop:

  1. It creates polygons from the cellpose outputs.
  2. It adds them to the ROI manager
  3. It performs a measurement of them.

There are other tasks which Jacques would like to perform on the various cellpose polygons, thus we really need to separate the functions which create and save the ROIs from those which measure them.

In addition, I think we really want to have the raw data open and add the ROIs to it.

updated = create_cellpose_rois(output_files, raw, collapsed = True)

12 Convert the slice measurements to pandas df

slices_to_roi_measurements() returns a dictionary with keys which are the filenames of each raw tif file. Each element of that dictionary is in turn a dictionary containing some information about the files along with a df of the measurements provided by imagej.

My little geopandas function assumes a single long df with some columns which tell it which timepoint. So lets make a quick function to give that here. OTOH it may be wiser/better to make some changes to slices_to_roi_measurements() so that it returns that format df; but since I am using this as a learning experience to get more comfortable with python data structures, I will not do it that way.

concatenated = convert_slices_to_pandas(slice_measurements)

13 Find nearest

nearest = nearest_cells_over_time(concatenated, max_dist = 10.0,
                                  x_column = 'X', y_column = 'Y')
## Getting distances of dfs 1 and 2.
## Getting distances of dfs 2 and 3.
## Getting distances of dfs 3 and 4.
## Getting distances of dfs 4 and 5.
## Getting distances of dfs 5 and 6.
## Getting distances of dfs 6 and 7.
## Getting distances of dfs 7 and 8.
## Getting distances of dfs 8 and 9.
## Getting distances of dfs 9 and 10.
## Getting distances of dfs 10 and 11.
## Getting distances of dfs 11 and 12.
## Getting distances of dfs 12 and 13.
## Getting distances of dfs 13 and 14.
## Getting distances of dfs 14 and 15.
## Getting distances of dfs 15 and 16.
## Getting distances of dfs 16 and 17.
## Getting distances of dfs 17 and 18.
## Getting distances of dfs 18 and 19.
## Getting distances of dfs 19 and 20.
## Getting distances of dfs 20 and 21.
## Getting distances of dfs 21 and 22.
## Getting distances of dfs 22 and 23.
## Getting distances of dfs 23 and 24.
## Getting distances of dfs 24 and 25.
## Getting distances of dfs 25 and 26.
## Getting distances of dfs 26 and 27.
## Getting distances of dfs 27 and 28.
## Getting distances of dfs 28 and 29.
## Getting distances of dfs 29 and 30.
## Getting distances of dfs 30 and 31.
## Getting distances of dfs 31 and 32.
## Getting distances of dfs 32 and 33.
## Getting distances of dfs 33 and 34.
## Getting distances of dfs 34 and 35.
## Getting distances of dfs 35 and 36.
## Getting distances of dfs 36 and 37.
## Getting distances of dfs 37 and 38.
## Getting distances of dfs 38 and 39.
## Getting distances of dfs 39 and 40.
## Getting distances of dfs 40 and 41.
## Getting distances of dfs 41 and 42.
## Getting distances of dfs 42 and 43.
## Getting distances of dfs 43 and 44.
## Getting distances of dfs 44 and 45.
## Getting distances of dfs 45 and 46.
## Getting distances of dfs 46 and 47.
## Getting distances of dfs 47 and 48.
## Getting distances of dfs 48 and 49.
## Getting distances of dfs 49 and 50.
## Getting distances of dfs 50 and 51.
## Getting distances of dfs 51 and 52.
## Getting distances of dfs 52 and 53.
## Getting distances of dfs 53 and 54.
## Getting distances of dfs 54 and 55.
## Getting distances of dfs 55 and 56.
## Getting distances of dfs 56 and 57.
## Getting distances of dfs 57 and 58.
## Getting distances of dfs 58 and 59.
## Getting distances of dfs 59 and 60.
## Getting distances of dfs 60 and 61.
## Getting distances of dfs 61 and 62.
## Getting distances of dfs 62 and 63.
## Getting distances of dfs 63 and 64.
## Getting distances of dfs 64 and 65.
## Getting distances of dfs 65 and 66.
## Getting distances of dfs 66 and 67.
## Getting distances of dfs 67 and 68.
## Getting distances of dfs 68 and 69.
## Getting distances of dfs 69 and 70.
## Getting distances of dfs 70 and 71.
## Getting distances of dfs 71 and 72.
## Getting distances of dfs 72 and 73.
## Getting distances of dfs 73 and 74.
## Getting distances of dfs 74 and 75.
## Getting distances of dfs 75 and 76.
## Getting distances of dfs 76 and 77.
## Getting distances of dfs 77 and 78.
## Getting distances of dfs 78 and 79.
## Getting distances of dfs 79 and 80.
## Getting distances of dfs 80 and 81.
## Getting distances of dfs 81 and 82.
## Getting distances of dfs 82 and 83.
## Getting distances of dfs 83 and 84.
## Getting distances of dfs 84 and 85.
## Getting distances of dfs 85 and 86.
## Getting distances of dfs 86 and 87.
## Getting distances of dfs 87 and 88.
## Getting distances of dfs 88 and 89.
## Getting distances of dfs 89 and 90.
## Getting distances of dfs 90 and 91.
## Getting distances of dfs 91 and 92.
## Getting distances of dfs 92 and 93.
## Getting distances of dfs 93 and 94.
## Getting distances of dfs 94 and 95.
## Getting distances of dfs 95 and 96.
## Getting distances of dfs 96 and 97.
## Getting distances of dfs 97 and 98.
## Getting distances of dfs 98 and 99.
## Getting distances of dfs 99 and 100.
## Getting distances of dfs 100 and 101.
## Getting distances of dfs 101 and 102.
## Getting distances of dfs 102 and 103.
## Getting distances of dfs 103 and 104.
## Getting distances of dfs 104 and 105.
## Getting distances of dfs 105 and 106.
## Getting distances of dfs 106 and 107.
## Getting distances of dfs 107 and 108.
## Getting distances of dfs 108 and 109.
## Getting distances of dfs 109 and 110.
## Getting distances of dfs 110 and 111.
## Getting distances of dfs 111 and 112.
## Getting distances of dfs 112 and 113.
## Getting distances of dfs 113 and 114.
## Getting distances of dfs 114 and 115.
## Getting distances of dfs 115 and 116.
## Getting distances of dfs 116 and 117.
## Getting distances of dfs 117 and 118.
## Getting distances of dfs 118 and 119.
## Getting distances of dfs 119 and 120.
## Skipped 33 elements in segment 0.
## Skipped 31 elements in segment 1.
## ('Skipped 1 elements in segment 1 ', 'because the size changed too much.')
## Skipped 27 elements in segment 2.
## Skipped 24 elements in segment 3.
## Skipped 25 elements in segment 4.
## Skipped 18 elements in segment 5.
## Skipped 24 elements in segment 6.
## Skipped 25 elements in segment 7.
## Skipped 26 elements in segment 8.
## ('Skipped 1 elements in segment 8 ', 'because the size changed too much.')
## Skipped 21 elements in segment 9.
## Skipped 23 elements in segment 10.
## Skipped 16 elements in segment 11.
## Skipped 20 elements in segment 12.
## Skipped 20 elements in segment 13.
## ('Skipped 1 elements in segment 13 ', 'because the size changed too much.')
## Skipped 20 elements in segment 14.
## ('Skipped 1 elements in segment 14 ', 'because the size changed too much.')
## Skipped 18 elements in segment 15.
## Skipped 18 elements in segment 16.
## Skipped 22 elements in segment 17.
## Skipped 14 elements in segment 18.
## Skipped 22 elements in segment 19.
## Skipped 20 elements in segment 20.
## Skipped 27 elements in segment 21.
## Skipped 20 elements in segment 22.
## Skipped 17 elements in segment 23.
## ('Skipped 1 elements in segment 23 ', 'because the size changed too much.')
## Skipped 17 elements in segment 24.
## Skipped 14 elements in segment 25.
## Skipped 16 elements in segment 26.
## Skipped 14 elements in segment 27.
## Skipped 16 elements in segment 28.
## ('Skipped 1 elements in segment 28 ', 'because the size changed too much.')
## Skipped 15 elements in segment 29.
## Skipped 23 elements in segment 30.
## Skipped 17 elements in segment 31.
## Skipped 19 elements in segment 32.
## Skipped 16 elements in segment 33.
## Skipped 15 elements in segment 34.
## Skipped 12 elements in segment 35.
## Skipped 19 elements in segment 36.
## Skipped 14 elements in segment 37.
## ('Skipped 1 elements in segment 37 ', 'because the size changed too much.')
## Skipped 16 elements in segment 38.
## ('Skipped 1 elements in segment 38 ', 'because the size changed too much.')
## Skipped 17 elements in segment 39.
## Skipped 16 elements in segment 40.
## Skipped 15 elements in segment 41.
## ('Skipped 2 elements in segment 41 ', 'because the size changed too much.')
## Skipped 10 elements in segment 42.
## Skipped 15 elements in segment 43.
## Skipped 11 elements in segment 44.
## Skipped 13 elements in segment 45.
## Skipped 8 elements in segment 46.
## Skipped 13 elements in segment 47.
## Skipped 12 elements in segment 48.
## Skipped 16 elements in segment 49.
## Skipped 13 elements in segment 50.
## Skipped 14 elements in segment 51.
## Skipped 15 elements in segment 52.
## Skipped 13 elements in segment 53.
## Skipped 13 elements in segment 54.
## Skipped 15 elements in segment 55.
## Skipped 18 elements in segment 56.
## Skipped 15 elements in segment 57.
## Skipped 10 elements in segment 58.
## ('Skipped 1 elements in segment 58 ', 'because the size changed too much.')
## Skipped 13 elements in segment 59.
## Skipped 11 elements in segment 60.
## Skipped 11 elements in segment 61.
## ('Skipped 1 elements in segment 61 ', 'because the size changed too much.')
## Skipped 11 elements in segment 62.
## ('Skipped 2 elements in segment 62 ', 'because the size changed too much.')
## Skipped 10 elements in segment 63.
## Skipped 11 elements in segment 64.
## Skipped 14 elements in segment 65.
## Skipped 17 elements in segment 66.
## Skipped 15 elements in segment 67.
## Skipped 17 elements in segment 68.
## Skipped 19 elements in segment 69.
## Skipped 14 elements in segment 70.
## Skipped 15 elements in segment 71.
## ('Skipped 1 elements in segment 71 ', 'because the size changed too much.')
## Skipped 13 elements in segment 72.
## Skipped 10 elements in segment 73.
## Skipped 13 elements in segment 74.
## Skipped 13 elements in segment 75.
## Skipped 16 elements in segment 76.
## ('Skipped 1 elements in segment 76 ', 'because the size changed too much.')
## Skipped 13 elements in segment 77.
## Skipped 15 elements in segment 78.
## Skipped 12 elements in segment 79.
## Skipped 11 elements in segment 80.
## Skipped 11 elements in segment 81.
## Skipped 13 elements in segment 82.
## Skipped 11 elements in segment 83.
## ('Skipped 1 elements in segment 83 ', 'because the size changed too much.')
## Skipped 12 elements in segment 84.
## Skipped 13 elements in segment 85.
## Skipped 13 elements in segment 86.
## ('Skipped 1 elements in segment 86 ', 'because the size changed too much.')
## Skipped 10 elements in segment 87.
## Skipped 11 elements in segment 88.
## Skipped 15 elements in segment 89.
## Skipped 13 elements in segment 90.
## Skipped 11 elements in segment 91.
## Skipped 10 elements in segment 92.
## ('Skipped 1 elements in segment 92 ', 'because the size changed too much.')
## Skipped 15 elements in segment 93.
## Skipped 10 elements in segment 94.
## Skipped 12 elements in segment 95.
## Skipped 9 elements in segment 96.
## Skipped 14 elements in segment 97.
## Skipped 11 elements in segment 98.
## ('Skipped 1 elements in segment 98 ', 'because the size changed too much.')
## Skipped 13 elements in segment 99.
## Skipped 14 elements in segment 100.
## Skipped 14 elements in segment 101.
## Skipped 12 elements in segment 102.
## ('Skipped 1 elements in segment 102 ', 'because the size changed too much.')
## Skipped 8 elements in segment 103.
## ('Skipped 1 elements in segment 103 ', 'because the size changed too much.')
## Skipped 11 elements in segment 104.
## Skipped 11 elements in segment 105.
## Skipped 8 elements in segment 106.
## Skipped 11 elements in segment 107.
## Skipped 9 elements in segment 108.
## ('Skipped 1 elements in segment 108 ', 'because the size changed too much.')
## Skipped 8 elements in segment 109.
## ('Skipped 1 elements in segment 109 ', 'because the size changed too much.')
## Skipped 11 elements in segment 110.
## Skipped 8 elements in segment 111.
## Skipped 10 elements in segment 112.
## Skipped 11 elements in segment 113.
## Skipped 11 elements in segment 114.
## Skipped 9 elements in segment 115.
## ('Skipped 1 elements in segment 115 ', 'because the size changed too much.')
## Skipped 14 elements in segment 116.
## Skipped 10 elements in segment 117.
## Skipped 11 elements in segment 118.

13.1 Get information from a group of cells

As a final step, we should be able to extract and play with the information from one or more groups of cells.

cell_id = 101
cell_idx = nearest[cell_id]
cell_data = concatenated.loc[cell_idx]
len(cell_data)
## 98
cell_data = cell_data.reset_index()

scatter = plt.scatter(cell_data['X'], cell_data['Y'])
final_row = cell_data.index.max()
for start_time in range(0, final_row - 1):
    ti_idx = cell_data.index == start_time
    tj_idx = cell_data.index == start_time + 1
    p1x = cell_data[ti_idx].X
    p2x = cell_data[tj_idx].X
    p1y = cell_data[ti_idx].Y
    p2y = cell_data[tj_idx].Y
    x_points = [p1x, p2x]
    y_points = [p1y, p2y]
    plt.plot(x_points, y_points)
finalm1_idx = cell_data.index == final_row - 1
final_idx = cell_data.index == final_row
finalm1_x = cell_data[finalm1_idx].X
final_x = cell_data[final_idx].X
finalm1_y = cell_data[finalm1_idx].Y
final_y = cell_data[final_idx].Y
x_points = [finalm1_x, final_x]
y_points = [finalm1_y, final_y]
plt.plot(x_points, y_points)
plt.show()

seaborn.violinplot(data = cell_data.Area)
plt.show()

pander::pander(sessionInfo())

R version 4.2.0 (2022-04-22)

Platform: x86_64-pc-linux-gnu (64-bit)

locale: LC_CTYPE=en_US.UTF-8, LC_NUMERIC=C, LC_TIME=en_US.UTF-8, LC_COLLATE=en_US.UTF-8, LC_MONETARY=en_US.UTF-8, LC_MESSAGES=en_US.UTF-8, LC_PAPER=en_US.UTF-8, LC_NAME=en_US.UTF-8, LC_ADDRESS=en_US.UTF-8, LC_TELEPHONE=en_US.UTF-8, LC_MEASUREMENT=en_US.UTF-8 and LC_IDENTIFICATION=en_US.UTF-8

attached base packages: stats, graphics, grDevices, utils, datasets, methods and base

other attached packages: reticulate(v.1.28), spatstat.geom(v.3.2-1) and spatstat.data(v.3.0-1)

loaded via a namespace (and not attached): bitops(v.1.0-7), matrixStats(v.0.63.0), bit64(v.4.0.5), httr(v.1.4.6), rprojroot(v.2.0.3), GenomeInfoDb(v.1.34.9), tools(v.4.2.0), bslib(v.0.4.2), utf8(v.1.2.3), R6(v.2.5.1), DBI(v.1.1.3), lazyeval(v.0.2.2), BiocGenerics(v.0.44.0), colorspace(v.2.1-0), withr(v.2.5.0), tidyselect(v.1.2.0), bit(v.4.0.5), compiler(v.4.2.0), graph(v.1.76.0), cli(v.3.6.1), Biobase(v.2.58.0), DelayedArray(v.0.24.0), plotly(v.4.10.1), sass(v.0.4.6), scales(v.1.2.1), rappdirs(v.0.3.3), digest(v.0.6.31), spatstat.utils(v.3.0-3), rmarkdown(v.2.21), XVector(v.0.38.0), pkgconfig(v.2.0.3), htmltools(v.0.5.5), MatrixGenerics(v.1.10.0), fastmap(v.1.1.1), highr(v.0.10), htmlwidgets(v.1.6.2), rlang(v.1.1.1), RSQLite(v.2.3.1), shiny(v.1.7.4), jquerylib(v.0.1.4), generics(v.0.1.3), jsonlite(v.1.8.4), dplyr(v.1.1.2), RCurl(v.1.98-1.12), magrittr(v.2.0.3), GenomeInfoDbData(v.1.2.9), Matrix(v.1.5-4), Rcpp(v.1.0.10), munsell(v.0.5.0), S4Vectors(v.0.36.2), fansi(v.1.0.4), lifecycle(v.1.0.3), yaml(v.2.3.7), SummarizedExperiment(v.1.28.0), zlibbioc(v.1.44.0), grid(v.4.2.0), blob(v.1.2.4), promises(v.1.2.0.1), crayon(v.1.5.2), deldir(v.1.0-6), lattice(v.0.21-8), Biostrings(v.2.66.0), annotate(v.1.76.0), pander(v.0.6.5), KEGGREST(v.1.38.0), knitr(v.1.42), pillar(v.1.9.0), GenomicRanges(v.1.50.2), codetools(v.0.2-19), stats4(v.4.2.0), XML(v.3.99-0.14), glue(v.1.6.2), evaluate(v.0.21), hpgltools(v.1.0), data.table(v.1.14.8), png(v.0.1-8), vctrs(v.0.6.2), httpuv(v.1.6.10), foreach(v.1.5.2), gtable(v.0.3.3), purrr(v.1.0.1), polyclip(v.1.10-4), tidyr(v.1.3.0), cachem(v.1.0.8), ggplot2(v.3.4.2), xfun(v.0.39), mime(v.0.12), xtable(v.1.8-4), later(v.1.3.1), viridisLite(v.0.4.2), tibble(v.3.2.1), iterators(v.1.0.14), AnnotationDbi(v.1.60.2), memoise(v.2.0.1), IRanges(v.2.32.0), ellipsis(v.0.3.2), GSEABase(v.1.60.0) and here(v.1.0.1)

message(paste0("This is hpgltools commit: ", get_git_commit()))
## Error in get_git_commit(): could not find function "get_git_commit"
LS0tCnRpdGxlOiAiU3BsaXR0aW5nIGEgbGFyZ2UgZGF0YXNldCwgcnVubmluZyBjZWxscG9zZSwgYW5kIG1lYXN1cmluZyB0aGUgcmVzdWx0cyB1c2luZyBmaWppIHRyYWNrZXIuIgphdXRob3I6ICJhdGIgYWJlbGV3QGdtYWlsLmNvbSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgZmlnX2NhcHRpb246IHRydWUKICAgIGZpZ19oZWlnaHQ6IDcKICAgIGZpZ193aWR0aDogNwogICAgaGlnaGxpZ2h0OiB6ZW5idXJuCiAgICBrZWVwX21kOiBmYWxzZQogICAgbW9kZTogc2VsZmNvbnRhaW5lZAogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQogICAgdGhlbWU6IHJlYWRhYmxlCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBmYWxzZQogICAgICBzbW9vdGhfc2Nyb2xsOiBmYWxzZQotLS0KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHksIHRkIHsKICBmb250LXNpemU6IDE2cHg7Cn0KY29kZS5yewogIGZvbnQtc2l6ZTogMTZweDsKfQpwcmUgewogZm9udC1zaXplOiAxNnB4Cn0KPC9zdHlsZT4KCmBgYHtyIG9wdGlvbnMsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2tuaXQkc2V0KAogIHdpZHRoID0gMTIwLCBwcm9ncmVzcyA9IFRSVUUsIHZlcmJvc2UgPSBUUlVFLCBlY2hvID0gVFJVRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVycm9yID0gVFJVRSwgZHBpID0gOTYpCmx1YV9maWx0ZXJzIDwtIHJtYXJrZG93bjo6cGFuZG9jX2x1YV9maWx0ZXJfYXJncygicGFuZG9jLXpvdHh0Lmx1YSIpCm9sZF9vcHRpb25zIDwtIG9wdGlvbnMoCiAgZGlnaXRzID0gNCwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFLCBrbml0ci5kdXBsaWNhdGUubGFiZWwgPSAiYWxsb3ciKQpnZ3Bsb3QyOjp0aGVtZV9zZXQoZ2dwbG90Mjo6dGhlbWVfYncoYmFzZV9zaXplID0gMTApKQpydW5kYXRlIDwtIGZvcm1hdChTeXMuRGF0ZSgpLCBmb3JtYXQgPSAiJVklbSVkIikKcHJldmlvdXNfZmlsZSA8LSAiIgp2ZXIgPC0gZm9ybWF0KFN5cy5EYXRlKCksICIlWSVtJWQiKQoKIyN0bXAgPC0gc20obG9hZG1lKGZpbGVuYW1lPXBhc3RlMChnc3ViKHBhdHRlcm49IlxcLlJtZCIsIHJlcGxhY2U9IiIsIHg9cHJldmlvdXNfZmlsZSksICItdiIsIHZlciwgIi5yZGEueHoiKSkpCnJtZF9maWxlIDwtICJpbmRleF9mdW5jdGlvbnNfYmlnLlJtZCIKbGlicmFyeShzcGF0c3RhdC5nZW9tKQpsaWJyYXJ5KHJldGljdWxhdGUpCmBgYAoKIyBDaGFuZ2Vsb2cKCiogMjAyMzA1MDg6IFRyeWluZyB0aGlzIG91dCB3aXRoIGEgbGFyZ2VyIGRhdGFzZXQsIGV4cGxpY2l0bHkgc2V0IHdhbnRlZF96IGFuZCB3YW50ZWRfY2hhbm5lbCBmb3IgaXQuCiogMjAyMzAzMjg6IFJlaW1wbGVtZW50ZWQgc3RlcHMgYXMgZnVuY3Rpb25zLCBjb25uZWN0ZWQgdGhlbSBpbiBvbmUgc2V0IG9mIGNhbGxzLgoqIDIwMjMwMzE3OiBJbml0aWFsIGNlbGxwb3NlIGltcGxlbWVudGF0aW9uLgoqIDIwMjMwMzE1OiBTZXBhcmF0aW9uIG9mIGlucHV0IGltYWdlIGludG8gdGltZXBvaW50cy4KKiAyMDIzMDMxMDogVXNlZCBnZW9wYW5kYXMgdG8gdHJhY2UgY2VsbHMgb3ZlciB0aW1lIGJ5IHBvc2l0aW9uLgoqIDIwMjMwMzA3OiBTZXR0aW5nIHVwIG15IGVudmlyb25tZW50IHRvIGhhbmRsZSBpcHluYiBhbmQgcHl0aG9uIG1hcmtkb3duLgoKIyBJbnRyb2R1Y3Rpb24KCkphY3F1ZXMgaXMgc2Vla2luZyB0byBzZWdtZW50IGFuZCBmb2xsb3cgY2VsbHMgb3ZlciB0aW1lLgoKU3RlcHMgcGVyZm9ybWVkIHNvIGZhcjoKCjEuICBQeXRob24vdmVudiBpbnN0YWxsYXRpb24gb2YgZmlqaQoyLiAgRmlndXJlZCBvdXQgc29tZSBlYXN5IGludGVyYWN0aW9ucyBiZXR3ZWVuIHB5dGhvbiBhbmQgYWN0dWFsIGltYWdlIGRhdGEuCjMuICBJbXBsZW1lbnRlZCBhIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIG1pbmltdW0gZGlzdGFuY2VzIGJldHdlZW4KICAgIHB1dGF0aXZlIGNlbGxzIHVzaW5nIHRoZSBleHRhbnQgbWV0aG9kcy4KCiMgTmV4dCBzdGVwcwoKMS4gIE5vdGUgdGhhdCB0aGUgY3ppIGltYWdlcyBhcmUgaW1tZWRpYXRlbHkgb3BlbmFibGUgdmlhIGZpamkncyBiaW9mb3JtYXQgaW50ZXJmYWNlLgoyLiAgTG9hZCBkYXRhc2V0IHZpYSBmaWppCjMuICBJbnZva2UgY2VsbHBvc2UgdmlhIHRoZSBweXRob24gaW50ZXJmYWNlIChzYW1lIGFzIHB5aW1hZ2VqKQo0LiAgU2F2ZSBST0lzIHByb2R1Y2VkIGJ5IGNlbGxwb3NlLCBzYXZlIHRoZW0gdG8gemlwIG91dHB1dCBmaWxlCiAgYS4gIFRoZSByb2kgaW50ZXJmYWNlIGluIGZpamkgY2FuIGFkZHJlc3MgdGhlc2UKNS4gIEN1cnJlbnRseSBhIG1hY3JvIGlzIGludm9rZWQgd2hpY2ggcGVyZm9ybXMgYSBzZXQgb2YgbWVhc3VyZW1lbnRzCiAgICBvbiBldmVyeSBST0kgYW5kIHNhdmVzIHRoZW0gdG8gYSBjc3YuICBUaGlzIGNyZWF0ZXMgdGhlIHByaW1hcnkKICAgIGRhdGEgc3RydWN0dXJlIHVzZWQgZm9yIGFsbCBmb2xsb3dpbmcgcHJvY2Vzc2VzLgo2LiAgTmVlZCB0byBjcmVhdGUgYSBkYXRhc3RydWN0dXJlIHdoaWNoIGlkZW50aWZpZXMgZWFjaCBpbmRpdmlkdWFsCiAgICBjZWxsIG92ZXIgdGltZSBnaXZlbiB0aGVzZSBST0lzIHdoaWNoIHgveS90aW1lKGZyYW1lKSBhbG9uZyB3aXRoCiAgICB0aGUgbWVhc3VyZW1lbnRzIG9mIGludGVyZXN0IChhcmVhL21lYW4vc3RkZXYvaW50ZW5zaXRpZXMgYnkKICAgIGNvbG9yKS4KICAgIGEuICBTbWFsbCBwb3N0cHJvY2Vzc2luZyBkZXRhaWxzOiB0aGUgaW50ZW5zaXR5IHZhbHVlcyBwcm9kdWNlZAogICAgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNlbGwgYXJlYS4KCiMgRGVtb25zdHJhdGUgdGhlIGZpcnN0IGNvdXBsZSBvZiBzdGVwcyB1c2luZyBhbiBhY3R1YWwgZGF0YXNldAoKSmFjcXVlcyBzZW50IG1lIGFuIGltYWdlIGFjcXVpcmVkIGZyb20gdGhlIG1pY3Jvc2NvcGUgYW5kIEkgc2F2ZWQgaXQKYXMgJ3Rlc3RfZGF0YS9yYXcudGlmJywgaGUgYWxzbyBzZW50IG1lIGEgY2VsbHBvc2UgbW9kZWwgd2hpY2ggSSBzYXZlZAp0byB0aGUgJ21vZGVscy8nIGRpcmVjdG9yeS4KCkdpdmVuIHRoZXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGxldCB1cyB0cnkgdG8gb3BlbiB0aGUgaW1hZ2Ugd2l0aCBhCmZpamkgaW5zdGFuY2UgYW5kIHNwbGl0IGl0IGludG8gYSBzZXJpZXMgb2Ygc21hbGxlciBmaWxlcyBieQp0aW1lcG9pbnQuCgojIEltcGxlbWVudGF0aW9uIG5vdGVzCgpJIGhhdmUgYmVlbiBwcmltYXJpbHkgdXNpbmcgdGhpcyBhcyBhIHdheSB0byByZWZyZXNoIG15IGJyYWluIG9uCnB5dGhvbiBhbmQgZ2V0IGN1cnJlbnQgb24gYmVzdCBwcmFjdGljZXMuICBUaHVzLCB0aGVyZSBhcmUgZGVjaXNpb25zIEkKbWFkZSBpbiB0aGlzIHdvcmtib29rIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIGluIGFueSBvdGhlciBjb250ZXh0OgplLmcuIHdoeSB3b3VsZCBhbnlvbmUgaGF2ZSB0aGUgcHJpbWFyeSBkYXRhIHN0cnVjdHVyZSBiZSBhIGRpY3Rpb25hcnkKa2V5ZWQgYnkgZmlsZW5hbWUsIHRoYXQgaXMgZHVtYj8gIEkgY2hvc2UgdG8gZG8gdGhhdCB0byByZWZyZXNoIG15c2VsZgpvbiBwbGF5aW5nIHdpdGggZGljdGlvbmFyaWVzLiAgQnkgdGhlIHNhbWUgdG9rZW4sIHdoeSB3b3VsZCBhbnlvbmUKbWFrZSBhIGRpY3Rpb25hcnkgb2YgZGF0YWZyYW1lcyBvbmx5IHRvIHR1cm4gYXJvdW5kIGFuZCBjb25jYXRlbmF0ZQp0aGVtIGZvciB1c2FnZSBpbiBnZW9wYW5kYXMsIHRoYXQgaXMgY3Jhenk/ICBJIGRpZCB0aGlzIHRvIGdldCBtb3JlCmNvbWZvcnRhYmxlIHdpdGggcGFuZGFzIGFuZCBnZXQgb3V0IHNvbWUgb2YgbXkgUmlzaCBtdXNjbGUgbWVtb3J5LgoKV2l0aCB0aGF0IGluIG1pbmQsIGlmIHdlIGNob29zZSB0byBtYWtlIHRoaXMgYSBwYWNrYWdlLCB0aGUgZmlyc3QKdGhpbmcgdGhhdCB3aWxsIG5lZWQgdG8gaGFwcGVuIGlzIHRvIHJld29yayB0aGUgYmFzZSBkYXRhc3RydWN0dXJlLiAgSQpqdXN0IHdhbnQgYW55b25lIHdobyBhY3R1YWxseSByZWFkcyB0aGlzIGNvZGUgdG8ga25vdyB0aGF0IHllcywgSSBhbSBhCm51dHRlciwgYnV0IGEgbnV0dGVyIGZvciBhIHJlYXNvbi4KCiMgTG9hZCBuZWNlc3NhcnkgcHl0aG9uIG1vZHVsZXMKCkkgYW0gaG9waW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGxvYWQgbXkgcGFja2FnZSBhbmQgaGF2ZSBpdCBoYW5kbGUgYWxsIHRoZSBpbml0aWFsaXphdGlvbi4KSXQgaXMgbm90IGNsZWFyIHlldCB0byBtZSBpZiBJIGNhbiBpbXBvcnQgZmlqaV90cmFja2VyIGFuZCBnZXQgYWNjZXNzIHRvIHRoZSB2YXJpb3VzIGltcG9ydHMgaXQKcGVyZm9ybXMuICBJIGFtIHJlYXNvbmFibHkgY2VydGFpbiB0aGlzIGlzIHBvc3NpYmxlLCBidXQgdGhhdCBJIGhhdmUgbm90IGZpZ3VyZWQKb3V0IHRoZSBjb3JyZWN0IHN5bnRheC4KCmBgYHtweXRob24gbG9hZH0KZnJvbSBmaWppX3RyYWNrZXIuZmlqaV90cmFja2VyLnRyYWNrZXIgaW1wb3J0ICoKCmZyb20gY2VsbHBvc2UgaW1wb3J0IG1vZGVscywgaW8KZnJvbSBjZWxscG9zZS5pbyBpbXBvcnQgKgpmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAppbXBvcnQgZ2VvcGFuZGFzCmltcG9ydCBnbG9iCmltcG9ydCBpbWFnZWoKZnJvbSBqcHlwZSBpbXBvcnQgSkFycmF5LCBKSW50CmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKaW1wb3J0IG11bHRpcHJvY2Vzc2luZyBhcyBtcAppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IG9zCmltcG9ydCBwYW5kYXMKZnJvbSBwYW5kYXMgaW1wb3J0IERhdGFGcmFtZQpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKaW1wb3J0IHNjeWphdmEKaW1wb3J0IHNlYWJvcm4KaW1wb3J0IHNodXRpbAoKc3RhcnRfZGlyID0gb3MuZ2V0Y3dkKCkKbWVtID0gJy1YbXg2NGcnCmxvY2F0aW9uID0gJ3ZlbnYvYmluL0ZpamkuYXBwJwptb2RlID0gJ2ludGVyYWN0aXZlJwoKc2N5amF2YS5jb25maWcuYWRkX29wdGlvbihtZW0pCnByaW50KGYiV2hlcmUgYW0gSToge3N0YXJ0X2Rpcn0iKQppaiA9IGltYWdlai5pbml0KFBhdGgobG9jYXRpb24pLCBtb2RlPW1vZGUpCmlqLmdldEFwcCgpLmdldEluZm8oVHJ1ZSkKaWoudWkoKS5zaG93VUkoKQojIyBTb21ldGhpbmcgYWJvdXQgdGhpcyBpbml0KCkgZnVuY3Rpb24gY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4Kb3MuY2hkaXIoc3RhcnRfZGlyKQppai5nZXRWZXJzaW9uKCkKc2hvd1BvbHlnb25Sb2kgPSBzY3lqYXZhLmppbXBvcnQoJ2lqLmd1aS5Qb2x5Z29uUm9pJykKT3ZlcmxheSA9IHNjeWphdmEuamltcG9ydCgnaWouZ3VpLk92ZXJsYXknKQpSZWdpb25zID0gc2N5amF2YS5qaW1wb3J0KCduZXQuaW1nbGliMi5yb2kuUmVnaW9ucycpCkxhYmVsUmVnaW9ucyA9IHNjeWphdmEuamltcG9ydCgnbmV0LmltZ2xpYjIucm9pLmxhYmVsaW5nLkxhYmVsUmVnaW9ucycpClpQcm9qZWN0b3IgPSBzY3lqYXZhLmppbXBvcnQoJ2lqLnBsdWdpbi5aUHJvamVjdG9yJykoKQpvdiA9IE92ZXJsYXkoKQpgYGAKCiMgU2V0IHVwIHNvbWUgaW5pdGlhbCB2YXJpYWJsZXMKCmBgYHtweXRob24gcGFyYW1ldGVyc30KYmFzZV9kaXIgPSBQYXRoKCcvbGFiL3NjcmF0Y2gvYXRiL2ltYWdpbmcvbXRiXzIwMjMnKS5hc19wb3NpeCgpCm9zLmNoZGlyKGJhc2VfZGlyKQppbnB1dF9maWxlID0gUGF0aChmIntiYXNlX2Rpcn0vdGVzdF9kYXRhL0V4cGVyaW1lbnQtMTU2OC5jemkiKS5hc19wb3NpeCgpCnBhbmRhcy5zZXRfb3B0aW9uKCdkaXNwbGF5Lm1heF9jb2x1bW5zJywgTm9uZSkKdmVyYm9zZSA9IFRydWUKYGBgCgojIFNlcGFyYXRlIHNsaWNlcwoKTm90ZSB0byBzZWxmLCBKYWNxdWVzJyBuZXcgZGF0YXNldCB1c2VzIHdhbnRlZF96ID09IDIsIHdhbnRlZF9jaGFubmVsID09IDMuCgpgYGB7cHl0aG9uIHJ1bl9zZXBhcmF0ZV9zbGljZXN9CnJhd19kYXRhc2V0LCBzYXZlZF9zbGljZXMsIG91dHB1dF9kaXJlY3RvcnkgPSBzZXBhcmF0ZV9zbGljZXMoaW5wdXRfZmlsZSwgaWosIHdhbnRlZF96ID0gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50ZWRfY2hhbm5lbCA9IDMpCmBgYAoKIyBJbnZva2UgY2VsbHBvc2UKCmBgYHtweXRob24gcnVuX2ludm9rZV9jZWxscG9zZX0Kb3V0cHV0X2ZpbGVzID0gaW52b2tlX2NlbGxwb3NlKG91dHB1dF9kaXJlY3RvcnksICdtb2RlbHMvQ1BfMjAyMjA1MjNfMTA0MDE2JykKCm1vdmVfY2VsbHBvc2Vfb3V0cHV0KG91dHB1dF9maWxlcykKYGBgCgojIENvbGxhcHNlIFoKCk9uZSBwb3NzaWJsZSBjaGFuZ2UgaXMgdG8gcGVyZm9ybSBtZWFzdXJlbWVudHMgb24gdGhlIHN1bSBvZiBaLXN0YWNrcwppbnN0ZWFkIG9mIGEgc2luZ2xlIHNsaWNlLiAgVGh1cyB3ZSB3b3VsZCBzdW0gdGhlIGNlbGxzLCBjcmVhdGUgdGhlClJPSXMgdXNpbmcgdGhlIHNpbmdsZSBzbGljZSBncmF5c2NhbGUgaW1hZ2UsIHRoZW4gbWVhc3VyZSB0aGUgc2V0IG9mCmFsbCBjb21iaW5lZC4KCmBgYHtweXRob24gcnVuX2NvbGxhcHNlX3p9Cm91dHB1dF9maWxlcyA9IGNvbGxhcHNlX3oocmF3X2RhdGFzZXQsIG91dHB1dF9maWxlcykKYGBgCgojIENyZWF0ZSBSZWdpb25zIG9mIGludGVyZXN0IGZyb20gY2VsbHBvc2Ugb3V0cHV0cwoKSW4gSmFjcXVlcyBub3RlYm9vaywgaXQgbG9va3MgbGlrZSBoZSBvbmx5IGV4dHJhY3RzIFJPSXMgZnJvbSBvbmUgb2YKdGhlIGNlbGxwb3NlIHNsaWNlcy4gIEkgYW0gYXNzdW1pbmcgdGhlIGdvYWwgaXMgdG8gZXh0ZW5kIHRoaXMgYWNyb3NzCmFsbCBpbWFnZXM/CgpUaGVyZSBpcyBhbiBpbXBvcnRhbnQgY2F2ZWF0IHRoYXQgSSBtaXNzZWQ6IGltYWdlaiBjb21lcyB3aXRoIGEKcHl0aG9uMi1iYXNlZCBzY3JpcHRpbmcgbGFuZ3VhZ2UgZnJvbSB3aGljaCBpdCBhcHBlYXJzIHNvbWUgb2YgaGlzCmNvZGUgaXMgY29taW5nLiAgQXMgYSByZXN1bHQgSSBzaG91bGQgbG9vayBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIGl0LAphbmQgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXhhbXBsZXMgcHJvdmlkZWQgaGVyZSBmb3IgdGhlIG1vc3QKYXBwcm9wcmlhdGUgd2F5cyBvZiBpbnRlcmFjdGluZyB3aXRoIHRoZSBST0kgbWFuYWdlciBldGM6CgpodHRwczovL2dpdGh1Yi5jb20vaW1hZ2VqL3B5aW1hZ2VqL2Jsb2IvbWFpbi9kb2MvZXhhbXBsZXMvYmxvYl9kZXRlY3Rpb25faW50ZXJhY3RpdmUucHkKCmBgYHtweXRob24gaW52b2tlX3NsaWNlX3RvX3JvaX0Kc2xpY2VfbWVhc3VyZW1lbnRzID0gc2xpY2VzX3RvX3JvaV9tZWFzdXJlbWVudHMob3V0cHV0X2ZpbGVzLCBpaiwgY29sbGFwc2VkID0gVHJ1ZSkKYGBgCgojIyBTZXBhcmF0ZSB0aGUgbG9naWMgb2YgdGhlIGFib3ZlIGZ1bmN0aW9uCgpzbGljZXNfdG9fcm9pX21lYXN1cmVtZW50cygpIGRvZXMgYSBmZXcgdGhpbmdzIGluIG9uZSBmb3IgbG9vcDoKCjEuICBJdCBjcmVhdGVzIHBvbHlnb25zIGZyb20gdGhlIGNlbGxwb3NlIG91dHB1dHMuCjIuICBJdCBhZGRzIHRoZW0gdG8gdGhlIFJPSSBtYW5hZ2VyCjMuICBJdCBwZXJmb3JtcyBhIG1lYXN1cmVtZW50IG9mIHRoZW0uCgpUaGVyZSBhcmUgb3RoZXIgdGFza3Mgd2hpY2ggSmFjcXVlcyB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gb24gdGhlIHZhcmlvdXMgY2VsbHBvc2UgcG9seWdvbnMsIHRodXMKd2UgcmVhbGx5IG5lZWQgdG8gc2VwYXJhdGUgdGhlIGZ1bmN0aW9ucyB3aGljaCBjcmVhdGUgYW5kIHNhdmUgdGhlIFJPSXMgZnJvbSB0aG9zZQp3aGljaCBtZWFzdXJlIHRoZW0uCgpJbiBhZGRpdGlvbiwgSSB0aGluayB3ZSByZWFsbHkgd2FudCB0byBoYXZlIHRoZSByYXcgZGF0YSBvcGVuIGFuZCBhZGQgdGhlIFJPSXMgdG8gaXQuCgpgYGB7ciByb2lfdXBkYXRlciwgZXZhbD1GQUxTRX0KdXBkYXRlZCA9IGNyZWF0ZV9jZWxscG9zZV9yb2lzKG91dHB1dF9maWxlcywgcmF3LCBjb2xsYXBzZWQgPSBUcnVlKQpgYGAKCiMgQ29udmVydCB0aGUgc2xpY2UgbWVhc3VyZW1lbnRzIHRvIHBhbmRhcyBkZgoKc2xpY2VzX3RvX3JvaV9tZWFzdXJlbWVudHMoKSByZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIGtleXMgd2hpY2ggYXJlCnRoZSBmaWxlbmFtZXMgb2YgZWFjaCByYXcgdGlmIGZpbGUuICBFYWNoIGVsZW1lbnQgb2YgdGhhdCBkaWN0aW9uYXJ5CmlzIGluIHR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlsZXMKYWxvbmcgd2l0aCBhIGRmIG9mIHRoZSBtZWFzdXJlbWVudHMgcHJvdmlkZWQgYnkgaW1hZ2VqLgoKTXkgbGl0dGxlIGdlb3BhbmRhcyBmdW5jdGlvbiBhc3N1bWVzIGEgc2luZ2xlIGxvbmcgZGYgd2l0aCBzb21lCmNvbHVtbnMgd2hpY2ggdGVsbCBpdCB3aGljaCB0aW1lcG9pbnQuICBTbyBsZXRzIG1ha2UgYSBxdWljayBmdW5jdGlvbgp0byBnaXZlIHRoYXQgaGVyZS4gIE9UT0ggaXQgbWF5IGJlIHdpc2VyL2JldHRlciB0byBtYWtlIHNvbWUgY2hhbmdlcwp0byBzbGljZXNfdG9fcm9pX21lYXN1cmVtZW50cygpIHNvIHRoYXQgaXQgcmV0dXJucyB0aGF0IGZvcm1hdCBkZjsgYnV0CnNpbmNlIEkgYW0gdXNpbmcgdGhpcyBhcyBhIGxlYXJuaW5nIGV4cGVyaWVuY2UgdG8gZ2V0IG1vcmUgY29tZm9ydGFibGUKd2l0aCBweXRob24gZGF0YSBzdHJ1Y3R1cmVzLCBJIHdpbGwgbm90IGRvIGl0IHRoYXQgd2F5LgoKYGBge3B5dGhvbiBpbnZva2VfY29udmVydF9wYW5kYXN9CmNvbmNhdGVuYXRlZCA9IGNvbnZlcnRfc2xpY2VzX3RvX3BhbmRhcyhzbGljZV9tZWFzdXJlbWVudHMpCmBgYAoKIyBGaW5kIG5lYXJlc3QKCmBgYHtweXRob24gaW52b2tlX25lYXJlc3RfY2VsbHN9Cm5lYXJlc3QgPSBuZWFyZXN0X2NlbGxzX292ZXJfdGltZShjb25jYXRlbmF0ZWQsIG1heF9kaXN0ID0gMTAuMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhfY29sdW1uID0gJ1gnLCB5X2NvbHVtbiA9ICdZJykKYGBgCgojIyBHZXQgaW5mb3JtYXRpb24gZnJvbSBhIGdyb3VwIG9mIGNlbGxzCgpBcyBhIGZpbmFsIHN0ZXAsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGV4dHJhY3QgYW5kIHBsYXkgd2l0aCB0aGUKaW5mb3JtYXRpb24gZnJvbSBvbmUgb3IgbW9yZSBncm91cHMgb2YgY2VsbHMuCgpgYGB7cHl0aG9uIGdldF9pbmZvfQpjZWxsX2lkID0gMTAxCmNlbGxfaWR4ID0gbmVhcmVzdFtjZWxsX2lkXQpjZWxsX2RhdGEgPSBjb25jYXRlbmF0ZWQubG9jW2NlbGxfaWR4XQpsZW4oY2VsbF9kYXRhKQpjZWxsX2RhdGEgPSBjZWxsX2RhdGEucmVzZXRfaW5kZXgoKQoKc2NhdHRlciA9IHBsdC5zY2F0dGVyKGNlbGxfZGF0YVsnWCddLCBjZWxsX2RhdGFbJ1knXSkKZmluYWxfcm93ID0gY2VsbF9kYXRhLmluZGV4Lm1heCgpCmZvciBzdGFydF90aW1lIGluIHJhbmdlKDAsIGZpbmFsX3JvdyAtIDEpOgogICAgdGlfaWR4ID0gY2VsbF9kYXRhLmluZGV4ID09IHN0YXJ0X3RpbWUKICAgIHRqX2lkeCA9IGNlbGxfZGF0YS5pbmRleCA9PSBzdGFydF90aW1lICsgMQogICAgcDF4ID0gY2VsbF9kYXRhW3RpX2lkeF0uWAogICAgcDJ4ID0gY2VsbF9kYXRhW3RqX2lkeF0uWAogICAgcDF5ID0gY2VsbF9kYXRhW3RpX2lkeF0uWQogICAgcDJ5ID0gY2VsbF9kYXRhW3RqX2lkeF0uWQogICAgeF9wb2ludHMgPSBbcDF4LCBwMnhdCiAgICB5X3BvaW50cyA9IFtwMXksIHAyeV0KICAgIHBsdC5wbG90KHhfcG9pbnRzLCB5X3BvaW50cykKZmluYWxtMV9pZHggPSBjZWxsX2RhdGEuaW5kZXggPT0gZmluYWxfcm93IC0gMQpmaW5hbF9pZHggPSBjZWxsX2RhdGEuaW5kZXggPT0gZmluYWxfcm93CmZpbmFsbTFfeCA9IGNlbGxfZGF0YVtmaW5hbG0xX2lkeF0uWApmaW5hbF94ID0gY2VsbF9kYXRhW2ZpbmFsX2lkeF0uWApmaW5hbG0xX3kgPSBjZWxsX2RhdGFbZmluYWxtMV9pZHhdLlkKZmluYWxfeSA9IGNlbGxfZGF0YVtmaW5hbF9pZHhdLlkKeF9wb2ludHMgPSBbZmluYWxtMV94LCBmaW5hbF94XQp5X3BvaW50cyA9IFtmaW5hbG0xX3ksIGZpbmFsX3ldCnBsdC5wbG90KHhfcG9pbnRzLCB5X3BvaW50cykKcGx0LnNob3coKQoKc2VhYm9ybi52aW9saW5wbG90KGRhdGEgPSBjZWxsX2RhdGEuQXJlYSkKcGx0LnNob3coKQpgYGAKCgoKYGBge3Igc2F2ZW1lfQpwYW5kZXI6OnBhbmRlcihzZXNzaW9uSW5mbygpKQptZXNzYWdlKHBhc3RlMCgiVGhpcyBpcyBocGdsdG9vbHMgY29tbWl0OiAiLCBnZXRfZ2l0X2NvbW1pdCgpKSkKYGBgCg==