          # convert back to shapes (numKeypoint, num_dims, numFrames)
          landmarks_norm_rec = np.reshape(landmarks_norm_table_rec.T,
                                          [68, 2, landmarks_norm.shape[2]])
          # transform back to image coords
          return self.normalized_to_original(landmarks_norm_rec,
                                             self.normalized["scale_factors"],
                                             self.normalized["mean_coords"])
  
      @staticmethod
      def temporally_smooth(landmarks):
          """ apply temporal filtering on the 2D points """
          filter_half_length = 2
 
</s> remove         landmarks_norm_table = np.reshape(landmarks_norm,
                                          [68 * 2, landmarks_norm.shape[2]]).T
 </s> add         landmarks_norm_table = np.reshape(landmarks_norm, [68 * 2, landmarks_norm.shape[2]]).T </s> remove         temporal_filter = np.ones((1, 1, 2*filter_half_length+1))
 </s> add         temporal_filter = np.ones((1, 1, 2 * filter_half_length + 1)) </s> remove         shapes_centered = shapes_normalized * np.tile(scale_factors,
                                                      [num_pts, num_dims, 1])
 </s> add         shapes_centered = shapes_normalized * np.tile(scale_factors, [num_pts, num_dims, 1])
        retval = self.normalized_to_original(landmarks_norm_rec,
                                             self.normalized["scale_factors"],
                                             self.normalized["mean_coords"])

        logger.debug("Spatially Filtered: %s", retval)
        return retval
          # convert back to shapes (numKeypoint, num_dims, numFrames)
          landmarks_norm_rec = np.reshape(landmarks_norm_table_rec.T,
                                          [68, 2, landmarks_norm.shape[2]])
          # transform back to image coords
        retval = self.normalized_to_original(landmarks_norm_rec,
                                             self.normalized["scale_factors"],
                                             self.normalized["mean_coords"])

        logger.debug("Spatially Filtered: %s", retval)
        return retval
        retval = self.normalized_to_original(landmarks_norm_rec,
                                             self.normalized["scale_factors"],
                                             self.normalized["mean_coords"])

        logger.debug("Spatially Filtered: %s", retval)
        return retval
        retval = self.normalized_to_original(landmarks_norm_rec,
                                             self.normalized["scale_factors"],
                                             self.normalized["mean_coords"])

        logger.debug("Spatially Filtered: %s", retval)
        return retval
  
      @staticmethod
      def temporally_smooth(landmarks):
          """ apply temporal filtering on the 2D points """
          filter_half_length = 2
keep keep keep keep replace replace replace keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/lib_alignments/jobs.py