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)
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')])