Tu tarea es describir el módulo de la interfaz, que está dividido en varios fragmentos, el código del segundo fragmento es el siguiente:
def analyzer(self):
        if (os.path.exists("championRec")):
            try:
                champions =  DataDragon().getChampions()
                
                aliados = {}
                
                enemigos = {}
                
                pick = {}
                
                rol = self.comboBox_21.currentText()
                
                comboChamps = self.comboChamps()
                
                comboRoles = self.comboRoles()
                
                #limitPick = 0.000
                
                for champion in champions:
                    pick[int(champion)] = 0
                                            
                for combo in comboChamps:
                    if(combo.currentIndex()!=0):
                        if(comboChamps.index(combo)<4):
                            aliados[combo.currentText()] = comboRoles[comboChamps.index(combo)].currentText()
                        else:
                            enemigos[combo.currentText()] = comboRoles[comboChamps.index(combo)].currentText()
                            
                for aliado, rola in aliados.items():
                    rola = self.format_rol(rola)
                                    
                    counter = open("championRec\\Counter\\"+rola+"\\"+aliado+".json")
                    
                    counter_data = json.loads(counter.read())
                    
                    counter.close()
                    
                    #nGames = counter_data["header"]["n"]
                    
                    wr = counter_data["header"]["wr"]
                    
                    if(rol == "Top"):
                        synergy = open("championRec\\Synergy\\"+rola+"\\"+aliado+".json")
                        
                        synergy_data = json.loads(synergy.read())
                        
                        synergy.close()
                        
                        try:
                            team = synergy_data["team_top"]
                            
                        except KeyError:
                            self.sameRolMessage(rol)
                            
                        else:
                            for champion in team:
                                #if((champion[1]/nGames)>limitPick):
                                    
                                    r1 = (wr/100)/(1-wr/100)
                                    
                                    r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                    r = r1*r2
                                    
                                    wr_norm = r/(r+1)*100
                                    
                                    pick[champion[0]] += wr2 - wr_norm                             
                                                        
                    elif(rol == "Jungle"):
                        synergy = open("championRec\\Synergy\\"+rola+"\\"+aliado+".json")
                        
                        synergy_data = json.loads(synergy.read())
                        
                        synergy.close()
                        
                        try:
                            team = synergy_data["team_jungle"]
                        
                        except KeyError:
                            self.sameRolMessage(rol)
                            
                        else:         
                            for champion in team:
                                #if((champion[1]/nGames)>limitPick):
                                    wr2 = champion[2]/champion[1]*100
                                    
                                    r1 = (wr/100)/(1-wr/100)
                                    
                                    r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                    r = r1*r2
                                    
                                    wr_norm = r/(r+1)*100
                                    
                                    pick[champion[0]] += wr2 - wr_norm                                  
                                    
                    elif(rol == "Mid"):
                        synergy = open("championRec\\Synergy\\"+rola+"\\"+aliado+".json")
                        
                        synergy_data = json.loads(synergy.read())
                        
                        synergy.close()
                        
                        try:
                            team = synergy_data["team_middle"]
                            
                        except KeyError:
                            self.sameRolMessage(rol)
                            
                        else:          
                            for champion in team:
                                #if((champion[1]/nGames)>limitPick):
                                    wr2 = champion[2]/champion[1]*100
                                    
                                    r1 = (wr/100)/(1-wr/100)
                                    
                                    r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                    r = r1*r2
                                    
                                    wr_norm = r/(r+1)*100
                                    
                                    pick[champion[0]] += wr2 - wr_norm     
                                    
                    elif(rol == "Bot"):
                        synergy = open("championRec\\Synergy\\"+rola+"\\"+aliado+".json")
                        
                        synergy_data = json.loads(synergy.read())
                        
                        synergy.close()
                        
                        try:
                            team = synergy_data["team_bottom"]
                        
                        except KeyError:
                            self.sameRolMessage(rol)
                            
                        else:
                            for champion in team:
                                #if((champion[1]/nGames)>limitPick):
                                    wr2 = champion[2]/champion[1]*100
                                    
                                    r1 = (wr/100)/(1-wr/100)
                                    
                                    r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                    r = r1*r2
                                    
                                    wr_norm = r/(r+1)*100
                                    
                                    pick[champion[0]] += wr2 - wr_norm                              
                                    
                    elif(rol == "Support"):
                        synergy = open("championRec\\Synergy\\"+rola+"\\"+aliado+".json")
                        
                        synergy_data = json.loads(synergy.read())
                        
                        synergy.close()
                        
                        try:
                            team = synergy_data["team_support"]
                            
                        except KeyError:
                            self.sameRolMessage(rol)
                            
                        else:
                            for champion in team:
                                #if((champion[1]/nGames)>limitPick):
                                    wr2 = champion[2]/champion[1]*100
                                    
                                    r1 = (wr/100)/(1-wr/100)
                                    
                                    r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                    r = r1*r2
                                    
                                    wr_norm = r/(r+1)*100
                                    
                                    pick[champion[0]] += wr2 - wr_norm                              
                
                for enemigo, role in enemigos.items():
                    role = self.format_rol(role)
                    
                    counter = open("championRec\\Counter\\"+role+"\\"+enemigo+".json")
                    
                    counter_data = json.loads(counter.read())
                    
                    counter.close()
                    
                    #nGames = counter_data["header"]["n"]
                    
                    wr = counter_data["header"]["wr"]
                    
                    if(rol == "Top"):
                        team = counter_data["enemy_top"]
                        
                        for champion in team:
                            #if((champion[1]/nGames)>limitPick):
                                wr2 = champion[2]/champion[1]*100
                                
                                r1 = (wr/100)/(1-wr/100)
                                    
                                r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                r = r1/r2
                                    
                                wr_norm = r/(r+1)*100
                                
                                pick[champion[0]] += -(wr2 - wr_norm)
                                    
                    elif(rol == "Jungle"):
                        team = counter_data["enemy_jungle"]
                        
                        for champion in team:
                            #if((champion[1]/nGames)>limitPick):
                                wr2 = champion[2]/champion[1]*100
                                
                                r1 = (wr/100)/(1-wr/100)
                                    
                                r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                r = r1/r2
                                    
                                wr_norm = r/(r+1)*100
                                
                                pick[champion[0]] += -(wr2 - wr_norm)
                                    
                    elif(rol == "Mid"):
                        team = counter_data["enemy_middle"]
                        
                        for champion in team:
                            #if((champion[1]/nGames)>limitPick):
                                wr2 = champion[2]/champion[1]*100
                                
                                r1 = (wr/100)/(1-wr/100)
                                    
                                r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                r = r1/r2
                                    
                                wr_norm = r/(r+1)*100
                                
                                pick[champion[0]] += -(wr2 - wr_norm)
                                    
                    elif(rol == "Bot"):
                        team = counter_data["enemy_bottom"]
                        
                        for champion in team:
                            #if((champion[1]/nGames)>limitPick):
                                wr2 = champion[2]/champion[1]*100
                                
                                r1 = (wr/100)/(1-wr/100)
                                    
                                r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                r = r1/r2
                                    
                                wr_norm = r/(r+1)*100
                                
                                pick[champion[0]] += -(wr2 - wr_norm)
                                    
                    elif(rol == "Support"):
                        team = counter_data["enemy_support"]
                        
                        for champion in team:
                            #if((champion[1]/nGames)>limitPick):
                                wr2 = champion[2]/champion[1]*100
                                
                                r1 = (wr/100)/(1-wr/100)
                                    
                                r2 = (champion[3]/100)/(1-champion[3]/100)
                                    
                                r = r1/r2
                                    
                                wr_norm = r/(r+1)*100
                                
                                pick[champion[0]] += -(wr2 - wr_norm)
                                    
                picks_nombre = {}
    
                for key in pick:
                    picks_nombre[champions[str(key)]] = pick[key]
                    
                noSelectEnemies = 5 - len(enemigos)
                
                noSelectAllies = 4 - len(aliados)
                            
                blind = self.blindPickEnemies(rol, champions)
                
                blindAllies = self.blindPickAllies(rol, champions)
                
                for champion in blind:
                    blind[champion] = blind[champion]*noSelectEnemies
                    
                for champion in blindAllies:
                    blindAllies[champion] = blindAllies[champion]*noSelectAllies
                    
                for champion in blind.copy():
                    if (champion in aliados) or (champion in enemigos):
                        del blind[champion]
                    else:
                        blind[champion] += blindAllies[champion]
                    
                        blind[champion] += picks_nombre[champion]
                        
                sorted_dict: dict[str, float] = dict(sorted(blind.items(), key=lambda x:x[1], reverse=True))
                
                pool = []
                
                championPool = self.combo.currentData()
                            
                for key in sorted_dict.keys():
                    for champion in championPool:
                        if(key == champion):
                            pool.append(key)
                        
                index_pool = []
                
                for champion in pool:
                    index_pool.append(list(sorted_dict).index(champion))
                    
                self.data_table(sorted_dict, reversed(index_pool))
                
            except:
                msg = QMessageBox()
            
                msg.setIcon(QMessageBox.Warning)
            
                msg.setWindowTitle("An exception ocurred")
            
                msg.setText("Try pressing the Update button and wait for the update to finish.")
            
                msg.exec()
        else:
            msg = QMessageBox()
            
            msg.setIcon(QMessageBox.Warning)
            
            msg.setWindowTitle("The app needs to be updated")
            
            msg.setText("Press the update button and wait for the update to finish.")
            
            msg.exec()