diff --git a/client/galaxy/scripts/viz/trackster.js b/client/galaxy/scripts/viz/trackster.js index fb79cd0313f..a1ee47b9ef7 100644 --- a/client/galaxy/scripts/viz/trackster.js +++ b/client/galaxy/scripts/viz/trackster.js @@ -154,7 +154,12 @@ export class TracksterUI extends Backbone.Model { icon_class: "globe", title: _l("Circster"), on_click: () => { - window.top.location = `${this.baseURL}visualization/circster?id=${this.view.vis_id}`; + const vis_id = this.view.vis_id; + var circster_q = "id=" + vis_id; + if (vis_id == undefined) { + circster_q = `dataset_id=${this.view.drawables[0].dataset.id}&hda_ldda=${this.view.drawables[0].dataset.attributes.hda_ldda}`; + } + window.top.location = `${this.baseURL}visualization/circster?${circster_q}`; } }, { diff --git a/lib/galaxy/datatypes/dataproviders/dataset.py b/lib/galaxy/datatypes/dataproviders/dataset.py index 7fec74ee4b5..1e824b8de84 100644 --- a/lib/galaxy/datatypes/dataproviders/dataset.py +++ b/lib/galaxy/datatypes/dataproviders/dataset.py @@ -52,7 +52,8 @@ class DatasetDataProvider(base.DataProvider): self.dataset = dataset # this dataset file is obviously the source # TODO: this might be a good place to interface with the object_store... - super(DatasetDataProvider, self).__init__(open(dataset.file_name, 'rb')) + mode = 'rb' if dataset.datatype.is_binary else 'r' + super(DatasetDataProvider, self).__init__(open(dataset.file_name, mode)) # TODO: this is a bit of a mess @classmethod diff --git a/lib/galaxy/datatypes/interval.py b/lib/galaxy/datatypes/interval.py index c5f5095a92b..ffe6ff9e7d2 100644 --- a/lib/galaxy/datatypes/interval.py +++ b/lib/galaxy/datatypes/interval.py @@ -210,7 +210,7 @@ class Interval(Tabular): def as_ucsc_display_file(self, dataset, **kwd): """Returns file contents with only the bed data""" - with tempfile.NamedTemporaryFile(delete=False) as fh: + with tempfile.NamedTemporaryFile(delete=False, mode='w') as fh: c, s, e, t, n = dataset.metadata.chromCol, dataset.metadata.startCol, dataset.metadata.endCol, dataset.metadata.strandCol or 0, dataset.metadata.nameCol or 0 c, s, e, t, n = int(c) - 1, int(s) - 1, int(e) - 1, int(t) - 1, int(n) - 1 if t >= 0: # strand column (should) exists diff --git a/lib/galaxy/openid/openid_manager.py b/lib/galaxy/openid/openid_manager.py index 03a2a0f55f0..5bf59d33729 100644 --- a/lib/galaxy/openid/openid_manager.py +++ b/lib/galaxy/openid/openid_manager.py @@ -47,12 +47,12 @@ class OpenIDManager(object): def get_session(self, trans): session_file = os.path.join(self.session_path, str(trans.galaxy_session.id)) if not os.path.exists(session_file): - pickle.dump(dict(), open(session_file, 'w')) - return pickle.load(open(session_file)) + pickle.dump(dict(), open(session_file, 'wb')) + return pickle.load(open(session_file, 'rb')) def persist_session(self, trans, oidconsumer): session_file = os.path.join(self.session_path, str(trans.galaxy_session.id)) - pickle.dump(oidconsumer.session, open(session_file, 'w')) + pickle.dump(oidconsumer.session, open(session_file, 'wb')) def get_consumer(self, trans): return consumer.Consumer(self.get_session(trans), self.store) diff --git a/lib/galaxy/tools/data/__init__.py b/lib/galaxy/tools/data/__init__.py index 55f8d3be704..a643ce9a02b 100644 --- a/lib/galaxy/tools/data/__init__.py +++ b/lib/galaxy/tools/data/__init__.py @@ -353,7 +353,7 @@ class TabularToolDataTable(ToolDataTable, Dictifiable): # Handle URLs as files filename = file_element.get('url', None) if filename: - tmp_file = NamedTemporaryFile(prefix='TTDT_URL_%s-' % self.name) + tmp_file = NamedTemporaryFile(prefix='TTDT_URL_%s-' % self.name, mode='w') try: tmp_file.write(requests.get(filename, timeout=url_timeout).text) except Exception as e: diff --git a/lib/galaxy/visualization/data_providers/genome.py b/lib/galaxy/visualization/data_providers/genome.py index 1c964618912..1e06e82bcab 100644 --- a/lib/galaxy/visualization/data_providers/genome.py +++ b/lib/galaxy/visualization/data_providers/genome.py @@ -1223,11 +1223,11 @@ class BBIDataProvider(GenomeDataProvider): # Start with N samples. num_points = num_samples - step_size = (end - start) / num_points + step_size = (end - start) // num_points # Add additional points to sample in the remainder not covered by # the initial N samples. remainder_start = start + step_size * num_points - additional_points = (end - remainder_start) / step_size + additional_points = (end - remainder_start) // step_size num_points += additional_points result = summarize_region(bbi, chrom, start, end, num_points) @@ -1243,7 +1243,7 @@ class BBIDataProvider(GenomeDataProvider): class BigBedDataProvider(BBIDataProvider): def _get_dataset(self): # Nothing converts to bigBed so we don't consider converted dataset - f = open(self.original_dataset.file_name) + f = open(self.original_dataset.file_name, 'rb') return f, BigBedFile(file=f) @@ -1255,9 +1255,9 @@ class BigWigDataProvider(BBIDataProvider): def _get_dataset(self): if self.converted_dataset is not None: - f = open(self.converted_dataset.file_name) + f = open(self.converted_dataset.file_name, 'rb') else: - f = open(self.original_dataset.file_name) + f = open(self.original_dataset.file_name, 'rb') return f, BigWigFile(file=f) diff --git a/lib/galaxy/webapps/base/controller.py b/lib/galaxy/webapps/base/controller.py index 591aa1aafd4..efd2e44e291 100644 --- a/lib/galaxy/webapps/base/controller.py +++ b/lib/galaxy/webapps/base/controller.py @@ -904,11 +904,12 @@ class UsesVisualizationMixin(UsesLibraryMixinItems): bookmarks = unpack_bookmarks(config['bookmarks']) vis_rev.config = {"view": view_content, "bookmarks": bookmarks} # Viewport from payload - if 'viewport' in config: - chrom = config['viewport']['chrom'] - start = config['viewport']['start'] - end = config['viewport']['end'] - overview = config['viewport']['overview'] + viewport = config.get('viewport') + if viewport: + chrom = viewport['chrom'] + start = viewport['start'] + end = viewport['end'] + overview = viewport['overview'] vis_rev.config["viewport"] = {'chrom': chrom, 'start': start, 'end': end, 'overview': overview} else: # Default action is to save the config as is with no validation. @@ -1027,7 +1028,7 @@ class UsesVisualizationMixin(UsesLibraryMixinItems): tracks.append(pack_collection(drawable_dict)) config = {"title": visualization.title, - "vis_id": trans.security.encode_id(visualization.id), + "vis_id": trans.security.encode_id(visualization.id) if visualization.id is not None else None, "tracks": tracks, "bookmarks": bookmarks, "chrom": "", diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index d7d37f15608..7cd46c55d0b 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -7,6 +7,10 @@ import string import tempfile import zipfile from json import dumps +try: + from string import maketrans +except ImportError: + maketrans = str.maketrans from paste.httpexceptions import HTTPBadRequest, HTTPInternalServerError @@ -575,7 +579,7 @@ class LibraryDatasetsController(BaseAPIController, UsesVisualizationMixin, Libra if format in ['zip', 'tgz', 'tbz']: # error = False killme = string.punctuation + string.whitespace - trantab = string.maketrans(killme, '_' * len(killme)) + trantab = maketrans(killme, '_' * len(killme)) try: outext = 'zip' if format == 'zip':