def testComposeLocalUrlGenomeAttributesNonAscii(self):
        gSuite = GSuite()
        gSuite.addTrack(
            GSuiteTrack('galaxy:/12345abc',
                        genome=u'hg18ø',
                        attributes=OrderedDict([('one', 'yes')])))
        gSuite.addTrack(
            GSuiteTrack('file:/path/to/file2',
                        genome='hg19',
                        attributes=OrderedDict([('two', u'nø')])))
        gSuite.addTrack(
            GSuiteTrack(
                HbGSuiteTrack.generateURI(trackName=[u'track', u'nøme']),
                genome='hg38',
                attributes=OrderedDict([('two', 'yes')])))
        gSuite.setCustomHeader('my header', u'bø!')

        output = GSuiteComposer.composeToString(gSuite)

        targetOutput = \
            '##location: local\n' \
            '##file format: unknown\n' \
            '##track type: unknown\n' \
            '##genome: multiple\n' \
            '##my header: b%C3%B8!\n' \
            '###uri\ttitle\tfile_format\tgenome\tone\ttwo\n' \
            'galaxy:/12345abc\t12345abc\tunknown\thg18%C3%B8\tyes\t.\n' \
            'file:/path/to/file2\tfile2\tunknown\thg19\t.\tn%C3%B8\n' \
            'hb:/track/n%C3%B8me\tn%C3%B8me\tpreprocessed\thg38\t.\tyes\n'

        self.assertEquals(targetOutput, output)
    def testFullCompose(self):
        gSuite = GSuite()
        gSuite.addTrack(
            GSuiteTrack('ftp://server.somewhere.com/path/to/file1.bed',
                        title='Track',
                        attributes=OrderedDict([('cell', 'k562'),
                                                ('antibody', 'cMyb')])))
        gSuite.addTrack(
            GSuiteTrack('http://server.other.com/path/to/file2.bed',
                        title='Track2',
                        attributes=OrderedDict([('cell', 'GM12878'),
                                                ('antibody', 'cMyc')])))
        gSuite.addTrack(
            GSuiteTrack('https://server.other.com/path/to/file3.bed',
                        attributes=OrderedDict([('cell', 'GM12878'),
                                                ('antibody', 'cMyb')])))
        gSuite.addTrack(
            GSuiteTrack('rsync://server.other.com/path/to/file4;wig',
                        title='Track4',
                        attributes=OrderedDict([('cell', 'NHFL')])))
        gSuite.addTrack(GSuiteTrack('hb:/track/name/hierarchy', title='Track'))
        gSuite.addTrack(
            GSuiteTrack('galaxy:/ad123dd12fg;btrack?track=track:name',
                        title='Track',
                        attributes=OrderedDict([('cell', 'k562'),
                                                ('antibody', 'cMyb')])))
        gSuite.addTrack(
            GSuiteTrack('file:/path/to/file.btrack?track=track:name',
                        title='Track name7',
                        attributes=OrderedDict([('antibody', 'cMyb'),
                                                ('extra', 'yes')])))
        gSuite.setGenomeOfAllTracks('hg18')
        gSuite.setCustomHeader('My header', 'Some value')

        output = GSuiteComposer.composeToString(gSuite)

        targetOutput = \
            '##location: multiple\n' \
            '##file format: multiple\n' \
            '##track type: unknown\n' \
            '##genome: hg18\n' \
            '##my header: Some value\n' \
            '###uri\ttitle\tfile_format\tcell\tantibody\textra\n' \
            'ftp://server.somewhere.com/path/to/file1.bed\tTrack\tprimary\tk562\tcMyb\t.\n' \
            'http://server.other.com/path/to/file2.bed\tTrack2\tprimary\tGM12878\tcMyc\t.\n' \
            'https://server.other.com/path/to/file3.bed\tfile3.bed\tprimary\tGM12878\tcMyb\t.\n' \
            'rsync://server.other.com/path/to/file4;wig\tTrack4\tprimary\tNHFL\t.\t.\n' \
            'hb:/track/name/hierarchy\tTrack (2)\tpreprocessed\t.\t.\t.\n' \
            'galaxy:/ad123dd12fg;btrack?track=track%3Aname\tTrack (3)\tpreprocessed\tk562\tcMyb\t.\n' \
            'file:/path/to/file.btrack?track=track%3Aname\tTrack name7\tpreprocessed\t.\tcMyb\tyes\n'

        self.assertEquals(targetOutput, output)
Exemplo n.º 3
0
    def testCustomHeaders(self):
        gSuite = GSuite(customHeaders=OrderedDict([('My Header', 'My value')]))
        self.assertEqual(OrderedDict([('my header', 'My value')]),
                         gSuite.customHeaders)
        self.assertEqual('My value', gSuite.getCustomHeader('my header'))
        self.assertEqual(None, gSuite.getCustomHeader('wrong header'))

        gSuite.customHeaders = OrderedDict([('My New Header', 'My new value')])
        gSuite.setCustomHeader('my_second_header', 'My other value')
        self.assertEqual('My other value',
                         gSuite.getCustomHeader('my_second_header'))
        self.assertEqual(['my new header', 'my_second_header'],
                         gSuite.customHeaders.keys())
        self.assertEqual(['My new value', 'My other value'],
                         gSuite.customHeaders.values())

        with self.assertRaises(AttributeError):
            gSuite.my_new_header
        self.assertEqual('My other value', gSuite.my_second_header)

        with self.assertRaises(ArgumentValueError):
            gSuite.customHeaders = OrderedDict([('a', 'value'),
                                                ('A', 'other value')])