Source code for galaxy.datatypes.ngsindex

"""
NGS indexes
"""

import logging
import os

from galaxy.datatypes.protocols import (
    DatasetProtocol,
    HasExtraFilesAndMetadata,
)
from galaxy.util import UNKNOWN
from .metadata import MetadataElement
from .text import Html

log = logging.getLogger(__name__)


[docs]class BowtieIndex(Html): """ base class for BowtieIndex is subclassed by BowtieColorIndex and BowtieBaseIndex """ MetadataElement( name="base_name", desc="base name for this index set", default="galaxy_generated_bowtie_index", set_in_upload=True, readonly=True, ) MetadataElement( name="sequence_space", desc="sequence_space for this index set", default=UNKNOWN, set_in_upload=True, readonly=True, ) 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 """ return "<html><head></head><body>AutoGenerated Primary File for Composite Dataset</body></html>"
[docs] def regenerate_primary_file(self, dataset: DatasetProtocol) -> None: """ cannot do this until we are setting metadata """ bn = dataset.metadata.base_name flist = os.listdir(dataset.extra_files_path) rval = [ f"<html><head><title>Files for Composite Dataset {bn}</title></head><p/>Comprises the following files:<p/><ul>" ] for fname in flist: sfname = os.path.split(fname)[-1] rval.append(f'<li><a href="{sfname}">{sfname}</a>') rval.append("</ul></html>") with open(dataset.get_file_name(), "w") as f: f.write("\n".join(rval)) f.write("\n")
[docs] def set_peek(self, dataset: DatasetProtocol, **kwd) -> None: if not dataset.dataset.purged: dataset.peek = f"Bowtie index file ({dataset.metadata.sequence_space})" dataset.blurb = f"{dataset.metadata.sequence_space} space" 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 "Bowtie index file"
[docs]class BowtieColorIndex(BowtieIndex): """ Bowtie color space index """ MetadataElement( name="sequence_space", desc="sequence_space for this index set", default="color", set_in_upload=True, readonly=True, ) file_ext = "bowtie_color_index"
[docs]class BowtieBaseIndex(BowtieIndex): """ Bowtie base space index """ MetadataElement( name="sequence_space", desc="sequence_space for this index set", default="base", set_in_upload=True, readonly=True, ) file_ext = "bowtie_base_index"