def execute(cls, choices, galaxyFn=None, username=''):
        '''
        Is called when execute-button is pushed by web-user. Should print
        output as HTML to standard out, which will be directed to a results page
        in Galaxy history. If getOutputFormat is anything else than HTML, the
        output should be written to the file with path galaxyFn. If needed,
        StaticFile can be used to get a path where additional files can be put
        (e.g. generated image files). choices is a list of selections made by
        web-user in each options box.
        '''

        genome = choices.genome

        trackChoice = choices.history if choices.source == 'history' else choices.track
        trackName = trackChoice.split(':')

        if ExternalTrackManager.isGalaxyTrack(trackName):
            geSource = ExternalTrackManager.getGESourceFromGalaxyOrVirtualTN(
                trackName, genome)
            if not geSource.hasOrigFile():  #hbfunction
                stdTrackName = ExternalTrackManager.getStdTrackNameFromGalaxyTN(
                    trackName)
                ExternalTrackManager.renameExistingStdTrackIfNeeded(
                    genome, stdTrackName)
                geSource = FullTrackGenomeElementSource(genome,
                                                        stdTrackName,
                                                        allowOverlaps=False)
        else:
            try:
                geSource = FullTrackGenomeElementSource(genome,
                                                        trackName,
                                                        allowOverlaps=True)
                for ge in geSource:
                    break
            except:
                geSource = FullTrackGenomeElementSource(genome,
                                                        trackName,
                                                        allowOverlaps=False)

        threshold = float(choices.threshold)
        rule = RULE_DICT[choices.rule]

        composerCls = getComposerClsFromFileFormatName(choices.format)
        geModifier = GEValueThresholder(geSource, genome, threshold, rule)
        if choices.merge == 'Yes':
            if not geModifier.isSorted():
                geModifier = GenomeElementSorter(geModifier)
            geModifier = GEAdjacencyClusterer_Segment(geModifier)

        composerCls(geModifier).composeToFile(galaxyFn, ignoreEmpty=True)