GithubHelp home page GithubHelp logo

radar-parlamentar / radar Goto Github PK

View Code? Open in Web Editor NEW
83.0 29.0 44.0 73.55 MB

Estamos de mudança para o GitLab: https://gitlab.com/radar-parlamentar/radar.

Home Page: http://radarparlamentar.polignu.org

Python 45.95% Shell 0.48% HTML 17.48% CSS 18.84% JavaScript 17.16% Dockerfile 0.09%
politics legislative congress data-science data-visualization data-analysis python django

radar's People

Contributors

alfakini avatar anacruse avatar andresmrm avatar arthurmde avatar attany avatar brenddongontijo avatar davidcarlos avatar diraol avatar ebenezerandrade1 avatar edinhogomes avatar eduardohideo avatar eduardomoreira avatar eduduarduo avatar guscl avatar hsvab avatar joaaogui avatar leonardofl avatar luisfrvilela avatar luishng avatar marcowilliam avatar matheus-fonseca avatar msfernandes avatar pedrohenriquesales avatar priscillagss avatar rafaelakiyoshi avatar ruandonato avatar saulotrento avatar suzukijessica avatar tallysmartins avatar winstein27 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radar's Issues

Interferência entre casas legislativas

Me parece que quando o banco de dados possui os votos das duas casas legislativas (cmsp e cdep) o gráfico fica diferente de quando só tem uma delas (isso para a análise em ambas as casas).

Investigar esta história.

Deixar módulo analise tolerante a dados incompletos

Se dados forem incompletos, módulo deve usar os atributos alternativos.
Se mesmo assim não for possível fazer a análise, deve-se lançar exceções e/ou logar mensagens adequadas.
A ideia principal é que terceiros possam escrever importadores sem ter que entender o módulo analise.
Esses terceiros devem se guiar pelas mensagens de erro do módulo analise para criarem um importador adequado.

Usando models sem banco de dados

Pra ciar um relacionamento entre objetos, é preciso salvar um deles no banco.
Isso é chato quando você quer usar as classes sem se preocupar com o BD.
Como contornar essa situação?

Atrelar o voto à Legislatura

... e não mais ao Parlamentar.
Assim o Parlamentar passa a ter somente informações pessoais, intrínsecas, e não mais o atributo partido.

Cores dos partidos

Adicionar a possibilidade de as pessoas escolherem plotar o gráfico com as cores dos partidos ou não.

Casa inexistente

Caso o usuário acesse a URL /analises/analise/{casa_que_nao_existe}, então deveríamos mostrar uma mensagem que não existe.

Suporte a mudança de partido

Que acontece se um parlamentar troca de partido durante o período sobre qual estamos analisando os dados?

Creio que a solução seja:
no método votacao.por_partido(), a linha "part = voto.parlamentar.partido().nome" pega o partido mais recente do parlamentar.
Pois nesse momento deveria pegar o partido do parlamentar na data da votação.

StrateBI

Conversar com o pessoal do StrateBI pra termos o Dashboard na página do radar para que os usuários possam analisar os dados mais facilmente.

Migrar pasta py

Apagar o que for preciso, mover pro projeto django o que for conveniente, e garantir que tudo fique executável

Generalizar cmsp.html

Transformar a página cmsp.html em analise.html de forma que a casa legislativa seja um parâmetro da página.
Isto deve ser feito quando já tivermos os dados da Câmara dos Deputados no banco de dados (Issue #30).
Este trabalho será testado com os dados da Câmara dos Deputados e da CMSP, mas a ideia é que já seja adequada para as próximas bases de dados convertidas.
Ajustar os links do menu do site pra essa página.

Fazer diagrama de classes do modelo

Creio que várias pessoas não técnicas possam participar da discussão do modelo.
Para isso, olhar um diagrama de classes pode ser menos intimidador do que ter que analisar a classe models.py

Criar página de questões

Página para listar as questões que hoje estão no arquivo QUESTOES e mostrar as análises encontradas. Essa página poderia ser aberta para que visitantes pudessem sugerir determinadas análises.

Verificar dados importados da câmara dos deputados

O processo de importação das proposições no arquivo votadas.txt* resultou em mais Legislaturas do que Parlamentares. OK, isso pode ocorrer, mas neste momento eu esperava que os dois valores fossem iguais.

Tarefa: identificar Parlamentares com mais de uma Legislatura e verificar se dados estão consistentes. Outra hipótese é que haja Legislaturas sem Parlamentar (o que não deveria acontecer).

  • votadas.txt:
    513512: MPV 540/2011
    357094: PEC 98/2007
    513496: PEC 61/2011
    17338: PL 1876/1999
    394079: PLP 306/2008

Django - declaração de chave estrageira

Aparentemente quando você usa uma classe como chave estrangeira no models, é preciso que esta classe já tenha sido declarada antes. Comportamento muito infeliz, seria legal contornar isso (mas longe de prioritário).

SQLite por casa legislativa

Na página de cada casa legislativa, disponibilizar o SQLite com os dados da casa.
Para isso, seria melhor que as tabelas não tivessem o prefixo do nome da aplicação.
Fazer isso depois de terminar #11.

Atualização de tabela com synchdb

Quando eu acrescentei um atributo na classe, o syncdb não acrescentou o campo na tabela. Foi preciso deletar a tabela para o correto refactory!

Investigar importação dos dados da cmsp

Fomos pesquisar votações sobre nomeações de logradouros e aparentemente encontramos apenas uma dessas no nosso banco de dados. No entanto, uma uma busca rápida no XML de 2011, encontramos pelo menos umas 4 votações dessas. Provavelmente estamos deixando de importar várias votações para nosso banco. Investigar isso.

Dispersão por partido

Criar medida(s) da dispersão dentro de cada partido, para saber da homogeneidade de cada um;
E pensar em formas de representar isso graficamente!

Ajustar tela do gráfico

"Frame" do quadro está deslocado pra baixo.
Temos que voltar ele "para cima", do lado da lista de partidos.
Obs: a lista de partidos agora tem um partido "Sem partido"

Stack trace

Depois de alguma pesquisa, consegui utilizar o log no Django de forma que os logs aparecem no console disparado pelo runserver.

Contudo, quando acontece algum erro, o stack trace da exceção disparada não aparece no console. Seria muito mais mió de bão se ela aparecesse.

Testes independentes

Os testes falham quando se executa manage.py test, mas passam qd se executa o script tests.sh.
Isso porque provavelmente os testes não estão independentes.
E isso pq, me parece, q o Django limpa a base de dados no começo de todos os testes, mas não no início de cada arquivo de test.
O ideal é reescrever os testes para que eles sejam robustos quanto a isso.

tests.sh:

!/bin/bash

python manage.py test modelagem
python manage.py test analises
python manage.py test importadores

Importação incremental

Do jeito que tá hoje, a importação em geral considera que a base de dados estará vazia.
Mas é importante que a importação possa ser rodada várias vezes pra acrescentar novas votações na base.
Considerar que uma proposição pode ter tido novas votações.
Fazer isto para a camara e para a cmsp.

Tamanho das circunferências

O algoritmo para definir o tamanho das esferas no gráfico PCA está ajustado pra mostrar uma boa representação da Câmara Municipal de São Paulo.

Mas o mesmo algoritmos não ficou muito bom na Câmara dos Deputados, como podemos ver na figura: https://dl.dropbox.com/u/18183156/radar/pca_cdep.png

Repare que os partidos pequenos estão de fato com um tamanho que parece ser o mínimo aceitável. Logo, no fundo o problema que temos aqui é o da enorme disparidade entre o tamanho das bancadas dos partidos. Talvez seja necessário um algoritmo não linear para determinar o tamanho das circunferências. Acredito que algo como "faixas de tamanhos" devam ser usadas.

De qualquer forma, o mais importante é obter um algoritmo mais geral que se adeque bem em qualquer situação.

Acrescentar dados da câmara dos deputados

Mas fazer de forma com que a página da câmara dos deputados e da câmara municipal tenham o mesmo código.
Assim, as próximas inserções de outras casas legislativas será muito mais fácil.

Modelar atributos "alternativos"

Criar no modelagem/models.py atributos alternativos e destaca-los como tal no docstring das respectivas classes.
Estes atributos são utilizados quando os dados mais completos não estão disponíveis e não dá pra estima-los.
Exemplos: Parlamentar.partido, Partido.tamanho.
Explicar no docstring do módulo models oq são esses atributos alternativos.

Analise por casa legislativa

Classe Analise deve receber no construtor uma casa_legislativa e utiliza-la para filtrar as votações que irá analisar.

Descobrir "minha" semelhança com partidos.

Bem, só me introduzindo aqui, sou aluno de Engenharia Eletrônica e de Computação da UFRJ.
Hoje vi a apresentação do projeto aqui no YAPC::Brasil 2012 e gostei bastante.

Como falei com alguns de vocês hoje, eu tive uma idéia sobre a identificação partidária dos usuários.

Basicamente o conceito é, que independente da semelhança entre os partidos, é muito dificil para uma pessoa comum saber qual partido, de fato, é mais semelhante à ele.

Por isso pensei que talvez seria interessante, se pudessemos perguntar pro usuário o que ele votaria em cada uma das votações, podendo ele escolher dentre:
Sim, Não, Indiferente, Pular.

Quando ele marcasse Sim/Não seria adicionado ao vetor de votos do usuário esse voto, e em seguida rodariamos o algoritimo de semelhança e plotariamso no gráfico o "eu" com uma cor diferenciada.

Essa idéia é legal, porém perguntar todas as votações do usuário seria algo MUITO CHATO de responder.
Por isso uma idéia legal seria permitir o usuário fazer login, seja com Facebook, Google, ou até mesmo login próprio.
Com isso, ele teria um dashboard de quais votações ele já participou (SIM, NÃO, INDIFERENTE, podendo modificar o seu voto caso ele mude sua forma de pensar) e as que ele não votou (ou clicou em "Pular")

Com isso poderiamos ter também uma progress bar de quantas votações ele já deu sua opinião, quantas ele ainda não votou e quantas ele é indiferente.

Talvez uma barrinha branca, onde primeiro viria a cor verde mostrando os que ele votou sim, depois uma vermelha mostrando as que ele votou não e depois uma amarela mostrando as que ele é indiferente, e o que não estiver preenchido é o quanto ele não votou ainda.

Bem, ainda temos que aprimorar a idéia e pensar como implementar.
Podem contar comigo. =D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.