def set_tabular_data(self, Ts, properties, name=None, check_properties=True):
<EOL>if check_properties:<EOL><INDENT>for p in properties:<EOL><INDENT>if not self.test_property_validity(p):<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT>if not all(b > a for a, b in zip(Ts, Ts[<NUM_LIT:1>:])):<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>if name is None:<EOL><INDENT>name = '<STR_LIT>' + str(len(self.tabular_data))  <EOL><DEDENT>self.tabular_data[name] = (Ts, properties)<EOL>self.method = None<EOL>self.user_methods.insert(<NUM_LIT:0>, name)<EOL>self.all_methods.add(name)<EOL>self.set_user_methods(user_methods=self.user_methods, forced=self.forced)<EOL>
r'''Method to set tabular data to be used for interpolation.
        Ts must be in increasing order. If no name is given, data will be
        assigned the name 'Tabular data series #x', where x is the number of
        previously added tabular data series. The name is added to all
        methods and iserted at the start of user methods,

        Parameters
        ----------
        Ts : array-like
            Increasing array of temperatures at which properties are specified, [K]
        properties : array-like
            List of properties at Ts, [`units`]
        name : str, optional
            Name assigned to the data
        check_properties : bool
            If True, the properties will be checked for validity with
            `test_property_validity` and raise an exception if any are not
            valid