def test_saving_and_loading(save_path): def test_save_load_model(cls, adata, save_path): model = cls(adata, latent_distribution="normal") model.train(1, train_size=0.2) z1 = model.get_latent_representation(adata) test_idx1 = model.validation_indices model.save(save_path, overwrite=True, save_anndata=True) model = cls.load(save_path) model.get_latent_representation() tmp_adata = scvi.data.synthetic_iid(n_genes=200) with pytest.raises(ValueError): cls.load(save_path, tmp_adata) model = cls.load(save_path, adata) z2 = model.get_latent_representation() test_idx2 = model.validation_indices np.testing.assert_array_equal(z1, z2) np.testing.assert_array_equal(test_idx1, test_idx2) assert model.is_trained is True save_path = os.path.join(save_path, "tmp") adata = synthetic_iid() for cls in [SCVI, LinearSCVI, TOTALVI]: print(cls) test_save_load_model(cls, adata, save_path) # AUTOZI model = AUTOZI(adata, latent_distribution="normal") model.train(1, train_size=0.5) ab1 = model.get_alphas_betas() model.save(save_path, overwrite=True, save_anndata=True) model = AUTOZI.load(save_path) model.get_latent_representation() tmp_adata = scvi.data.synthetic_iid(n_genes=200) with pytest.raises(ValueError): AUTOZI.load(save_path, tmp_adata) model = AUTOZI.load(save_path, adata) ab2 = model.get_alphas_betas() np.testing.assert_array_equal(ab1["alpha_posterior"], ab2["alpha_posterior"]) np.testing.assert_array_equal(ab1["beta_posterior"], ab2["beta_posterior"]) assert model.is_trained is True # SCANVI model = SCANVI(adata, "label_0") model.train(max_epochs=1, train_size=0.5) p1 = model.predict() model.save(save_path, overwrite=True, save_anndata=True) model = SCANVI.load(save_path) model.get_latent_representation() tmp_adata = scvi.data.synthetic_iid(n_genes=200) with pytest.raises(ValueError): SCANVI.load(save_path, tmp_adata) model = SCANVI.load(save_path, adata) p2 = model.predict() np.testing.assert_array_equal(p1, p2) assert model.is_trained is True
def test_saving_and_loading(save_path): def test_save_load_model(cls, adata, save_path): model = cls(adata, latent_distribution="normal") model.train(1) z1 = model.get_latent_representation(adata) test_idx1 = model.test_indices model.save(save_path, overwrite=True) model = cls.load(adata, save_path) z2 = model.get_latent_representation() test_idx2 = model.test_indices np.testing.assert_array_equal(z1, z2) np.testing.assert_array_equal(test_idx1, test_idx2) assert model.is_trained is True save_path = os.path.join(save_path, "tmp") adata = synthetic_iid() for cls in [SCVI, LinearSCVI, TOTALVI]: print(cls) test_save_load_model(cls, adata, save_path) # AUTOZI model = AUTOZI(adata, latent_distribution="normal") model.train(1) ab1 = model.get_alphas_betas() model.save(save_path, overwrite=True) model = AUTOZI.load(adata, save_path) ab2 = model.get_alphas_betas() np.testing.assert_array_equal(ab1["alpha_posterior"], ab2["alpha_posterior"]) np.testing.assert_array_equal(ab1["beta_posterior"], ab2["beta_posterior"]) assert model.is_trained is True # SCANVI model = SCANVI(adata, "undefined_0") model.train(n_epochs_unsupervised=1, n_epochs_semisupervised=1) p1 = model.predict() model.save(save_path, overwrite=True) model = SCANVI.load(adata, save_path) p2 = model.predict() np.testing.assert_array_equal(p1, p2) assert model.is_trained is True # GIMVI model = GIMVI(adata, adata) model.train(1) z1 = model.get_latent_representation([adata]) z2 = model.get_latent_representation([adata]) np.testing.assert_array_equal(z1, z2) model.save(save_path, overwrite=True) model = GIMVI.load(adata, adata, save_path) z2 = model.get_latent_representation([adata]) np.testing.assert_array_equal(z1, z2) assert model.is_trained is True