code: def construct_difference(self, parent, excluded, name=None, fp=None):
          
          assert parent in self.locations, "Can't find location {}".format(parent)
          for location in excluded:
              assert location in self.locations, "Can't find location {}".format(location)
          included = set(self.data[parent]).difference(
              reduce(set.union, [set(self.data[loc]) for loc in excluded])
          )
          geom = _union(included)
          if fp:
              self.write_geoms_to_file(fp, [geom], [name] if name else None)
              return fp
          else:
              return geom
docs: Construct geometry from ``parent`` without the regions in ``excluded`` and optionally write to filepath ``fp``.
  
          ``excluded`` must be an iterable of location strings (not face ids).