def __attach_v3(self, shape, source, name, attribute, offset=0):
        """Attach a Tuple[3] stream to the JSON representation. Also calculates the min and max range."""
        if len(source) > 0:
            elements = [ ]
            (min_x, min_y, min_z) = source[0]
            (max_x, max_y, max_z) = source[0]
            for (x, y, z) in source:
                elements.append(x)
                elements.append(y)
                elements.append(z)
                min_x = min(x, min_x)
                min_y = min(y, min_y)
                min_z = min(z, min_z)
                max_x = max(x, max_x)
                max_y = max(y, max_y)
                max_z = max(z, max_z)
            self.__set_source(shape, name, 3, [min_x, min_y, min_z], [max_x, max_y, max_z], elements)
            self.__set_input(shape, attribute, { 'source': name, 'offset': offset })
dataset/ETHPy150Open turbulenz/turbulenz_tools/turbulenz_tools/tools/asset2json.py/JsonAsset.__attach_v3/original