def get_vars_dataframe(self, *varnames):
        """
        Return pandas DataFrame with the value of the variables specified in `varnames`.
        Can be used for task/works/flow. It's recursive!

        .. example:

            flow.get_vars_dataframe("ecut", "ngkpt")
            work.get_vars_dataframe("acell", "usepawu")
        """
        import pandas as pd
        if self.is_task:
            df = pd.DataFrame([{v: self.input.get(v, None) for v in varnames}], index=[self.name], columns=varnames)
            df["class"] = self.__class__.__name__
            return df

        elif self.is_work:
            frames = [task.get_vars_dataframe(*varnames) for task in self]
            return pd.concat(frames)

        elif self.is_flow:
            frames = [work.get_vars_dataframe(*varnames) for work in self]
            return pd.concat(frames)

        else:
            #print("Ignoring node of type: `%s`" % type(self))
            return pd.DataFrame(index=[self.name])