class_docstr: This just creates a wrapper to call the function by appropriately creating bounds
  and querying appropriately. 
docstr: Constructor.
  func: takes an argument x which is a point in the domain.
  domain_bounds: are the bounds of the domain space
  vectorised: If True it means func can take multiple inputs and produce multiple
              outputs. If False, the functions can take only single inputs in
              'column' form.
docstr_tok: ["Constructor",".","func",":","takes","an","argument","x","which","is","a","point","in","the","domain",".","domain_bounds",":","are","the","bounds","of","the","domain","space","vectorised",":","If","True","it","means","func","can","take","multiple","inputs","and","produce","multiple","outputs",".","If","False",",","the","functions","can","take","only","single","inputs","in","'column","'","form","."]
code: def __init__(self, func, domain_bounds, vectorised=False):
      """Constructor.
      func: takes an argument x which is a point in the domain.
      domain_bounds: are the bounds of the domain space
      vectorised: If True it means func can take multiple inputs and produce multiple
                  outputs. If False, the functions can take only single inputs in
                  'column' form.
      """
      self.func = func
      self.domain_bounds = np.array(domain_bounds)
      self.domain_dim = len(domain_bounds)
      self.vectorised = vectorised
  
imports: from __future__ import division
  from functools import total_ordering
  from argparse import Namespace
  import numpy
  from .general_utils import map_to_bounds
label_desc: Use image node_id 1 to create a new DOOFunction object from inherited base classes: object with example: obj = DOOFunction(func, domain_bounds, vectorised)