Coverage for tests/res/single_resolution_float_5d.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-01-31 11:24 +0000

1import tifffile 

2import os 

3import numpy as np 

4from qubalab.images.metadata.image_shape import ImageShape 

5 

6 

7def get_name() -> str: 

8 return "single_resolution_float_5d.ome.tif" 

9 

10 

11def get_path() -> str: 

12 return os.path.realpath(os.path.join(os.path.realpath(__file__), os.pardir, get_name())) 

13 

14 

15def get_shapes() -> tuple[ImageShape, ...]: 

16 return (ImageShape(32, 16, 10, 5, 15),) 

17 

18 

19def get_pixel_size_x_y_in_micrometers() -> float: 

20 return 0.5 

21 

22 

23def get_dtype(): 

24 return np.float64 

25 

26 

27def get_downsamples() -> tuple[float, ...]: 

28 return tuple([get_shapes()[0].x / shape.x for shape in get_shapes()]) 

29 

30 

31def get_pixel_value(x: int, y: int, c: int, z: int, t: int) -> int: 

32 return pixels[t, z, c, y, x] 

33 

34 

35def _get_pixels() -> np.array: 

36 return np.random.rand(get_shapes()[0].t, get_shapes()[0].z, get_shapes()[0].c, get_shapes()[0].y, get_shapes()[0].x) 

37 

38 

39def _write_image(pixels: np.array): 

40 metadata = { 

41 'PhysicalSizeX': get_pixel_size_x_y_in_micrometers(), 

42 'PhysicalSizeXUnit': 'µm', 

43 'PhysicalSizeY': get_pixel_size_x_y_in_micrometers(), 

44 'PhysicalSizeYUnit': 'µm' 

45 } 

46 

47 with tifffile.TiffWriter(get_path()) as tif: 

48 number_of_pixels_per_cm = 1e4 / get_pixel_size_x_y_in_micrometers() 

49 

50 tif.write( 

51 pixels, 

52 metadata=metadata, 

53 resolution=(number_of_pixels_per_cm, number_of_pixels_per_cm), 

54 resolutionunit=3 # indicate that the resolution above is in cm^-1 

55 ) 

56 

57 

58pixels = _get_pixels() 

59_write_image(pixels)