              n_components=num_components,
              whiten=True,
              random_state=1).fit(normalized_shapes_tbl)
          explained = self.shapes_model.explained_variance_ratio_.sum()
          print("\nTotal explained percent by PCA model with {} components is "
                "{}%\n".format(num_components, round(100 * explained, 1)))
  
      def spatially_filter(self):
          """ interpret the shapes using our shape model
              (project and reconstruct) """
          landmarks_norm = self.normalized["landmarks"]
 
</s> remove         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))
 </s> add         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) </s> remove         print("Using live preview.\n"
              "Press 'ENTER' on the preview window to save and quit.\n"
              "Press 'S' on the preview window to save model weights "
              "immediately")
 </s> add         logger.info("Using live preview.\n"
                    "Press 'ENTER' on the preview window to save and quit.\n"
                    "Press 'S' on the preview window to save model weights "
                    "immediately") </s> remove             print("Model Not Found! A valid model "
                  "must be provided to continue!")
 </s> add             logger.error("Model Not Found! A valid model "
                         "must be provided to continue!") </s> remove             print("WARNING: The selected folder is not valid. "
                  "Only folder set with '-fc' is supported for "
                  "'multi-faces' and 'leftover-faces'")
 </s> add             logger.warning("The selected folder is not valid. Only folder set with '-fc' is "
                           "supported for 'multi-faces' and 'leftover-faces'")
        logger.info("Total explained percent by PCA model with %s components is %s%%",
                    num_components, round(100 * explained, 1))
              n_components=num_components,
              whiten=True,
              random_state=1).fit(normalized_shapes_tbl)
          explained = self.shapes_model.explained_variance_ratio_.sum()
        logger.info("Total explained percent by PCA model with %s components is %s%%",
                    num_components, round(100 * explained, 1))
        logger.info("Total explained percent by PCA model with %s components is %s%%",
                    num_components, round(100 * explained, 1))
  
      def spatially_filter(self):
          """ interpret the shapes using our shape model
              (project and reconstruct) """
          landmarks_norm = self.normalized["landmarks"]
keep keep keep keep 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