          landmarks = self.temporally_smooth(landmarks)
          self.update_alignments(landmarks)
          self.alignments.save()
  
          print("\nDone! To re-extract faces run:\n    python tools.py "
                "alignments -j extract -a {} -fr <path_to_frames_dir> -fc "
                "<output_folder>\n".format(self.arguments.alignments_file))
  
      # define shape normalization utility functions
      @staticmethod
      def normalize_shapes(shapes_im_coords):
          """ Normalize a 2D or 3D shape """
 
</s> remove             print("WARNING: There are rotated frames in the alignments "
                  "file.\n\t Position of faces will not be correctly "
                  "calculated for these frames.\n\t You should run rotation "
                  "tool to update the file prior to running sort:\n\t "
                  "'python tools.py alignments -j rotate -a "
                  "<alignments_file> -fr <frames_folder>'")
 </s> add             logger.error("There are rotated frames in the alignments "
                         "file. Position of faces will not be correctly "
                         "calculated for these frames. You should run rotation "
                         "tool to update the file prior to running sort: "
                         "'python tools.py alignments -j rotate -a "
                         "<alignments_file> -fr <frames_folder>'") </s> remove     def set_verbosity(verbose):
 </s> add     def set_verbosity(): </s> remove         print("\nTotal explained percent by PCA model with {} components is "
              "{}%\n".format(num_components, round(100 * explained, 1)))
 </s> add         logger.info("Total explained percent by PCA model with %s components is %s%%",
                    num_components, round(100 * explained, 1)) </s> remove         print("\n[SPATIO-TEMPORAL FILTERING]")  # Tidy up cli output
        print("NB: The process only processes the alignments for the first "
              "face it finds for any given frame\n"
              "    For best results only run this when:\n"
              "      - there is only a single face in the alignments file\n"
              "      - all false positives have been removed\n")
 </s> add         logger.info("[SPATIO-TEMPORAL FILTERING]")  # Tidy up cli output
        logger.info("NB: The process only processes the alignments for the first "
                    "face it finds for any given frame. For best results only run this when "
                    "there is only a single face in the alignments file and all false positives "
                    "have been removed")
        logger.info("Done! To re-extract faces run: python tools.py "
                    "alignments -j extract -a %s -fr <path_to_frames_dir> -fc "
                    "<output_folder>", self.arguments.alignments_file)
          landmarks = self.temporally_smooth(landmarks)
          self.update_alignments(landmarks)
          self.alignments.save()
  
        logger.info("Done! To re-extract faces run: python tools.py "
                    "alignments -j extract -a %s -fr <path_to_frames_dir> -fc "
                    "<output_folder>", self.arguments.alignments_file)
        logger.info("Done! To re-extract faces run: python tools.py "
                    "alignments -j extract -a %s -fr <path_to_frames_dir> -fc "
                    "<output_folder>", self.arguments.alignments_file)
        logger.info("Done! To re-extract faces run: python tools.py "
                    "alignments -j extract -a %s -fr <path_to_frames_dir> -fc "
                    "<output_folder>", self.arguments.alignments_file)
  
      # define shape normalization utility functions
      @staticmethod
      def normalize_shapes(shapes_im_coords):
          """ Normalize a 2D or 3D shape """
keep keep keep keep replace replace replace 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 
tools/lib_alignments/jobs.py