<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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