<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def extract_solvent_accessibility_dssp(in_dssp, path=True):
 """Uses DSSP to extract solvent accessibilty information on every residue. Notes ----- For more information on the solvent accessibility metrics used in dssp, see: http://swift.cmbi.ru.nl/gv/dssp/HTML/descrip.html#ACC In the dssp files value is labeled 'ACC'. Parameters in_dssp : str Path to DSSP file. path : bool Indicates if in_dssp is a path or a string. Returns ------- dssp_residues : list Each internal list contains: [0] int Residue number [1] str Chain identifier [2] str Residue type [3] int dssp solvent accessibilty """

    if path:
        with open(in_dssp, 'r') as inf:
            dssp_out = inf.read()
    else:
        dssp_out = in_dssp[:]
    dssp_residues = []
    go = False
    for line in dssp_out.splitlines():
        if go:
            try:
                res_num = int(line[5:10].strip())
                chain = line[10:12].strip()
                residue = line[13]
                acc = int(line[35:38].strip())
                # It is IMPORTANT that acc remains the final value of the
                # returned list, due to its usage in
                # isambard.ampal.base_ampal.tag_dssp_solvent_accessibility
                dssp_residues.append([res_num, chain, residue, acc])
            except ValueError:
                pass
        else:
            if line[2] == '#':
                go = True
            pass
    return dssp_residues