tests.test_frames
1import os 2 3import cv2 4 5from csi_images import csi_frames, csi_tiles, csi_scans 6 7if os.environ.get("DEBIAN_FRONTEND") == "noninteractive": 8 SHOW_PLOTS = False 9else: 10 # Change this to your preference for local testing, but commit as True 11 SHOW_PLOTS = True 12 13 14def test_getting_frames(): 15 scan = csi_scans.Scan.load_yaml("tests/data") 16 tile = csi_tiles.Tile(scan, 100) 17 frames = csi_frames.Frame.get_frames(tile) 18 assert len(frames) == 4 19 frames = csi_frames.Frame.get_all_frames(scan) 20 assert len(frames) == scan.roi[0].tile_rows * scan.roi[0].tile_cols 21 assert len(frames[0]) == 4 22 frames = csi_frames.Frame.get_all_frames(scan, as_flat=False) 23 assert len(frames) == scan.roi[0].tile_rows 24 assert len(frames[0]) == scan.roi[0].tile_cols 25 assert len(frames[0][0]) == 4 26 27 28def test_make_rgb(): 29 scan = csi_scans.Scan.load_txt("tests/data") 30 tile = csi_tiles.Tile(scan, 1000) 31 frames = csi_frames.Frame.get_frames(tile) 32 33 if SHOW_PLOTS: 34 for frame in frames: 35 cv2.imshow("Frames from a tile", frame.get_image()) 36 cv2.waitKey(0) 37 cv2.destroyAllWindows() 38 39 channel_indices = scan.get_channel_indices(["TRITC", "CY5", "DAPI"]) 40 channels = { 41 channel_indices[0]: (1.0, 0.0, 0.0), 42 channel_indices[1]: (0.0, 1.0, 0.0), 43 channel_indices[2]: (0.0, 0.0, 1.0), 44 } 45 image = csi_frames.Frame.make_rgb_image(tile, channels) 46 assert image.shape == (scan.tile_height_px, scan.tile_width_px, 3) 47 48 if SHOW_PLOTS: 49 cv2.imshow("RGB tile", cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) 50 cv2.waitKey(0) 51 cv2.destroyAllWindows() 52 53 # Test with a white channel 54 channel_indices = scan.get_channel_indices(["TRITC", "CY5", "DAPI", "AF488"]) 55 channels = { 56 channel_indices[0]: (1.0, 0.0, 0.0), 57 channel_indices[1]: (0.0, 1.0, 0.0), 58 channel_indices[2]: (0.0, 0.0, 1.0), 59 channel_indices[3]: (1.0, 1.0, 1.0), 60 } 61 image = csi_frames.Frame.make_rgb_image(tile, channels) 62 assert image.shape == (scan.tile_height_px, scan.tile_width_px, 3) 63 64 if SHOW_PLOTS: 65 cv2.imshow("RGBW tile", cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) 66 cv2.waitKey(0) 67 cv2.destroyAllWindows()
def
test_getting_frames():
15def test_getting_frames(): 16 scan = csi_scans.Scan.load_yaml("tests/data") 17 tile = csi_tiles.Tile(scan, 100) 18 frames = csi_frames.Frame.get_frames(tile) 19 assert len(frames) == 4 20 frames = csi_frames.Frame.get_all_frames(scan) 21 assert len(frames) == scan.roi[0].tile_rows * scan.roi[0].tile_cols 22 assert len(frames[0]) == 4 23 frames = csi_frames.Frame.get_all_frames(scan, as_flat=False) 24 assert len(frames) == scan.roi[0].tile_rows 25 assert len(frames[0]) == scan.roi[0].tile_cols 26 assert len(frames[0][0]) == 4
def
test_make_rgb():
29def test_make_rgb(): 30 scan = csi_scans.Scan.load_txt("tests/data") 31 tile = csi_tiles.Tile(scan, 1000) 32 frames = csi_frames.Frame.get_frames(tile) 33 34 if SHOW_PLOTS: 35 for frame in frames: 36 cv2.imshow("Frames from a tile", frame.get_image()) 37 cv2.waitKey(0) 38 cv2.destroyAllWindows() 39 40 channel_indices = scan.get_channel_indices(["TRITC", "CY5", "DAPI"]) 41 channels = { 42 channel_indices[0]: (1.0, 0.0, 0.0), 43 channel_indices[1]: (0.0, 1.0, 0.0), 44 channel_indices[2]: (0.0, 0.0, 1.0), 45 } 46 image = csi_frames.Frame.make_rgb_image(tile, channels) 47 assert image.shape == (scan.tile_height_px, scan.tile_width_px, 3) 48 49 if SHOW_PLOTS: 50 cv2.imshow("RGB tile", cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) 51 cv2.waitKey(0) 52 cv2.destroyAllWindows() 53 54 # Test with a white channel 55 channel_indices = scan.get_channel_indices(["TRITC", "CY5", "DAPI", "AF488"]) 56 channels = { 57 channel_indices[0]: (1.0, 0.0, 0.0), 58 channel_indices[1]: (0.0, 1.0, 0.0), 59 channel_indices[2]: (0.0, 0.0, 1.0), 60 channel_indices[3]: (1.0, 1.0, 1.0), 61 } 62 image = csi_frames.Frame.make_rgb_image(tile, channels) 63 assert image.shape == (scan.tile_height_px, scan.tile_width_px, 3) 64 65 if SHOW_PLOTS: 66 cv2.imshow("RGBW tile", cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) 67 cv2.waitKey(0) 68 cv2.destroyAllWindows()