def dssps(self):
        """ Dict of filepaths for all dssp files associated with code.

        Notes
        -----
        Runs dssp and stores writes output to files if not already present.
        Also downloads mmol files if not already present.
        Calls isambard.external_programs.dssp and so needs dssp to be installed.

        Returns
        -------
        dssps_dict : dict, or None.
            Keys : int
                mmol number
            Values : str
                Filepath for the corresponding dssp file.

        Raises
        ------
        Warning
            If any of the dssp files are empty.
        """
        dssps_dict = {}
        dssp_dir = os.path.join(self.parent_dir, 'dssp')
        if not os.path.exists(dssp_dir):
            os.makedirs(dssp_dir)
        for i, mmol_file in self.mmols.items():
            dssp_file_name = '{0}.dssp'.format(os.path.basename(mmol_file))
            dssp_file = os.path.join(dssp_dir, dssp_file_name)
            if not os.path.exists(dssp_file):
                dssp_out = run_dssp(pdb=mmol_file, path=True, outfile=dssp_file)
                if len(dssp_out) == 0:
                    raise Warning("dssp file {0} is empty".format(dssp_file))
            dssps_dict[i] = dssp_file
        return dssps_dict
Dict of filepaths for all dssp files associated with code.

        Notes
        -----
        Runs dssp and stores writes output to files if not already present.
        Also downloads mmol files if not already present.
        Calls isambard.external_programs.dssp and so needs dssp to be installed.

        Returns
        -------
        dssps_dict : dict, or None.
            Keys : int
                mmol number
            Values : str
                Filepath for the corresponding dssp file.

        Raises
        ------
        Warning
            If any of the dssp files are empty.