tests.test_tiles
1from csi_images.csi_scans import Scan 2from csi_images.csi_tiles import Tile 3 4 5def test_axioscan_tiles(): 6 scan = Scan.load_yaml("tests/data") 7 tile = Tile(scan, 0) 8 # Assert that the tile is in the top-left corner 9 assert (tile.x, tile.y) == (0, 0) 10 assert tile.position_to_n() == 0 11 assert tile.n_to_position() == (0, 0) 12 13 # Assert that position_to_n() and n_to_position() work with different positions 14 assert tile.position_to_n((1, 0)) == 1 15 assert tile.n_to_position(1) == (1, 0) 16 17 assert tile.position_to_n((0, 1)) == scan.roi[0].tile_cols 18 assert tile.n_to_position(scan.roi[0].tile_cols) == (0, 1) 19 20 assert ( 21 tile.position_to_n((scan.roi[0].tile_cols - 1, scan.roi[0].tile_rows - 1)) 22 == scan.roi[0].tile_cols * scan.roi[0].tile_rows - 1 23 ) 24 assert tile.n_to_position(scan.roi[0].tile_cols * scan.roi[0].tile_rows - 1) == ( 25 scan.roi[0].tile_cols - 1, 26 scan.roi[0].tile_rows - 1, 27 ) 28 29 # Assert that creating a tile with a position works correctly 30 tile = Tile(scan, (1, 0)) 31 assert tile.n == 1 32 33 # Assert that creating a tile with a bad n_roi raises an error 34 try: 35 Tile(scan, 0, 1) 36 assert False 37 except ValueError: 38 assert True 39 40 41def test_bzscanner_tiles(): 42 scan = Scan.load_txt("tests/data") 43 # Origin 44 tile = Tile(scan, 0) 45 assert (tile.x, tile.y) == (0, 0) 46 tile = Tile(scan, (0, 0)) 47 assert tile.n == 0 48 # Assert row-major indexing 49 tile = Tile(scan, 1) 50 assert (tile.x, tile.y) == (1, 0) 51 tile = Tile(scan, (1, 0)) 52 assert tile.n == 1 53 # Assert snake indexing 54 tile = Tile(scan, scan.roi[0].tile_cols - 1) 55 assert (tile.x, tile.y) == (scan.roi[0].tile_cols - 1, 0) 56 tile = Tile(scan, (scan.roi[0].tile_cols - 1, 0)) 57 assert tile.n == scan.roi[0].tile_cols - 1 58 tile = Tile(scan, scan.roi[0].tile_cols) 59 assert (tile.x, tile.y) == (scan.roi[0].tile_cols - 1, 1) 60 tile = Tile(scan, (scan.roi[0].tile_cols - 1, 1)) 61 assert tile.n == scan.roi[0].tile_cols 62 # Assert snake indexing again 63 tile = Tile(scan, scan.roi[0].tile_cols * 2 - 1) 64 assert (tile.x, tile.y) == (0, 1) 65 tile = Tile(scan, (0, 1)) 66 assert tile.n == scan.roi[0].tile_cols * 2 - 1 67 tile = Tile(scan, scan.roi[0].tile_cols * 2) 68 assert (tile.x, tile.y) == (0, 2) 69 tile = Tile(scan, (0, 2)) 70 assert tile.n == scan.roi[0].tile_cols * 2 71 72 73def test_getting_tiles(): 74 scan = Scan.load_yaml("tests/data") 75 # All tiles 76 tiles = Tile.get_tiles(scan) 77 assert len(tiles) == scan.roi[0].tile_rows * scan.roi[0].tile_cols 78 # All tiles, as a grid 79 tiles = Tile.get_tiles(scan, as_flat=False) 80 assert len(tiles) == scan.roi[0].tile_rows 81 assert len(tiles[0]) == scan.roi[0].tile_cols 82 83 # Just the first row 84 tiles = Tile.get_tiles_by_row_col(scan, rows=[0]) 85 assert len(tiles) == scan.roi[0].tile_cols 86 assert all(tile.y == 0 for tile in tiles) 87 assert all(tile.x == i for i, tile in enumerate(tiles)) 88 89 # Just the first column 90 tiles = Tile.get_tiles_by_row_col(scan, cols=[0]) 91 assert len(tiles) == scan.roi[0].tile_rows 92 assert all(tile.x == 0 for tile in tiles) 93 assert all(tile.y == i for i, tile in enumerate(tiles)) 94 95 # The bottom-right corner, with 4 tiles total 96 tiles = Tile.get_tiles_by_xy_bounds( 97 scan, 98 ( 99 scan.roi[0].tile_cols - 2, 100 scan.roi[0].tile_rows - 2, 101 scan.roi[0].tile_cols, 102 scan.roi[0].tile_rows, 103 ), 104 ) 105 assert len(tiles) == 4 106 assert tiles[0].x == scan.roi[0].tile_cols - 2 107 assert tiles[0].y == scan.roi[0].tile_rows - 2 108 assert tiles[1].x == scan.roi[0].tile_cols - 1 109 assert tiles[1].y == scan.roi[0].tile_rows - 2 110 assert tiles[2].x == scan.roi[0].tile_cols - 2 111 assert tiles[2].y == scan.roi[0].tile_rows - 1 112 assert tiles[3].x == scan.roi[0].tile_cols - 1 113 assert tiles[3].y == scan.roi[0].tile_rows - 1
def
test_axioscan_tiles():
6def test_axioscan_tiles(): 7 scan = Scan.load_yaml("tests/data") 8 tile = Tile(scan, 0) 9 # Assert that the tile is in the top-left corner 10 assert (tile.x, tile.y) == (0, 0) 11 assert tile.position_to_n() == 0 12 assert tile.n_to_position() == (0, 0) 13 14 # Assert that position_to_n() and n_to_position() work with different positions 15 assert tile.position_to_n((1, 0)) == 1 16 assert tile.n_to_position(1) == (1, 0) 17 18 assert tile.position_to_n((0, 1)) == scan.roi[0].tile_cols 19 assert tile.n_to_position(scan.roi[0].tile_cols) == (0, 1) 20 21 assert ( 22 tile.position_to_n((scan.roi[0].tile_cols - 1, scan.roi[0].tile_rows - 1)) 23 == scan.roi[0].tile_cols * scan.roi[0].tile_rows - 1 24 ) 25 assert tile.n_to_position(scan.roi[0].tile_cols * scan.roi[0].tile_rows - 1) == ( 26 scan.roi[0].tile_cols - 1, 27 scan.roi[0].tile_rows - 1, 28 ) 29 30 # Assert that creating a tile with a position works correctly 31 tile = Tile(scan, (1, 0)) 32 assert tile.n == 1 33 34 # Assert that creating a tile with a bad n_roi raises an error 35 try: 36 Tile(scan, 0, 1) 37 assert False 38 except ValueError: 39 assert True
def
test_bzscanner_tiles():
42def test_bzscanner_tiles(): 43 scan = Scan.load_txt("tests/data") 44 # Origin 45 tile = Tile(scan, 0) 46 assert (tile.x, tile.y) == (0, 0) 47 tile = Tile(scan, (0, 0)) 48 assert tile.n == 0 49 # Assert row-major indexing 50 tile = Tile(scan, 1) 51 assert (tile.x, tile.y) == (1, 0) 52 tile = Tile(scan, (1, 0)) 53 assert tile.n == 1 54 # Assert snake indexing 55 tile = Tile(scan, scan.roi[0].tile_cols - 1) 56 assert (tile.x, tile.y) == (scan.roi[0].tile_cols - 1, 0) 57 tile = Tile(scan, (scan.roi[0].tile_cols - 1, 0)) 58 assert tile.n == scan.roi[0].tile_cols - 1 59 tile = Tile(scan, scan.roi[0].tile_cols) 60 assert (tile.x, tile.y) == (scan.roi[0].tile_cols - 1, 1) 61 tile = Tile(scan, (scan.roi[0].tile_cols - 1, 1)) 62 assert tile.n == scan.roi[0].tile_cols 63 # Assert snake indexing again 64 tile = Tile(scan, scan.roi[0].tile_cols * 2 - 1) 65 assert (tile.x, tile.y) == (0, 1) 66 tile = Tile(scan, (0, 1)) 67 assert tile.n == scan.roi[0].tile_cols * 2 - 1 68 tile = Tile(scan, scan.roi[0].tile_cols * 2) 69 assert (tile.x, tile.y) == (0, 2) 70 tile = Tile(scan, (0, 2)) 71 assert tile.n == scan.roi[0].tile_cols * 2
def
test_getting_tiles():
74def test_getting_tiles(): 75 scan = Scan.load_yaml("tests/data") 76 # All tiles 77 tiles = Tile.get_tiles(scan) 78 assert len(tiles) == scan.roi[0].tile_rows * scan.roi[0].tile_cols 79 # All tiles, as a grid 80 tiles = Tile.get_tiles(scan, as_flat=False) 81 assert len(tiles) == scan.roi[0].tile_rows 82 assert len(tiles[0]) == scan.roi[0].tile_cols 83 84 # Just the first row 85 tiles = Tile.get_tiles_by_row_col(scan, rows=[0]) 86 assert len(tiles) == scan.roi[0].tile_cols 87 assert all(tile.y == 0 for tile in tiles) 88 assert all(tile.x == i for i, tile in enumerate(tiles)) 89 90 # Just the first column 91 tiles = Tile.get_tiles_by_row_col(scan, cols=[0]) 92 assert len(tiles) == scan.roi[0].tile_rows 93 assert all(tile.x == 0 for tile in tiles) 94 assert all(tile.y == i for i, tile in enumerate(tiles)) 95 96 # The bottom-right corner, with 4 tiles total 97 tiles = Tile.get_tiles_by_xy_bounds( 98 scan, 99 ( 100 scan.roi[0].tile_cols - 2, 101 scan.roi[0].tile_rows - 2, 102 scan.roi[0].tile_cols, 103 scan.roi[0].tile_rows, 104 ), 105 ) 106 assert len(tiles) == 4 107 assert tiles[0].x == scan.roi[0].tile_cols - 2 108 assert tiles[0].y == scan.roi[0].tile_rows - 2 109 assert tiles[1].x == scan.roi[0].tile_cols - 1 110 assert tiles[1].y == scan.roi[0].tile_rows - 2 111 assert tiles[2].x == scan.roi[0].tile_cols - 2 112 assert tiles[2].y == scan.roi[0].tile_rows - 1 113 assert tiles[3].x == scan.roi[0].tile_cols - 1 114 assert tiles[3].y == scan.roi[0].tile_rows - 1