def test_semelhanca_partidos(self): '''Testa a função de semelhança para partidos''' partido1 = 'girondinos' partido2 = 'jacobinos' votacoes = [] # votações do test # v1: p1(3,0,0) p2(0,3,0) # v2: p1(0,2,1) p2(2,0,1) # v3: p1(3,0,0) p2(0,2,1) dep1Sim = Deputado() dep1Sim.partido = partido1 dep1Sim.voto = model.SIM dep1Nao = Deputado() dep1Nao.partido = partido1 dep1Nao.voto = model.NAO dep1Abs = Deputado() dep1Abs.partido = partido1 dep1Abs.voto = model.ABSTENCAO dep2Sim = Deputado() dep2Sim.partido = partido2 dep2Sim.voto = model.SIM dep2Nao = Deputado() dep2Nao.partido = partido2 dep2Nao.voto = model.NAO dep2Abs = Deputado() dep2Abs.partido = partido2 dep2Abs.voto = model.ABSTENCAO # votação 1 vot = Votacao() vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) votacoes.append(vot) # votação 2 vot = Votacao() vot.deputados.append(dep1Nao) vot.deputados.append(dep1Nao) vot.deputados.append(dep1Abs) vot.deputados.append(dep2Sim) vot.deputados.append(dep2Sim) vot.deputados.append(dep2Abs) votacoes.append(vot) # votação 3 vot = Votacao() vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Abs) votacoes.append(vot) proposicao = Proposicao() proposicao.votacoes = votacoes proposicoes = [proposicao] # invocando a função testada s = partidos.semelhanca(partido1, partido2, proposicoes) # testando se tá certo expected = 0.008766487 # calculado na mão self.assertAlmostEqual(expected, s, 5)
#!/usr/bin/python3.2 # -*- coding: utf-8 -*- # # Verifica a diferença entre dois partidos baseado nas proposições votadas em 2011 import proposicoes import camaraws import partidos import sys partido1 = sys.argv[1] partido2 = sys.argv[2] votadas = proposicoes.parse() # identificação das proposições votadas em 2011 proposicoes = [] # listagem das proposições com suas respectivas votações n_vot = 0 # total de votações analisadas for prop in votadas: print('Analisando proposição ' + prop['id']) prop_vot = camaraws.obter_votacao(prop['id'], prop['tipo'], prop['num'], prop['ano']) # obtêm votação do web service n_vot += len(prop_vot.votacoes) proposicoes.append(prop_vot) sem = partidos.semelhanca(partido1, partido2, proposicoes) print('Semelhança entre %s e %s = %.2f%s, baseado em %s votações de 2011' % (partido1, partido2, sem*100, '%', n_vot))
import proposicoes import camaraws import partidos import sys party1 = sys.argv[1] party2 = sys.argv[2] # Identification of propositions voted on in 2011 voted = proposicoes.parse() # List of propositions with their respective votes proposicoes = [] # Total analyzed votes votes_number = 0 for propositions in voted: print('Analisando proposição ' + propositions['id']) # Get voting web service votes_propositions = camaraws.obter_votacao(propositions['tipo'], propositions['num'], propositions['ano']) votes_number += len(votes_propositions.votacoes) proposicoes.append(votes_propositions) similarity = partidos.semelhanca(party1, party2, proposicoes) print('Semelhança entre %s e %s = %.2f%s, baseado em %s votações de 2011' % (party1, party2, similarity*100, '%', votes_number))
import camaraws import partidos import sys party1 = sys.argv[1] party2 = sys.argv[2] # Identification of propositions voted on in 2011 voted = proposicoes.parse() # List of propositions with their respective votes proposicoes = [] # Total analyzed votes votes_number = 0 for propositions in voted: print('Analisando proposição ' + propositions['id']) # Get voting web service votes_propositions = camaraws.obter_votacao(propositions['tipo'], propositions['num'], propositions['ano']) votes_number += len(votes_propositions.votacoes) proposicoes.append(votes_propositions) similarity = partidos.semelhanca(party1, party2, proposicoes) print('Semelhança entre %s e %s = %.2f%s, baseado em %s votações de 2011' % (party1, party2, similarity * 100, '%', votes_number))
length = len(PARTIDOS) # recovery propositions # identification of propositions voted on in 2011 voted = proposicoes.parse() # list of propositions with their respective votes proposicoes = [] # total analyzed votes n_vot = 0 for propositions in voted: print('Analisando proposição ' + propositions['id']) # get voting web service prop_vot = camaraws.obter_votacao(propositions['tipo'], propositions['num'], propositions['ano']) n_vot += len(prop_vot.votacoes) proposicoes.append(prop_vot) # analysis of the similarity print( 'Análise baseada em %d votações de %d proposições, votadas na camâra em 2011' % (n_vot, len(voted))) for i in range(0, length): for j in range(i + 1, length): sem = partidos.semelhanca(PARTIDOS[i], PARTIDOS[j], proposicoes) print('Semelhança entre %s e %s = %.2f%s' % (PARTIDOS[i], PARTIDOS[j], sem * 100, '%'))
def test_semelhanca_partidos(self): '''Testa a função de semelhança para partidos''' partido1 = 'girondinos' partido2 = 'jacobinos' votacoes = [] # votações do test # v1: p1(3,0,0) p2(0,3,0) # v2: p1(0,2,1) p2(2,0,1) # v3: p1(3,0,0) p2(0,2,1) dep1Sim = Deputado() dep1Sim.partido = partido1 dep1Sim.voto = model.SIM dep1Nao = Deputado() dep1Nao.partido = partido1 dep1Nao.voto = model.NAO dep1Abs = Deputado() dep1Abs.partido = partido1 dep1Abs.voto = model.ABSTENCAO dep2Sim = Deputado() dep2Sim.partido = partido2 dep2Sim.voto = model.SIM dep2Nao = Deputado() dep2Nao.partido = partido2 dep2Nao.voto = model.NAO dep2Abs = Deputado() dep2Abs.partido = partido2 dep2Abs.voto = model.ABSTENCAO # votação 1 vot = Votacao() vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) votacoes.append(vot) # votação 2 vot = Votacao() vot.deputados.append(dep1Nao) vot.deputados.append(dep1Nao) vot.deputados.append(dep1Abs) vot.deputados.append(dep2Sim) vot.deputados.append(dep2Sim) vot.deputados.append(dep2Abs) votacoes.append(vot) # votação 3 vot = Votacao() vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep1Sim) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Nao) vot.deputados.append(dep2Abs) votacoes.append(vot) proposicao = Proposicao() proposicao.votacoes = votacoes proposicoes = [proposicao] # invocando a função testada s = partidos.semelhanca(partido1, partido2, proposicoes) # testando se tá certo expected = 0.2524905 # calculado na mão self.assertAlmostEqual(expected, s, 5)
import proposicoes import camaraws import partidos import sys from partidos import PARTIDOS length = len(PARTIDOS) # PRTB, PRP, PMN, PSL, PHS deram problema, pois não aparecem em algumas votações # TODO: o que fazer nesses casos? length = len(PARTIDOS) # recuperação das proposições votadas = proposicoes.parse() # identificação das proposições votadas em 2011 proposicoes = [] # listagem das proposições com suas respectivas votações n_vot = 0 # total de votações analisadas for prop in votadas: print('Analisando proposição ' + prop['id']) prop_vot = camaraws.obter_votacao(prop['tipo'], prop['num'], prop['ano']) # obtêm votação do web service n_vot += len(prop_vot.votacoes) proposicoes.append(prop_vot) # análise das semelhanças print('Análise baseada em %d votações de %d proposições, votadas na camâra em 2011' % (n_vot, len(votadas))) for i in range(0,length): for j in range(i+1,length): sem = partidos.semelhanca(PARTIDOS[i], PARTIDOS[j], proposicoes) print('Semelhança entre %s e %s = %.2f%s' % (PARTIDOS[i], PARTIDOS[j], sem*100, '%'))
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. """Script semelhanca -- verifica a diferença entre dois partidos baseado nas proposições votadas em 2011""" import proposicoes import camaraws import partidos import sys partido1 = sys.argv[1] partido2 = sys.argv[2] votadas = proposicoes.parse() # identificação das proposições votadas em 2011 proposicoes = [] # listagem das proposições com suas respectivas votações n_vot = 0 # total de votações analisadas for prop in votadas: print('Analisando proposição ' + prop['id']) prop_vot = camaraws.obter_votacao( prop['tipo'], prop['num'], prop['ano']) # obtêm votação do web service n_vot += len(prop_vot.votacoes) proposicoes.append(prop_vot) sem = partidos.semelhanca(partido1, partido2, proposicoes) print('Semelhança entre %s e %s = %.2f%s, baseado em %s votações de 2011' % (partido1, partido2, sem * 100, '%', n_vot))