Unverified Commit 10f9b3a4 authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #18283 from davelopez/24.0_fix_feature_location_index_data_provider

[24.0] Check various preconditions in FeatureLocationIndexDataProvider
parents 6901b1f3 da202e09
Loading
Loading
Loading
Loading
+43 −32
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ from galaxy.datatypes.util.gff_util import (
    GFFReaderWrapper,
    parse_gff_attributes,
)
from galaxy.exceptions import MessageException
from galaxy.model import DatasetInstance
from galaxy.visualization.data_providers.basic import BaseDataProvider
from galaxy.visualization.data_providers.cigar import get_ref_based_read_seq_and_cigar
@@ -106,9 +107,21 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
        self.converted_dataset = converted_dataset

    def get_data(self, query):
        if self.converted_dataset is None or not self.converted_dataset.is_ok:
            raise MessageException("The dataset is not available or is in an error state.")
        # Init.
        textloc_file = open(self.converted_dataset.get_file_name())
        line_len = int(textloc_file.readline())
        result = []
        with open(self.converted_dataset.get_file_name()) as textloc_file:
            line = textloc_file.readline()
            if not line:
                raise MessageException("The dataset is empty.")
            try:
                line_len = int(line)
            except ValueError:
                raise MessageException(f"Expected an integer at first line, but found: '{line}'")
            if line_len < 1:
                raise MessageException(f"The first line must be a positive integer, but found: {line_len}")

            file_len = os.path.getsize(self.converted_dataset.get_file_name())
            query = query.lower()

@@ -133,7 +146,6 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
            textloc_file.seek(position)

            # At right point in file, generate hits.
        result = []
            while True:
                line = textloc_file.readline()
                if not line.startswith(query):
@@ -142,7 +154,6 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
                    line = line[:-1]
                result.append(line.split()[1:])

        textloc_file.close()
        return result