def get_data(self,
                 file_path=sys.stdin,
                 delimiter=',',
                 categories_delimiter=None):
        """
        Implement get_dsm method from Provider class.

        Parse CSV to return an instance of DSM.

        Args:
            file_path (str/fd): path or file descriptor.
            delimiter (str): character(s) used as delimiter for columns.
            categories_delimiter (str):
                character(s) used as delimiter for categories and keys
                (first column).

        Returns:
            DSM: instance of DSM.
        """
        if file_path == sys.stdin:
            logger.info('Read data from standard input')
            lines = [line.replace('\n', '') for line in file_path]
        else:
            logger.info('Read data from file ' + file_path)
            with open(file_path) as file:
                lines = list(file)
        columns = lines[0].rstrip('\n').split(delimiter)[1:]
        categories = None
        if categories_delimiter:
            columns, categories = zip(*[c.split(categories_delimiter, 1)
                                        for c in columns])
        size = len(columns)
        data = [list(map(int, l.split(delimiter)[1:]))
                for l in lines[1:size + 1]]
        return DesignStructureMatrix(data, columns, categories)
Implement get_dsm method from Provider class.

        Parse CSV to return an instance of DSM.

        Args:
            file_path (str/fd): path or file descriptor.
            delimiter (str): character(s) used as delimiter for columns.
            categories_delimiter (str):
                character(s) used as delimiter for categories and keys
                (first column).

        Returns:
            DSM: instance of DSM.