| import importlib |
| from models.base_model import BaseModel |
|
|
|
|
| def find_model_using_name(model_name): |
| |
| |
| |
| model_filename = "models." + model_name + "_model" |
| modellib = importlib.import_module(model_filename) |
|
|
| |
| |
| |
| model = None |
| target_model_name = model_name.replace('_', '') + 'model' |
| for name, cls in modellib.__dict__.items(): |
| if name.lower() == target_model_name.lower() \ |
| and issubclass(cls, BaseModel): |
| model = cls |
|
|
| if model is None: |
| print("In %s.py, there should be a subclass of BaseModel with class name that matches %s in lowercase." % (model_filename, target_model_name)) |
| exit(0) |
|
|
| return model |
|
|
|
|
| def get_option_setter(model_name): |
| model_class = find_model_using_name(model_name) |
| return model_class.modify_commandline_options |
|
|
|
|
| def create_model(opt): |
| model = find_model_using_name(opt.model) |
| instance = model() |
| instance.initialize(opt) |
| print("model [%s] was created" % (instance.name())) |
| return instance |
|
|