def plainRun(analysisDef, genome, track1Fn, track2Fn): ''' Currently under development, not yet functioning. Note that file names (track1Fn, track2Fn) must either be a valid .dat-file from a Galaxy system, or be located in a path where the two deepest levels are numerical values above 1000, and unique between different runs by this tool''' #GalaxyInterface.runManual(trackNames, analysisDef, regSpec, binSpec, genome, galaxyFn=None, trackNameIntensity=None, username='', \ #printResults=True, printProgress=True, printHtmlWarningMsgs=True, applyBoundaryFilter=False, printRunDescription=True, **kwArgs): from quick.application.ExternalTrackManager import ExternalTrackManager #fixme: is this correct? assert all( idPart > 1000 for idPart in ExternalTrackManager.extractIdFromGalaxyFn(track1Fn)) tn1 = ExternalTrackManager.constructGalaxyTnFromSuitedFn(track1Fn) assert all( idPart > 1000 for idPart in ExternalTrackManager.extractIdFromGalaxyFn(track2Fn)) tn2 = ExternalTrackManager.constructGalaxyTnFromSuitedFn(track2Fn) from quick.application.GalaxyInterface import GalaxyInterface userBinSource = GalaxyInterface._getUserBinSource('chrs', '*', genome, tn1, tn2) from gold.application.StatRunner import AnalysisDefJob job = AnalysisDefJob(analysisDef, tn1, tn2, userBinSource) result = job.run(printProgress=False) return result
def testCreateIntensityTrack(self): regions = [GenomeRegion(self._genome, self._chr, 1000, 5000),\ GenomeRegion(self._genome, self._chr, 6000, 7000),\ GenomeRegion(self._genome, self._chr, 10000, 16000)] job = AnalysisDefJob('[dataStat=SimpleBpIntensityStat] [outTrackName=' + '^'.join(self._trackName) + '] [numDiscreteVals=10] -> CreateFunctionTrackStat', \ ['nums'], ['points'], regions, genome=self._genome) for x in range(2): job.run() brShelve = BoundingRegionShelve(self._genome, self._trackName, allowOverlaps=False) self.assertRaises(OutsideBoundingRegionError, \ brShelve.getBoundingRegionInfo, GenomeRegion(self._genome, self._chr, 0, 1)) #self.assertEquals(BoundingRegionInfo(0, 1, 0, 0, 0, 0), # brShelve.getBoundingRegionInfo(GenomeRegion(self._genome, self._chr, 0, 1))) self.assertEquals( BoundingRegionInfo(1000, 5000, 0, 4000, 0, 0), brShelve.getBoundingRegionInfo( GenomeRegion(self._genome, self._chr, 2000, 2001))) self.assertRaises(OutsideBoundingRegionError, \ brShelve.getBoundingRegionInfo, GenomeRegion(self._genome, self._chr, 5500, 5501)) #self.assertEquals(BoundingRegionInfo(5500, 5501, 0, 0, 0, 0), # brShelve.getBoundingRegionInfo(GenomeRegion(self._genome, self._chr, 5500, 5501))) self.assertEquals( BoundingRegionInfo(6000, 7000, 4000, 5000, 0, 0), brShelve.getBoundingRegionInfo( GenomeRegion(self._genome, self._chr, 6500, 6501))) self.assertRaises(OutsideBoundingRegionError, \ brShelve.getBoundingRegionInfo, GenomeRegion(self._genome, self._chr, 8000, 8001)) #self.assertEquals(BoundingRegionInfo(8000, 8001, 0, 0, 0, 0), # brShelve.getBoundingRegionInfo(GenomeRegion(self._genome, self._chr, 8000, 8001))) self.assertEquals( BoundingRegionInfo(10000, 16000, 5000, 11000, 0, 0), brShelve.getBoundingRegionInfo( GenomeRegion(self._genome, self._chr, 11000, 11001))) self.assertRaises(OutsideBoundingRegionError, \ brShelve.getBoundingRegionInfo, GenomeRegion(self._genome, self._chr, 16500, 16501)) #self.assertEquals(BoundingRegionInfo(16500, 16501, 0, 0, 0, 0), # brShelve.getBoundingRegionInfo(GenomeRegion(self._genome, self._chr, 16500, 16501))) trackData = TrackSource().getTrackData(self._trackName, self._genome, None, False) self.assertListsOrDicts(['val'], trackData.keys()) self.assertListsOrDicts((11000, ), trackData['val'].shape)
def doAnalysisFromDefTwo(cls, tracks, analysisDef, regSpec, binSpec, genome, flag): userBinSource = UserBinSource(regSpec, binSpec, genome) job = AnalysisDefJob(analysisDef.getDefAfterChoices(), tracks[0].trackName, tracks[1].trackName, userBinSource, galaxyFn=None) result = job.run() unorderedResults = [(str(key), result[key]) for key in result.getAllRegionKeys()] return list(cls.sortDictionaries(unorderedResults, flag))
def doAnalysis(analysisSpec, analysisBins, tracks): '''Performs an analysis, as specified by analysisSpec object, in each bin specified by analysisBins, on data sets specified in tracks. Typical usage: analysisSpec = AnalysisSpec(AvgSegLenStat) analysisSpec.addParameter("withOverlaps","no") analysisBins = GlobalBinSource('hg18') tracks = [ Track(['Genes and gene subsets','Genes','Refseq']) ] results = doAnalysis(analysisSpec, analysisBins, tracks) ''' # TODO: handle multiple tracks analysis # assert len(tracks) in [1,2] #for now.. # in an API setting, exceptions should not generally be hidden. # Maybe this should be optional. # setupDebugModeAndLogging() silenceRWarnings() silenceNumpyWarnings() if len(tracks) > 2: from gold.util.CommonConstants import MULTIPLE_EXTRA_TRACKS_SEPARATOR analysisSpec.addParameter( 'extraTracks', MULTIPLE_EXTRA_TRACKS_SEPARATOR.join([ '^'.join([quote(part) for part in x.trackName]) for x in tracks[2:] ])) job = AnalysisDefJob(analysisSpec.getDefAfterChoices(), tracks[0].trackName, tracks[1].trackName if len(tracks) > 1 else None, analysisBins, galaxyFn=None) res = job.run(printProgress=False) # printProgress should be optional? return res