Uma ferramenta para visualização de uma rede de colaborações acadêmicas de escala nacional gerada a partir de dados da CAPES.
Demo: http://vizcolab.inf.ufrgs.br/
O repositório é dividido em duas partes:
- No diretório
data_processing
se encontram os notebooks Jupyter e scripts para o processamento dos dados que compõem a rede de colaborações e queries para a importação dos dados na base de dados Neo4J. - No diretorio
app
se encontra a aplicação web de visualização da rede de colaborações construida com as bibliotecas React e 3D Forces Graph.
As etapas a seguir descrevem o processo de processamento dos dados brutos da CAPES para a construção da rede de colaborações.
-
Faça o download do diretório
datasets
e insira-o dentro do diretóriodata_processing/
. Os datasets disponibilizados são referentes ao quidriênio 2017-2020. Caso queira incluir dados mais recentes, faça o download dos arquivos no Portal de dados abertos da CAPES e insira-os no diretóriodata_processing/datasets/
seguindo a estrutura de diretórios e nomeação dos arquivos existente. -
Instale as dependências Python3:
python3 -m pip install -r requirements.txt
-
O processamento dos datesets é dividido em três notebooks Jupyter distintos, disponíveis no diretório
data_processing/
:-
authors_grouping.ipynb
: processa o dataset de autores, fazendo a concatenação dos arquivos .csv, sanitização e normalização dos dados e agrupamento dos autores com múltiplas entradas no dataset. Após executado, o notebook gera dois arquivos no diretóriodata_processing/output/
:processed_authors_preliminary.csv
eprocessed_authors_complete.csv
. Qualquer um deles pode ser utilizado para a geração da rede de co-autorias. Entretanto, enquanto o arquivo preliminar será gerado em minutos após as etapas de merge porid
e pornome do autor
, o arquivo completo provavelmente levará dias para ser gerado, já que depende do processamento complexo de merge por pontuação. -
prod_grouping.ipynb
: processa o dataset de produções, fazendo a concatenação dos arquivos .csv, sanitização e normalização dos dados e agrupamento das produções com múltiplas entradas no dataset. Após executado, o notebook gera dois arquivos no diretóriodata_processing/output/
:prod_id_replacements.json
(contém um mapa para substituição dos identificadores de produções que foram agrupadas e deixaram de existir) eprocessed_productions.csv
(contém a lista final de produções academicas que irá compor a rede de co-autorias). -
universities_and_programs.ipynb
: processa dados de instituições de ensino superior e programas de pós-graduação. Após executado, o notebook gera dois arquivos no diretóriodata_processing/output/
:universities.csv
eprograms.csv
.
-
-
Após a execução dos notebooks, execute o script de pós processamento disponível em
data_processing/scripts/authors_post_processing.py
. Esse script fará a substituição dos identificadores de produções que foram agrupadas e deixaram de existir, inferência dos dados de linha de pesquisa de autores e seleção das propriedades finais de cada autor, gerando os arquivosfinal_authors.csv
eco_authorships.csv
no diretóriodata_processing/output/
.
Obs.: O diretório output
contendo os arquivos resultantes do processamento de dados já realizado está disponível aqui.
-
Instancie um container docker com a imagem oficial do Neo4J disponível em https://hub.docker.com/_/neo4j. Para isso, execute o comando:
docker run --publish=7474:7474 --publish=7687:7687 --volume=$HOME/neo4j/data:/data --volume=$HOME/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/neo4j neo4j
Obs.: Se necessário, altera as portas de acesso ao Neo4J e a senha de acesso.
-
Mova os arquivos gerados na etapa de processamento para o diretório
import
do container docker do Neo4J. Isso pode ser feito utilizando o comando:docker cp data_processing/output/ neo4j:/var/lib/neo4j/import/
-
Acesse o Neo4J através do navegador em http://localhost:7474 e crie um novo banco de dados.
-
Execute sequencialmente as queries disponíveis no arquivo
data_processing/neo4j_queries.cql
para importação dos dados para o banco de dados. -
Crie um usuário com a role 'reader' para acesso da aplicação ao banco de dados. Por padrão, o usuário deve ser
web_user
e a senha deve serweb_user
. Essas credenciais permitem apenas a leitura de dados e serão usados pela aplicação web para a consulta dos dados.
-
No diretório
app/
, crie um arquivo.env
com as variáveis de ambiente declaradas no arquivo de exemplo.env.example
. Verifique se as portas e credenciais de acesso ao banco de dados estão de acordo com as configuradas no Neo4J. -
Gere a imagem docker da aplicação executando o comando:
docker build -t vizcolab-app .
-
Execute o container da aplicação com o comando:
docker run -p 8000:80 vizcolab-app
-
Acesse a aplicação em http://localhost:8000.