xenium_cell_segmentation / detect_sam.py
unikill066's picture
Upload 29 files
c843d82 verified
# imports
import logging, numpy as np, matplotlib.pyplot as plt, os
from pathlib import Path
from model.run_cellpose import CellposeBatchProcessor
from utils.constants import *
from skimage.measure import label
from tifffile import imwrite
from utils.generate_masks import MaskStitcher
from PIL import Image
from cellpose.io import imread
from cellpose import models, core, io, plot
from tqdm import trange
from natsort import natsorted
image_ext = ".tif"
masks_ext = ".png" if image_ext == ".png" else ".tif"
flow_threshold = 0.8
cellprob_threshold = 0.0
tile_norm_blocksize = 0
if core.use_gpu()==False:
raise ImportError("No GPU access, change your runtime")
model = models.CellposeModel(pretrained_model="/Users/discovery/Desktop/spinal_cord_segmentation/model/cellpose_sam_neun", gpu=True)
# print(models.model_path("/Users/discovery/Desktop/spinal_cord_segmentation/model/cellpose_sam_neun"))
input_dir = Path("/Users/discovery/Downloads/xenium_testing_jit/spinal_cord_samples_fr/cellpose_imgs/data")
output_dir = Path("/Users/discovery/Downloads/xenium_testing_jit/spinal_cord_samples_fr/cellpose_outs")
output_dir.mkdir(parents=True, exist_ok=True)
files = natsorted([f for f in input_dir.glob("*"+image_ext) if "_masks" not in f.name and "_flows" not in f.name])
if(len(files)==0):
raise FileNotFoundError("no image files found, did you specify the correct folder and extension?")
else:
print(f"{len(files)} images in folder:")
# for f in files:
# print(f)
imgs = [io.imread(files[i]) for i in trange(len(files))]
masks, flows, styles = model.eval(imgs, batch_size=32, flow_threshold=flow_threshold, cellprob_threshold=cellprob_threshold, normalize={"tile_norm_blocksize": tile_norm_blocksize})
print("saving masks")
for i in trange(len(files)):
f = files[i]
io.imsave(output_dir / (f.stem + "_pred_masks" + masks_ext), masks[i])