EmuKit / emukit

A Python-based toolbox of various methods in decision making, uncertainty quantification and statistical emulation: multi-fidelity, experimental design, Bayesian optimisation, Bayesian quadrature, etc.
https://emukit.github.io/emukit/
Apache License 2.0
591 stars 128 forks source link

Importing GpyModelWrapper gives error #214

Closed apaleyes closed 5 years ago

apaleyes commented 5 years ago

In a completely clean environment I've tried to install emukit and run an intro code. And run into this error. It needs to be fixed, we shouldn't be requiring optional dependencies to run our intro code.

>>> import emukit
>>> import numpy as np
>>> import GPy
>>>
>>> from emukit.model_wrappers import GPyModelWrapper
Traceback (most recent call last):
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/model_free/latin_design.py", line 7, in <module>
    import pyDOE
ModuleNotFoundError: No module named 'pyDOE'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/model_wrappers/__init__.py", line 5, in <module>
    from .gpy_model_wrappers import GPyModelWrapper, GPyMultiOutputWrapper  # noqa: F401
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/model_wrappers/gpy_model_wrappers.py", line 11, in <module>
    from ..experimental_design.interfaces import ICalculateVarianceReduction
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/__init__.py", line 5, in <module>
    from .model_free.latin_design import LatinDesign  # noqa: F401
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/model_free/latin_design.py", line 9, in <module>
    raise ImportError('pyDOE needs to be installed in order to use latin design')
ImportError: pyDOE needs to be installed in order to use latin design
>>> from emukit.experimental_design.model_based.experimental_design_loop import ExperimentalDesignLoop
Traceback (most recent call last):
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/model_free/latin_design.py", line 7, in <module>
    import pyDOE
ModuleNotFoundError: No module named 'pyDOE'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/__init__.py", line 5, in <module>
    from .model_free.latin_design import LatinDesign  # noqa: F401
  File "/home/ec2-user/.local/lib/python3.7/site-packages/emukit/experimental_design/model_free/latin_design.py", line 9, in <module>
    raise ImportError('pyDOE needs to be installed in order to use latin design')
ImportError: pyDOE needs to be installed in order to use latin design
mmahsereci commented 5 years ago

This seems to be less a problem of the GPy wrapper but of the latin hypercube design in the experimental design package.

apaleyes commented 5 years ago

@mmahsereci correct, specifically with the way we import it. see my PR for some details

apaleyes commented 5 years ago

fix is merged now