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 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)
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():