code: def _find_reader_dataset(self, dataset_key, **dfilter):
          
          too_many = False
          for reader_name, reader_instance in self.readers.items():
              try:
                  ds_id = reader_instance.get_dataset_key(dataset_key, **dfilter)
              except TooManyResults:
                  LOG.trace("Too many datasets matching key {} in reader {}".format(dataset_key, reader_name))
                  too_many = True
                  continue
              except KeyError:
                  LOG.trace("Can't find dataset %s in reader %s", str(dataset_key), reader_name)
                  continue
              LOG.trace("Found {} in reader {} when asking for {}".format(str(ds_id), reader_name, repr(dataset_key)))
              try:
                  # now that we know we have the exact DatasetID see if we have already created a Node for it
                  return self.getitem(ds_id)
              except KeyError:
                  # we haven't created a node yet, create it now
                  return Node(ds_id, {'reader_name': reader_name})
          if too_many:
              raise TooManyResults("Too many keys matching: {}".format(dataset_key))
docs: Attempt to find a `DatasetID` in the available readers.
  
          Args:
              dataset_key (str, float, DatasetID):
                  Dataset name, wavelength, or a combination of `DatasetID`
                  parameters to use in searching for the dataset from the
                  available readers.
              **dfilter (list or str): `DatasetID` parameters besides `name`
                                       and `wavelength` to use to filter the
                                       available datasets. Passed directly to
                                       `get_dataset_key` of the readers, see
                                       that method for more information.