# tests

**Last Run:** 2026-01-20 13:57:27  

```text
src/tests/data/test_dataset.py::TestDatasetCreation::test_dataset_exists_on_disk                  PASSED     [  1%]
src/tests/data/test_dataset.py::TestDatasetCreation::test_shape_metadata                          PASSED     [  2%]
src/tests/data/test_dataset.py::TestDatasetCreation::test_labels_loaded                           PASSED     [  3%]
src/tests/data/test_dataset.py::TestDatasetCreation::test_groups_optional                         PASSED     [  5%]
src/tests/data/test_dataset.py::TestDatasetCreation::test_gene_names                              PASSED     [  6%]
src/tests/data/test_dataset.py::TestDatasetCreation::test_label_names                             PASSED     [  7%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_make_split_creates_indices                PASSED     [  8%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_split_sizes_approximately_correct         PASSED     [ 10%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_fraction_zero_creates_empty_test          PASSED     [ 11%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_fraction_one_raises_error                 PASSED     [ 12%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_reproducibility_with_seed                 PASSED     [ 14%]
src/tests/data/test_dataset.py::TestDatasetSplits::test_stratify_by_group                         PASSED     [ 15%]
src/tests/data/test_dataset.py::TestDatasetStreaming::test_stream_train_batches                   PASSED     [ 16%]
src/tests/data/test_dataset.py::TestDatasetStreaming::test_stream_test_batches                    PASSED     [ 17%]
src/tests/data/test_dataset.py::TestDatasetStreaming::test_stream_all                             PASSED     [ 19%]
src/tests/data/test_dataset.py::TestDatasetStreaming::test_empty_test_stream                      PASSED     [ 20%]
src/tests/data/test_dataset.py::TestDatasetStreaming::test_shuffle_changes_order                  PASSED     [ 21%]
src/tests/data/test_dataset.py::TestLabelBalancing::test_balance_labels_equalizes_counts          PASSED     [ 23%]
src/tests/data/test_dataset.py::TestLabelBalancing::test_balance_only_applies_to_train            PASSED     [ 24%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_create_from_layer                 PASSED     [ 25%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_create_with_gene_mask_string      PASSED     [ 26%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_create_with_gene_list             PASSED     [ 28%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_invalid_layer_raises_error        PASSED     [ 29%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_invalid_gene_mask_raises_error    PASSED     [ 30%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_missing_gene_in_list_raises_error PASSED     [ 32%]
src/tests/data/test_dataset.py::TestDatasetLayersAndGenes::test_metadata_layer_record             PASSED     [ 33%]
src/tests/data/test_dataset.py::TestDatasetEdgeCases::test_stream_without_split_raises            PASSED     [ 34%]
src/tests/data/test_dataset.py::TestDatasetEdgeCases::test_invalid_fraction_raises                PASSED     [ 35%]
src/tests/data/test_dataset.py::TestDatasetEdgeCases::test_single_cell_batch                      PASSED     [ 37%]
src/tests/data/test_dataset.py::TestDatasetEdgeCases::test_large_batch                            PASSED     [ 38%]
src/tests/data/test_dataset.py::TestDatasetEdgeCases::test_tiny_dataset_train_safety              PASSED     [ 39%]
src/tests/data/test_io.py::TestDataIO::test_read_10x_mtx                                          PASSED     [ 41%]
src/tests/data/test_io.py::TestDataIO::test_read_10x_h5_v3                                        PASSED     [ 42%]
src/tests/data/test_io.py::TestDataIO::test_read_10x_h5_v4                                        PASSED     [ 43%]
src/tests/data/test_io.py::TestDataIO::test_read_adata                                            PASSED     [ 44%]
src/tests/data/test_io.py::TestDataIO::test_read_adataerror_handling                              PASSED     [ 46%]
src/tests/data/test_io.py::TestModelStateIO::test_state_roundtrip                                 PASSED     [ 47%]
src/tests/data/test_io.py::TestModelStateIO::test_state_inference_after_load                      PASSED     [ 48%]
src/tests/data/test_io.py::TestModelStateIO::test_state_gene_order_preserved                      PASSED     [ 50%]
src/tests/data/test_io.py::TestModelStateIO::test_state_label_mapping                             PASSED     [ 51%]
src/tests/data/test_io.py::TestModelStateIO::test_state_file_extension_handling                   PASSED     [ 52%]
src/tests/data/test_io.py::TestModelStateIO::test_load_nonexistent_file                           PASSED     [ 53%]
src/tests/model/test_nn.py::TestNN::test_xavier_uniform_shape                                     PASSED     [ 55%]
src/tests/model/test_nn.py::TestNN::test_nn_init_linear                                           PASSED     [ 56%]
src/tests/model/test_nn.py::TestNN::test_nn_linear_forward                                        PASSED     [ 57%]
src/tests/model/test_nn.py::TestNN::test_nn_dropout_eval_mode                                     PASSED     [ 58%]
src/tests/model/test_nn.py::TestNN::test_nn_dropout_zero_rate                                     PASSED     [ 60%]
src/tests/model/test_nn.py::TestDataProcessing::test_nn_normalize                                 PASSED     [ 61%]
src/tests/model/test_nn.py::TestModelFunctions::test_nn_annotate_shapes                           PASSED     [ 62%]
src/tests/model/test_nn.py::TestModelFunctions::test_nn_annotate_with_attention                   PASSED     [ 64%]
src/tests/model/test_nn.py::TestModelFunctions::test_nn_annotate_loss                             PASSED     [ 65%]
src/tests/model/test_nn.py::TestGinsengClassifier::test_classifier_init                           PASSED     [ 66%]
src/tests/model/test_nn.py::TestGinsengClassifier::test_classifier_key_management                 PASSED     [ 67%]
src/tests/model/test_nn.py::TestGinsengClassifier::test_classifier_predict                        PASSED     [ 69%]
src/tests/model/test_nn.py::TestGinsengClassifier::test_classifier_evaluate                       PASSED     [ 70%]
src/tests/model/test_predict.py::TestClassifyFunction::test_classify_inplace_updates              PASSED     [ 71%]
src/tests/model/test_predict.py::TestClassifyFunction::test_classify_return_table                 PASSED     [ 73%]
src/tests/model/test_predict.py::TestClassifyLayers::test_classify_from_layer                     PASSED     [ 74%]
src/tests/model/test_predict.py::TestClassifyLayers::test_classify_from_sparse_layer              PASSED     [ 75%]
src/tests/model/test_predict.py::TestClassifyLayers::test_classify_invalid_layer_raises           PASSED     [ 76%]
src/tests/model/test_predict.py::TestGeneMappingAndReordering::test_gene_reordering_with_layer    PASSED     [ 78%]
src/tests/train/test_augment.py::TestAugmentation::test_augment_mask                              PASSED     [ 79%]
src/tests/train/test_augment.py::TestAugmentation::test_augment_background                        PASSED     [ 80%]
src/tests/train/test_augment.py::TestAugmentation::test_augment_dropgene                          PASSED     [ 82%]
src/tests/train/test_augment.py::TestAugmentation::test_augment_orchestrator                      PASSED     [ 83%]
src/tests/train/test_augment.py::TestAugmentation::test_augment_no_op                             PASSED     [ 84%]
src/tests/train/test_opt.py::TestAdamOptimizer::test_opt_init_adam                                PASSED     [ 85%]
src/tests/train/test_opt.py::TestAdamOptimizer::test_opt_adam_convergence                         PASSED     [ 87%]
src/tests/train/test_opt.py::TestAdamOptimizer::test_weight_decay_influence                       PASSED     [ 88%]
src/tests/train/test_trainer.py::TestGinsengClassifierTrainer::test_initialization                PASSED     [ 89%]
src/tests/train/test_trainer.py::TestGinsengClassifierTrainer::test_fit_updates_parameters        PASSED     [ 91%]
src/tests/train/test_trainer.py::TestGinsengClassifierTrainer::test_logger_updates                PASSED     [ 92%]
src/tests/train/test_trainer.py::TestGinsengClassifierTrainer::test_zero_holdout_fraction         PASSED     [ 93%]
src/tests/train/test_trainer.py::TestGinsengClassifierTrainer::test_stratified_training           PASSED     [ 94%]
src/tests/train/test_trainer.py::TestTrainerAugmentation::test_augmentation_parameters_passed     PASSED     [ 96%]
src/tests/train/test_trainer.py::TestTrainerAugmentation::test_no_augmentation_when_none          PASSED     [ 97%]
src/tests/train/test_trainer.py::TestTrainerAugmentation::test_augmentation_key_uniqueness        PASSED     [ 98%]
src/tests/utils/test_hvg.py::test_select_hvgs                                                     PASSED     [100%]

=====================================================================================================================
                                           78 passed, 0 failed, 0 skipped                                            
```
