def test_ardnmf_poisson(self):
        spectra = file_loader(SPECTRA_ARROW)

        np.random.seed(0)
        res = ardnmf(spectra, K0=10, max_iter=50, verbose=False)

        for i, _ in enumerate(LAM_TRUE_1):
            self.assertAlmostEqual(list(res['lam'])[i],
                                   LAM_TRUE_1[i],
                                   places=7)
    def test_cosmic_dbs(self):
        """
        Test doublet-base substitution mappers.
        """
        maf_df = file_loader(MAF_TEST_FILE)
        spectra_ref = pd.read_parquet("refs/test_cosmic3dbs_spectra.parquet")

        _, spectra = get_spectra_from_maf(maf_df, cosmic='cosmic3_DBS')
        self.assertEqual(np.linalg.norm(spectra.values - spectra_ref.values),
                         0)
    def test_cosmic_id(self):
        """
        Test insertion-deletion mappers.
        """
        maf_df = file_loader(MAF_TEST_FILE)
        spectra_ref = pd.read_parquet("refs/test_cosmic3id_spectra.parquet")

        _, spectra = get_spectra_from_maf(maf_df,
                                          cosmic='cosmic3_ID',
                                          hgfile=HG_FILE)
        self.assertEqual(np.linalg.norm(spectra.values - spectra_ref.values),
                         0)
    def test_cosmic_sbs(self):
        """
        Test single-base substituion mappers.
        """
        maf_df = file_loader(MAF_TEST_FILE)
        spectra_ref = pd.read_parquet("refs/test_cosmic2_spectra.parquet")

        _, spectra = get_spectra_from_maf(maf_df,
                                          cosmic='cosmic2',
                                          hgfile=HG_FILE)
        self.assertEqual(np.linalg.norm(spectra.values - spectra_ref.values),
                         0)
    def test_sbs_cosmic3exome(self):
        """Test SBS Cosmic3 Exome"""
        dirpath = tempfile.mkdtemp()

        np.random.seed(0)
        spectra = file_loader(SPECTRA_ARROW)
        run_spectra(spectra,
                    outdir=dirpath,
                    cosmic='cosmic3_exome',
                    nruns=1,
                    K0=10,
                    max_iter=100,
                    plot_results=False)
        cosine_df_arrow = pd.read_hdf(os.path.join(dirpath, 'nmf_output.h5'),
                                      "cosine")
        shutil.rmtree(dirpath)

        ref_cosine = np.load("refs/test_mapping_cosmic3_exome.npy")
        self.assertEqual(
            np.linalg.norm(ref_cosine - cosine_df_arrow.sum(1).values), 0)

        np.random.seed(0)
        spectra = file_loader(SPECTRA_WORD)
        run_spectra(spectra,
                    outdir=dirpath,
                    cosmic='cosmic3_exome',
                    nruns=1,
                    K0=10,
                    max_iter=100,
                    plot_results=False)
        cosine_df_word = pd.read_hdf(os.path.join(dirpath, 'nmf_output.h5'),
                                     "cosine")
        shutil.rmtree(dirpath)

        self.assertEqual(
            np.linalg.norm(cosine_df_arrow.values - cosine_df_word.values), 0)