@files( [ (PARAMS["%s_merge" % x], "%s.gtf.gz" % x) for x in P.asList(PARAMS["merge"])] +\
            [ (EXPERIMENTAL_TRACKS, PARAMS["merged"] ) ] )
def buildMergedTracks( infiles, outfile ):

    infiles = " ".join(infiles)
    statement = '''
	zcat %(infiles)s 
        | python %(scriptsdir)s/gff2psl.py 
                 --log=%(outfile)s.log 
                 --is-gtf 
                 --allow-duplicates 
	| python %(scriptsdir)s/psl2psl.py 
                 --log=%(outfile)s.log 
                 --method=rename-query 
                 --unique 
                 --output-filename-map=%(outfile)s.id2new 
	| sort -k 14,14 -k16,16n 
        | %(cmd-farm)s
		--split-at-column=14 
		--output-header 
		--renumber="M%%06i" 
		--renumber-column=":id" 
		--log=%(outfile)s.log 
		--subdirs 
		--max-files=60 
	"python %(scriptsdir)s/psl2assembly.py 
		--method=locus 
		--threshold-merge-distance=0 
		--threshold-merge-overlap=1 
		--staggered=all 
		--log=%(outfile)s.log 
		--genome=genome 
		--output-filename-pattern=%%DIR%%%(outfile)s.%%s" 
	> %(outfile)s.new2locus
    '''
    P.run()

    statement = '''
	python %(scriptsdir)s/psl2gff.py 
		--log=%(outfile)s.log 
		--as-gtf
	< %(outfile)s.locus.psl 
        | gzip
        > %(outfile)s
    '''
    P.run()

###################################################################
###################################################################
Create and return a callback and a list populated with call args
dataset/ETHPy150Open CGATOxford/cgat/obsolete/pipeline_kamilah.py/buildMergedTracks--crossover with--dataset/ETHPy150Open aws/aws-cli/tests/unit/customizations/cloudtrail/test_validation.py/collecting_callback