diff --git a/scanpy/readwrite.py b/scanpy/readwrite.py index f2aef41297..5ff556ddc5 100644 --- a/scanpy/readwrite.py +++ b/scanpy/readwrite.py @@ -219,7 +219,7 @@ def _read_legacy_10x_h5(filename, *, genome=None, start=None): ) dsets = {} - _collect_datasets(dsets, f) + _collect_datasets(dsets, f[genome]) # AnnData works with csr matrices # 10x stores the transposed data, so we do the transposition right away diff --git a/scanpy/tests/_data/10x_data/1.2.0/multiple_genomes.h5 b/scanpy/tests/_data/10x_data/1.2.0/multiple_genomes.h5 new file mode 100644 index 0000000000..3d04d4e909 Binary files /dev/null and b/scanpy/tests/_data/10x_data/1.2.0/multiple_genomes.h5 differ diff --git a/scanpy/tests/test_read_10x.py b/scanpy/tests/test_read_10x.py index e9cf188a4b..0f4373334a 100644 --- a/scanpy/tests/test_read_10x.py +++ b/scanpy/tests/test_read_10x.py @@ -73,6 +73,23 @@ def test_read_10x_h5_v1(): assert_anndata_equal(spec_genome_v1, nospec_genome_v1) +def test_read_10x_h5_v2_multiple_genomes(): + genome1_v1 = sc.read_10x_h5( + ROOT / '1.2.0' / 'multiple_genomes.h5', + genome='hg19_chr21', + ) + genome2_v1 = sc.read_10x_h5( + ROOT / '1.2.0' / 'multiple_genomes.h5', + genome='another_genome', + ) + # the test data are such that X is the same shape for both "genomes", + # but the values are different + assert (genome1_v1.X != genome2_v1.X).sum() > 0, ( + 'loading data from two different genomes in 10x v2 format. ' + 'should be different, but is the same. ' + ) + + def test_read_10x_h5(): spec_genome_v3 = sc.read_10x_h5( ROOT / '3.0.0' / 'filtered_feature_bc_matrix.h5',