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