From 67d312162aad5422cb5ed6e1fbe97553223c4e99 Mon Sep 17 00:00:00 2001 From: jan Date: Fri, 1 Apr 2022 17:33:24 -0700 Subject: [PATCH] speed up as_pattern() mainly used by `flatten()` --- masque/subpattern.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/masque/subpattern.py b/masque/subpattern.py index 64e96e3..0fd15b4 100644 --- a/masque/subpattern.py +++ b/masque/subpattern.py @@ -139,11 +139,16 @@ class SubPattern(PositionableImpl, DoseableImpl, RotatableImpl, ScalableImpl, Mi """ assert(self.pattern is not None) pattern = self.pattern.deepcopy().deepunlock() - pattern.scale_by(self.scale) - pattern.mirror2d(self.mirrored) - pattern.rotate_around((0.0, 0.0), self.rotation) - pattern.translate_elements(self.offset) - pattern.scale_element_doses(self.dose) + if self.scale != 1: + pattern.scale_by(self.scale) + if numpy.any(self.mirrored): + pattern.mirror2d(self.mirrored) + if self.rotation % (2 * pi) != 0: + pattern.rotate_around((0.0, 0.0), self.rotation) + if numpy.any(self.offset): + pattern.translate_elements(self.offset) + if self.dose != 0: + pattern.scale_element_doses(self.dose) if self.repetition is not None: combined = type(pattern)(name='__repetition__')