This function defines the residues for plotting in case only a topology file has been submitted.
        In this case the residence time analysis in not necessary and it is enough just to find all
        residues within a cutoff distance.
            Takes:
                * cutoff * - cutoff distance in angstroms that defines native contacts
            Output:
                *

def define_residues_for_plotting_topology(self,cutoff):
        """
        This function defines the residues for plotting in case only a topology file has been submitted.
        In this case the residence time analysis in not necessary and it is enough just to find all
        residues within a cutoff distance.
            Takes:
                * cutoff * - cutoff distance in angstroms that defines native contacts
            Output:
                *
        """

        #self.protein_selection = self.universe.select_atoms('all and around '+str(cutoff)+' (segid '+str(self.universe.ligand.segids[0])+' and resid '+str(self.universe.ligand.resids[0])+')')
        #The previous line was not working on some examples for some reason - switch to more efficient Neighbour Search
        n = AtomNeighborSearch(self.universe.select_atoms('protein and not name H* or (segid '+str(self.universe.ligand.segids[0])+' and resid '+str(self.universe.ligand.resids[0])+')'), bucket_size=10)
        self.protein_selection = n.search(self.universe.ligand,cutoff,level="A")
        for atom in self.protein_selection.atoms:
                #for non-analysis plots
                residue = (atom.resname, str(atom.resid), atom.segid)
                if residue not in self.dict_of_plotted_res.keys() and atom not in self.universe.ligand.atoms:
                    self.dict_of_plotted_res[residue]=[1]
        assert len(self.dict_of_plotted_res)!=0, "Nothing to draw for this ligand (residue number: "+ self.universe.ligand.resids[0] +" on the chain "+ self.universe.ligand.segids[0] +") - check the position of your ligand within the topology file."