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.º 2
0
    def execute(cls, choices, galaxyFn=None, username=''):
        from quick.webtools.clustering.GSuitePrimaryTrackModifier import GSuitePrimaryTrackModifier

        # Set analysis environment
        gSuite = getGSuiteFromGalaxyTN(choices.gSuite)
        outGSuite = GSuite()
        errorGSuite = GSuite()
        progressViewer = ProgressViewer([('Manipulate tracks', gSuite.numTracks() + 24)],
                                        cls.extraGalaxyFn[cls.HISTORY_PROGRESS_TITLE])
        hiddenStorageFn = cls.extraGalaxyFn[cls.HISTORY_HIDDEN_TRACK_STORAGE]

        # Get rsID map for the chosen reference genome
        rsidMap = RsidMapper.createRsidMappingFromStaticFiles(progressViewer, choices.refGenome)

        # Lift over all tracks
        for track in gSuite.allTracks():
            fileName = cls.getFilenameWithGTrackSuffix(track.path)
            title = getTitleWithSuffixReplaced(track.title, 'gtrack')

            try:
                uri = GalaxyGSuiteTrack.generateURI(
                    galaxyFn=hiddenStorageFn,
                    extraFileName=fileName,
                    suffix='gtrack'
                )

                gSuiteTrack = GSuiteTrack(
                    uri,
                    title=title,
                    genome=track.genome,
                    trackType=track.trackType,
                    attributes=track.attributes
                )

                trackFn = gSuiteTrack.path
                GSuitePrimaryTrackModifier.liftOverGTrack(track.path, trackFn, rsidMap)
                outGSuite.addTrack(gSuiteTrack)

            except Exception as e:
                track.comment = 'An error occurred for the following track: ' + str(e)
                errorGSuite.addTrack(track)

            progressViewer.update()

        # Update reference genome of all tracks and write to file
        outGSuite.setGenomeOfAllTracks(choices.refGenome)
        composeToFile(outGSuite, galaxyFn)
        composeToFile(errorGSuite, cls.extraGalaxyFn[cls.HISTORY_ERROR_TITLE])
        writeGSuiteHiddenTrackStorageHtml(hiddenStorageFn)
    def execute(cls, choices, galaxyFn=None, username=''):
        from quick.webtools.clustering.CreateLDTrack import CreateLDTrack
        from quick.webtools.clustering.RsidMapper import RsidMapper

        gSuite = getGSuiteFromGalaxyTN(choices.gSuite)
        outGSuite = GSuite()
        errorGSuite = GSuite()

        progressViewer = ProgressViewer([('Manipulate tracks', gSuite.numTracks() + 24)],
                                        cls.extraGalaxyFn[cls.HISTORY_PROGRESS_TITLE])

        ldDict = CreateLDTrack.getLDDict(float(choices.rsquare))
        rsidDict = RsidMapper.createRsidMappingFromStaticFiles(progressViewer, choices.refGenome)
        hiddenStorageFn = cls.extraGalaxyFn[cls.HISTORY_HIDDEN_TRACK_STORAGE]

        for track in gSuite.allTracks():
            fileName = cls.getFilenameWithGTrackSuffix(track.path)
            title = getTitleWithSuffixReplaced(track.title, 'gtrack')

            try:
                uri = GalaxyGSuiteTrack.generateURI(
                    galaxyFn=hiddenStorageFn,
                    extraFileName=fileName,
                    suffix='gtrack'
                )

                gSuiteTrack = GSuiteTrack(
                    uri,
                    title=title,
                    genome=track.genome,
                    trackType='points',
                    attributes=track.attributes
                )

                trackFn = gSuiteTrack.path
                CreateLDTrack.parseFileIntoPointTrack(track.path, trackFn, ldDict, rsidDict)
                outGSuite.addTrack(gSuiteTrack)

            except Exception as e:
                track.comment = 'An error occurred for the following track: ' + str(e)
                errorGSuite.addTrack(track)

            progressViewer.update()

        outGSuite.setGenomeOfAllTracks(choices.refGenome)
        composeToFile(outGSuite, galaxyFn)
        composeToFile(errorGSuite, cls.extraGalaxyFn[cls.HISTORY_ERROR_TITLE])
        writeGSuiteHiddenTrackStorageHtml(hiddenStorageFn)
Exemplo n.º 4
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)
import gold.gsuite.GSuiteParser as GSuiteParser

gSuite = GSuite()

uri1 = FtpGSuiteTrack.generateURI(netloc='server.com', path='file.bed')
gSuite.addTrack(
    GSuiteTrack(uri1,
                title='Track1',
                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():