Skip to content

Commit

Permalink
Do not reread already loaded projectables.
Browse files Browse the repository at this point in the history
Signed-off-by: Martin Raspaud <martin.raspaud@smhi.se>
  • Loading branch information
mraspaud committed Jun 22, 2015
1 parent 790990c commit 38cbf9d
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions mpop/scene.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ def read_composites_config(self, composite_config=None, sensor=None, names=None,
if not names and options["name"] not in names:
continue

# FIXME: this warns also when rereading a composite.
if options["name"] in self.products:
LOG.warning("Duplicate composite found, previous composite '%s' will be overwritten",
options["name"])
Expand Down Expand Up @@ -425,7 +426,9 @@ def read(self, *projectable_keys, **kwargs):
for reader_name, reader_instance in self.readers.items():
for key in projectable_keys:
try:
projectable_names.add(reader_instance.get_channel(key)["name"])
projectable_name = reader_instance.get_channel(key)["name"]
if not projectable_name in self.projectables or not self.projectables[projectable_name].is_loaded():
projectable_names.add(projectable_name)
except KeyError:
projectable_names.add(key)
LOG.debug("Can't find channel %s in reader %s", str(key), reader_name)
Expand All @@ -446,13 +449,16 @@ def read(self, *projectable_keys, **kwargs):

# Don't include any of the 'unknown' projectable names
projectable_names = set(projectable_names) - composite_names
composites_needed = set(self.products.keys())
composites_needed = set(composite for composite in self.products.keys()
if composite not in self.projectables or not self[composite].is_loaded())

for reader_name, reader_instance in self.readers.items():
all_reader_channels = set(reader_instance.channel_names)

# compute the dependencies to load from file
needed_bands = all_reader_channels & projectable_names
needed_bands = set(band for band in needed_bands
if band not in self.projectables or not self[band].is_loaded())
while composites_needed:
for band in composites_needed.copy():
needed_bands |= set(reader_instance.get_channel(prereq)["name"]
Expand Down

0 comments on commit 38cbf9d

Please sign in to comment.