graph LR
I_O_Registry["I/O Registry"]
H5AD_Format_Handler["H5AD Format Handler"]
Zarr_Format_Handler["Zarr Format Handler"]
Read_Operations["Read Operations"]
Write_Operations["Write Operations"]
I_O_Utilities["I/O Utilities"]
I_O_Registry -- "registers and dispatches to" --> H5AD_Format_Handler
I_O_Registry -- "registers and dispatches to" --> Zarr_Format_Handler
Read_Operations -- "utilizes" --> I_O_Registry
Write_Operations -- "utilizes" --> I_O_Registry
H5AD_Format_Handler -- "depends on" --> I_O_Utilities
Zarr_Format_Handler -- "depends on" --> I_O_Utilities
AnnData_Core_Data_Model -- "initiates calls to and constructs objects from" --> Read_Operations
AnnData_Core_Data_Model -- "initiates calls to and constructs objects from" --> Write_Operations
Experimental_Features_Module -- "can extend or utilize" --> I_O_Registry
The I/O Management component in anndata is crucial for data persistence and interoperability within the scientific data management library. It adheres to the "Data Storage/Persistence" architectural pattern by providing a flexible and extensible framework for handling various data formats.
This component acts as the central hub for registering and managing read and write methods for different data formats. It uses a registry pattern to allow for dynamic dispatch of I/O operations, making the system highly extensible. It includes IORegistry, Reader, Writer, and LazyReader classes.
Related Classes/Methods:
anndata._io.specs.registryanndata._io.specs.registry:IORegistry(89:216)anndata._io.specs.registry:Reader(266:287)anndata._io.specs.registry:Writer(321:399)anndata._io.specs.registry:LazyReader(290:318)
This component is responsible for the serialization and deserialization of AnnData objects to and from the H5AD format, which is a specialized HDF5-based format for single-cell data. It handles the intricacies of mapping AnnData's internal structure to HDF5 groups and datasets.
Related Classes/Methods:
This component provides support for reading and writing AnnData objects using the Zarr format. Zarr is a cloud-friendly, chunked, and compressed array format, enabling efficient out-of-core computation and distributed data handling.
Related Classes/Methods:
This component provides high-level functions for reading AnnData objects from various file formats. It leverages the IORegistry to dispatch to the appropriate format-specific reader (e.g., H5AD, Zarr, CSV, Loom) based on the file extension or explicit format specification.
Related Classes/Methods:
Similar to read operations, this component offers high-level functions for writing AnnData objects to different file formats. It interacts with the IORegistry to select and execute the correct writer for the specified format.
Related Classes/Methods:
This component contains helper functions and utilities used across different I/O operations. This might include functions for path handling, data type conversions, or other common tasks that support the reading and writing processes.
Related Classes/Methods: