'Display a circster visualization.'

@web.expose
def circster(self, trans, id=None, hda_ldda=None, dataset_id=None, dbkey=None):

    dataset = None
    if dataset_id:
        dataset = self.get_hda_or_ldda(trans, hda_ldda, dataset_id)
    if id:
        vis = self.get_visualization(trans, id, check_ownership=False, check_accessible=True)
        dbkey = vis.dbkey
    else:
        if (not dbkey):
            dbkey = dataset.dbkey
            if ((not dbkey) or (dbkey == '?')):
                return trans.show_error_message("You    must    set    the    dataset's    dbkey    to    view    it.    You    can    set    a    dataset's    dbkey    by    clicking    on    the    pencil    icon    and    editing    its    attributes.", use_panels=True)
        vis = self.create_visualization(trans, type='genome', dbkey=dbkey, save=False)
    viz_config = self.get_visualization_config(trans, vis)
    if dataset:
        viz_config['tracks'].append(self.get_new_track_config(trans, dataset))
    chroms_info = self.app.genomes.chroms(trans, dbkey=dbkey)
    genome = {'dbkey': dbkey, 'chroms_info': chroms_info}
    tracks = viz_config.get('tracks', [])
    for track in tracks:
        dataset_dict = track['dataset']
        dataset = self.get_hda_or_ldda(trans, dataset_dict['hda_ldda'], dataset_dict['id'])
        genome_data = self._get_genome_data(trans, dataset, dbkey)
        if (not isinstance(genome_data, string_types)):
            track['preloaded_data'] = genome_data
    app = {'jscript': 'viz/circster', 'viz_config': viz_config, 'genome': genome}
    return trans.fill_template('galaxy.panels.mako', config={'app': app})
