def test6_09_none(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq]
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq
pool1,{sample_dir}/B1.fq,{sample_dir}/B2.fq

[genomon_sv]
A_tumor,None,list1

[controlpanel]
list1,pool1

[readgroup]
A_tumor,{sample_dir}/A.metadata.txt
pool1,{sample_dir}/B.metadata.txt
""".format(sample_dir=self.SAMPLE_DIR, htcall=HT_CALL)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertFalse(fail)
    def test3_04_undefine(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[{bam2fq}]
A_control,{sample_dir}/A.markdup.cram
""".format(sample_dir=self.SAMPLE_DIR, bam2fq=BAM_2FQ)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test5_06_unformat(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[{bamimp}]
A_tumor,{sample_dir}/A.markdup.cram,{sample_dir}/B.markdup.cram
""".format(sample_dir=self.SAMPLE_DIR, bamimp=BAM_IMP)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test5_02_unformat(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq],,,,
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq,{sample_dir}/A2.fastq
""".format(sample_dir=self.SAMPLE_DIR)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test2_05_not_exists(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[{bamimp}],,,,
pool3,{sample_dir}/X.markdup.cram,,,
""".format(sample_dir=self.SAMPLE_DIR, bamimp=BAM_IMP)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test2_06_not_exists(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq]
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq
[readgroup]
A_tumor,{sample_dir}/A1.metadata.txt
""".format(sample_dir=self.SAMPLE_DIR)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test2_03_not_exists(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq],,,,
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq,,
pool1,{sample_dir}/B1.fq,{sample_dir}/B2.fq,,
pool2,{sample_dir}/C1_1.fq;{sample_dir}/C1_2.fq,{sample_dir}/C2_1.fq;{sample_dir}/C2_3.fq,,
""".format(sample_dir=self.SAMPLE_DIR)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test3_03_undefine(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq]
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq

[{htcall}]
B_tumor
""".format(sample_dir=self.SAMPLE_DIR, htcall=HT_CALL)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test4_06_duplicate(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq],,,,
pool3,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq,,
[{bam2fq}],,,,
A_tumor,{sample_dir}/A.markdup.cram,,,
[{bamimp}],,,,
pool3,{sample_dir}/B.markdup.cram,,,
""".format(sample_dir=self.SAMPLE_DIR, bam2fq=BAM_2FQ, bamimp=BAM_IMP)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertTrue(fail)
    def test6_05_none(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq]
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq

[gridss]
A_tumor

[readgroup]
A_tumor,{sample_dir}/A.metadata.txt
""".format(sample_dir=self.SAMPLE_DIR, htcall=HT_CALL)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        try:
            fail = False
            sc.Sample_conf(ss_path)
        except Exception as e:
            print(e)
            fail = True

        self.assertFalse(fail)
    def test1_01_allinone(self):
        ss_path = self.SAMPLE_DIR + "/" + sys._getframe(
        ).f_code.co_name + ".csv"
        data = """[fastq]
A_tumor,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq
A_tumor2,{sample_dir}/A1.fastq,{sample_dir}/A2.fastq
pool1,{sample_dir}/B1.fq,{sample_dir}/B2.fq
pool2,{sample_dir}/link_C1_1.fq;{sample_dir}/link_C1_2.fq,{sample_dir}/C2_1.fq;{sample_dir}/C2_2.fq

[{bam2fq}]
A_control,{sample_dir}/A.markdup.cram
A_control2,{sample_dir}/link_A.markdup.cram

[{bamimp}]
pool3,{sample_dir}/B.markdup.cram
pool4,{sample_dir}/link_B.markdup.cram

[{htcall}]
A_tumor,A_control
A_control,None
A_control2

[{summary1}]
A_tumor

[{summary2}]
A_tumor

[manta]
A_tumor,A_control
A_control,None
A_control2

[gridss]
A_tumor,A_control
A_control,None
A_control2

[genomon_sv]
A_tumor,A_control,list1
A_tumor2,None,list1
A_control,None
A_control2

[controlpanel]
list1,pool1,pool2,pool3,pool4

[readgroup]
A_tumor,{sample_dir}/A.metadata.txt
A_tumor2,{sample_dir}/A.metadata.txt
pool1,{sample_dir}/B.metadata.txt
pool2,{sample_dir}/C.metadata.txt
A_control,{sample_dir}/A.metadata.txt
A_control2,{sample_dir}/link_A.metadata.txt
""".format(sample_dir=self.SAMPLE_DIR,
           bam2fq=BAM_2FQ,
           bamimp=BAM_IMP,
           htcall=HT_CALL,
           summary1=SUMMARY1,
           summary2=SUMMARY2)

        f = open(ss_path, "w")
        f.write(data)
        f.close()
        sample_conf = sc.Sample_conf(ss_path)

        self.assertEqual(
            sample_conf.fastq, {
                'A_tumor': [[self.SAMPLE_DIR + '/A1.fastq'],
                            [self.SAMPLE_DIR + '/A2.fastq']],
                'A_tumor2': [[self.SAMPLE_DIR + '/A1.fastq'],
                             [self.SAMPLE_DIR + '/A2.fastq']],
                'pool1': [[self.SAMPLE_DIR + '/B1.fq'],
                          [self.SAMPLE_DIR + '/B2.fq']],
                'pool2': [[
                    self.SAMPLE_DIR + '/link_C1_1.fq',
                    self.SAMPLE_DIR + '/link_C1_2.fq'
                ], [
                    self.SAMPLE_DIR + '/C2_1.fq', self.SAMPLE_DIR + '/C2_2.fq'
                ]],
            })

        self.assertEqual(
            sample_conf.fastq_src, {
                'A_tumor': [[self.SAMPLE_DIR + '/A1.fastq'],
                            [self.SAMPLE_DIR + '/A2.fastq']],
                'A_tumor2': [[self.SAMPLE_DIR + '/A1.fastq'],
                             [self.SAMPLE_DIR + '/A2.fastq']],
                'pool1': [[self.SAMPLE_DIR + '/B1.fq'],
                          [self.SAMPLE_DIR + '/B2.fq']],
                'pool2': [[
                    self.SAMPLE_DIR + '/link_C1_1.fq', self.SAMPLE_DIR +
                    '/C1_1.fq', self.SAMPLE_DIR + '/link_C1_2.fq',
                    self.SAMPLE_DIR + '/C1_2.fq'
                ], [
                    self.SAMPLE_DIR + '/C2_1.fq', self.SAMPLE_DIR + '/C2_2.fq'
                ]],
            })

        self.assertEqual(
            sample_conf.bam_tofastq, {
                'A_control': self.SAMPLE_DIR + '/A.markdup.cram',
                'A_control2': self.SAMPLE_DIR + '/link_A.markdup.cram'
            })
        self.assertEqual(
            sample_conf.bam_tofastq_src, {
                'A_control': [self.SAMPLE_DIR + '/A.markdup.cram'],
                'A_control2': [
                    self.SAMPLE_DIR + '/link_A.markdup.cram',
                    self.SAMPLE_DIR + '/A.markdup.cram'
                ]
            })
        self.assertEqual(
            sample_conf.bam_import, {
                'pool3': self.SAMPLE_DIR + '/B.markdup.cram',
                'pool4': self.SAMPLE_DIR + '/link_B.markdup.cram'
            })
        self.assertEqual(
            sample_conf.bam_import_src, {
                'pool3': [
                    self.SAMPLE_DIR + '/B.markdup.cram',
                    self.SAMPLE_DIR + '/B.markdup.crai'
                ],
                'pool4': [
                    self.SAMPLE_DIR + '/link_B.markdup.cram',
                    self.SAMPLE_DIR + '/link_B.markdup.crai', self.SAMPLE_DIR +
                    '/B.markdup.cram', self.SAMPLE_DIR + '/B.markdup.crai'
                ]
            })
        self.assertEqual(sample_conf.mutect_call, [('A_tumor', 'A_control'),
                                                   ('A_control', None),
                                                   ('A_control2', None)])
        self.assertEqual(sample_conf.manta, [('A_tumor', 'A_control'),
                                             ('A_control', None),
                                             ('A_control2', None)])
        self.assertEqual(sample_conf.gridss, [('A_tumor', 'A_control'),
                                              ('A_control', None),
                                              ('A_control2', None)])
        self.assertEqual(sample_conf.wgs_metrics, ['A_tumor'])
        self.assertEqual(sample_conf.multiple_metrics, ['A_tumor'])
        self.assertEqual(sample_conf.genomon_sv,
                         [('A_tumor', 'A_control', 'list1'),
                          ('A_tumor2', None, 'list1'),
                          ('A_control', None, None),
                          ('A_control2', None, None)])
        self.assertEqual(sample_conf.control_panel,
                         {'list1': ['pool1', 'pool2', 'pool3', 'pool4']})

        self.assertEqual(
            sample_conf.readgroup, {
                'A_tumor': self.SAMPLE_DIR + '/A.metadata.txt',
                'A_tumor2': self.SAMPLE_DIR + '/A.metadata.txt',
                'pool1': self.SAMPLE_DIR + '/B.metadata.txt',
                'pool2': self.SAMPLE_DIR + '/C.metadata.txt',
                'A_control': self.SAMPLE_DIR + '/A.metadata.txt',
                'A_control2': self.SAMPLE_DIR + '/link_A.metadata.txt'
            })
        self.assertEqual(
            sample_conf.readgroup_src, {
                'A_tumor': [self.SAMPLE_DIR + '/A.metadata.txt'],
                'A_tumor2': [self.SAMPLE_DIR + '/A.metadata.txt'],
                'pool1': [self.SAMPLE_DIR + '/B.metadata.txt'],
                'pool2': [self.SAMPLE_DIR + '/C.metadata.txt'],
                'A_control': [self.SAMPLE_DIR + '/A.metadata.txt'],
                'A_control2': [
                    self.SAMPLE_DIR + '/link_A.metadata.txt',
                    self.SAMPLE_DIR + '/A.metadata.txt'
                ]
            })