Option 1: one package that contains functions for multiple modalities (e.g. transcriptomics, AIRR, ATAC, ...).
Option 2: one package per modality, e.g. gex-io, airr-io, epigenetics-io
Pro one package
- joint maintenance -> reduced overhead and bus factor
- central place for users to look for IO functions
- potential for multimodal IO functions that generate
MuData objects directly
Pro multiple packages
- clear who's responsible for releasing the package
- no need to deal with optional dependencies
- Can release packages independently more quickly
Optional dependencies
-
Could be handled with dependency groups.
installs only the basic functions.
then there's e.g.
and
The latter would be broadly advertised in the README.
-
Maybe it's not as bad after all. Most IO functions should get away the same packages reading csv/mtx/json/h5.
-
@flying-sheep made the point that if an optional dependency is not installed, the error message should be just a plain
message with installation instructions rather than a full stack-trace that will be intimidating for beginners.
Option 1: one package that contains functions for multiple modalities (e.g. transcriptomics, AIRR, ATAC, ...).
Option 2: one package per modality, e.g.
gex-io,airr-io,epigenetics-ioPro one package
MuDataobjects directlyPro multiple packages
Optional dependencies
Could be handled with dependency groups.
installs only the basic functions.
then there's e.g.
and
The latter would be broadly advertised in the README.
Maybe it's not as bad after all. Most IO functions should get away the same packages reading csv/mtx/json/h5.
@flying-sheep made the point that if an optional dependency is not installed, the error message should be just a plain
message with installation instructions rather than a full stack-trace that will be intimidating for beginners.