def dataProvider_testDepends(self): pDepends1 = Proc() pDepends2 = Proc() pDepends3 = Proc() pDepends4 = Proc() pDepends5 = Proc() aggr = Aggr(pDepends1, pDepends2, pDepends3) aggr.starts = 'pDepends1, pDepends2' aggr.depends = [aggr.pDepends2, aggr.pDepends3] yield aggr, [[aggr.pDepends2], [aggr.pDepends3]] aggr1 = Aggr(pDepends1, pDepends2, pDepends3, pDepends4, pDepends5) aggr1.starts = 'pDepends1' aggr1[:1].depends = [['pDepends3', 'pDepends5']] yield aggr1, [[aggr1.pDepends3, aggr1.pDepends5]]
def dataProvider_testSetattr(self): pSetattra = Proc() pSetattra.args.a = Box() pSetattrb = Proc() pSetattrb.args.a = Box() pSetattrc = Proc() pSetattrc.args.a = Box(b=1) pSetattrd = Proc() pSetattre = Proc() aggr = Aggr(pSetattra, pSetattrb, pSetattrc, pSetattrd, pSetattre) aggr.delegate('forks', 'pSetattrb') aggr.delegate('tag', 'ends') yield aggr, 'forks', 10, [1, 10, 1, 1, 1] yield aggr, 'tag', 't', [ aggr.pSetattra.tag, aggr.pSetattra.tag, aggr.pSetattra.tag, aggr.pSetattra.tag, 't' ] # depends and input aggr.starts = 'pSetattra, pSetattrb' yield aggr, 'depends', ['pSetattrc', 'pSetattrd'], [[aggr.pSetattrc], [aggr.pSetattrd], [aggr.pSetattrb], [aggr.pSetattrc], [aggr.pSetattrd]] yield aggr, 'depends2', ['pSetattrc', 'pSetattrd' ], [[aggr.pSetattrc, aggr.pSetattrd], [aggr.pSetattrc, aggr.pSetattrd], [aggr.pSetattrb], [aggr.pSetattrc], [aggr.pSetattrd]] aggr1 = Aggr(pSetattra, pSetattrb, pSetattrc) aggr1.delegate('errntry', 'pSetattra, pSetattrb') aggr1.delegate('args.a', 'pSetattrb') yield aggr1, 'errntry', 8, [8, 8, 3]
def dataProvider_testShowAllRoutes(self): ''' / p3 --- \ p1 -- p2 \ / p8 \ \ p4 \ p7 p10 p6 / \ p9 p5 / ''' pShowAllRoutes1 = Proc() pShowAllRoutes2 = Proc() pShowAllRoutes3 = Proc() pShowAllRoutes4 = Proc() pShowAllRoutes5 = Proc() pShowAllRoutes6 = Proc() pShowAllRoutes7 = Proc() pShowAllRoutes8 = Proc() pShowAllRoutes9 = Proc() pShowAllRoutes10 = Proc() pShowAllRoutes3.depends = pShowAllRoutes2 pShowAllRoutes6.depends = pShowAllRoutes4, pShowAllRoutes5 pShowAllRoutes3.depends = pShowAllRoutes2 pShowAllRoutes4.depends = pShowAllRoutes2 pShowAllRoutes2.depends = pShowAllRoutes1 pShowAllRoutes10.depends = pShowAllRoutes1 aAggr = Aggr(pShowAllRoutes7, pShowAllRoutes8, pShowAllRoutes9) aAggr.starts = [aAggr.pShowAllRoutes7] aAggr.pShowAllRoutes8.depends = aAggr.pShowAllRoutes7 aAggr.pShowAllRoutes9.depends = aAggr.pShowAllRoutes7 aAggr.depends2 = [pShowAllRoutes3, pShowAllRoutes6] yield [pShowAllRoutes1, pShowAllRoutes5], [ 'DEBUG', '* pShowAllRoutes1 -> pShowAllRoutes10', 'pShowAllRoutes1 -> pShowAllRoutes2 -> pShowAllRoutes3 -> [aAggr]', '* pShowAllRoutes1 -> pShowAllRoutes2 -> pShowAllRoutes4 -> pShowAllRoutes6 -> [aAggr]', '* pShowAllRoutes5 -> pShowAllRoutes6 -> [aAggr]' ]
def dataProvider_testSetattr(self): pSetattra = Proc() pSetattra.args.a = Box() pSetattrb = Proc() pSetattrb.args.a = Box() pSetattrc = Proc() pSetattrc.args.a = Box(b=1) pSetattrd = Proc() pSetattre = Proc() aggr = Aggr(pSetattra, pSetattrb, pSetattrc, pSetattrd, pSetattre) aggr.delegate('forks', 'pSetattrb') aggr.delegate('tag', 'ends') proxy = _Proxy(aggr, check = True) yield proxy, 'forks', 10, [1, 10, 1, 1, 1] yield proxy, 'tag', 't', [aggr.pSetattra.tag, aggr.pSetattra.tag, aggr.pSetattra.tag, aggr.pSetattra.tag, 't'] # depends and input aggr.starts = 'pSetattra, pSetattrb' yield proxy, 'depends', ['pSetattrc', 'pSetattrd'], [[aggr.pSetattrc], [aggr.pSetattrd], [aggr.pSetattrb], [aggr.pSetattrc], [aggr.pSetattrd]] yield proxy, 'depends2', ['pSetattrc', 'pSetattrd'], [[aggr.pSetattrc, aggr.pSetattrd], [aggr.pSetattrc, aggr.pSetattrd], [aggr.pSetattrb], [aggr.pSetattrc], [aggr.pSetattrd]] aggr1 = Aggr(pSetattra, pSetattrb, pSetattrc) aggr1.delegate('args.a.b', 'pSetattra, pSetattrb') aggr1.delegate('args.a', 'pSetattrb') proxy1 = _Proxy(aggr1, prefix = ['args', 'a'], check = True) yield proxy1, 'b', 3, [3, 3, 1]
def dataProvider_testDelStart(self): p1 = Proc() p2 = Proc() p3 = Proc() aggr = Aggr(p1, p2, p3, depends=False) aggr.starts = 'p1, p2' yield aggr, [aggr.p1], [aggr.p2] yield aggr, ['p1, p2'], []
def dataProvider_testDepends2(self): pDepends21 = Proc() pDepends22 = Proc() pDepends23 = Proc() pDepends24 = Proc() pDepends25 = Proc() aggr = Aggr(pDepends21, pDepends22, pDepends23) aggr.starts = [pDepends21, pDepends22] yield aggr, [pDepends24, pDepends25]
def dataProvider_testFlowchart(self): ''' / p3 --- \ p1 -- p2 \ / p8 \ \ p4 \ p7 p10 p6 / \ p9 p5 / ''' pFlowchart1 = Proc() pFlowchart2 = Proc() pFlowchart3 = Proc() pFlowchart4 = Proc() pFlowchart5 = Proc() pFlowchart6 = Proc() pFlowchart7 = Proc() pFlowchart8 = Proc() pFlowchart9 = Proc() pFlowchart10 = Proc() pFlowchart3.depends = pFlowchart2 pFlowchart6.depends = pFlowchart4, pFlowchart5 pFlowchart3.depends = pFlowchart2 pFlowchart4.depends = pFlowchart2 pFlowchart2.depends = pFlowchart1 pFlowchart10.depends = pFlowchart1 aAggr = Aggr(pFlowchart7, pFlowchart8, pFlowchart9) aAggr.starts = [aAggr.pFlowchart7] aAggr.pFlowchart8.depends = aAggr.pFlowchart7 aAggr.pFlowchart9.depends = aAggr.pFlowchart7 aAggr.depends2 = [pFlowchart3, pFlowchart6] dotfile = path.join(self.testdir, 'test.dot') fcfile = path.join(self.testdir, 'test.svg') yield [pFlowchart1, pFlowchart5], fcfile, dotfile, [ 'DEBUG', '* pFlowchart1 -> pFlowchart10', 'pFlowchart1 -> pFlowchart2 -> pFlowchart3 -> [aAggr]', '* pFlowchart1 -> pFlowchart2 -> pFlowchart4 -> pFlowchart6 -> [aAggr]', '* pFlowchart5 -> pFlowchart6 -> [aAggr]', 'INFO', 'Flowchart file saved to: %s' % fcfile, 'DOT file saved to: %s' % dotfile, ] yield [pFlowchart1, pFlowchart5], fcfile, None, [ 'DEBUG', '* pFlowchart1 -> pFlowchart10', 'pFlowchart1 -> pFlowchart2 -> pFlowchart3 -> [aAggr]', '* pFlowchart1 -> pFlowchart2 -> pFlowchart4 -> pFlowchart6 -> [aAggr]', '* pFlowchart5 -> pFlowchart6 -> [aAggr]', 'INFO', 'Flowchart file saved to: %s' % fcfile, 'DOT file saved to: %s' % dotfile, ]
def dataProvider_testCopy(self): pCopy1 = Proc() pCopy2 = Proc() pCopy3 = Proc() pCopy4 = Proc() aggr = Aggr(pCopy1, pCopy2, pCopy3) aggr.depends = [pCopy4] yield aggr, 'newtag', True, 'newid' yield aggr, None, True, None yield aggr, None, False, None yield aggr, aggr.pCopy1.tag, False, None, False, False, AggrCopyError, 'Cannot copy process with same id and tag: \'pCopy1.%s\'' % aggr.pCopy1.tag aggr1 = Aggr(pCopy1, pCopy2, pCopy3, depends=False) aggr1.starts = [aggr1.pCopy1, aggr1.pCopy2] aggr1.pCopy3.depends = aggr1.starts aggr1.module('qc', lambda a: True, lambda a: False) yield aggr1, None, True, None, True, True
def dataProvider_testAny2Procs(self): pAny2Procs1 = Proc() pAny2Procs2 = Proc() pAny2Procs3 = Proc() pAny2Procs4 = Proc() pAny2Procs51 = Proc(tag='51', id='pAny2Procs5') pAny2Procs52 = Proc(tag='52', id='pAny2Procs5') pAny2Procs6 = Proc() pAny2Procs7 = Proc() aAggr = Aggr(pAny2Procs6, pAny2Procs7) aAggr.starts = [aAggr.pAny2Procs6, aAggr.pAny2Procs7] yield [pAny2Procs1], [pAny2Procs1] yield ['abc'], [], PyPPLProcFindError, 'Failed to find process' yield [aAggr], [aAggr.pAny2Procs6, aAggr.pAny2Procs7] yield ['pAny2Procs5'], [pAny2Procs51, pAny2Procs52] yield ['pAny2Procs5.51'], [pAny2Procs51] yield ['pAny2Procs1.notag'], [pAny2Procs1] yield ['pAny2Procs5', aAggr, [pAny2Procs2, 'pAny2Procs1.notag']], [ pAny2Procs51, pAny2Procs52, pAny2Procs1, pAny2Procs2, aAggr.pAny2Procs6, aAggr.pAny2Procs7 ]
pSimRead, pBedGetfasta, pMotifScan, depends = False ) # defaults aTfbsTfP.pPromoters.runner = 'local' delegate aTfbsTfP.delegate('args.up' , 'pPromoters') aTfbsTfP.delegate('args.down' , 'pPromoters') aTfbsTfP.delegate('args.genome' , 'pPromoters') aTfbsTfP.delegate('args.ref' , 'pBedGetfasta') aTfbsTfP.delegate('args.pval' , 'pMotifScan') aTfbsTfP.delegate('args.tfmotifs', 'pMotifScan') # depends aTfbsTfP.starts = aTfbsTfP.pTFs, aTfbsTfP.pPromoters, aTfbsTfP.pTFList aTfbsTfP.ends = aTfbsTfP.pMotifScan aTfbsTfP.pMotifScan.depends = aTfbsTfP.pSimRead, aTfbsTfP.pBedGetfasta aTfbsTfP.pBedGetfasta.depends = aTfbsTfP.pPromoters aTfbsTfP.pSimRead.depends = aTfbsTfP.pTFList, aTfbsTfP.pTFs # input aTfbsTfP.pTFList.input = [params.tflist.value] # input size of either pTFs or pTFList should be 1 aTfbsTfP.pSimRead.input = lambda ch1, ch2: [ch1.repRow(l).cbind(ch2.repRow(l)).flatten() for l in [max(ch1.length(), ch2.length())]] aTfbsTfP.pMotifScan.input = lambda ch1, ch2: [ch1.repRow(l).cbind(ch2.repRow(l)) for l in [max(ch1.length(), ch2.length())]][0] # args aTfbsTfP.pBedGetfasta.args.params.name = True aTfbsTfP.pTFList.args.params.k = 2 aTfbsTfP.pSimRead.args.match = 'lambda line1, line2: -1 if line1[1] == line2[0] else 0 if line1[1] < line2[0] else 1' aTfbsTfP.pSimRead.args.do = 'lambda line1, line2: fout.write("\\t".join(line1) + "\\n")'
def testSetGetAttr(self): pGetAttr1 = Proc() pGetAttr2 = Proc() pGetAttr3 = Proc() pGetAttr4 = Proc() pGetAttr5 = Proc() pGetAttr1.args.params = Box(inopts=Box()) pGetAttr2.args.params = Box(inopts=Box()) pGetAttr3.args.params = Box(inopts=Box()) pGetAttr4.args.params = Box(inopts=Box()) pGetAttr5.args.params = Box(inopts=Box()) aggr = Aggr(pGetAttr1, pGetAttr2, pGetAttr3, pGetAttr4, pGetAttr5, depends=False) # nothing delegated yet self.assertDictEqual( { 'input': ['starts'], 'depends': ['starts'], 'exdir': ['ends'], 'exhow': ['ends'], 'expart': ['ends'], 'exow': ['ends'] }, aggr._delegates) # but when starts and ends changed aggr.starts = [aggr.pGetAttr1, aggr.pGetAttr2] aggr.ends = [aggr.pGetAttr5] self.assertDictEqual( { 'input': ['starts'], 'depends': ['starts'], 'exdir': ['ends'], 'exhow': ['ends'], 'expart': ['ends'], 'exow': ['ends'] }, aggr._delegates) # delegate a short attribute aggr.delegate('forks', [aggr.pGetAttr2, aggr.pGetAttr3]) aggr.forks = 10 # only 2, 3 changed self.assertListEqual([p.forks for p in aggr._procs.values()], [1, 10, 10, 1, 1]) # change the specific procs aggr['pGetAttr2', 'pGetAttr4'].forks = 5 self.assertListEqual([p.forks for p in aggr._procs.values()], [1, 10, 10, 5, 1]) # fix an attribute aggr.pGetAttr3.runner = 'dry' aggr.runner = 'sge' self.assertListEqual( [p.config['runner'] for p in aggr._procs.values()], ['sge', 'sge', 'dry', 'sge', 'sge']) # set input self.assertRaises(AggrAttributeError, setattr, aggr, 'input', 1) aggr.input = [1, 2] self.assertListEqual([p.config['input'] for p in aggr._procs.values()], [1, 2, '', '', '']) # reverse it aggr.input = ['', ''] aggr.input2 = [1, 2] self.assertListEqual([p.config['input'] for p in aggr._procs.values()], [[1, 2], [1, 2], '', '', '']) aggr[3].input = 'i3' self.assertListEqual([p.config['input'] for p in aggr._procs.values()], [[1, 2], [1, 2], '', 'i3', '']) # not suppose to do this # aggr.input2[2] = ['a', 'b'] #self.assertListEqual([p.config['input'] for p in aggr._procs.values()], [[1,2], [1,2], ['a', 'b'], 'i3', '']) # similar for depends #self.assertRaises(AggrAttributeError, setattr, aggr, 'depends', 1) aggr.depends = [pGetAttr1, pGetAttr2] self.assertListEqual([p.depends for p in aggr._procs.values()], [[pGetAttr1], [pGetAttr2], [], [], []]) # reverse it aggr.depends = [[], []] aggr.depends2 = [pGetAttr1, pGetAttr2] self.assertListEqual( [p.depends for p in aggr._procs.values()], [[pGetAttr1, pGetAttr2], [pGetAttr1, pGetAttr2], [], [], []]) # set attributes of certain processes aggr[0].args.params = Box(inopts=Box(a=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(a=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr[:2].args.params = Box(inopts=Box(b=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(b=1))), Box(params=Box(inopts=Box(b=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr[1, 2].args.params = Box(inopts=Box(c=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(b=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) # using proc ids aggr['pGetAttr1'].args.params = Box(inopts=Box(d=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(d=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr['pGetAttr1', 'pGetAttr3'].args.params = Box(inopts=Box(e=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(e=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box(e=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr['pGetAttr1, pGetAttr3'].args.params = Box(inopts=Box(f=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(f=1))), Box(params=Box(inopts=Box(c=1))), Box(params=Box(inopts=Box(f=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr['starts'].args.params = Box(inopts=Box(g=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(f=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box())), ]) aggr['ends'].args.params = Box(inopts=Box(h=1)) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(f=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box(h=1))), ]) aggr.delegate('args.params.inopts', 'pGetAttr3') aggr.args['params'].inopts = Box(n=1) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(n=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box(h=1))), ]) aggr.args.params['inopts'] = Box(m=1) self.assertListEqual([p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(g=1))), Box(params=Box(inopts=Box(m=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box(h=1))), ]) aggr[0].args.params.inopts = Box(z=1) # remeber at line 453, inopts refers to the same Box() object, so both pGetAttr1 and 3 will change self.assertListEqual( [p.args for p in aggr._procs.values()], [ Box(params=Box(inopts=Box(z=1))), Box(params=Box(inopts=Box(z=1))), # <-- not g Box(params=Box(inopts=Box(m=1))), Box(params=Box(inopts=Box())), Box(params=Box(inopts=Box(h=1))), ]) aggr.args.params.inopts.cnames = True self.assertListEqual( [p.args.params.inopts for p in aggr._procs.values()], [ Box(z=1), Box(z=1), Box(m=1, cnames=True), Box(), Box(h=1), ]) # something undelegated aggr.tag = 'abc' self.assertListEqual([p.tag for p in aggr._procs.values()], ['abc'] * 5) del aggr._delegates['args.params.inopts'] aggr.delegate('args', 'pGetAttr4') aggr.args.params.inopts.rnames = True self.assertListEqual( [p.args.params.inopts for p in aggr._procs.values()], [ Box(z=1), Box(z=1), Box(m=1, cnames=True), Box(rnames=True), Box(h=1), ])
pCNVkitHeatmap, # all tumor samples , in: cnfiles , out: plots pCNVkitReport, # each tumor sample , in: cnr, cns , out: reports pCNVkit2Vcf, # each tumor sample , in: callcns , out: vcf, depends=False) # defaults aBam2SCNV.pBamDir.runner = 'local' aBam2SCNV.pSampleInfo.runner = 'local' # delegates aBam2SCNV.delegate('args.ref', 'pCNVkitPrepare, pCNVkitRef') aBam2SCNV.delegate( 'args.cnvkit', 'pCNVkitRef, pCNVkitFix, pCNVkitSeg, pCNVkitCall, pCNVkitScatter, pCNVkitDiagram, pCNVkitHeatmap, pCNVkitReport, pCNVkit2Vcf' ) aBam2SCNV.delegate('args.nthread', 'pCNVkitCov, pCNVkitSeg') # depends aBam2SCNV.starts = aBam2SCNV.pBamDir, aBam2SCNV.pSampleInfo aBam2SCNV.ends = aBam2SCNV.pCNVkit2Vcf aBam2SCNV.pCNVkitPrepare.depends = aBam2SCNV.pBamDir, aBam2SCNV.pSampleInfo aBam2SCNV.pCNVkitCov.depends = aBam2SCNV.pBamDir, aBam2SCNV.pSampleInfo, aBam2SCNV.pCNVkitPrepare aBam2SCNV.pCNNDir.depends = aBam2SCNV.pCNVkitCov aBam2SCNV.pCNVkitRef.depends = aBam2SCNV.pCNNDir, aBam2SCNV.pSampleInfo aBam2SCNV.pCNVkitFix.depends = aBam2SCNV.pCNNDir, aBam2SCNV.pSampleInfo, aBam2SCNV.pCNVkitRef aBam2SCNV.pCNVkitSeg.depends = aBam2SCNV.pCNVkitFix aBam2SCNV.pCNVkitCall.depends = aBam2SCNV.pCNVkitSeg aBam2SCNV.pCNVkit2Vcf.depends = aBam2SCNV.pCNVkitCall # input aBam2SCNV.pCNVkitPrepare.input = lambda ch_bamdir, ch_saminfo: [ Channel.create(SampleInfo(ch_saminfo.get()).toChannel(ch_bamdir.get())). unique().flatten() ] aBam2SCNV.pCNVkitCov.input = lambda ch_bamdir, ch_saminfo, ch_target: \
aExpDir2Deg @description: From expfiles to degs with sample info file. @depends: ``` pExprDir2Matrix[*] \ pRNASeqDEG[!] pSampleInfo[*] / ``` """ aExpDir2Deg = Aggr(pExprDir2Matrix, pFile2Proc.copy(id='pSampleInfo'), pRNASeqDEG, depends=False) # Dependences aExpDir2Deg.starts = aExpDir2Deg.pExprDir2Matrix, aExpDir2Deg.pSampleInfo aExpDir2Deg.ends = aExpDir2Deg.pRNASeqDEG aExpDir2Deg.pRNASeqDEG.depends = aExpDir2Deg.pExprDir2Matrix, aExpDir2Deg.pSampleInfo # Input aExpDir2Deg.pRNASeqDEG.input = lambda ch1, ch2: \ ch1.colAt(0).repRow(ch2.length()).cbind(ch2.repRow(ch1.length())) # Args aExpDir2Deg.pExprDir2Matrix.args.boxplot = True aExpDir2Deg.pExprDir2Matrix.args.heatmap = True aExpDir2Deg.pExprDir2Matrix.args.histplot = True aExpDir2Deg.pRNASeqDEG.args.maplot = True aExpDir2Deg.pRNASeqDEG.args.heatmap = True """ @name: aExpDir2DegGSEA @description:
def dataProvider_testRun(self): ''' / p3 --- \ p1 -- p2 \ / p8 \ \ p4 \ p7 p10 p6 / \ p9 p5 / ''' pRun0 = Proc() pRun1 = pRun0.copy() pRun2 = Proc() pRun3 = Proc() pRun4 = Proc() pRun5 = Proc() pRun6 = Proc() pRun7 = Proc() pRun8 = Proc() pRun9 = Proc() pRun10 = Proc() pRun3.depends = pRun2 pRun6.depends = pRun4, pRun5 pRun3.depends = pRun2 pRun4.depends = pRun2 pRun2.depends = pRun1 pRun10.depends = pRun1 aAggr = Aggr(pRun7, pRun8, pRun9) aAggr.starts = [aAggr.pRun7] aAggr.pRun8.depends = aAggr.pRun7 aAggr.pRun9.depends = aAggr.pRun7 aAggr.depends2 = [pRun3, pRun6] yield [pRun1, pRun5], 'profile', 'sge', [ '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun1 (pRun0): No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun2: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun3: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun4: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun5: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun6: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun10: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun7.5gPF@aAggr: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun8.5gPF@aAggr: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', 'pRun9.5gPF@aAggr: No description.', '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', ] # pRun21 -> pRun22 # pRun23 -/ # \-> pRun24 pRun21 = Proc() pRun23 = Proc() pRun22 = Proc() pRun22.depends = pRun21, pRun23 yield [pRun21], 'profile', 'local', [ "pRun22 won't run as path can't be reached: pRun22 <- pRun23" ]