Skip to content

napari_ndev._napari_reader #

napari_get_reader #

napari_get_reader(path, in_memory=None, open_first_scene_only=False)

Get the appropriate reader function for a single given path.

Parameters:

  • path #

    (PathLike) –

    Path to the file to be read

  • in_memory #

    (bool, default: None ) –

    Whether to read the file in memory, by default None

  • open_first_scene_only #

    (bool, default: False ) –

    Whether to ignore multi-scene files and just open the first scene, by default False

Returns:

  • ReaderFunction

    The reader function for the given path

Source code in src/napari_ndev/_napari_reader.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
def napari_get_reader(
    path: PathLike,
    in_memory: bool | None = None,
    open_first_scene_only: bool = False,
) -> ReaderFunction | None:
    """
    Get the appropriate reader function for a single given path.

    Parameters
    ----------
    path : PathLike
        Path to the file to be read
    in_memory : bool, optional
        Whether to read the file in memory, by default None
    open_first_scene_only : bool, optional
        Whether to ignore multi-scene files and just open the first scene,
        by default False


    Returns
    -------
    ReaderFunction
        The reader function for the given path

    """
    if isinstance(path, list):
        logger.info("Bioio: Expected a single path, got a list of paths.")
        return None

    try:
        plugin = BioImage.determine_plugin(path)
        reader = plugin.metadata.get_reader()
        # return napari_reader_function(path, reader, in_memory)
        return partial(
            napari_reader_function,
            reader=reader,
            in_memory=in_memory,
            open_first_scene_only=open_first_scene_only
        )
    except UnsupportedFileFormatError:
        logger.warning("Bioio: Unsupported file format")
        return None
    except Exception as e:  # noqa: BLE001
        logger.warning("Bioio: Error reading file")
        logger.warning(e)
        return None

napari_reader_function #

napari_reader_function(
    path,
    reader,
    in_memory=None,
    open_first_scene_only=False,
    layer_type="image",
)

Read a file using the given reader function.

Parameters:

  • path #

    (PathLike) –

    Path to the file to be read

  • reader #

    (None) –

    Bioio Reader function to be used to read the file, by default None.

  • in_memory #

    (bool, default: None ) –

    Whether to read the file in memory, by default None.

  • layer_type #

    (str, default: 'image' ) –

    Type of layer to be created in napari, by default 'image'.

  • open_first_scene_only #

    (bool, default: False ) –

    Whether to ignore multi-scene files and just open the first scene, by default False.

Returns:

  • list

    List containing image data, metadata, and layer type

Source code in src/napari_ndev/_napari_reader.py
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
def napari_reader_function(
    path: PathLike,
    reader: Callable,
    in_memory: bool | None = None,
    open_first_scene_only: bool = False,
    layer_type: str = 'image'
) -> list[LayerData] | None:
    """
    Read a file using the given reader function.

    Parameters
    ----------
    path : PathLike
        Path to the file to be read
    reader : None
        Bioio Reader function to be used to read the file, by default None.
    in_memory : bool, optional
        Whether to read the file in memory, by default None.
    layer_type : str, optional
        Type of layer to be created in napari, by default 'image'.
    open_first_scene_only : bool, optional
        Whether to ignore multi-scene files and just open the first scene,
        by default False.

    Returns
    -------
    list
        List containing image data, metadata, and layer type

    """
    if isinstance(path, list):
        logger.info("Bioio: Expected a single path, got a list of paths.")
        return None

    img = nImage(path, reader=reader)
    in_memory = img._determine_in_memory(path) if in_memory is None else in_memory
    logger.info('Bioio: Reading in-memory: %s', in_memory)

    if len(img.scenes) > 1 and not open_first_scene_only:
        _get_scenes(path=path, img=img, in_memory=in_memory)
        return [(None,)]

    # TODO: why should I return the squeezed data and not the full data
    # is it because napari squeezes it anyway?
    img_data = img.get_napari_image_data(in_memory=in_memory)
    img_meta = img.get_napari_metadata(path)

    return [(img_data.data, img_meta, layer_type)]