"""
Datatype classes for tracks/track views within galaxy.
"""
import logging
from galaxy.datatypes.protocols import (
DatasetProtocol,
HasExtraFilesAndMetadata,
)
from galaxy.datatypes.text import Html
from . import binary
log = logging.getLogger(__name__)
# GeneTrack is no longer supported but leaving the datatype since
# files of this type may still exist
[docs]class GeneTrack(binary.Binary):
edam_data = "data_3002"
edam_format = "format_2919"
file_ext = "genetrack"
[docs]class UCSCTrackHub(Html):
"""
Datatype for UCSC TrackHub
"""
file_ext = "trackhub"
composite_type = "auto_primary_file"
[docs] def generate_primary_file(self, dataset: HasExtraFilesAndMetadata) -> str:
"""
This is called only at upload to write the html file
cannot rename the datasets here - they come with the default unfortunately
"""
rval = [
f"<html><head><title>Files for Composite Dataset ({self.file_ext})</title></head><p/>\
This composite dataset is composed of the following files:<p/><ul>"
]
for composite_name, composite_file in self.get_composite_files(dataset=dataset).items():
opt_text = ""
if composite_file.optional:
opt_text = " (optional)"
rval.append(f'<li><a href="{composite_name}">{composite_name}</a>{opt_text}')
rval.append("</ul></html>")
return "\n".join(rval)
[docs] def set_peek(self, dataset: DatasetProtocol, **kwd) -> None:
if not dataset.dataset.purged:
dataset.peek = "Track Hub structure: Visualization in UCSC Track Hub"
else:
dataset.peek = "file does not exist"
dataset.blurb = "file purged from disk"
[docs] def display_peek(self, dataset: DatasetProtocol) -> str:
try:
return dataset.peek
except Exception:
return "Track Hub structure: Visualization in UCSC Track Hub"
[docs] def sniff(self, filename: str) -> bool:
return False