Finds `Residues` with any atom within the cutoff distance of side-chain.

        Notes
        -----
        Includes the parent residue in the list.

        Parameters
        ----------
        cutoff : float, optional
            Maximum inter-atom distance for residue to be included.
            Defaults to 4.
        include_neighbours : bool, optional
            If `false`, does not return `Residue` at i-1, i+1 positions
            in same chain as `Residue`.
        inter_chain : bool, optional
            If `false`, only includes nearby `Residue` in the same chain
            as the `Residue`.
        include_ligands : bool, optional
            If `true`, `Residue` classed as ligands but not identified as
            solvent will be included in the environment.
        include_solvent : bool, optional
            If `true`, Monomers classed as categorised as solvent
            will be included in the environment.

        Returns
        -------
        sc_environment : list
            List of monomers within cutoff distance of side-chain.

def side_chain_environment(self, cutoff=4, include_neighbours=True,
                               inter_chain=True, include_ligands=False, include_solvent=False):
        """Finds `Residues` with any atom within the cutoff distance of side-chain.

        Notes
        -----
        Includes the parent residue in the list.

        Parameters
        ----------
        cutoff : float, optional
            Maximum inter-atom distance for residue to be included.
            Defaults to 4.
        include_neighbours : bool, optional
            If `false`, does not return `Residue` at i-1, i+1 positions
            in same chain as `Residue`.
        inter_chain : bool, optional
            If `false`, only includes nearby `Residue` in the same chain
            as the `Residue`.
        include_ligands : bool, optional
            If `true`, `Residue` classed as ligands but not identified as
            solvent will be included in the environment.
        include_solvent : bool, optional
            If `true`, Monomers classed as categorised as solvent
            will be included in the environment.

        Returns
        -------
        sc_environment : list
            List of monomers within cutoff distance of side-chain.
        """
        if self.mol_code == 'GLY':
            return [self]
        side_chain_dict = {x: {y: self.states[x][y]
                               for y in self.states[x] if self.states[x][y] in
                               self.side_chain} for x in self.states}
        side_chain_monomer = Monomer(
            atoms=side_chain_dict, monomer_id=self.id,
            ampal_parent=self.ampal_parent)
        sc_environment = side_chain_monomer.environment(
            cutoff=cutoff, include_ligands=include_ligands,
            include_neighbours=include_neighbours,
            include_solvent=include_solvent, inter_chain=inter_chain)
        return sc_environment