Exemplo n.º 1
0
    def testEmptyGSuite(self):
        gSuite = GSuite()

        self.assertEqual('unknown', gSuite.location)
        self.assertEqual('unknown', gSuite.fileFormat)
        self.assertEqual('unknown', gSuite.trackType)
        self.assertEqual('unknown', gSuite.genome)
        self.assertEqual([], gSuite.attributes)

        self.assertEqual(False, gSuite.isPreprocessed())
        self.assertEqual(False, gSuite.hasCustomTitles())

        self.assertEqual(0, gSuite.numTracks())
        self.assertEqual(0, len(list(gSuite.allTracks())))
        self.assertEqual(0, len(list(gSuite.allTrackTitles())))
        self.assertEqual(0, len(list(gSuite.allTrackTypes())))
Exemplo n.º 2
0
    def testAddGSuiteTracks(self):
        gSuite = GSuite()
        gSuite.setGenomeOfAllTracks('hg18')

        self.assertEqual('unknown', gSuite.genome)

        gSuite.addTrack(GSuiteTrack('ftp://server.somewhere.com/path/to/file1.bed',
                                    title='Track1', \
                                    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/other/path/to/file3.bed;bed9',
                attributes=OrderedDict([('cell', 'NHFL')])))
        gSuite.setGenomeOfAllTracks('hg18')

        self.assertEqual('remote', gSuite.location)
        self.assertEqual('primary', gSuite.fileFormat)
        self.assertEqual('unknown', gSuite.trackType)
        self.assertEqual('hg18', gSuite.genome)
        self.assertEqual(['cell', 'antibody'], gSuite.attributes)

        self.assertEqual(False, gSuite.isPreprocessed())
        self.assertEqual(True, gSuite.hasCustomTitles())

        self.assertEqual(4, gSuite.numTracks())
        self.assertEqual(['hg18'] * 4, [x.genome for x in gSuite.allTracks()])
        self.assertEqual(['Track1', 'Track2', 'file3.bed', 'file3.bed (2)'],
                         gSuite.allTrackTitles())
        self.assertEqual(['unknown'], gSuite.allTrackTypes())

        gSuite.addTrack(
            GSuiteTrack('hb:/track/name/hierarchy',
                        title='Track1',
                        genome='hg19',
                        trackType='segments'))
        self.assertEqual('multiple', gSuite.genome)

        gSuite.addTrack(GSuiteTrack('galaxy:/ad123dd12fg;btrack?track=track:name',
                                    title='Track2', \
                                    attributes=OrderedDict([('cell', 'k562'),
                                                            ('antibody', 'cMyb')])))
        gSuite.addTrack(GSuiteTrack('file:/path/to/file.btrack?track=track:name',
                                    title='Track2', \
                                    attributes=OrderedDict([('antibody', 'cMyb'),
                                                            ('extra', 'yes')])))

        self.assertEqual('multiple', gSuite.location)
        self.assertEqual('multiple', gSuite.fileFormat)
        self.assertEqual('unknown', gSuite.trackType)
        self.assertEqual('unknown', gSuite.genome)
        self.assertEqual(['cell', 'antibody', 'extra'], gSuite.attributes)

        self.assertEqual(False, gSuite.isPreprocessed())
        self.assertEqual(True, gSuite.hasCustomTitles())

        self.assertEqual(7, gSuite.numTracks())
        self.assertEqual(['hg18'] * 4 + ['hg19'] + ['unknown'] * 2,
                         [x.genome for x in gSuite.allTracks()])
        self.assertEqual(['Track1', 'Track2', 'file3.bed', 'file3.bed (2)', \
                          'Track1 (2)', 'Track2 (2)', 'Track2 (3)'],
                         gSuite.allTrackTitles())
        self.assertEqual(['segments', 'unknown'], gSuite.allTrackTypes())

        self.assertRaises(
            InvalidFormatError,
            gSuite.addTrack,
            GSuiteTrack('https://server.third.com/path/to/file3.bed'),
            allowDuplicateTitles=False)
                attributes=OrderedDict([('a', 'yes'), ('b', 'no')])))

uri2 = HbGSuiteTrack.generateURI(
    trackName=['Genes and gene subsets', 'Genes', 'Refseq'])
gSuite.addTrack(
    GSuiteTrack(uri2, attributes=OrderedDict([('b', 'no'), ('c', 'yes')])))

gSuite.setGenomeOfAllTracks('hg19')

contents = GSuiteComposer.composeToString(gSuite)

print 'GSuite file contents'
print '--------------------'
print contents

gSuite2 = GSuiteParser.parseFromString(contents)

print 'Various ways of direct access'
print '-----------------------------'
print "genome=%s, location=%s, file format=%s, track type=%s, attributes=%s" % \
    (gSuite.genome, gSuite.location, gSuite.fileFormat, gSuite.trackType, gSuite.attributes)

for track in gSuite2.allTracks():
    print "uri=%s, path=%s, trackName=%s" % (track.uri, track.path,
                                             track.trackName)

print "netloc=" + gSuite2.getTrackFromTitle('Track1').netloc

tracks = list(gSuite.allTracks())
print "b=" + tracks[1].attributes['b']