Uniques the results from get_proteins_psms so each PSM as defined
        by gene ID / setname / psm_id will only occur once

def get_unique_gene_psms(self, genetable, fields, firstjoin):
        """Uniques the results from get_proteins_psms so each PSM as defined
        by gene ID / setname / psm_id will only occur once"""
        lastgene = None
        gpsms_out, gp_ids = [], []
        for gpsm in self.get_proteins_psms(genetable, fields, firstjoin):
            if gpsm[0] != lastgene:
                for outpsm in gpsms_out:
                    yield outpsm
                lastgene = gpsm[0]
                gpsms_out, gp_ids = [], []
            gp_id = gpsm[0] + gpsm[1] + gpsm[3]
            if gp_id not in gp_ids:
                gp_ids.append(gp_id)
                gpsms_out.append(gpsm)
        for outpsm in gpsms_out:
            yield outpsm