<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tag_dssp_solvent_accessibility(self, force=False):
 """Tags each `Residues` Polymer with its solvent accessibility. Notes ----- For more about DSSP's solvent accessibilty metric, see: http://swift.cmbi.ru.nl/gv/dssp/HTML/descrip.html#ACC References .. [1] Kabsch W, Sander C (1983) "Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features", Biopolymers, 22, 2577-637. Parameters force : bool, optional If `True` the tag will be run even if `Residues` are already tagged. """

        tagged = ['dssp_acc' in x.tags.keys() for x in self._monomers]
        if (not all(tagged)) or force:
            dssp_out = run_dssp(self.pdb, path=False)
            if dssp_out is None:
                return
            dssp_acc_list = extract_solvent_accessibility_dssp(
                dssp_out, path=False)
            for monomer, dssp_acc in zip(self._monomers, dssp_acc_list):
                monomer.tags['dssp_acc'] = dssp_acc[-1]
        return