                               centering, center, padding, roi)
                  self._cache["cropped_roi"][0][centering] = roi
          return self._cache["cropped_roi"][0][centering]
  
      def get_cropped_size(self, centering):
          """ Obtain the size of a cropped face from a full head centered image.
  
          Parameters
          ----------
          centering: ["legacy", "face"]
              The type of centering to obtain the region of interest for. "legacy" places the nose
              in the center of the image (the original method for aligning). "face" aligns for the
              nose to be in the center of the face (top to bottom) but the center of the skull for
              left to right.
  
          Returns
          -------
          int
             The pixel size of a sub-crop image from a full head aligned image
  
          Notes
          -----
          The ROI in relation to the source image is calculated by rounding the padding of one side
          to the nearest integer then applying this padding to the center of the crop, so the size
          is calculated in the same way.
          """
          if self._centering != "head":
              raise ValueError("Sub ROI can only be obtained from an aligned face with 'head' "
                               "centering")
          with self._cache["cropped_size"][1]:
              if not self._cache["cropped_size"][0].get(centering):
                  src_size = self.size - (self._size * _EXTRACT_RATIOS["head"])
                  size = 2 * int(np.rint(src_size / (1 - _EXTRACT_RATIOS[centering]) / 2))
                  logger.trace("centering: %s, size: %s, crop_size: %s", centering, self._size, size)
                  self._cache["cropped_size"][0][centering] = size
          return self._cache["cropped_size"][0][centering]
  
      def get_cropped_slices(self, centering):
          """ Obtain the slices to turn a full head extract into an alternatively centered extract.
  
          Parameters
          ----------
          centering: ["legacy", "face"]
 
</s> remove         Parameters
        ----------
        centering: ["legacy", "face"]
            The type of centering to obtain the region of interest for. "legacy" places the nose
            in the center of the image (the original method for aligning). "face" aligns for the
            nose to be in the center of the face (top to bottom) but the center of the skull for
            left to right.

 </s> add  </s> remove         if self._centering != "head":
            raise ValueError("Sub ROI can only be obtained from an aligned face with 'head' "
                             "centering")
 </s> add  </s> remove         src_size = self.size - (self._size * _EXTRACT_RATIOS[self._centering])
        head_size = 2 * int(np.rint(src_size / (1 - _EXTRACT_RATIOS["head"]) / 2))
        if head_size != image.shape[0]:
            interp = cv2.INTER_CUBIC if image.shape[0] < head_size else cv2.INTER_AREA
            image = cv2.resize(image, (head_size, head_size), interpolation=interp)

        # store requested size + centering whilst temporary converting to full head extract
        old_centering = self._centering
        old_size = self.size
        self._centering = "head"
        self._size = image.shape[0]

        # crop the requested centering from image
        size = self.get_cropped_size(old_centering)
        out = np.zeros((size, size, image.shape[-1]), dtype=image.dtype)
        slices = self.get_cropped_slices(old_centering)
 </s> add         logger.trace("head_size: %s, image_size: %s, target_size: %s",
                     self._head_size, image.shape[0], self.size)
        if self._head_size != image.shape[0]:
            interp = cv2.INTER_CUBIC if image.shape[0] < self._head_size else cv2.INTER_AREA
            image = cv2.resize(image, (self._head_size, self._head_size), interpolation=interp)

        out = np.zeros((self.size, self.size, image.shape[-1]), dtype=image.dtype)
        slices = self._get_cropped_slices() </s> remove         sub-cropped face to the correct centering, revers the sub crop and returns the cropped
 </s> add         sub-cropped face to the correct centering, reverse the sub crop and returns the cropped
    def _get_cropped_slices(self):
                               centering, center, padding, roi)
                  self._cache["cropped_roi"][0][centering] = roi
          return self._cache["cropped_roi"][0][centering]
  
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
    def _get_cropped_slices(self):
          """ Obtain the slices to turn a full head extract into an alternatively centered extract.
  
          Parameters
          ----------
          centering: ["legacy", "face"]
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Bugfix - Warp to landmarks 
lib/align/aligned_face.py