  
          self._camera_matrix = self._get_camera_matrix()
          self._rotation, self._translation = self._solve_pnp(landmarks)
          self._offset = self._get_offset()
          self._pitch_yaw: Tuple[int, int] = (0, 0)
  
      @property
      def xyz_2d(self) -> np.ndarray:
          """ :class:`numpy.ndarray` projected (x, y) coordinates for each x, y, z point at a
          constant distance from adjusted center of the skull (0.5, 0.5) in the 2D space. """
 
</s> remove     def _get_pitch_yaw(self) -> None:
        """ Obtain the yaw and pitch from the :attr:`_rotation` in eular angles. """
 </s> add     @property
    def roll(self) -> float:
        """ float: The roll of the aligned face in eular angles """
        if not any(self._pitch_yaw_roll):
            self._get_pitch_yaw_roll()
        return self._pitch_yaw_roll[2]

    def _get_pitch_yaw_roll(self) -> None:
        """ Obtain the yaw, roll and pitch from the :attr:`_rotation` in eular angles. """ </s> remove         if not any(self._pitch_yaw):
            self._get_pitch_yaw()
        return self._pitch_yaw[1]
 </s> add         if not any(self._pitch_yaw_roll):
            self._get_pitch_yaw_roll()
        return self._pitch_yaw_roll[1] </s> remove         self._pitch_yaw = (euler[0][0], euler[1][0])
        logger.trace("yaw_pitch: %s", self._pitch_yaw)  # type: ignore
 </s> add         self._pitch_yaw_roll = cast(Tuple[float, float, float], tuple(euler.squeeze()))
        logger.trace("yaw_pitch: %s", self._pitch_yaw_roll)  # type: ignore </s> remove         if not any(self._pitch_yaw):
            self._get_pitch_yaw()
        return self._pitch_yaw[0]
 </s> add         if not any(self._pitch_yaw_roll):
            self._get_pitch_yaw_roll()
        return self._pitch_yaw_roll[0] </s> remove     "yaw", "pitch", "hist", "hist-dissim", "color-black", "color-gray", "color-luma",
 </s> add     "yaw", "pitch", "roll", "hist", "hist-dissim", "color-black", "color-gray", "color-luma",
        self._pitch_yaw_roll: Tuple[float, float, float] = (0, 0, 0)
  
          self._camera_matrix = self._get_camera_matrix()
          self._rotation, self._translation = self._solve_pnp(landmarks)
          self._offset = self._get_offset()
        self._pitch_yaw_roll: Tuple[float, float, float] = (0, 0, 0)
  
      @property
      def xyz_2d(self) -> np.ndarray:
          """ :class:`numpy.ndarray` projected (x, y) coordinates for each x, y, z point at a
          constant distance from adjusted center of the skull (0.5, 0.5) in the 2D space. """
keep keep keep keep replace keep keep keep keep keep
 sort tool: Add sort by roll 
lib/align/aligned_face.py