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

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