code: def _create_initial_epsf(self, stars):
          
  
          oversampling = self.oversampling
          shape = self.shape
  
          # define the ePSF shape
          if shape is not None:
              shape = np.atleast_1d(shape).astype(int)
              if len(shape) == 1:
                  shape = np.repeat(shape, 2)
          else:
              x_shape = np.int(np.ceil(stars._max_shape[1] *
                                       oversampling[0]))
              y_shape = np.int(np.ceil(stars._max_shape[0] *
                                       oversampling[1]))
              shape = np.array((y_shape, x_shape))
  
          # ensure odd sizes
          shape = [(i + 1) if i % 2 == 0 else i for i in shape]
  
          data = np.zeros(shape, dtype=np.float)
          xcenter = (shape[1] - 1) / 2.
          ycenter = (shape[0] - 1) / 2.
  
          epsf = EPSFModel(data=data, origin=(xcenter, ycenter),
                           normalize=False, oversampling=oversampling)
  
          return epsf
docs: Create an initial `EPSFModel` object.
  
          The initial ePSF data are all zeros.
  
          If ``shape`` is not specified, the shape of the ePSF data array
          is determined from the shape of the input ``stars`` and the
          oversampling factor.  If the size is even along any axis, it
          will be made odd by adding one.  The output ePSF will always
          have odd sizes along both axes to ensure a central pixel.
  
          Parameters
          ----------
          stars : `EPSFStars` object
              The stars used to build the ePSF.
  
          Returns
          -------
          epsf : `EPSFModel`
              The initial ePSF model.