              dims = face["frame_dims"]
              r_mat = self.get_original_rotation_matrix(dims, angle)
              rotate_landmarks(face, r_mat)
              del face["r"]
  
      @staticmethod
      def get_original_rotation_matrix(dimensions, angle):
          """ Calculate original rotation matrix and invert """
          logger.trace("Getting original rotation matrix: (dimensions: %s, angle: %s)",
                       dimensions, angle)
 
</s> remove     @staticmethod
    def rotate_image(image, angle):
 </s> add     def rotate_image(self, image, angle): </s> remove         return rotate_image_by_angle(image, angle)
 </s> add         return self.rotate_image_by_angle(image, angle)
        logger.trace("Rotatated existing landmarks for frame: '%s'", frame_name)
              dims = face["frame_dims"]
              r_mat = self.get_original_rotation_matrix(dims, angle)
              rotate_landmarks(face, r_mat)
              del face["r"]
        logger.trace("Rotatated existing landmarks for frame: '%s'", frame_name)
  
      @staticmethod
      def get_original_rotation_matrix(dimensions, angle):
          """ Calculate original rotation matrix and invert """
          logger.trace("Getting original rotation matrix: (dimensions: %s, angle: %s)",
                       dimensions, angle)
keep keep keep add keep keep keep keep keep keep
 Logging (#541)

* Convert prints to logger. Further logging improvements. Tidy  up

* Fix system verbosity. Allow SystemExit

* Fix reload extract bug

* Child Traceback handling

* Safer shutdown procedure

* Add shutdown event to queue manager

* landmarks_as_xy > property. GUI notes + linting. Aligner bugfix

* fix FaceFilter. Enable nFilter when no Filter is supplied

* Fix blurry face filter

* Continue on IO error. Better error handling

* Explicitly print stack trace tocrash log

* Windows Multiprocessing bugfix

* Add git info and conda version to crash log

* Windows/Anaconda mp bugfix

* Logging fixes for training 
lib/alignments.py